From 20a5005e1d121fdfc99217a8006f934cf3617296 Mon Sep 17 00:00:00 2001 From: Daniel Date: Wed, 16 Dec 2020 19:27:41 +0000 Subject: [PATCH] [ProfileColor] Added plugin base, controller and settings template --- .../ProfileColor/Controller/ProfileColor.php | 70 ++++++++++++++ plugins/ProfileColor/ProfileColor.php | 92 +++++++++++++++++++ templates/profilecolor/profilecolor.html.twig | 13 +++ templates/profilecolor/view.html.twig | 8 ++ 4 files changed, 183 insertions(+) create mode 100644 plugins/ProfileColor/Controller/ProfileColor.php create mode 100644 plugins/ProfileColor/ProfileColor.php create mode 100644 templates/profilecolor/profilecolor.html.twig create mode 100644 templates/profilecolor/view.html.twig diff --git a/plugins/ProfileColor/Controller/ProfileColor.php b/plugins/ProfileColor/Controller/ProfileColor.php new file mode 100644 index 0000000000..0689af6149 --- /dev/null +++ b/plugins/ProfileColor/Controller/ProfileColor.php @@ -0,0 +1,70 @@ +. + +// }}} + +namespace Plugin\ProfileColor\Controller; + +use App\Core\Form; +use function App\Core\I18n\_m; +use App\Util\Exception\ClientException; +use App\Util\Exception\ServerException; +use Symfony\Component\Form\Extension\Core\Type\HiddenType; +use Symfony\Component\Form\Extension\Core\Type\SubmitType; +use Symfony\Component\Form\Extension\Core\Type\TextType; +use Symfony\Component\HttpFoundation\Request; + +/** + * Cover controller + * + * @package GNUsocial + * @category CoverPlugin + * + * @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 ProfileColor +{ + /** + * Add/change cover + * + * @param Request $request + * + * @throws ClientException Invalid form + * @throws ServerException Invalid file type + * + * @return array template + */ + public function profileColorSettings(Request $request) + { + $form = Form::create([ + ['color', TextType::class, ['label' => _m('Color')]], + ['hidden', HiddenType::class, []], + ['save', SubmitType::class, ['label' => _m('Submit')]], + ]); + + $form->handleRequest($request); + if ($form->isSubmitted() && $form->isValid()) { + $data = $form->getData(); + } + + return ['_template' => 'profilecolor/profilecolor.html.twig', 'form' => $form->createView()]; + } +} diff --git a/plugins/ProfileColor/ProfileColor.php b/plugins/ProfileColor/ProfileColor.php new file mode 100644 index 0000000000..716313e9eb --- /dev/null +++ b/plugins/ProfileColor/ProfileColor.php @@ -0,0 +1,92 @@ +. + +// }}} + +namespace Plugin\ProfileColor; + +use App\Core\DB\DB; +use App\Core\Event; +use App\Core\Module; +use App\Core\Router\RouteLoader; +use App\Util\Common; + +/** + * Profile Color plugin main class + * + * @package GNUsocial + * @category CoverPlugin + * + * @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 ProfileColor extends Module +{ + /** + * Map URLs to actions + * + * @param RouteLoader $r + * + * @return bool hook value; true means continue processing, false means stop. + */ + public function onAddRoute(RouteLoader $r): bool + { + $r->connect('settings_profile_color', 'settings/color', [Controller\ProfileColor::class, 'profilecolorsettings']); + return Event::next; + } + + /** + * Populate twig vars + * + * @param array $vars + * + * @return bool hook value; true means continue processing, false means stop. + */ + public function onStartTwigPopulateVars(array &$vars): bool + { + $vars['profile_tabs'][] = ['title' => 'Color', + 'route' => 'settings_profile_color', + ]; + /* + if (Common::user() != null) { + $cover = DB::find('cover', ['gsactor_id' => Common::user()->getId()]); + if ($cover != null) { + $vars['profile_extras'][] = ['name' => 'cover', 'vars' => ['img' => '/cover']]; + } else { + $vars['profile_extras'][] = ['name' => 'cover', 'vars' => []]; + } + } + */ + return Event::next; + } + + /** + * Output our dedicated stylesheet + * + * @param array $styles stylesheets path + * + * @return bool hook value; true means continue processing, false means stop. + */ + public function onStartShowStyles(array &$styles): bool + { + + //$styles[] = 'cover/cover.css'; + return Event::next; + } +} diff --git a/templates/profilecolor/profilecolor.html.twig b/templates/profilecolor/profilecolor.html.twig new file mode 100644 index 0000000000..93dc20bb8b --- /dev/null +++ b/templates/profilecolor/profilecolor.html.twig @@ -0,0 +1,13 @@ +{% extends 'settings/profile.html.twig' %} + +{% block title %}Profile Color Settings{% endblock %} + +{% block body %} + {{ parent() }} +{% endblock body %} + +{% block form %} +
+ {{ form(form) }} +
+{% endblock form %} \ No newline at end of file diff --git a/templates/profilecolor/view.html.twig b/templates/profilecolor/view.html.twig new file mode 100644 index 0000000000..1274454de7 --- /dev/null +++ b/templates/profilecolor/view.html.twig @@ -0,0 +1,8 @@ + + + {% if vars is not empty %} + Your cover. + {% else %} +
+ {% endif %} +
\ No newline at end of file