Add availability to edit a vote
This commit is contained in:
parent
db915b0bf1
commit
e941cf1822
@ -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]);
|
||||
}
|
||||
|
||||
}
|
||||
|
38
studs.php
38
studs.php
@ -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;
|
||||
|
||||
|
@ -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>
|
||||
|
Loading…
Reference in New Issue
Block a user