mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-08 04:18:52 +00:00
[ticket/17100] Improve support for selects
PHPBB3-17100
This commit is contained in:
parent
003b606781
commit
8e05baca87
3 changed files with 61 additions and 11 deletions
|
@ -37,7 +37,7 @@
|
||||||
{% endmacro %}
|
{% endmacro %}
|
||||||
|
|
||||||
{% macro select(form_data) %}
|
{% macro select(form_data) %}
|
||||||
<select {% if form_data.id %}id="{{ form_data.id }}"{% endif %} name="{{ form_data.name }}">
|
<select {% if form_data.id %}id="{{ form_data.id }}"{% endif %} name="{{ form_data.name }}"{% if form_data.toggleable %} data-togglable-settings="true"{% endif %}>
|
||||||
{% for option in form_data.options %}
|
{% for option in form_data.options %}
|
||||||
<option value="{{ option.value }}"{% if option.selected %} selected="selected"{% endif %}>{{ option.label }}</option>
|
<option value="{{ option.value }}"{% if option.selected %} selected="selected"{% endif %}>{{ option.label }}</option>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
@ -51,6 +51,10 @@
|
||||||
{{ _self.dimension(form_data) }}
|
{{ _self.dimension(form_data) }}
|
||||||
{% elseif form_data.tag == 'radio' %}
|
{% elseif form_data.tag == 'radio' %}
|
||||||
{{ _self.radio_buttons(form_data) }}
|
{{ _self.radio_buttons(form_data) }}
|
||||||
|
{% elseif form_data.tag == 'select' %}
|
||||||
|
{{ _self.select(form_data) }}
|
||||||
|
{% elseif form_data.tag == 'textarea' %}
|
||||||
|
{{ _self.textarea(form_data) }}
|
||||||
{% elseif form_data[0] %}
|
{% elseif form_data[0] %}
|
||||||
{% for element in form_data %}
|
{% for element in form_data %}
|
||||||
{{ _self.build_template(element) }}
|
{{ _self.build_template(element) }}
|
||||||
|
|
|
@ -64,7 +64,7 @@ class acp_board
|
||||||
'board_index_text' => array('lang' => 'BOARD_INDEX_TEXT', 'validate' => 'string', 'type' => 'text:40:255', 'explain' => true),
|
'board_index_text' => array('lang' => 'BOARD_INDEX_TEXT', 'validate' => 'string', 'type' => 'text:40:255', 'explain' => true),
|
||||||
'board_disable' => array('lang' => 'DISABLE_BOARD', 'validate' => 'bool', 'type' => 'custom', 'method' => 'board_disable', 'explain' => true),
|
'board_disable' => array('lang' => 'DISABLE_BOARD', 'validate' => 'bool', 'type' => 'custom', 'method' => 'board_disable', 'explain' => true),
|
||||||
'board_disable_msg' => false,
|
'board_disable_msg' => false,
|
||||||
'default_lang' => array('lang' => 'DEFAULT_LANGUAGE', 'validate' => 'lang', 'type' => 'select', 'function' => 'language_select', 'params' => array('{CONFIG_VALUE}'), 'explain' => false),
|
'default_lang' => array('lang' => 'DEFAULT_LANGUAGE', 'validate' => 'lang', 'type' => 'select', 'method' => 'language_select', 'params' => array('{CONFIG_VALUE}'), 'explain' => false),
|
||||||
'default_dateformat' => array('lang' => 'DEFAULT_DATE_FORMAT', 'validate' => 'string', 'type' => 'custom', 'method' => 'dateformat_select', 'explain' => true),
|
'default_dateformat' => array('lang' => 'DEFAULT_DATE_FORMAT', 'validate' => 'string', 'type' => 'custom', 'method' => 'dateformat_select', 'explain' => true),
|
||||||
'board_timezone' => array('lang' => 'SYSTEM_TIMEZONE', 'validate' => 'timezone', 'type' => 'custom', 'method' => 'timezone_select', 'explain' => true),
|
'board_timezone' => array('lang' => 'SYSTEM_TIMEZONE', 'validate' => 'timezone', 'type' => 'custom', 'method' => 'timezone_select', 'explain' => true),
|
||||||
|
|
||||||
|
@ -976,19 +976,52 @@ class acp_board
|
||||||
/**
|
/**
|
||||||
* Select bump interval
|
* Select bump interval
|
||||||
*/
|
*/
|
||||||
function bump_interval($value, $key)
|
public function bump_interval($value, $key): array
|
||||||
{
|
{
|
||||||
global $user;
|
global $language;
|
||||||
|
|
||||||
$s_bump_type = '';
|
$bump_type_options = [];
|
||||||
$types = array('m' => 'MINUTES', 'h' => 'HOURS', 'd' => 'DAYS');
|
$types = array('m' => 'MINUTES', 'h' => 'HOURS', 'd' => 'DAYS');
|
||||||
foreach ($types as $type => $lang)
|
foreach ($types as $type => $lang)
|
||||||
{
|
{
|
||||||
$selected = ($this->new_config['bump_type'] == $type) ? ' selected="selected"' : '';
|
$bump_type_options[] = [
|
||||||
$s_bump_type .= '<option value="' . $type . '"' . $selected . '>' . $user->lang[$lang] . '</option>';
|
'value' => $type,
|
||||||
|
'selected' => $this->new_config['bump_type'] == $type,
|
||||||
|
'label' => $language->lang($lang),
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
return '<input id="' . $key . '" type="text" size="3" maxlength="4" name="config[bump_interval]" value="' . $value . '" /> <select name="config[bump_type]">' . $s_bump_type . '</select>';
|
return [
|
||||||
|
[
|
||||||
|
'tag' => 'input',
|
||||||
|
'id' => $key,
|
||||||
|
'type' => 'text',
|
||||||
|
'size' => 3,
|
||||||
|
'maxlength' => 4,
|
||||||
|
'name' => 'config[bump_interval]',
|
||||||
|
'value' => $value,
|
||||||
|
],
|
||||||
|
[
|
||||||
|
'tag' => 'select',
|
||||||
|
'name' => 'config[bump_type]',
|
||||||
|
'options' => $bump_type_options,
|
||||||
|
],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wrapper function for phpbb_language_select()
|
||||||
|
*
|
||||||
|
* @param string $default
|
||||||
|
* @param array $langdata
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function language_select(string $default = '', array $langdata = []): array
|
||||||
|
{
|
||||||
|
global $db;
|
||||||
|
|
||||||
|
return phpbb_language_select($db, $default, $langdata);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -482,12 +482,25 @@ function build_cfg_template($tpl_type, $key, &$new_ary, $config_key, $vars)
|
||||||
|
|
||||||
if ($tpl_type[0] == 'select')
|
if ($tpl_type[0] == 'select')
|
||||||
{
|
{
|
||||||
$size = (isset($tpl_type[1])) ? (int) $tpl_type[1] : 1;
|
if (is_string($return))
|
||||||
|
{
|
||||||
|
$size = (isset($tpl_type[1])) ? (int)$tpl_type[1] : 1;
|
||||||
$data_toggle = (!empty($tpl_type[2])) ? ' data-togglable-settings="true"' : '';
|
$data_toggle = (!empty($tpl_type[2])) ? ' data-togglable-settings="true"' : '';
|
||||||
|
|
||||||
$tpl = '<select id="' . $key . '" name="' . $name . '"' . (($size > 1) ? ' size="' . $size . '"' : '') . $data_toggle . '>' . $return . '</select>';
|
$tpl = '<select id="' . $key . '" name="' . $name . '"' . (($size > 1) ? ' size="' . $size . '"' : '') . $data_toggle . '>' . $return . '</select>';
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
$tpl = [
|
||||||
|
'tag' => 'select',
|
||||||
|
'id' => $key,
|
||||||
|
'name' => $name,
|
||||||
|
'toggleable' => !empty($tpl_type[2]),
|
||||||
|
'options' => $return,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
$tpl = $return;
|
$tpl = $return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue