Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions adm/style/boardrules_manage_languages.html
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,15 @@ <h1>{{ lang('ACP_BOARDRULES_LANGUAGES') }}</h1>
<td><strong>{{ language.LANG_LOCAL_NAME }}</strong><br><span>{{ language.LANG_ENGLISH_NAME }}{% if language.S_DEFAULT %} · {{ lang('ACP_BOARDRULES_DEFAULT_LANGUAGE') }}{% endif %}</span></td>
<td>{{ language.RULE_COUNT }}</td>
<td>
{% if language.S_EMPTY %}<span class="error">{{ lang(language.S_DEFAULT ? 'ACP_BOARDRULES_STATUS_NO_RULES' : 'ACP_BOARDRULES_STATUS_EMPTY') }}</span>
{% elseif language.S_DRAFT %}<strong>{{ lang('ACP_BOARDRULES_STATUS_DRAFT') }}</strong>
{% if language.S_EMPTY %}<span class="error">{{ lang(language.S_DEFAULT ? 'ACP_BOARDRULES_STATUS_NO_RULES' : (language.S_FALLBACK_AVAILABLE ? 'ACP_BOARDRULES_STATUS_EMPTY' : 'ACP_BOARDRULES_FALLBACK_UNAVAILABLE')) }}</span>
{% elseif language.S_DRAFT %}<strong>{{ lang('ACP_BOARDRULES_STATUS_DRAFT') }}</strong>{% if not language.S_DEFAULT %}<br><span{% if not language.S_FALLBACK_AVAILABLE %} class="error"{% endif %}>{{ lang(language.S_FALLBACK_AVAILABLE ? 'ACP_BOARDRULES_STATUS_EMPTY' : 'ACP_BOARDRULES_FALLBACK_UNAVAILABLE') }}</span>{% endif %}
{% else %}<strong class="success">{{ lang('ACP_BOARDRULES_STATUS_PUBLISHED') }}</strong>{% endif %}
</td>
<td class="actions">
<a href="{{ language.U_MANAGE }}">{{ lang('ACP_BOARDRULES_MANAGE_ACTION') }}</a>
{% if language.S_CAN_COPY %} &middot; <a href="{{ language.U_COPY }}">{{ lang('ACP_BOARDRULES_COPY_ACTION') }}</a>{% endif %}
{% if language.S_DRAFT %} &middot; <a href="{{ language.U_PUBLISH }}">{{ lang('ACP_BOARDRULES_PUBLISH') }}</a>{% endif %}
{% if language.S_CAN_DRAFT %} &middot; <a href="{{ language.U_DRAFT }}">{{ lang('ACP_BOARDRULES_SET_DRAFT') }}</a>{% endif %}
{% if language.S_PUBLISHED %} &middot; <a href="{{ language.U_DRAFT }}">{{ lang('ACP_BOARDRULES_SET_DRAFT') }}</a>{% endif %}
</td>
</tr>
{% endfor %}
Expand Down
10 changes: 5 additions & 5 deletions adm/style/boardrules_manage_rules.html
Original file line number Diff line number Diff line change
Expand Up @@ -43,23 +43,23 @@ <h1>{{ lang('ACP_BOARDRULES_MANAGE') }}</h1>
</form>
{% endif %}

{% if S_CAN_COPY_RULESET or S_RULESET_DRAFT or S_CAN_DRAFT_RULESET %}
{% if S_CAN_COPY_RULESET or S_RULESET_DRAFT or S_RULESET_PUBLISHED %}
<p class="boardrules-action-bar">
{% if S_CAN_COPY_RULESET %}<a href="{{ U_COPY_RULESET }}" class="button2 boardrules-button"><i class="icon fa-copy fa-fw" aria-hidden="true"></i> {{ lang('ACP_BOARDRULES_COPY_ACTION') }}</a>{% endif %}
{% if S_RULESET_DRAFT %}<a href="{{ U_PUBLISH_RULESET }}" class="button2 boardrules-button"><i class="icon fa-eye fa-fw" aria-hidden="true"></i> {{ lang('ACP_BOARDRULES_PUBLISH') }}</a>{% endif %}
{% if S_CAN_DRAFT_RULESET %}<a href="{{ U_DRAFT_RULESET }}" class="button2 boardrules-button"><i class="icon fa-eye-slash fa-fw" aria-hidden="true"></i> {{ lang('ACP_BOARDRULES_SET_DRAFT') }}</a>{% endif %}
{% if S_RULESET_PUBLISHED %}<a href="{{ U_DRAFT_RULESET }}" class="button2 boardrules-button"><i class="icon fa-eye-slash fa-fw" aria-hidden="true"></i> {{ lang('ACP_BOARDRULES_SET_DRAFT') }}</a>{% endif %}
</p>
{% endif %}

