From ac16b3eff19d38b4860786aeae139ee4a7f434b2 Mon Sep 17 00:00:00 2001 From: Daniel Date: Mon, 14 Dec 2020 15:47:51 +0000 Subject: [PATCH] [Poll] Removed/refactored unnecessary files, changed redirect to default parameters in new poll route --- plugins/Poll/Controller/ShowPoll.php | 71 ------------------------- plugins/Poll/Forms/PollResponseForm.php | 69 ------------------------ plugins/Poll/Poll.php | 48 +++++++++-------- 3 files changed, 25 insertions(+), 163 deletions(-) delete mode 100644 plugins/Poll/Controller/ShowPoll.php delete mode 100644 plugins/Poll/Forms/PollResponseForm.php diff --git a/plugins/Poll/Controller/ShowPoll.php b/plugins/Poll/Controller/ShowPoll.php deleted file mode 100644 index 6dc81f99c4..0000000000 --- a/plugins/Poll/Controller/ShowPoll.php +++ /dev/null @@ -1,71 +0,0 @@ -. - -// }}} - -namespace Plugin\Poll\Controller; - -use App\Entity\Note; -use App\Entity\Poll; -use App\Util\Common; -use App\Util\Exception\NoSuchNoteException; -use App\Util\Exception\NotFoundException; -use Symfony\Component\HttpFoundation\Request; - -/** - * Show a Poll - * - * @package GNUsocial - * @category PollPlugin - * - * @author Daniel Brandao - * @copyright 2020 Free Software Foundation, Inc http://www.fsf.org - * @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later - */ -class ShowPoll -{ - /** - * Show poll - * - * @param Request $request - * @param string $id poll id - * - * @throws NotFoundException poll does not exist - * @throws \App\Util\Exception\NoLoggedInUser user is not logged in - * - * @return array Template - */ - public function showPoll(Request $request, string $id) - { - $user = Common::ensureLoggedIn(); - - $poll = Poll::getFromId((int) $id); - if ($poll == null) { - throw new NotFoundException('Poll does not exist'); - } - - $note = Note::getFromId($poll->getNoteId()); - - if ($note == null || !$note->isVisibleTo($user)) { - throw new NoSuchNoteException(); - } - - return ['_template' => 'Poll/showpoll.html.twig', 'poll' => $poll]; - } -} diff --git a/plugins/Poll/Forms/PollResponseForm.php b/plugins/Poll/Forms/PollResponseForm.php deleted file mode 100644 index 1db1f89377..0000000000 --- a/plugins/Poll/Forms/PollResponseForm.php +++ /dev/null @@ -1,69 +0,0 @@ -. - -// }}} - -namespace Plugin\Poll\Forms; - -use App\Core\Form; -use function App\Core\I18n\_m; -use App\Entity\Poll; -use Symfony\Component\Form\Extension\Core\Type\ChoiceType; -use Symfony\Component\Form\Extension\Core\Type\HiddenType; -use Symfony\Component\Form\Extension\Core\Type\SubmitType; -use Symfony\Component\Form\Form as SymfForm; - -/** - * Form to respond a Poll - * - * @package GNUsocial - * @category PollPlugin - * - * @author Daniel Brandao - * @copyright 2020 Free Software Foundation, Inc http://www.fsf.org - * @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later - */ -class PollResponseForm extends Form -{ - /** - * Creates a radio form with the options given - * - * @param Poll $poll - * @param int $noteId - * - * @return SymfForm - */ - public static function make(Poll $poll,int $noteId): SymfForm - { - $opts = $poll->getOptionsArr(); - $options = []; - for ($i = 1; $i <= count($opts); ++$i) { - $options[$opts[$i - 1]] = $i; - } - $formOptions = [ - ['Options' . $poll->getId(), ChoiceType::class, [ - 'choices' => $options, - 'expanded' => true, - ]], - ['note_id', HiddenType::class, ['data' => $noteId]], - ['pollresponse', SubmitType::class, ['label' => _m('Vote')]], - ]; - return parent::create($formOptions); - } -} diff --git a/plugins/Poll/Poll.php b/plugins/Poll/Poll.php index ce6897493e..999e476419 100644 --- a/plugins/Poll/Poll.php +++ b/plugins/Poll/Poll.php @@ -22,6 +22,8 @@ namespace Plugin\Poll; use App\Core\DB\DB; use App\Core\Event; +use App\Core\Form; +use function App\Core\I18n\_m; use App\Core\Module; use App\Core\Router\RouteLoader; use App\Entity\Note; @@ -31,27 +33,16 @@ use App\Util\Exception\InvalidFormException; use App\Util\Exception\NotFoundException; use App\Util\Exception\RedirectException; use App\Util\Exception\ServerException; -use Plugin\Poll\Forms\PollResponseForm; -use Symfony\Bundle\FrameworkBundle\Controller\RedirectController; +use Symfony\Component\Form\Extension\Core\Type\ChoiceType; +use Symfony\Component\Form\Extension\Core\Type\HiddenType; +use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\HttpFoundation\Request; /** * Poll plugin main class * * @package GNUsocial - * @category PollPlugin - * - * @author Daniel Brandao - * @copyright 2020 Free Software Foundation, Inc http://www.fsf.org - * @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later - */ -const ID_FMT = '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}'; - -/** - * Poll plugin main class - * - * @package GNUsocial - * @category PollPlugin + * @category Poll * * @author Daniel Brandao * @copyright 2020 Free Software Foundation, Inc http://www.fsf.org @@ -68,10 +59,7 @@ class Poll extends Module */ public function onAddRoute(RouteLoader $r): bool { - $r->connect('newpollnum', 'main/poll/new/{num<\\d*>}', [Controller\NewPoll::class, 'newpoll']); - $r->connect('showpoll', 'main/poll/{id<\\d*>}',[Controller\ShowPoll::class, 'showpoll']); - $r->connect('answerpoll', 'main/poll/{id<\\d*>}/respond',[Controller\AnswerPoll::class, 'answerpoll']); - $r->connect('newpoll', 'main/poll/new', RedirectController::class, ['defaults' => ['route' => 'newpollnum', 'num' => 3]]); + $r->connect('newpoll', 'main/poll/new/{num<\\d+>?3}', [Controller\NewPoll::class, 'newpoll']); return Event::next; } @@ -85,9 +73,9 @@ class Poll extends Module */ public function onStartTwigPopulateVars(array &$vars): bool { - $vars['tabs'] = [['title' => 'Poll', - 'href' => 'newpoll', - ]]; + $vars['tabs'][] = ['title' => 'Poll', + 'href' => 'newpoll', + ]; return Event::next; } @@ -129,7 +117,21 @@ class Poll extends Module } if (Common::isLoggedIn() && !PollResponse::exits($poll->getId(), Common::ensureLoggedIn()->getId())) { - $form = PollResponseForm::make($poll, $note->getId()); + $opts = $poll->getOptionsArr(); + $options = []; + for ($i = 1; $i <= count($opts); ++$i) { + $options[$opts[$i - 1]] = $i; + } + $formOptions = [ + ['Options' . $poll->getId(), ChoiceType::class, [ + 'choices' => $options, + 'expanded' => true, + ]], + ['note_id', HiddenType::class, ['data' => $note->getId()]], + ['pollresponse', SubmitType::class, ['label' => _m('Vote')]], + ]; + $form = Form::create($formOptions); + $formView = $form->createView(); $ret = self::noteActionHandle($request, $form, $note, 'pollresponse', /** TODO Documentation */ function ($note, $data) { $user = Common::ensureLoggedIn();