1
0
mirror of https://github.com/phpbb/phpbb.git synced 2025-07-30 21:40:43 +02:00

[ticket/17100] Refactor code to be more reusable

PHPBB3-17100
This commit is contained in:
Marc Alexander
2022-04-18 20:10:02 +02:00
parent 516d5313ad
commit 2dfe5ebe6d
16 changed files with 189 additions and 101 deletions

View File

@@ -0,0 +1,58 @@
{% macro input(form_data) %}
<input
{% if form_data.id %}id="{{ form_data.id }}"{% endif %}
type="{{ form_data.type }}"
name="{{ form_data.name }}"
{% if form_data.size %}size="{{ form_data.size }}"{% endif %}
{% if form_data.maxlength %}maxlength="{{ form_data.maxlength }}"{% endif %}
{% if form_data.min %}min="{{ form_data.min }}"{% endif %}
{% if form_data.max %}max="{{ form_data.max }}"{% endif %}
{% if form_data.type == 'password' %}autocomplete="off"{% endif %}
{% if form_data.checked %}checked="checked"{% endif %}
{% if form_data.class %}class="{{ form_data.class }}"{% endif %}
value="{{ form_data.value }}"
>
{% endmacro %}
{% macro dimension(form_data) %}
{{ _self.input(form_data.width) }} x {{ _self.input(form_data.height) }}
{% endmacro %}
{% macro textarea(form_data) %}
<textarea
id="{{ form_data.id }}"
name="{{ form_data.name }}"
rows="{{ form_data.rows }}"
cols="{{ form_data.cols }}"
>
{{ form_data.content }}
</textarea>
{% endmacro %}
{% macro radio_buttons(form_data) %}
<label>{{ _self.input(form_data.buttons[0]) ~ form_data.buttons[0].label }}</label>
<label>{{ _self.input(form_data.buttons[1]) ~ form_data.buttons[1].label }}</label>
{% endmacro %}
{% macro select(form_data) %}
<select id="{{ form_data.id }}" name="{{ form_data.name }}">
{% for option in form_data.options %}
<option value="{{ option.value }}"{% if option.selected %} selected="selected"{% endif %}>{{ option.label }}</option>
{% endfor %}
</select>
{% endmacro %}
{% macro build_template(form_data) %}
{% if form_data.tag == 'input' %}
{{ _self.input(form_data) }}
{% elseif form_data.tag == 'dimension' %}
{{ _self.dimension(form_data) }}
{% elseif form_data.tag == 'radio' %}
{{ _self.radio_buttons(form_data) }}
{% elseif form_data[0] %}
{% for element in form_data %}
{{ _self.build_template(element) }}
{% endfor %}
{% endif %}
{% if form_data.append %}{{ form_data.append }}{% endif %}
{% endmacro %}

View File

@@ -2,15 +2,12 @@
<!-- IF S_SHOW_COPPA or S_REGISTRATION -->
{% if lang_options|length > 0 %}
{% if LANG_OPTIONS %}
<form method="post" action="{S_UCP_ACTION}" id="register">
<p class="rightside">
<label for="lang">{{ lang('LANGUAGE') ~ lang('COLON') }}</label>
<select name="lang" id="lang" title="{{ lang('LANGUAGE') }}">
{% for option in lang_options %}
<option value="{{ option.LANG_ISO }}"{% if option.SELECTED %} selected="selected"{% endif %}>{{ option.LANG_LOCAL_NAME }}</option>
{% endfor %}
</select>
<label for="{{ LANG_OPTIONS.id }}">{{ lang('LANGUAGE') ~ lang('COLON') }}</label>
{% import "macros/form_macros.twig" as form_macros %}
{{ form_macros.select(LANG_OPTIONS) }}
{S_HIDDEN_FIELDS}
</p>
</form>
@@ -21,7 +18,7 @@
/**
* Change language on change
*/
document.querySelector('#lang').addEventListener('change', (event) => {
document.querySelector("{{ '#' ~ LANG_OPTIONS.id }}").addEventListener('change', (event) => {
const langIso = event.target.value;
document.cookie = '{{ COOKIE_NAME }}_lang=' + langIso + '; path={{ COOKIE_PATH }}';
document.forms['register'].change_lang.value = langIso;

View File

@@ -52,13 +52,10 @@
<!-- ENDIF -->
<!-- IF S_MORE_LANGUAGES -->
<dl>
<dt><label for="lang">{L_BOARD_LANGUAGE}{L_COLON}</label></dt>
<dt><label for="{{ LANG_OPTIONS.id }}">{L_BOARD_LANGUAGE}{L_COLON}</label></dt>
<dd>
<select name="lang" id="lang">
{% for option in lang_options %}
<option value="{{ option.LANG_ISO }}"{% if option.SELECTED %} selected="selected"{% endif %}>{{ option.LANG_LOCAL_NAME }}</option>
{% endfor %}
</select>
{% import "macros/form_macros.twig" as form_macros %}
{{ form_macros.select(LANG_OPTIONS) }}
</dd>
</dl>
<!-- ENDIF -->

View File

@@ -57,17 +57,23 @@
<hr />
<!-- EVENT ucp_register_options_before -->
{% if lang_options|length > 0 %}
{% if LANG_OPTIONS %}
<dl>
<dt><label for="lang">{{ lang('LANGUAGE') ~ lang('COLON') }}</label></dt>
<dt><label for="{{ LANG_OPTIONS.id }}">{{ lang('LANGUAGE') ~ lang('COLON') }}</label></dt>
<dd>
<select name="lang" id="lang" onchange="change_language(this.value); return false;" tabindex="6" title="{{ lang('LANGUAGE') }}">
{% for option in lang_options %}
<option value="{{ option.LANG_ISO }}"{% if option.SELECTED %} selected="selected"{% endif %}>{{ option.LANG_LOCAL_NAME }}</option>
{% endfor %}
</select>
{% import "macros/form_macros.twig" as form_macros %}
{{ form_macros.select(LANG_OPTIONS) }}
</dd>
</dl>
<script>
/**
* Change language on change
*/
document.querySelector("{{ '#' ~ LANG_OPTIONS.id }}").addEventListener('change', (event) => {
change_language(event.target.value);
return false;
});
</script>
{% endif %}
<!-- INCLUDE timezone_option.html -->