From 54fd8464d9d4f89df278bd7556ccbb66c9bce27b Mon Sep 17 00:00:00 2001
From: m <m>
Date: Wed, 4 Apr 2018 22:18:53 +0200
Subject: [PATCH] =?UTF-8?q?Ne=20pas=20effacer=20les=20s=C3=A9lections=20ap?=
 =?UTF-8?q?r=C3=A8s=20l'erreur=20"Vous=20avez=20d=C3=A9j=C3=A0=20vot=C3=A9?=
 =?UTF-8?q?"=20https://framagit.org/framasoft/framadate/issues/194?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 studs.php                       |  4 ++++
 tpl/part/vote_table_classic.tpl | 18 +++++++++++++-----
 tpl/part/vote_table_date.tpl    | 23 +++++++++++++----------
 3 files changed, 30 insertions(+), 15 deletions(-)

diff --git a/studs.php b/studs.php
index f202c4a6..ee8dba9a 100644
--- a/studs.php
+++ b/studs.php
@@ -50,6 +50,8 @@ $resultPubliclyVisible = true;
 $slots = [];
 $votes = [];
 $comments = [];
+$selectedNewVotes = [];
+
 
 /* Services */
 /*----------*/
@@ -180,6 +182,7 @@ if ($accessGranted) {
                 }
             } catch (AlreadyExistsException $aee) {
                 $message = new Message('danger', __('Error', 'You already voted'));
+                $selectedNewVotes = $choices;
             } catch (ConcurrentEditionException $cee) {
                 $message = new Message('danger', __('Error', 'Poll has been updated before you vote'));
             } catch (ConcurrentVoteException $cve) {
@@ -237,5 +240,6 @@ $smarty->assign('accessGranted', $accessGranted);
 $smarty->assign('resultPubliclyVisible', $resultPubliclyVisible);
 $smarty->assign('editedVoteUniqueId', $editedVoteUniqueId);
 $smarty->assign('ValueMax', $poll->ValueMax);
+$smarty->assign('selectedNewVotes', $selectedNewVotes);
 
 $smarty->display('studs.tpl');
diff --git a/tpl/part/vote_table_classic.tpl b/tpl/part/vote_table_classic.tpl
index 1b57894f..9f3193d4 100644
--- a/tpl/part/vote_table_classic.tpl
+++ b/tpl/part/vote_table_classic.tpl
@@ -181,26 +181,34 @@
                             <ul class="list-unstyled choice">
 								{if $poll->ValueMax eq NULL || $best_choices['y'][$i] lt $poll->ValueMax}
                                	 	<li class="yes">
-                                    	<input type="radio" id="y-choice-{$id}" name="choices[{$id}]" value="2" />
+                                    	<input type="radio" id="y-choice-{$id}" name="choices[{$id}]" value="2"
+                                    		{(!isset($selectedNewVotes[$id]) || ("2" !== $selectedNewVotes[$id])) ? "" : " checked=\"checked\""}
+                                    	/>
                                     	<label class="btn btn-default btn-xs" for="y-choice-{$id}" title="{__('Poll results', 'Vote yes for')|html} {$slot->title|html}">
                                        		<i class="glyphicon glyphicon-ok"></i><span class="sr-only">{__('Generic', 'Yes')}</span>
                                     	</label>
                                 	</li>
                                		 <li class="ifneedbe">
-                                  	  <input type="radio" id="i-choice-{$id}" name="choices[{$id}]" value="1" />
+                                  	  <input type="radio" id="i-choice-{$id}" name="choices[{$id}]" value="1"
+                                    		{(!isset($selectedNewVotes[$id]) || ("1" !== $selectedNewVotes[$id])) ? "" : " checked=\"checked\""}
+                                    	/>
                                   	  <label class="btn btn-default btn-xs" for="i-choice-{$id}" title="{__('Poll results', 'Vote ifneedbe for')|html} {$slot->title|html}">
                                         (<i class="glyphicon glyphicon-ok"></i>)<span class="sr-only">{__('Generic', 'Ifneedbe')}</span>
                                     	</label>
                                	 	</li>
 								{/if}
                                 <li class="no">
-                                    <input type="radio" id="n-choice-{$id}" name="choices[{$id}]" value="0" />
-                                    <label class="btn btn-default btn-xs startunchecked" for="n-choice-{$id}" title="{__('Poll results', 'Vote no for')|html} {$slot->title|html}">
+                                    <input type="radio" id="n-choice-{$id}" name="choices[{$id}]" value="0"
+                                		{(!isset($selectedNewVotes[$id]) || ("0" !== $selectedNewVotes[$id])) ? "" : " checked=\"checked\""}
+                                	/>
+                                    <label class="btn btn-default btn-xs {(!isset($selectedNewVotes[$id]) || ("0" !== $selectedNewVotes[$id])) ? "startunchecked" : ""}" for="n-choice-{$id}" title="{__('Poll results', 'Vote no for')|html} {$slot->title|html}">
                                         <i class="glyphicon glyphicon-ban-circle"></i><span class="sr-only">{__('Generic', 'No')}</span>
                                     </label>
                                 </li>
                                 <li class="hide">
-                                  <input type="radio" id="n-choice-{$id}" name="choices[{$id}]" value=" " checked/>
+                                  <input type="radio" id="n-choice-{$id}" name="choices[{$id}]" value=" " 
+                                		{(isset($selectedNewVotes[$id]) || ("" !== $selectedNewVotes[$id])) ? "" : " checked=\"checked\""}
+                                	/>
                                 </li>
                             </ul>
                         </td>
diff --git a/tpl/part/vote_table_date.tpl b/tpl/part/vote_table_date.tpl
index db8cdce9..87e3b8e8 100644
--- a/tpl/part/vote_table_date.tpl
+++ b/tpl/part/vote_table_date.tpl
@@ -239,40 +239,43 @@
                     {foreach $slots as $slot}
                         {foreach $slot->moments as $moment}
 
-
-
                             <td class="bg-info" headers="M{$headersM[$i]} D{$headersD[$i]} H{$headersH[$i]}">
                                 <ul class="list-unstyled choice">
                                     {if $poll->ValueMax eq NULL || $best_choices['y'][$i] lt $poll->ValueMax}
                                     <li class="yes">
-                                        <input type="radio" id="y-choice-{$i}" name="choices[{$i}]" value="2" />
+                                        <input type="radio" id="y-choice-{$i}" name="choices[{$i}]" value="2"
+                                        	{(!isset($selectedNewVotes[$i]) || ("2" !== $selectedNewVotes[$i])) ? "" : " checked=\"checked\""}
+                                        />
                                         <label class="btn btn-default btn-xs" for="y-choice-{$i}" title="{__('Poll results', 'Vote yes for')|html} {$slot->day|date_format:$date_format.txt_short|html} - {$moment|html}">
                                             <i class="glyphicon glyphicon-ok"></i><span class="sr-only">{__('Generic', 'Yes')}</span>
                                         </label>
                                     </li>
                                     <li class="ifneedbe">
-                                        <input type="radio" id="i-choice-{$i}" name="choices[{$i}]" value="1" />
+                                        <input type="radio" id="i-choice-{$i}" name="choices[{$i}]" value="1"
+                                        	{(!isset($selectedNewVotes[$i]) || ("1" !== $selectedNewVotes[$i])) ? "" : " checked=\"checked\""}
+                                        />
                                         <label class="btn btn-default btn-xs" for="i-choice-{$i}" title="{__('Poll results', 'Vote ifneedbe for')|html} {$slot->day|date_format:$date_format.txt_short|html} - {$moment|html}">
                                             (<i class="glyphicon glyphicon-ok"></i>)<span class="sr-only">{__('Generic', 'Ifneedbe')}</span>
                                         </label>
                                     </li>
-
-				{/if}
+                                    {/if}
 
                                     <li class="no">
-                                        <input type="radio" id="n-choice-{$i}" name="choices[{$i}]" value="0" />
+                                        <input type="radio" id="n-choice-{$i}" name="choices[{$i}]" value="0"
+                                        	{(!isset($selectedNewVotes[$i]) || ("0" !== $selectedNewVotes[$i])) ? "" : " checked=\"checked\""}
+                                        />
                                         <label class="btn btn-default btn-xs startunchecked" for="n-choice-{$i}" title="{__('Poll results', 'Vote no for')|html} {$slot->day|date_format:$date_format.txt_short|html} - {$moment|html}">
                                             <i class="glyphicon glyphicon-ban-circle"></i><span class="sr-only">{__('Generic', 'No')}</span>
                                         </label>
                                     </li>
                                     <li class="hide">
-                                      <input type="radio" id="n-choice-{$i}" name="choices[{$i}]" value=" " checked/>
+                                      <input type="radio" id="n-choice-{$i}" name="choices[{$i}]" value=" "
+                                      	{(isset($selectedNewVotes[$i]) || ("" !== $selectedNewVotes[$i])) ? "" : " checked=\"checked\""}
+                                      />
                                     </li>
                                 </ul>
                             </td>
 
-
-
                             {$i = $i+1}
                         {/foreach}
                     {/foreach}
-- 
GitLab