[ticket/17361] Move language keys to storage adapters

PHPBB-17361
This commit is contained in:
Ruben Calvo 2024-11-30 01:25:17 +01:00
parent be3966c0cb
commit a44295a1ba
No known key found for this signature in database
6 changed files with 118 additions and 24 deletions

View file

@ -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>

View file

@ -72,6 +72,7 @@ services:
storage.provider.local:
class: phpbb\storage\provider\local
arguments:
- '@language'
tags:
- { name: storage.provider }

View file

@ -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.',

View file

@ -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,8 +60,12 @@ class local implements provider_interface
{
return [
'path' => [
'tag' => 'input',
'type' => 'text',
'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',
],
],
];
}

View file

@ -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,7 +39,67 @@ interface provider_interface
/**
* Gets adapter options
*
* @return array Configuration keys
* 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;

View file

@ -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'] ?? ''),