{% if S_RULESET_DRAFT %}
<div class="errorbox notice">
<h3>{{ lang('ACP_BOARDRULES_STATUS_DRAFT') }}</h3>
<p>{{ lang(S_DEFAULT_LANGUAGE ? 'ACP_BOARDRULES_DRAFT_DEFAULT_NOTICE' : 'ACP_BOARDRULES_DRAFT_NOTICE') }}</p>
<p>{{ lang(S_DEFAULT_LANGUAGE ? 'ACP_BOARDRULES_DRAFT_DEFAULT_NOTICE' : (S_FALLBACK_AVAILABLE ? 'ACP_BOARDRULES_DRAFT_NOTICE' : 'ACP_BOARDRULES_FALLBACK_UNAVAILABLE')) }}</p>
</div>
{% elseif S_RULESET_EMPTY %}
<div class="errorbox notice">
<h3>{{ lang(S_DEFAULT_LANGUAGE ? 'ACP_BOARDRULES_STATUS_NO_RULES' : 'ACP_BOARDRULES_STATUS_EMPTY') }}</h3>
<p>{{ lang(S_DEFAULT_LANGUAGE ? 'ACP_BOARDRULES_EMPTY_DEFAULT_NOTICE' : 'ACP_BOARDRULES_EMPTY_NOTICE') }}</p>
<h3>{{ lang(S_DEFAULT_LANGUAGE or not S_FALLBACK_AVAILABLE ? 'ACP_BOARDRULES_STATUS_NO_RULES' : 'ACP_BOARDRULES_STATUS_EMPTY') }}</h3>
<p>{{ lang(S_DEFAULT_LANGUAGE ? 'ACP_BOARDRULES_EMPTY_DEFAULT_NOTICE' : (S_FALLBACK_AVAILABLE ? 'ACP_BOARDRULES_EMPTY_NOTICE' : 'ACP_BOARDRULES_FALLBACK_UNAVAILABLE')) }}</p>
</div>
{% endif %}

Expand Down
1 change: 1 addition & 0 deletions config/services.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ services:
arguments:
- '@service_container'
- '@phpbb.boardrules.nestedset_rules'
- '@phpbb.boardrules.ruleset_operator'
- '@phpbb.boardrules.table_lock'

phpbb.boardrules.ruleset_operator:
Expand Down
57 changes: 46 additions & 11 deletions controller/admin_controller.php
Original file line number Diff line number Diff line change
Expand Up @@ -217,8 +217,8 @@ public function display_language_dashboard()
'S_EMPTY' => $is_empty,
'S_PUBLISHED' => !$is_empty && $language['published'],
'S_DRAFT' => !$is_empty && !$language['published'],
'S_FALLBACK_AVAILABLE' => !$is_default && $this->default_ruleset_is_available($languages),
'S_CAN_COPY' => $this->has_copy_source($languages, $language['lang_iso']),
'S_CAN_DRAFT' => !$is_empty && $language['published'] && !$is_default,
'U_MANAGE' => "{$this->u_action}&amp;language={$language['lang_iso']}",
'U_COPY' => "{$this->u_action}&amp;action=copy&amp;language={$language['lang_iso']}&amp;return_to=dashboard",
'U_PUBLISH' => "{$this->u_action}&amp;action=publish&amp;language={$language['lang_iso']}&amp;return_to=dashboard",
Expand Down Expand Up @@ -249,6 +249,7 @@ public function display_rules($language, $parent_id = 0)

