Issue #26 Admin can change the name of initiator of the poll

This commit is contained in:
Olivier PEREZ 2015-01-08 22:03:44 +01:00
parent 924bd1ed1a
commit 6f7c911bae
5 changed files with 54 additions and 15 deletions

View File

@ -63,7 +63,7 @@ if (!$poll) {
if (isset($_POST['update_poll_info'])) { if (isset($_POST['update_poll_info'])) {
$updated = false; $updated = false;
$field = $inputService->filterAllowedValues($_POST['update_poll_info'], ['title', 'admin_mail', 'comment', 'rules', 'expiration_date']); $field = $inputService->filterAllowedValues($_POST['update_poll_info'], ['title', 'admin_mail', 'comment', 'rules', 'expiration_date', 'name']);
// Update the right poll field // Update the right poll field
if ($field == 'title') { if ($field == 'title') {
@ -110,6 +110,12 @@ if (isset($_POST['update_poll_info'])) {
$poll->end_date = $expiration_date; $poll->end_date = $expiration_date;
$updated = true; $updated = true;
} }
} elseif ($field == 'name') {
$admin_name = filter_input(INPUT_POST, 'name', FILTER_VALIDATE_REGEXP, ['options' => ['regexp' => NAME_REGEX]]);
if ($admin_name) {
$poll->admin_name = $admin_name;
$updated = true;
}
} }
// Update poll in database // Update poll in database

View File

@ -88,9 +88,9 @@ class FramaDB {
} }
function updatePoll($poll) { function updatePoll($poll) {
$prepared = $this->prepare('UPDATE ' . Utils::table('poll') . ' SET title=?, admin_mail=?, description=?, end_date=FROM_UNIXTIME(?), active=?, editable=? WHERE id = ?'); $prepared = $this->prepare('UPDATE ' . Utils::table('poll') . ' SET title=?, admin_name=?, admin_mail=?, description=?, end_date=FROM_UNIXTIME(?), active=?, editable=? WHERE id = ?');
return $prepared->execute([$poll->title, $poll->admin_mail, $poll->description, $poll->end_date, $poll->active, $poll->editable, $poll->id]); return $prepared->execute([$poll->title, $poll->admin_name, $poll->admin_mail, $poll->description, $poll->end_date, $poll->active, $poll->editable, $poll->id]);
} }
function allCommentsByPollId($poll_id) { function allCommentsByPollId($poll_id) {

View File

@ -121,7 +121,8 @@ caption {
#email-form .btn-edit, #email-form .btn-edit,
#description-form .btn-edit, #description-form .btn-edit,
#poll-rules-form .btn-edit, #poll-rules-form .btn-edit,
#expiration-form .btn-edit { #expiration-form .btn-edit,
#name-form .btn-edit {
position:absolute; position:absolute;
left:-2000px; left:-2000px;
} }
@ -135,7 +136,9 @@ caption {
#poll-rules-form .btn-edit:focus, #poll-rules-form .btn-edit:focus,
#poll-rules-form:hover .btn-edit, #poll-rules-form:hover .btn-edit,
#expiration-form .btn-edit:focus, #expiration-form .btn-edit:focus,
#expiration-form:hover .btn-edit { #expiration-form:hover .btn-edit,
#name-form .btn-edit:focus,
#name-form:hover .btn-edit {
position:relative !important; position:relative !important;
left:0; left:0;
padding: 0px 10px; padding: 0px 10px;

View File

@ -322,6 +322,20 @@ $(document).ready(function() {
return false; return false;
}); });
$('#name-form .btn-edit').on('click', function() {
$('#name-form p').hide();
$('.js-name').removeClass("hidden");
$('.js-name input').focus();
return false;
});
$('#name-form .btn-cancel').on('click', function() {
$('#name-form p').show();
$('#name-form .js-name').addClass("hidden");
$('#name-form .btn-edit').focus();
return false;
});
$('#email-form .btn-edit').on('click', function() { $('#email-form .btn-edit').on('click', function() {
$('#email-form p').hide(); $('#email-form p').hide();
$('#email-form .js-email').removeClass("hidden"); $('#email-form .js-email').removeClass("hidden");

View File

@ -8,7 +8,7 @@
<h3>{$poll->title}{if $admin} <button class="btn btn-link btn-sm btn-edit" title="{_('Edit the title')}"><span class="glyphicon glyphicon-pencil"></span><span class="sr-only">{_('Edit')}</span></button>{/if}</h3> <h3>{$poll->title}{if $admin} <button class="btn btn-link btn-sm btn-edit" title="{_('Edit the title')}"><span class="glyphicon glyphicon-pencil"></span><span class="sr-only">{_('Edit')}</span></button>{/if}</h3>
{if $admin} {if $admin}
<div class="hidden js-title"> <div class="hidden js-title">
<label class="sr-only" for="newtitle">{_("Title")}</label> <label class="sr-only" for="newtitle">{_('Title')}</label>
<div class="input-group"> <div class="input-group">
<input type="text" class="form-control" id="newtitle" name="title" size="40" value="{$poll->title}" /> <input type="text" class="form-control" id="newtitle" name="title" size="40" value="{$poll->title}" />
<span class="input-group-btn"> <span class="input-group-btn">
@ -37,15 +37,31 @@
</div> </div>
</div> </div>
</div> </div>
<div class="row">
<div id="name-form" class="form-group col-md-5">
<h4 class="control-label">{_('Initiator of the poll')}</h4>
<p class="form-control-static">{$poll->admin_name}{if $admin} <button class="btn btn-link btn-sm btn-edit" title="{_('Edit the initiator')}"><span class="glyphicon glyphicon-pencil"></span><span class="sr-only">{_('Edit')}</span></button>{/if}</p>
{if $admin}
<div class="hidden js-name">
<label class="sr-only" for="newname">{_('Initiator of the poll')}</label>
<div class="input-group">
<input type="text" class="form-control" id="newname" name="name" size="40" value="{$poll->admin_name}" />
<span class="input-group-btn">
<button type="submit" class="btn btn-success" name="update_poll_info" value="name" title="{_('Save the new name')}"><span class="glyphicon glyphicon-ok"></span><span class="sr-only">{_('Save')}</span></button>
<button class="btn btn-link btn-cancel" title="{_('Cancel the name edit')}"><span class="glyphicon glyphicon-remove"></span><span class="sr-only">{_('Cancel')}</span></button>
</span>
</div>
</div>
</div>
</div>
<div class="row"> <div class="row">
<div class="form-group col-md-5"> <div class="form-group col-md-5">
<h4 class="control-label">{_("Initiator of the poll")}</h4> {/if}
<p class="form-control-static">{$poll->admin_name}</p>
{if $admin} {if $admin}
<div id="email-form"> <div id="email-form">
<p>{$poll->admin_mail} <button class="btn btn-link btn-sm btn-edit" title="{_('Edit the email adress')}"><span class="glyphicon glyphicon-pencil"></span><span class="sr-only">{_('Edit')}</span></button></p> <p>{$poll->admin_mail} <button class="btn btn-link btn-sm btn-edit" title="{_('Edit the email adress')}"><span class="glyphicon glyphicon-pencil"></span><span class="sr-only">{_('Edit')}</span></button></p>
<div class="hidden js-email"> <div class="hidden js-email">
<label class="sr-only" for="admin_mail">{_("Email adress")}</label> <label class="sr-only" for="admin_mail">{_('Email adress')}</label>
<div class="input-group"> <div class="input-group">
<input type="text" class="form-control" id="admin_mail" name="admin_mail" size="40" value="{$poll->admin_mail}" /> <input type="text" class="form-control" id="admin_mail" name="admin_mail" size="40" value="{$poll->admin_mail}" />
<span class="input-group-btn"> <span class="input-group-btn">
@ -62,7 +78,7 @@
<h4 class="control-label">{_("Description")}{if $admin}<button class="btn btn-link btn-sm btn-edit" title="{_('Edit the description')}"><span class="glyphicon glyphicon-pencil"></span><span class="sr-only">{_('Edit')}</span></button>{/if}</h4> <h4 class="control-label">{_("Description")}{if $admin}<button class="btn btn-link btn-sm btn-edit" title="{_('Edit the description')}"><span class="glyphicon glyphicon-pencil"></span><span class="sr-only">{_('Edit')}</span></button>{/if}</h4>
<p class="form-control-static well">{$poll->comment}</p> <p class="form-control-static well">{$poll->comment}</p>
<div class="hidden js-desc text-right"> <div class="hidden js-desc text-right">
<label class="sr-only" for="newdescription">{_("Description")}</label> <label class="sr-only" for="newdescription">{_('Description')}</label>
<textarea class="form-control" id="newdescription" name="comment" rows="2" cols="40">{$poll->comment}</textarea> <textarea class="form-control" id="newdescription" name="comment" rows="2" cols="40">{$poll->comment}</textarea>
<button type="submit" id="btn-new-desc" name="update_poll_info" value="comment" class="btn btn-sm btn-success" title="{_("Save the description")}"><span class="glyphicon glyphicon-ok"></span><span class="sr-only">{_('Save')}</span></button> <button type="submit" id="btn-new-desc" name="update_poll_info" value="comment" class="btn btn-sm btn-success" title="{_("Save the description")}"><span class="glyphicon glyphicon-ok"></span><span class="sr-only">{_('Save')}</span></button>
<button class="btn btn-default btn-sm btn-cancel" title="{_('Cancel the description edit')}"><span class="glyphicon glyphicon-remove"></span><span class="sr-only">{_('Cancel')}</span></button> <button class="btn btn-default btn-sm btn-cancel" title="{_('Cancel the description edit')}"><span class="glyphicon glyphicon-remove"></span><span class="sr-only">{_('Cancel')}</span></button>
@ -73,22 +89,22 @@
<div class="row"> <div class="row">
<div class="form-group form-group {if $admin}col-md-4{else}col-md-6{/if}"> <div class="form-group form-group {if $admin}col-md-4{else}col-md-6{/if}">
<label for="public-link"><a class="public-link" href="{$poll_id|poll_url}">{_("Public link of the poll")} <span class="btn-link glyphicon glyphicon-link"></span></a></label> <label for="public-link"><a class="public-link" href="{$poll_id|poll_url}">{_('Public link of the poll')} <span class="btn-link glyphicon glyphicon-link"></span></a></label>
<input class="form-control" id="public-link" type="text" readonly="readonly" value="{$poll_id|poll_url}" /> <input class="form-control" id="public-link" type="text" readonly="readonly" value="{$poll_id|poll_url}" />
</div> </div>
{if $admin} {if $admin}
<div class="form-group col-md-4"> <div class="form-group col-md-4">
<label for="admin-link"><a class="admin-link" href="{$admin_poll_id|poll_url:true}">{_("Admin link of the poll")} <span class="btn-link glyphicon glyphicon-link"></span></a></label> <label for="admin-link"><a class="admin-link" href="{$admin_poll_id|poll_url:true}">{_('Admin link of the poll')} <span class="btn-link glyphicon glyphicon-link"></span></a></label>
<input class="form-control" id="admin-link" type="text" readonly="readonly" value="{$admin_poll_id|poll_url:true}" /> <input class="form-control" id="admin-link" type="text" readonly="readonly" value="{$admin_poll_id|poll_url:true}" />
</div> </div>
<div id="expiration-form" class="form-group col-md-4"> <div id="expiration-form" class="form-group col-md-4">
<h4 class="control-label">{_("Expiration's date")}</h4> <h4 class="control-label">{_('Expiration\'s date')}</h4>
<p>{$poll->end_date|date_format:$date_format['txt_date']}{if $admin} <button class="btn btn-link btn-sm btn-edit" title="{_('Edit the email adress')}"><span class="glyphicon glyphicon-pencil"></span><span class="sr-only">{_('Edit')}</span></button>{/if}</p> <p>{$poll->end_date|date_format:$date_format['txt_date']}{if $admin} <button class="btn btn-link btn-sm btn-edit" title="{_('Edit the email adress')}"><span class="glyphicon glyphicon-pencil"></span><span class="sr-only">{_('Edit')}</span></button>{/if}</p>
{if $admin} {if $admin}
<div class="hidden js-expiration"> <div class="hidden js-expiration">
<label class="sr-only" for="newtitle">{_("Title")}</label> <label class="sr-only" for="newexpirationdate">{_("Expiration\'s date")}</label>
<div class="input-group"> <div class="input-group">
<input type="text" class="form-control" id="newtitle" name="expiration_date" size="40" value="{$poll->end_date|date_format:$date_format['txt_date']}" /> <input type="text" class="form-control" id="newexpirationdate" name="expiration_date" size="40" value="{$poll->end_date|date_format:$date_format['txt_date']}" />
<span class="input-group-btn"> <span class="input-group-btn">
<button type="submit" class="btn btn-success" name="update_poll_info" value="expiration_date" title="{_('Save the new expiration date')}"><span class="glyphicon glyphicon-ok"></span><span class="sr-only">{_('Save')}</span></button> <button type="submit" class="btn btn-success" name="update_poll_info" value="expiration_date" title="{_('Save the new expiration date')}"><span class="glyphicon glyphicon-ok"></span><span class="sr-only">{_('Save')}</span></button>
<button class="btn btn-link btn-cancel" title="{_('Cancel the expiration date edit')}"><span class="glyphicon glyphicon-remove"></span><span class="sr-only">{_('Cancel')}</span></button> <button class="btn btn-link btn-cancel" title="{_('Cancel the expiration date edit')}"><span class="glyphicon glyphicon-remove"></span><span class="sr-only">{_('Cancel')}</span></button>