[TEMPLATE][Settings] Factor out settings macros

This commit is contained in:
Hugo Sales 2021-12-21 19:03:28 +00:00 committed by Diogo Peralta Cordeiro
parent 1682b04e74
commit 2acf0bcbb6
Signed by: diogo
GPG Key ID: 18D2D35001FBFAB0
2 changed files with 56 additions and 55 deletions

View File

@ -1,5 +1,7 @@
{% extends '/stdgrid.html.twig' %}
{% import 'settings/macros.html.twig' as macros %}
{% block title %}{{ 'Settings' | trans }}{% endblock %}
{% block stylesheets %}
@ -8,54 +10,6 @@
<link rel="stylesheet" href="{{ asset('assets/default_theme/css/pages/settings.css') }}">
{% endblock stylesheets %}
{% macro settings_details_element(title, summary, id, details_content, context, details_ids) %}
{% if details_ids is null %}
{% set details_ids = [id] %}
{% endif %}
<details class="section-title-settings" {{ open_details(context.open_details_query, details_ids) }} id={{ id }}>
<summary>
<h3>
{{ title | trans }}
{{ icon('arrow-down', 'icon icon-details-open') | raw }}
</h3>
<em>
{{ summary | trans }}
</em>
</summary>
{% if details_content is instanceof('Twig\\Markup') %}
{{ details_content }}
{% else %}
{{ form(details_content) }}
{% endif %}
</details>
{% endmacro settings_details_element %}
{% macro settings_details_container(title, summary, container_id, tabs, context) %}
{% set children_ids = [container_id] %}
{% set details_content %}
<nav class='section-settings-nav'>
<ul>
{% for tab in tabs %}
<hr>
<li>
{% set content %}
{% if tab['controller'] is defined %}
{% include tab['controller']['_template'] with tab['controller'] only %}
{% else %}
{{ form(tab['form']) }}
{% endif %}
{% endset %}
{{ _self.settings_details_element(tab['title'], tab['desc'], tab['id'] ~ '-details', content, context) }}
{% set children_ids = children_ids|merge([tab['id'] ~ '-details']) %}
</li>
{% endfor %}
</ul>
</nav>
{% endset %}
{{ _self.settings_details_element(title, summary, container_id, details_content, context, children_ids) }}
{% endmacro settings_details_container %}
{% block body %}
<nav class='section-settings'>
<h2>Settings</h2>
@ -63,31 +17,31 @@
<li>
{% set profile_tabs = [{'title': 'Personal Info', 'desc': 'Nickname, Homepage, Bio, Self Tags and more.', 'id': 'settings-personal-info', 'form': personal_info_form}] %}
{% set profile_tabs = profile_tabs|merge(handle_event('PopulateSettingsTabs', app.request, 'profile')) %}
{{ _self.settings_details_container('Profile', 'Personal Information, Avatar and Profile', 'settings-profile-details', profile_tabs, _context) }}
{{ macros.settings_details_container('Profile', 'Personal Information, Avatar and Profile', 'settings-profile-details', profile_tabs, _context) }}
</li>
<hr>
<li>
{% set muting_tabs = handle_event('PopulateSettingsTabs', app.request, 'muting') %}
{{ _self.settings_details_container('Muting', 'Blocked tags and actors', 'settings-muting-details', muting_tabs, _context) }}
{{ macros.settings_details_container('Muting', 'Blocked tags and actors', 'settings-muting-details', muting_tabs, _context) }}
</li>
<hr>
<li>
{{ _self.settings_details_element('Email', 'Set incoming and outgoing email settings', 'settings-email-details', email_form, _context) }}
{{ macros.settings_details_element('Email', 'Set incoming and outgoing email settings', 'settings-email-details', email_form, _context) }}
</li>
<li>
{{ _self.settings_details_element('Password', 'Change current password', 'settings-password-details', password_form, _context) }}
{{ macros.settings_details_element('Password', 'Change current password', 'settings-password-details', password_form, _context) }}
</li>
<li>
{{ _self.settings_details_element('Language', 'Select and set language preferences', 'settings-language-details', language_form, _context) }}
{{ macros.settings_details_element('Language', 'Select and set language preferences', 'settings-language-details', language_form, _context) }}
</li>
<hr>
<li>
{% set colour_tabs = handle_event('PopulateSettingsTabs', app.request, 'colours') %}
{{ _self.settings_details_container('Colours', 'Customize your interface colours', 'settings-colour-details', colour_tabs, _context) }}
{{ macros.settings_details_container('Colours', 'Customize your interface colours', 'settings-colour-details', colour_tabs, _context) }}
</li>
<hr>
<li>
{{ _self.settings_details_container('Notifications', 'Enable/disable notifications (Email, XMPP, Replies...)', 'notifications', tabbed_forms_notify, _context) }}
{{ macros.settings_details_container('Notifications', 'Enable/disable notifications (Email, XMPP, Replies...)', 'notifications', tabbed_forms_notify, _context) }}
</li>
</ul>
</nav>

View File

@ -0,0 +1,47 @@
{% macro settings_details_element(title, summary, id, details_content, context, details_ids) %}
{% if details_ids is null %}
{% set details_ids = [id] %}
{% endif %}
<details class="section-title-settings" {{ open_details(context.open_details_query, details_ids) }} id={{ id }}>
<summary>
<h3>
{{ title | trans }}
{{ icon('arrow-down', 'icon icon-details-open') | raw }}
</h3>
<em>
{{ summary | trans }}
</em>
</summary>
{% if details_content is instanceof('Twig\\Markup') %}
{{ details_content }}
{% else %}
{{ form(details_content) }}
{% endif %}
</details>
{% endmacro settings_details_element %}
{% macro settings_details_container(title, summary, container_id, tabs, context) %}
{% set children_ids = [container_id] %}
{% set details_content %}
<nav class='section-settings-nav'>
<ul>
{% for tab in tabs %}
<hr>
<li>
{% set content %}
{% if tab['controller'] is defined %}
{% include tab['controller']['_template'] with tab['controller'] only %}
{% else %}
{{ form(tab['form']) }}
{% endif %}
{% endset %}
{{ _self.settings_details_element(tab['title'], tab['desc'], tab['id'] ~ '-details', content, context) }}
{% set children_ids = children_ids|merge([tab['id'] ~ '-details']) %}
</li>
{% endfor %}
</ul>
</nav>
{% endset %}
{{ _self.settings_details_element(title, summary, container_id, details_content, context, children_ids) }}
{% endmacro settings_details_container %}