Add availability to edit a vote

This commit is contained in:
Olivier PEREZ 2014-12-16 00:45:16 +01:00
parent db915b0bf1
commit e941cf1822
3 changed files with 46 additions and 8 deletions

View File

@ -85,4 +85,9 @@ class FramaDB
return $newVote;
}
function updateVote($poll_id, $vote_id, $choices) {
$prepared = $this->prepare('UPDATE user_studs SET reponses = ? WHERE id_sondage = ? AND id_users = ?');
return $prepared->execute([$choices, $poll_id, $vote_id]);
}
}

View File

@ -17,6 +17,7 @@
* Auteurs de Framadate/OpenSondage : Framasoft (https://github.com/framasoft)
*/
use Framadate\Services\PollService;
use Framadate\Utils;
include_once __DIR__ . '/app/inc/init.php';
@ -74,7 +75,7 @@ $pollService = new PollService($connect);
/* ---- */
if(!empty($_GET['poll'])) {
$poll_id = $_GET['poll'];
$poll_id = filter_input(INPUT_GET, 'poll', FILTER_VALIDATE_REGEXP, ['options'=>['regexp'=>'/^[a-z0-9]+$/']]);
}
@ -86,11 +87,44 @@ if (!$poll) {
exit;
}
// A vote is going to be edited
if (!empty($_POST['edit_vote'])) {
// TODO Try what does filter_input with a wrong value
$editingVoteId = filter_input(INPUT_POST, 'edit_vote', FILTER_VALIDATE_INT);
} else {
$editingVoteId = 0;
}
if (!empty($_POST['save'])) { // Save edition of an old vote
$editedVote = filter_input(INPUT_POST, 'save', FILTER_VALIDATE_INT);
$newChoices = [];
// TODO Do this verification into a Service (maybe called 'InputService')
foreach($_POST['choices'] as $id=>$choice) {
$choice = filter_var($choice, FILTER_VALIDATE_REGEXP, ['options'=>['regexp'=>'/^[012]$/']]);
if ($choice !== false) {
$newChoices[$id] = $choice;
}
}
if (count($newChoices) == count($_POST['choices'])) {
$result = $pollService->updatePoll($poll_id, $editedVote, $newChoices);
if ($result) {
$message = ['type'=>'success', 'message'=>_('Update vote successfully!')];
} else {
$message = ['type'=>'success', 'message'=>_('Update vote successfully!')];
}
}
} elseif (isset($_POST[''])) { // Add a new vote
}
// Retrieve data
$slots = $pollService->allSlotsByPollId($poll_id);
$votes = $pollService->allUserVotesByPollId($poll_id);
$comments = $pollService->allCommentsByPollId($poll_id);
// Assign data to template
$smarty->assign('poll_id', $poll_id);
$smarty->assign('poll', $poll);
@ -99,7 +133,7 @@ $smarty->assign('slots', split_slots($slots));
$smarty->assign('votes', split_votes($votes));
$smarty->assign('best_moments', computeBestMoments($votes));
$smarty->assign('comments', $comments);
$smarty->assign('editingVoteId', 0); // TODO Replace by the right ID
$smarty->assign('editingVoteId', $editingVoteId);
//Utils::debug(computeBestMoments($votes));exit;

View File

@ -115,27 +115,27 @@
<td class="bg-info" headers="'.$td_headers[$k].'">
<ul class="list-unstyled choice">
<li class="yes">
<input type="radio" id="y-choice-{$k}" name="choice{$k}" value="2" {if $choice==2}checked {/if}/>
<input type="radio" id="y-choice-{$k}" name="choices[{$k}]" value="2" {if $choice==2}checked {/if}/>
<label class="btn btn-default btn-xs" for="y-choice-{$k}" title="{_('Vote yes for ')} . $radio_title[$k] . '">
<span class="glyphicon glyphicon-ok"></span><span class="sr-only">{_('Yes')}</span>
</label>
</li>
<li class="ifneedbe">
<input type="radio" id="i-choice-{$k}" name="choice{$k}" value="1" {if $choice==1}checked {/if}/>
<input type="radio" id="i-choice-{$k}" name="choices[{$k}]" value="1" {if $choice==1}checked {/if}/>
<label class="btn btn-default btn-xs" for="i-choice-{$k}" title="{_('Vote ifneedbe for ')} . $radio_title[$k] . '">
(<span class="glyphicon glyphicon-ok"></span>)<span class="sr-only">{_('Ifneedbe')}</span>
</label>
</li>
<li class="no">
<input type="radio" id="n-choice-{$k}" name="choice{$k}" value="0" {if $choice==0}checked {/if}/>
<input type="radio" id="n-choice-{$k}" name="choices[{$k}]" value="0" {if $choice==0}checked {/if}/>
<label class="btn btn-default btn-xs" for="n-choice-{$k}" title="{_('Vote no for ')} . $radio_title[$k] . '">
<span class="glyphicon glyphicon-ban-circle"></span><span class="sr-only">{_('No')}</span>
</label>
</li>
</ul>
</td>
<td></td>
{/foreach}
<td style="padding:5px"><button type="submit" class="btn btn-success btn-xs" name="save" value="{$vote->id}" title="{_('Save the choices')} {$vote->name}">{_('Save')}</button></td>
{else}
{* Voted line *}
@ -154,8 +154,7 @@
{if $poll->active && $poll->editable}
<td>
<input type="hidden" name="edit_vote" value="{$vote->id}"/>
<button type="submit" class="btn btn-link btn-sm" name="edit_vote" title="{_('Edit the line:')} {$vote->name}">
<button type="submit" class="btn btn-link btn-sm" name="edit_vote" value="{$vote->id}" title="{_('Edit the line:')} {$vote->name}">
<span class="glyphicon glyphicon-pencil"></span><span class="sr-only">{_('Edit')}</span>
</button>
</td>