From 6f7c911bae29ce07a2001aef253f9bbee77ab1ae Mon Sep 17 00:00:00 2001 From: Olivier PEREZ Date: Thu, 8 Jan 2015 22:03:44 +0100 Subject: [PATCH] Issue #26 Admin can change the name of initiator of the poll --- adminstuds.php | 8 ++++++- app/classes/Framadate/FramaDB.php | 4 ++-- css/style.css | 7 ++++-- js/core.js | 14 ++++++++++++ tpl/part/poll_info.tpl | 36 ++++++++++++++++++++++--------- 5 files changed, 54 insertions(+), 15 deletions(-) diff --git a/adminstuds.php b/adminstuds.php index 6d71f70..0ec7333 100644 --- a/adminstuds.php +++ b/adminstuds.php @@ -63,7 +63,7 @@ if (!$poll) { if (isset($_POST['update_poll_info'])) { $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 if ($field == 'title') { @@ -110,6 +110,12 @@ if (isset($_POST['update_poll_info'])) { $poll->end_date = $expiration_date; $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 diff --git a/app/classes/Framadate/FramaDB.php b/app/classes/Framadate/FramaDB.php index b7a9f0e..38d9b08 100644 --- a/app/classes/Framadate/FramaDB.php +++ b/app/classes/Framadate/FramaDB.php @@ -88,9 +88,9 @@ class FramaDB { } 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) { diff --git a/css/style.css b/css/style.css index 3188c8d..43b400d 100644 --- a/css/style.css +++ b/css/style.css @@ -121,7 +121,8 @@ caption { #email-form .btn-edit, #description-form .btn-edit, #poll-rules-form .btn-edit, -#expiration-form .btn-edit { +#expiration-form .btn-edit, +#name-form .btn-edit { position:absolute; left:-2000px; } @@ -135,7 +136,9 @@ caption { #poll-rules-form .btn-edit:focus, #poll-rules-form:hover .btn-edit, #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; left:0; padding: 0px 10px; diff --git a/js/core.js b/js/core.js index 9e1c4b4..19cd395 100644 --- a/js/core.js +++ b/js/core.js @@ -322,6 +322,20 @@ $(document).ready(function() { 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 p').hide(); $('#email-form .js-email').removeClass("hidden"); diff --git a/tpl/part/poll_info.tpl b/tpl/part/poll_info.tpl index 68abcfc..77b8edc 100644 --- a/tpl/part/poll_info.tpl +++ b/tpl/part/poll_info.tpl @@ -8,7 +8,7 @@

{$poll->title}{if $admin} {/if}

{if $admin} +
+
+

{_('Initiator of the poll')}

+

{$poll->admin_name}{if $admin} {/if}

+ {if $admin} + +
+
-

{_("Initiator of the poll")}

-

{$poll->admin_name}

+ {/if} {if $admin}

{$poll->admin_mail}