From 432dfdd0ae10582eb5e546e062adafbb1d789240 Mon Sep 17 00:00:00 2001 From: rainydaysavings Date: Fri, 26 Jun 2020 23:44:53 +0100 Subject: [PATCH] [UI][ROUTES][CONTROLLER] Settings pages routes and styling done. --- src/Controller/FaqHome.php | 41 +++++++++++++++ src/Controller/UserAdminPanel.php | 60 +++++++++++++++------- src/Routes/Faq.php | 42 +++++++++++++++ src/Routes/Main.php | 8 ++- templates/faq/home.html.twig | 1 + templates/settings/account/bak.html.twig | 43 ++++++++++++++++ templates/settings/account/email.html.twig | 43 ++++++++++++++++ templates/settings/account/pass.html.twig | 43 ++++++++++++++++ templates/settings/avatar.html.twig | 40 +++++++++++++++ templates/settings/profile.html.twig | 9 ++-- 10 files changed, 304 insertions(+), 26 deletions(-) create mode 100644 src/Controller/FaqHome.php create mode 100644 src/Routes/Faq.php create mode 100644 templates/faq/home.html.twig create mode 100644 templates/settings/account/bak.html.twig create mode 100644 templates/settings/account/email.html.twig create mode 100644 templates/settings/account/pass.html.twig create mode 100644 templates/settings/avatar.html.twig diff --git a/src/Controller/FaqHome.php b/src/Controller/FaqHome.php new file mode 100644 index 0000000000..f347e30dca --- /dev/null +++ b/src/Controller/FaqHome.php @@ -0,0 +1,41 @@ +. +// }}} + +/** + * FAQ main page + * + * @package GNUsocial + * @category Controller + * + * @author Eliseu Amaro + * @copyright 2020 Free Software Foundation, Inc http://www.fsf.org + * @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later + */ + +namespace App\Controller; + +use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; + +class FaqHome extends AbstractController +{ + public function __invoke() + { + return $this->render('faq/home.html.twig', []); + } +} \ No newline at end of file diff --git a/src/Controller/UserAdminPanel.php b/src/Controller/UserAdminPanel.php index c882830734..fc8ffdc26f 100644 --- a/src/Controller/UserAdminPanel.php +++ b/src/Controller/UserAdminPanel.php @@ -23,16 +23,18 @@ * @package GNUsocial * @category Controller * - * @author Eliseu Amaro + * @author Hugo Sales * @copyright 2020 Free Software Foundation, Inc http://www.fsf.org * @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later */ namespace App\Controller; -// use App\Core\GSEvent as Event; +// use App\Core\Event; // use App\Util\Common; +use App\Core\DB\DB; use App\Core\DB\DefaultSettings; +use App\Core\Form; use function App\Core\I18n\_m; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\Form\Extension\Core\Type\ChoiceType; @@ -44,32 +46,52 @@ class UserAdminPanel extends AbstractController { public function __invoke(Request $request) { - $options = []; - foreach (DefaultSettings::$defaults as $key => $inner) { + $defaults = DefaultSettings::$defaults; + $options = []; + foreach ($defaults as $key => $inner) { $options[$key] = []; foreach (array_keys($inner) as $inner_key) { $options[_m($key)][_m($inner_key)] = "{$key}:{$inner_key}"; } } - $form = $this->createFormBuilder(null, ['translation_domain' => false]) - ->add(_m('Setting'), ChoiceType::class, ['choices' => $options]) - ->add(_m('Value'), TextType::class) - ->add('save', SubmitType::class, ['label' => _m('Set site setting')]) - ->getForm(); + $form = Form::create([[_m('Setting'), ChoiceType::class, ['choices' => $options]], + [_m('Value'), TextType::class], + ['save', SubmitType::class, ['label' => _m('Set site setting')]], ]); $form->handleRequest($request); - if ($form->isSubmitted() && $form->isValid()) { + if ($form->isSubmitted()) { $data = $form->getData(); - - var_dump($data); - - // Stay in this page - return $this->redirect($request->getUri()); + if ($form->isValid() && array_key_exists(_m('Setting'), $data)) { + list($section, $setting) = explode(':', $data[_m('Setting')]); + $value = $data[_m('Value')]; + $default = $defaults[$section][$setting]; + if (gettype($default) === gettype($value)) { + $conf = DB::find('\App\Entity\Config', ['section' => $section, 'setting' => $setting]); + $old_value = $conf->getValue(); + $conf->setValue(serialize($value)); + DB::flush(); + } + return $this->render('config/admin.html.twig', [ + 'form' => $form->createView(), + 'old_value' => unserialize($old_value), + 'default' => $default, + ]); + } else { + // Display error + } } - return $this->render('settings/profile.html.twig', [ - 'form' => $form->createView(), - ]); + foreach (['profile', 'avatar'] as $s) { + return $this->render('settings/' . $s . '.html.twig', [ + 'form' => $form->createView(), + ]); + } + + foreach (['email', 'pass', 'bak'] as $s) { + return $this->render('settings/account' . $s . '.html.twig', [ + 'form' => $form->createView(), + ]); + } } -} \ No newline at end of file +} diff --git a/src/Routes/Faq.php b/src/Routes/Faq.php new file mode 100644 index 0000000000..ae8e8de092 --- /dev/null +++ b/src/Routes/Faq.php @@ -0,0 +1,42 @@ +. +// }}} + +/** + * Define FAQ's main routes + * + * @package GNUsocial + * @category Router + * + * @author Eliseu Amaro + * @copyright 2020 Free Software Foundation, Inc http://www.fsf.org + * @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later + */ + +namespace App\Routes; + +use App\Controller\FaqHome; +use App\Core\RouteLoader; + +abstract class Faq +{ + public static function load(RouteLoader $r): void + { + $r->connect('doc_faq', '/doc/faq', FaqHome::class); + } +} diff --git a/src/Routes/Main.php b/src/Routes/Main.php index 571265ff91..21da7a7195 100644 --- a/src/Routes/Main.php +++ b/src/Routes/Main.php @@ -46,6 +46,12 @@ abstract class Main $r->connect('doc_' . $s, 'doc/' . $s, TemplateController::class, [], ['defaults' => ['template' => 'faq/' . $s . '.html.twig']]); } - $r->connect('settings_profile', '/settings/profile', C\UserAdminPanel::class); + foreach (['profile', 'avatar'] as $s) { + $r->connect('settings_' . $s, 'settings/' . $s, C\UserAdminPanel::class); + } + + foreach (['email', 'pass', 'bak'] as $s) { + $r->connect('account_' . $s, 'settings/account/' . $s, C\UserAdminPanel::class); + } } } diff --git a/templates/faq/home.html.twig b/templates/faq/home.html.twig new file mode 100644 index 0000000000..d2b36be955 --- /dev/null +++ b/templates/faq/home.html.twig @@ -0,0 +1 @@ +{% extends "base.html.twig" %} diff --git a/templates/settings/account/bak.html.twig b/templates/settings/account/bak.html.twig new file mode 100644 index 0000000000..f101e088f1 --- /dev/null +++ b/templates/settings/account/bak.html.twig @@ -0,0 +1,43 @@ +{% extends 'base.html.twig' %} +{% block stylesheets %} + {{ parent() }} + + + +{% endblock %} + +{% block nav %} + + + +{% endblock %} + +{% block body %} +
+ {{ form(form) }} +
+{% endblock %} \ No newline at end of file diff --git a/templates/settings/account/email.html.twig b/templates/settings/account/email.html.twig new file mode 100644 index 0000000000..f101e088f1 --- /dev/null +++ b/templates/settings/account/email.html.twig @@ -0,0 +1,43 @@ +{% extends 'base.html.twig' %} +{% block stylesheets %} + {{ parent() }} + + + +{% endblock %} + +{% block nav %} + + + +{% endblock %} + +{% block body %} +
+ {{ form(form) }} +
+{% endblock %} \ No newline at end of file diff --git a/templates/settings/account/pass.html.twig b/templates/settings/account/pass.html.twig new file mode 100644 index 0000000000..f101e088f1 --- /dev/null +++ b/templates/settings/account/pass.html.twig @@ -0,0 +1,43 @@ +{% extends 'base.html.twig' %} +{% block stylesheets %} + {{ parent() }} + + + +{% endblock %} + +{% block nav %} + + + +{% endblock %} + +{% block body %} +
+ {{ form(form) }} +
+{% endblock %} \ No newline at end of file diff --git a/templates/settings/avatar.html.twig b/templates/settings/avatar.html.twig new file mode 100644 index 0000000000..dbab731679 --- /dev/null +++ b/templates/settings/avatar.html.twig @@ -0,0 +1,40 @@ +{% extends 'base.html.twig' %} +{% block stylesheets %} + {{ parent() }} + + + +{% endblock %} + +{% block nav %} + + + +{% endblock %} + +{% block body %} +
+ {{ form(form) }} +
+{% endblock %} \ No newline at end of file diff --git a/templates/settings/profile.html.twig b/templates/settings/profile.html.twig index 72474bb78d..dbab731679 100644 --- a/templates/settings/profile.html.twig +++ b/templates/settings/profile.html.twig @@ -10,10 +10,10 @@