mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-08 04:18:52 +00:00
[ticket/17361] Move language keys to storage adapters
PHPBB-17361
This commit is contained in:
parent
be3966c0cb
commit
a44295a1ba
6 changed files with 118 additions and 24 deletions
|
@ -47,7 +47,7 @@
|
|||
{% for provider in PROVIDERS %}
|
||||
{% if provider.is_available %}
|
||||
<option value="{{ get_class(provider) }}"{{ attribute(config, 'storage\\' ~ storage.get_name ~ '\\provider') == get_class(provider) ? ' selected' : '' }} data-toggle-setting="#{{ storage.get_name }}_{{ provider.get_name }}_settings">
|
||||
{{ lang('STORAGE_ADAPTER_' ~ provider.get_name | upper ~ '_NAME') }}
|
||||
{{ provider.get_title }}
|
||||
</option>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
@ -59,43 +59,42 @@
|
|||
{% for provider in PROVIDERS %}
|
||||
{% if provider.is_available %}
|
||||
<fieldset id="{{ storage.get_name }}_{{ provider.get_name }}_settings">
|
||||
<legend>{{ lang('STORAGE_' ~ storage.get_name | upper ~ '_TITLE') }} - {{ lang('STORAGE_ADAPTER_' ~ provider.get_name | upper ~ '_NAME') }}</legend>
|
||||
<legend>{{ lang('STORAGE_' ~ storage.get_name | upper ~ '_TITLE') }} - {{ provider.get_title }}</legend>
|
||||
{% for name, options in provider.get_options %}
|
||||
<dl>
|
||||
<dt>
|
||||
{% set title = 'STORAGE_ADAPTER_' ~ provider.get_name | upper ~ '_OPTION_' ~ name | upper %}
|
||||
{% set description = 'STORAGE_ADAPTER_' ~ provider.get_name | upper ~ '_OPTION_' ~ name | upper ~ '_EXPLAIN' %}
|
||||
<label>{{ lang(title) ~ lang('COLON') }}</label>
|
||||
{% if lang_defined(description) %}
|
||||
<br /><span>{{ lang(description) }}</span>
|
||||
<label>{{ options.title ~ lang('COLON') }}</label>
|
||||
{% if options.description %}
|
||||
<br /><span>{{ options.description }}</span>
|
||||
{% endif %}
|
||||
</dt>
|
||||
<dd>
|
||||
{% set input_name = storage.get_name ~ '[' ~ name ~ ']' %}
|
||||
{% set input_value = attribute(config, 'storage\\' ~ storage.get_name ~ '\\config\\' ~ name) %}
|
||||
{% set form_macro = options.form_macro %}
|
||||
|
||||
{% if options.tag == 'input' %}
|
||||
{{ FormsInput(options | merge({"name": input_name, "value": input_value})) }}
|
||||
{% elseif options.tag == 'textarea' %}
|
||||
{{ FormsTextarea(options | merge({"name": input_name, "content": input_value})) }}
|
||||
{% elseif options.tag == 'radio' %}
|
||||
{% if form_macro.tag == 'input' %}
|
||||
{{ FormsInput(form_macro | merge({"name": input_name, "value": input_value})) }}
|
||||
{% elseif form_macro.tag == 'textarea' %}
|
||||
{{ FormsTextarea(form_macro | merge({"name": input_name, "content": input_value})) }}
|
||||
{% elseif form_macro.tag == 'radio' %}
|
||||
{% set buttons = [] %}
|
||||
|
||||
{% for button in options.buttons %}
|
||||
{% set new_button = button | merge({"name": input_name, "label": lang(button.label), "checked": button.value == input_value}) %}
|
||||
{% for button in form_macro.buttons %}
|
||||
{% set new_button = button | merge({"name": input_name, "checked": button.value == input_value}) %}
|
||||
{% set buttons = buttons | merge([new_button]) %}
|
||||
{% endfor %}
|
||||
|
||||
{{ FormsRadioButtons(options | merge({"buttons": buttons})) }}
|
||||
{% elseif options.tag == 'select' %}
|
||||
{{ FormsRadioButtons(form_macro | merge({"buttons": buttons})) }}
|
||||
{% elseif form_macro.tag == 'select' %}
|
||||
{% set select_options = [] %}
|
||||
|
||||
{% for option in options.options %}
|
||||
{% for option in form_macro.options %}
|
||||
{% set new_option = option | merge({"selected": option.value == input_value}) %}
|
||||
{% set select_options = select_options | merge([new_option]) %}
|
||||
{% endfor %}
|
||||
|
||||
{{ FormsSelect(options | merge({"name": input_name, "options": select_options})) }}
|
||||
{{ FormsSelect(form_macro | merge({"name": input_name, "options": select_options})) }}
|
||||
{% endif %}
|
||||
</dd>
|
||||
</dl>
|
||||
|
@ -109,9 +108,9 @@
|
|||
<dl>
|
||||
<dt><label for="update_type">{{ lang('STORAGE_UPDATE_TYPE') ~ lang('COLON') }}</label></dt>
|
||||
<dd>
|
||||
<label><input id="update_type" class="radio" name="update_type" value="{{ STORAGE_UPDATE_TYPE_CONFIG }}" checked="checked" type="radio"> {{ lang('STORAGE_UPDATE_TYPE_CONFIG') }}</label>
|
||||
<label><input class="radio" name="update_type" value="{{ STORAGE_UPDATE_TYPE_CONFIG }}" type="radio"> {{ lang('STORAGE_UPDATE_TYPE_CONFIG') }}</label>
|
||||
<label><input class="radio" name="update_type" value="{{ STORAGE_UPDATE_TYPE_COPY }}" type="radio"> {{ lang('STORAGE_UPDATE_TYPE_COPY') }}</label>
|
||||
<label><input class="radio" name="update_type" value="{{ STORAGE_UPDATE_TYPE_MOVE }}" type="radio"> {{ lang('STORAGE_UPDATE_TYPE_MOVE') }}</label>
|
||||
<label><input class="radio" name="update_type" value="{{ STORAGE_UPDATE_TYPE_MOVE }}" type="radio" checked="checked" id="update_type"> {{ lang('STORAGE_UPDATE_TYPE_MOVE') }}</label>
|
||||
</dd>
|
||||
</dl>
|
||||
</fieldset>
|
||||
|
|
|
@ -72,6 +72,7 @@ services:
|
|||
storage.provider.local:
|
||||
class: phpbb\storage\provider\local
|
||||
arguments:
|
||||
- '@language'
|
||||
tags:
|
||||
- { name: storage.provider }
|
||||
|
||||
|
|
|
@ -65,6 +65,7 @@ $lang = array_merge($lang, [
|
|||
// Local adapter
|
||||
'STORAGE_ADAPTER_LOCAL_NAME' => 'Local',
|
||||
'STORAGE_ADAPTER_LOCAL_OPTION_PATH' => 'Path',
|
||||
'STORAGE_ADAPTER_LOCAL_OPTION_PATH_EXPLAIN' => 'Storage path for files.<br>For example: <samp>files</samp>, <samp>images/avatars/upload</samp> or <samp>store</samp>.',
|
||||
|
||||
// Form validation
|
||||
'STORAGE_UPDATE_SUCCESSFUL' => 'All storage types were successfully updated.',
|
||||
|
|
|
@ -13,8 +13,25 @@
|
|||
|
||||
namespace phpbb\storage\provider;
|
||||
|
||||
use phpbb\language\language;
|
||||
|
||||
class local implements provider_interface
|
||||
{
|
||||
/**
|
||||
* @var language
|
||||
*/
|
||||
protected $language;
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param language $language
|
||||
*/
|
||||
public function __construct(language $language)
|
||||
{
|
||||
$this->language = $language;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
|
@ -23,6 +40,11 @@ class local implements provider_interface
|
|||
return 'local';
|
||||
}
|
||||
|
||||
public function get_title(): string
|
||||
{
|
||||
return $this->language->lang('STORAGE_ADAPTER_LOCAL_NAME');
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
|
@ -38,9 +60,13 @@ class local implements provider_interface
|
|||
{
|
||||
return [
|
||||
'path' => [
|
||||
'title' => $this->language->lang('STORAGE_ADAPTER_LOCAL_OPTION_PATH'),
|
||||
'description' => $this->language->lang('STORAGE_ADAPTER_LOCAL_OPTION_PATH_EXPLAIN'),
|
||||
'form_macro' => [
|
||||
'tag' => 'input',
|
||||
'type' => 'text',
|
||||
],
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
|
|
|
@ -22,6 +22,13 @@ interface provider_interface
|
|||
*/
|
||||
public function get_name(): string;
|
||||
|
||||
/**
|
||||
* Gets adapter title for acp
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function get_title(): string;
|
||||
|
||||
/**
|
||||
* Gets adapter class
|
||||
*
|
||||
|
@ -32,6 +39,66 @@ interface provider_interface
|
|||
/**
|
||||
* Gets adapter options
|
||||
*
|
||||
* Example:
|
||||
* public function get_options()
|
||||
* {
|
||||
* return [
|
||||
* 'text-test' => [
|
||||
* 'title' => $this->language->lang('STORAGE_ADAPTER_DEMO_OPTION_TEXT_TEST'),
|
||||
* 'description' => $this->language->lang('STORAGE_ADAPTER_DEMO_OPTION_TEXT_TEST_EXPLAIN'),
|
||||
* 'form_macro' => [
|
||||
* 'tag' => 'input',
|
||||
* 'type' => 'text',
|
||||
* ],
|
||||
* ],
|
||||
* 'password-test' => [
|
||||
* 'title' => $this->language->lang('STORAGE_ADAPTER_DEMO_OPTION_PASSWORD_TEST'),
|
||||
* 'description' => $this->language->lang('STORAGE_ADAPTER_DEMO_OPTION_PASSWORD_TEST_EXPLAIN'),
|
||||
* 'form_macro' => [
|
||||
* 'tag' => 'input',
|
||||
* 'type' => 'password',
|
||||
* ],
|
||||
* ],
|
||||
* 'radio-test' => [
|
||||
* 'title' => $this->language->lang('STORAGE_ADAPTER_DEMO_OPTION_RADIO_TEST'),
|
||||
* 'description' => $this->language->lang('STORAGE_ADAPTER_DEMO_OPTION_RADIO_TEST_EXPLAIN'),
|
||||
* 'form_macro' => [
|
||||
* 'tag' => 'radio',
|
||||
* 'buttons' => [
|
||||
* [
|
||||
* 'type' => 'radio',
|
||||
* 'value' => '1',
|
||||
* 'label' => $this->language->lang('STORAGE_ADAPTER_DEMO_OPTION_RADIO_TEST_LABEL_ONE'),
|
||||
* ],
|
||||
* [
|
||||
* 'type' => 'radio',
|
||||
* 'value' => '2',
|
||||
* 'label' => $this->language->lang('STORAGE_ADAPTER_DEMO_OPTION_RADIO_TEST_LABEL_TWO'),
|
||||
* ],
|
||||
* ],
|
||||
* ],
|
||||
* ],
|
||||
* 'select-test' => [
|
||||
* 'title' => $this->language->lang('STORAGE_ADAPTER_DEMO_OPTION_SELECT_TEST'),
|
||||
* 'description' => $this->language->lang('STORAGE_ADAPTER_DEMO_OPTION_SELECT_TEST_EXPLAIN'),
|
||||
* 'form_macro' => [
|
||||
* 'tag' => 'select',
|
||||
* 'options' => [
|
||||
* ['value' => 'one', 'label' => $this->language->lang('STORAGE_ADAPTER_DEMO_OPTION_SELECT_TEST_LABEL_ONE')],
|
||||
* ['value' => 'two', 'label' => $this->language->lang('STORAGE_ADAPTER_DEMO_OPTION_SELECT_TEST_LABEL_TWO')],
|
||||
* ],
|
||||
* ],
|
||||
* ],
|
||||
* 'textarea-test' => [
|
||||
* 'title' => $this->language->lang('STORAGE_ADAPTER_DEMO_OPTION_TEXTAREA_TEST'),
|
||||
* 'description' => $this->language->lang('STORAGE_ADAPTER_DEMO_OPTION_TEXTAREA_TEST_EXPLAIN'),
|
||||
* 'form_macro' => [
|
||||
* 'tag' => 'textarea',
|
||||
* ]
|
||||
* ],
|
||||
* ];
|
||||
* }
|
||||
*
|
||||
* @return array Configuration keys
|
||||
*/
|
||||
public function get_options(): array;
|
||||
|
|
|
@ -206,7 +206,7 @@ class forms extends AbstractExtension
|
|||
{
|
||||
return $environment->render('macros/forms/textarea.twig', [
|
||||
'CLASS' => (string) ($form_data['class'] ?? ''),
|
||||
'ID' => (string) $form_data['id'],
|
||||
'ID' => (string) ($form_data['id'] ?? ''),
|
||||
'DATA' => $form_data['data'] ?? [],
|
||||
'NAME' => (string) $form_data['name'],
|
||||
'ROWS' => (int) ($form_data['rows'] ?? ''),
|
||||
|
|
Loading…
Add table
Reference in a new issue