$languages = $this->assign_language_options($language);
$current_language = $this->find_language($languages, $language);
$fallback_available = $this->default_ruleset_is_available($languages);
if ($current_language === null)
{
trigger_error($this->lang->lang('ACP_BOARDRULES_INVALID_LANGUAGE') . adm_back_link($this->u_action), E_USER_WARNING);
Expand Down Expand Up @@ -321,7 +322,7 @@ public function display_rules($language, $parent_id = 0)
'S_DEFAULT_LANGUAGE' => $language === $this->config['default_lang'],
'S_RULESET_PUBLISHED' => $current_language['rule_count'] > 0 && $current_language['published'],
'S_RULESET_DRAFT' => $current_language['rule_count'] > 0 && !$current_language['published'],
'S_CAN_DRAFT_RULESET' => $current_language['rule_count'] > 0 && $current_language['published'] && $language !== $this->config['default_lang'],
'S_FALLBACK_AVAILABLE' => $language !== $this->config['default_lang'] && $fallback_available,
'S_CAN_COPY_RULESET' => $this->has_copy_source($languages, $language),
'S_RULESET_ROOT' => $parent_id === 0,
));
Expand Down Expand Up @@ -364,7 +365,7 @@ public function save_ruleset_intro($language)
{
$this->ruleset_operator->set_intro_text($language, $intro_text);
}
catch (\InvalidArgumentException $e)
catch (\InvalidArgumentException|\RuntimeException $e)
{
trigger_error($this->lang->lang($e->getMessage()) . adm_back_link($this->u_action), E_USER_WARNING);
}
Expand Down Expand Up @@ -455,18 +456,13 @@ public function set_ruleset_published($language, $published, $return_to = '')
{
$return_url = $this->get_ruleset_return_url($language, $return_to);

if (!$published && $language === $this->config['default_lang'])
{
trigger_error($this->lang->lang('ACP_BOARDRULES_DEFAULT_CANNOT_DRAFT') . adm_back_link($return_url), E_USER_WARNING);
}

if (confirm_box(true))
{
try
{
$this->ruleset_operator->set_published($language, $published);
}
catch (\InvalidArgumentException $e)
catch (\InvalidArgumentException|\RuntimeException $e)
{
trigger_error($this->lang->lang($e->getMessage()) . adm_back_link($return_url), E_USER_WARNING);
}
Expand All @@ -477,7 +473,21 @@ public function set_ruleset_published($language, $published, $return_to = '')
trigger_error($this->lang->lang($message) . adm_back_link($return_url));
}

$confirm_key = $published ? 'ACP_BOARDRULES_PUBLISH_CONFIRM' : 'ACP_BOARDRULES_DRAFT_CONFIRM';
if ($published)
{
$confirm_key = 'ACP_BOARDRULES_PUBLISH_CONFIRM';
}
else if ($language === $this->config['default_lang'])
{
$confirm_key = 'ACP_BOARDRULES_DRAFT_DEFAULT_CONFIRM';
}
else
{
$confirm_key = $this->default_ruleset_is_available($this->ruleset_operator->get_languages())
? 'ACP_BOARDRULES_DRAFT_CONFIRM'
: 'ACP_BOARDRULES_DRAFT_NO_FALLBACK_CONFIRM';
}

confirm_box(false, $this->lang->lang($confirm_key), build_hidden_fields(array(
'mode' => 'manage',
'action' => $published ? 'publish' : 'draft',
Expand Down Expand Up @@ -696,6 +706,10 @@ protected function add_edit_rule_data($entity, $data)
{
$this->rule_operator->change_parent($entity->get_id(), $data['rule_parent_id']);
}
catch (\phpbb\boardrules\exception\out_of_bounds $e)
{
trigger_error($e->get_message($this->lang) . adm_back_link($this->u_action), E_USER_WARNING);
}
catch (\Exception $e)
{
trigger_error($this->lang->lang($e->getMessage()) . adm_back_link($this->u_action), E_USER_WARNING);
Expand All @@ -716,7 +730,7 @@ protected function add_edit_rule_data($entity, $data)
{
trigger_error($e->get_message($this->lang) . adm_back_link($this->u_action), E_USER_WARNING);
}
catch (\RuntimeException $e)
catch (\InvalidArgumentException|\RuntimeException $e)
{
trigger_error($this->lang->lang($e->getMessage()) . adm_back_link($this->u_action), E_USER_WARNING);
}
Expand Down Expand Up @@ -785,6 +799,10 @@ public function delete_rule($rule_id)
{
$this->rule_operator->delete_rule($rule_id);
}
catch (\phpbb\boardrules\exception\out_of_bounds $e)
{
trigger_error($e->get_message($this->lang) . adm_back_link($this->u_action), E_USER_WARNING);
}
catch (\Exception $e)
{
trigger_error($this->lang->lang($e->getMessage()) . adm_back_link($this->u_action), E_USER_WARNING);
Expand Down Expand Up @@ -833,6 +851,10 @@ public function move_rule($rule_id, $direction, $amount = 1)
{
$this->rule_operator->move($rule_id, $direction, $amount);
}
catch (\phpbb\boardrules\exception\out_of_bounds $e)
{
trigger_error($e->get_message($this->lang) . adm_back_link($this->u_action), E_USER_WARNING);
}
catch (\Exception $e)
{
trigger_error($this->lang->lang($e->getMessage()) . adm_back_link($this->u_action), E_USER_WARNING);
Expand Down Expand Up @@ -942,6 +964,19 @@ protected function find_language(array $languages, $language_iso)
return null;
}

/**
* Test whether published default-language rules are available as a fallback.
*
* @param array $languages
* @return bool
*/
protected function default_ruleset_is_available(array $languages)
{
$default = $this->find_language($languages, $this->config['default_lang']);

return $default !== null && $default['rule_count'] > 0 && $default['published'];
}

/**
* @param array $languages
* @param string $target_language
Expand Down
7 changes: 5 additions & 2 deletions language/ar/boardrules_acp.php
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@
'ACP_BOARDRULES_LANGUAGES_EXPLAIN' => 'أدر جميع اللغات المثبتة من مكان واحد. انسخ مجموعة قوانين كاملة إلى لغة أخرى، وترجمها كمسودة، ثم انشرها عندما تصبح جاهزة.',
'ACP_BOARDRULES_RULES' => 'القوانين',
'ACP_BOARDRULES_STATUS' => 'الحالة',
'ACP_BOARDRULES_STATUS_EMPTY' => 'استخدام اللغة الافتراضية',
'ACP_BOARDRULES_STATUS_EMPTY' => 'استخدام قواعد اللغة الافتراضية',
'ACP_BOARDRULES_STATUS_NO_RULES' => 'لا توجد قوانين',
'ACP_BOARDRULES_STATUS_DRAFT' => 'مسودة',
'ACP_BOARDRULES_STATUS_PUBLISHED' => 'منشور',
Expand Down Expand Up @@ -105,7 +105,6 @@
'ACP_BOARDRULES_COPY_ANCHORS_RENAMED' => 'أُعيدت تسمية %d من المراسي المتعارضة باستخدام لواحق رقمية.',
'ACP_BOARDRULES_INVALID_LANGUAGE' => 'اللغة المحددة غير مثبتة.',
'ACP_BOARDRULES_STATUS_CHANGE_EMPTY' => 'لا يمكن نشر مجموعة قوانين فارغة أو تغييرها إلى مسودة.',
'ACP_BOARDRULES_DEFAULT_CANNOT_DRAFT' => 'لا يمكن تغيير لغة المنتدى الافتراضية إلى مسودة.',
'ACP_BOARDRULES_PUBLISH_CONFIRM' => 'هل تريد نشر مجموعة القوانين الكاملة لهذه اللغة؟ سيراها مستخدمو هذه اللغة فوراً.',
'ACP_BOARDRULES_DRAFT_CONFIRM' => 'هل تريد تغيير مجموعة القوانين الكاملة لهذه اللغة إلى مسودة؟ سيرى مستخدمو هذه اللغة قوانين اللغة الافتراضية للمنتدى بدلاً منها.',
'ACP_BOARDRULES_PUBLISH_SUCCESS' => 'نُشرت مجموعة قوانين اللغة.',
Expand Down Expand Up @@ -134,6 +133,10 @@
'ACP_RULE_EDITED' => 'تم تعديل القانون بنجاح.',
'ACP_RULE_TITLE_EMPTY' => 'يجب إضافة عنوان لهذه القانون.',

'ACP_BOARDRULES_FALLBACK_UNAVAILABLE' => 'لا تتوفر أية قواعد لغة افتراضية منشورة.',
'ACP_BOARDRULES_DRAFT_DEFAULT_CONFIRM' => 'هل تريد تغيير مجموعة قواعد اللغة الافتراضية إلى مسودة؟ لن يكون لدى المستخدمين الذين ليس لديهم مجموعة قواعد منشورة أخرى أي قواعد متاحة.',
'ACP_BOARDRULES_DRAFT_NO_FALLBACK_CONFIRM' => 'هل تريد تغيير مجموعة قواعد اللغة الكاملة هذه إلى مسودة؟ لا تتوفر أي قواعد لغة افتراضية منشورة كبديل.',

// Nested set exception messages (only appears in PHP error logging)
// Translators: Feel free to not translate these language strings
'RULES_NESTEDSET_LOCK_FAILED_ACQUIRE' => 'فشلت قوانين المنتدى في اغلاق الجدول. ربما هناك عملية أخرى تمنع ذلك حالياً. يتم إيقاف عمليات الإغلاق بعد فترة مُحددة : ساعة واحدة.',
Expand Down
7 changes: 5 additions & 2 deletions language/bg/boardrules_acp.php
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@
'ACP_BOARDRULES_LANGUAGES_EXPLAIN' => 'Управлявайте всички инсталирани езици от едно място. Копирайте пълен набор от правила на друг език, преведете го като чернова и го публикувайте, когато е готов.',
'ACP_BOARDRULES_RULES' => 'Правила',
'ACP_BOARDRULES_STATUS' => 'Състояние',
'ACP_BOARDRULES_STATUS_EMPTY' => 'Използва се езикът по подразбиране',
'ACP_BOARDRULES_STATUS_EMPTY' => 'Използват се правилата на езика по подразбиране',
'ACP_BOARDRULES_STATUS_NO_RULES' => 'Няма правила',
'ACP_BOARDRULES_STATUS_DRAFT' => 'Чернова',
'ACP_BOARDRULES_STATUS_PUBLISHED' => 'Публикувано',
Expand Down Expand Up @@ -104,7 +104,6 @@
'ACP_BOARDRULES_COPY_ANCHORS_RENAMED' => '%d конфликтни котви бяха преименувани с цифрови суфикси.',
'ACP_BOARDRULES_INVALID_LANGUAGE' => 'Избраният език не е инсталиран.',
'ACP_BOARDRULES_STATUS_CHANGE_EMPTY' => 'Празен набор от правила не може да бъде публикуван или зададен като чернова.',
'ACP_BOARDRULES_DEFAULT_CANNOT_DRAFT' => 'Езикът по подразбиране на форума не може да бъде зададен като чернова.',
'ACP_BOARDRULES_PUBLISH_CONFIRM' => 'Да се публикува ли този пълен набор от правила? Потребителите на този език ще го видят веднага.',
'ACP_BOARDRULES_DRAFT_CONFIRM' => 'Да се зададе ли този пълен набор от правила като чернова? Потребителите на този език вместо него ще виждат правилата на езика по подразбиране на форума.',
'ACP_BOARDRULES_PUBLISH_SUCCESS' => 'Наборът от правила на езика е публикуван.',
Expand Down Expand Up @@ -134,6 +133,10 @@
'ACP_RULE_EDITED' => 'Правилото успешно редактирано.',
'ACP_RULE_TITLE_EMPTY' => 'Трябва да въведете заглавие за това Правило.',

'ACP_BOARDRULES_FALLBACK_UNAVAILABLE' => 'Няма публикувани правила за език по подразбиране.',
'ACP_BOARDRULES_DRAFT_DEFAULT_CONFIRM' => 'Промяна на набора от правила за език по подразбиране на чернова? Потребителите без друг публикуван набор от правила няма да имат налични правила.',
'ACP_BOARDRULES_DRAFT_NO_FALLBACK_CONFIRM' => 'Да промените този пълен набор от езикови правила на чернова? Няма публикувани правила за език по подразбиране, налични като резервен вариант.',

// Nested set exception messages (only appears in PHP error logging)
// Translators: Feel free to not translate these language strings
'RULES_NESTEDSET_LOCK_FAILED_ACQUIRE' => 'Board rules failed to acquire the table lock. Another process may be holding the lock. Locks are forcibly released after a timeout of 1 hour.',
Expand Down
7 changes: 5 additions & 2 deletions language/cs/boardrules_acp.php
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@
'ACP_BOARDRULES_LANGUAGES_EXPLAIN' => 'Spravujte všechny nainstalované jazyky na jednom místě. Zkopírujte kompletní sadu pravidel do jiného jazyka, přeložte ji jako koncept a po dokončení ji zveřejněte.',
'ACP_BOARDRULES_RULES' => 'Pravidla',
'ACP_BOARDRULES_STATUS' => 'Stav',
'ACP_BOARDRULES_STATUS_EMPTY' => 'Používá se výchozí jazyk',
'ACP_BOARDRULES_STATUS_EMPTY' => 'Používají se pravidla výchozího jazyka',
'ACP_BOARDRULES_STATUS_NO_RULES' => 'Žádná pravidla',
'ACP_BOARDRULES_STATUS_DRAFT' => 'Koncept',
'ACP_BOARDRULES_STATUS_PUBLISHED' => 'Zveřejněno',
Expand Down Expand Up @@ -104,7 +104,6 @@
'ACP_BOARDRULES_COPY_ANCHORS_RENAMED' => '%d konfliktních odkazů bylo přejmenováno pomocí číselných přípon.',
'ACP_BOARDRULES_INVALID_LANGUAGE' => 'Vybraný jazyk není nainstalován.',
'ACP_BOARDRULES_STATUS_CHANGE_EMPTY' => 'Prázdnou sadu pravidel nelze zveřejnit ani nastavit jako koncept.',
'ACP_BOARDRULES_DEFAULT_CANNOT_DRAFT' => 'Výchozí jazyk fóra nelze nastavit jako koncept.',
'ACP_BOARDRULES_PUBLISH_CONFIRM' => 'Zveřejnit tuto kompletní jazykovou sadu pravidel? Uživatelé tohoto jazyka ji uvidí okamžitě.',
'ACP_BOARDRULES_DRAFT_CONFIRM' => 'Nastavit tuto kompletní jazykovou sadu pravidel jako koncept? Uživatelé tohoto jazyka místo ní uvidí pravidla ve výchozím jazyce fóra.',
'ACP_BOARDRULES_PUBLISH_SUCCESS' => 'Jazyková sada pravidel byla zveřejněna.',
Expand Down Expand Up @@ -134,6 +133,10 @@
'ACP_RULE_EDITED' => 'Pravidlo úspěšně upraveno.',
'ACP_RULE_TITLE_EMPTY' => 'Musíš zadat název pravidla.',

'ACP_BOARDRULES_FALLBACK_UNAVAILABLE' => 'Nejsou k dispozici žádná publikovaná pravidla výchozího jazyka.',
'ACP_BOARDRULES_DRAFT_DEFAULT_CONFIRM' => 'Změnit sadu pravidel výchozího jazyka na koncept? Uživatelé bez další publikované sady pravidel nebudou mít žádná pravidla k dispozici.',
'ACP_BOARDRULES_DRAFT_NO_FALLBACK_CONFIRM' => 'Změnit tuto úplnou sadu jazykových pravidel na koncept? Žádná publikovaná pravidla výchozího jazyka nejsou k dispozici jako záložní.',

// Nested set exception messages (only appears in PHP error logging)
// Translators: Feel free to not translate these language strings
'RULES_NESTEDSET_LOCK_FAILED_ACQUIRE' => 'Board rules se nepodařilo uzamknout tabulku. Možná je právě uzamčena jiným procesem. Zámky jsou násilně odstraňovány po uplynutí jedné hodiny.',
Expand Down
Loading