From 6dd966bd3f4025c86aead0d1e61c8f2a84ccffb0 Mon Sep 17 00:00:00 2001 From: rainydaysavings Date: Tue, 21 Jul 2020 22:02:39 +0100 Subject: [PATCH] [UI][CONTROLLER][ROUTES] UserPanel account page form added, account page CSS work --- public/assets/css/base_mid.css | 2 +- public/assets/css/base_small.css | 2 +- public/assets/css/settings/settings.css | 26 +++++++++++--- public/assets/css/settings/settings_mid.css | 26 +++++++++++--- public/assets/css/settings/settings_small.css | 19 ++++++++++ src/Controller/UserPanel.php | 35 ++++++++++++++++++- src/Routes/Main.php | 6 ++-- templates/base.html.twig | 2 +- templates/settings/account.html.twig | 28 ++++++++++----- templates/settings/profile.html.twig | 4 +-- 10 files changed, 125 insertions(+), 25 deletions(-) diff --git a/public/assets/css/base_mid.css b/public/assets/css/base_mid.css index e139bc91ae..8cae9dd19f 100644 --- a/public/assets/css/base_mid.css +++ b/public/assets/css/base_mid.css @@ -208,7 +208,7 @@ b { cursor: pointer; opacity: 0; } -input[type=checkbox] { +.left-panel input[type=checkbox] { transform: scale(2); -ms-transform: scale(2); -webkit-transform: scale(2); diff --git a/public/assets/css/base_small.css b/public/assets/css/base_small.css index 650f9241e2..8ad87b0f41 100644 --- a/public/assets/css/base_small.css +++ b/public/assets/css/base_small.css @@ -205,7 +205,7 @@ label { height: var(--unit-size); opacity: 0; } -input[type=checkbox] { +.left-panel input[type=checkbox] { transform: scale(2); -ms-transform: scale(2); -webkit-transform: scale(2); diff --git a/public/assets/css/settings/settings.css b/public/assets/css/settings/settings.css index f5e3c4dbf6..6bbb9f5eec 100644 --- a/public/assets/css/settings/settings.css +++ b/public/assets/css/settings/settings.css @@ -114,18 +114,32 @@ border-radius: 0 0 var(--unit-size) var(--unit-size); } +.form-single { + order: 3; + background-color: #00000050; + padding: calc(2*var(--unit-size)); + font-size: var(--medium-size); + height: 100%; + width: 100%; + margin-left: var(--side-margin); + margin-right: var(--side-margin); + margin-top: calc(2 * var(--unit-size)); + box-shadow: 0px 0px 60px -20px rgba(0, 0, 0, 0.75); + border-radius: var(--unit-size); +} + /* FORMS ------------------------------*/ -.form label { +label { font-family: 'Montserrat', sans-serif; font-weight: 700; } -.form label:nth-child() { +label:nth-child() { margin-top: var(--medium-size); } -.form input[type=text] { +input[type=text] { margin-top: calc(var(--unit-size) * 0.5); width: calc(100% - var(--unit-size)); background-color: rgba(0, 0, 0, 0.30); @@ -136,7 +150,7 @@ font-size: var(--medium-size); } -.form button[type=submit] { +button[type=submit] { background: rgba(0, 0, 0, 0.30); padding: calc(var(--unit-size) * 0.8) calc(var(--unit-size) * 2); color: #F6F6F6; @@ -168,3 +182,7 @@ color: rgba(246, 246, 246, 0.8); margin-bottom: var(--unit-size); } + +.form-single input[type=checkbox] { + margin-left: var(--unit-size); +} diff --git a/public/assets/css/settings/settings_mid.css b/public/assets/css/settings/settings_mid.css index caae842783..239ac7104b 100644 --- a/public/assets/css/settings/settings_mid.css +++ b/public/assets/css/settings/settings_mid.css @@ -112,18 +112,32 @@ border-radius: 0 0 var(--unit-size) var(--unit-size); } +.form-single { + order: 3; + background-color: #00000050; + padding: calc(2*var(--unit-size)); + font-size: var(--medium-size); + height: 100%; + width: 100%; + margin-left: var(--side-margin); + margin-right: var(--side-margin); + margin-top: calc(2 * var(--unit-size)); + box-shadow: 0px 0px 60px -20px rgba(0, 0, 0, 0.75); + border-radius: var(--unit-size); +} + /* FORMS ------------------------------*/ -.form label { +label { font-family: 'Montserrat', sans-serif; font-weight: 700; } -.form label:nth-child() { +label:nth-child() { margin-top: var(--medium-size); } -.form input[type=text] { +input[type=text] { margin-top: calc(var(--unit-size) * 0.5); width: calc(100% - var(--unit-size)); background-color: rgba(0, 0, 0, 0.30); @@ -134,7 +148,7 @@ font-size: var(--medium-size); } -.form button[type=submit] { +button[type=submit] { background: rgba(0, 0, 0, 0.30); padding: calc(var(--unit-size) * 0.8) calc(var(--unit-size) * 2); color: #F6F6F6; @@ -166,3 +180,7 @@ color: rgba(246, 246, 246, 0.8); margin-bottom: var(--unit-size); } + +.form-single input[type=checkbox] { + margin-left: var(--unit-size); +} diff --git a/public/assets/css/settings/settings_small.css b/public/assets/css/settings/settings_small.css index c152101805..1d1439087b 100644 --- a/public/assets/css/settings/settings_small.css +++ b/public/assets/css/settings/settings_small.css @@ -112,6 +112,20 @@ border-radius: 0 0 var(--unit-size) var(--unit-size); } +.form-single { + order: 3; + background-color: #00000050; + padding: calc(2*var(--unit-size)); + font-size: var(--medium-size); + height: 100%; + width: 100%; + margin-left: 1%; + margin-right: 1%; + margin-top: var(--unit-size); + box-shadow: 0px 0px 60px -20px rgba(0, 0, 0, 0.75); + border-radius: var(--unit-size); +} + /* FORMS ------------------------------*/ label { @@ -167,3 +181,8 @@ button[type=submit] { color: rgba(246, 246, 246, 0.8); margin-bottom: var(--unit-size); } + +.form-single input[type=checkbox] { + margin-left: var(--unit-size); + float: right; +} diff --git a/src/Controller/UserPanel.php b/src/Controller/UserPanel.php index 3cedf647ea..ae565ad438 100644 --- a/src/Controller/UserPanel.php +++ b/src/Controller/UserPanel.php @@ -37,6 +37,7 @@ use App\Core\DB\DB; use App\Core\Form; use function App\Core\I18n\_m; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; +use Symfony\Component\Form\Extension\Core\Type\CheckboxType; use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\Form\Extension\Core\Type\TextareaType; use Symfony\Component\Form\Extension\Core\Type\TextType; @@ -44,7 +45,7 @@ use Symfony\Component\HttpFoundation\Request; class UserPanel extends AbstractController { - public function __invoke(Request $request) + public function profile(Request $request) { $prof = Form::create([ [_m('Nickname'), TextType::class, ['help' => '1-64 lowercase letters or numbers, no punctuation or spaces.']], @@ -74,4 +75,36 @@ class UserPanel extends AbstractController 'prof' => $prof->createView(), ]); } + + public function account(Request $request) + { + $acc = Form::create([ + [_m('outgoing_email'), TextType::class, ['help' => 'Change your current email.', 'label_format' => 'Email']], + [_m('password'), TextType::class, ['help' => 'Change your current password.']], + [_m('emailnotifysub'), CheckboxType::class, ['help' => 'Send me notices of new subscriptions through email.', 'label_format' => 'Notify subscriptions']], + [_m('emailnotifymsg'), CheckboxType::class, ['help' => 'Send me email when someone sends me a private message.', 'label_format' => 'Notify private messages']], + [_m('emailnotifyattn'), CheckboxType::class, ['help' => 'Send me email when someone sends me an "@-reply".', 'label_format' => 'Notify replies']], + [_m('emailnotifynudge'), CheckboxType::class, ['help' => 'Allow friends to nudge me and send me an email.', 'label_format' => 'Allow nudges']], + [_m('emailnotifyfav'), CheckboxType::class, ['help' => 'Send me email when someone adds my notice as a favorite.', 'label_format' => 'Notify favorites']], + ['save', SubmitType::class, ['label' => _m('Save')]], ]); + + $acc->handleRequest($request); + if ($acc->isSubmitted()) { + $data = $acc->getData(); + if ($prof->isValid()) { + $user = DB::find('\App\Entity\User', ['id' => 2]); + foreach (['outgoing_email', 'password', 'emailnotifysub', 'emailnotifymsg', 'emailnotifyattn', 'emailnotifynudge', 'emailnotifyfav'] as $key) { + $method = "set{$key}"; + $user->{$method}($data[_m($key)]); + } + DB::flush(); + } else { + // Display error + } + } + + return $this->render('settings/account.html.twig', [ + 'acc' => $acc->createView(), + ]); + } } diff --git a/src/Routes/Main.php b/src/Routes/Main.php index a934622c22..0677056f76 100644 --- a/src/Routes/Main.php +++ b/src/Routes/Main.php @@ -49,9 +49,11 @@ abstract class Main // Settings pages foreach (['profile', 'avatar'] as $s) { - $r->connect('settings_' . $s, 'settings/' . $s, C\UserPanel::class); + $r->connect('settings_' . $s, 'settings/' . $s, [C\UserPanel::class, 'profile']); } - $r->connect('settings_account', 'settings/account', C\UserPanel::class); + foreach (['account'] as $s) { + $r->connect('settings_' . $s, 'settings/' . $s, [C\UserPanel::class, 'account']); + } } } diff --git a/templates/base.html.twig b/templates/base.html.twig index 4b153fe7b8..bf2b07d80e 100644 --- a/templates/base.html.twig +++ b/templates/base.html.twig @@ -86,7 +86,7 @@ Replies Favourites Reverse Favs - Settings + Settings Logout diff --git a/templates/settings/account.html.twig b/templates/settings/account.html.twig index 6544969928..6c18d914db 100644 --- a/templates/settings/account.html.twig +++ b/templates/settings/account.html.twig @@ -6,24 +6,34 @@ {% endblock %} -{% block nav %} +{% block title %}Account Settings{% endblock %} + +{% block header %}{{ parent() }}{% endblock %} + +{% block body %} + +
-{% endblock %} -{% block body %} -
- {{ form(form) }} -
-{% endblock %} \ No newline at end of file +{% block form %} + +
+ {{ form(acc) }} +
+ +{% endblock %} +
+ +{% endblock %} diff --git a/templates/settings/profile.html.twig b/templates/settings/profile.html.twig index 7a48c7464a..1d48b9609c 100644 --- a/templates/settings/profile.html.twig +++ b/templates/settings/profile.html.twig @@ -16,10 +16,10 @@