diff --git a/controller/admin_controller.php b/controller/admin_controller.php
index ad61158e..c0fa0287 100644
--- a/controller/admin_controller.php
+++ b/controller/admin_controller.php
@@ -555,16 +555,14 @@ public function add_rule($language, $parent_id = 0)
* @param int $rule_id The rule identifier to edit
* @return void
* @access public
- * @throws \phpbb\boardrules\exception\base If the rule does not exist or stored rule data is invalid
+ * @throws \phpbb\boardrules\exception\base If stored rule data is invalid
*/
public function edit_rule($rule_id)
{
// Add form key
add_form_key('add_edit_rule');
- // Initiate and load the rule entity
- /* @var $entity \phpbb\boardrules\entity\rule */
- $entity = $this->container->get('phpbb.boardrules.entity')->load($rule_id);
+ $entity = $this->load_rule($rule_id);
// Collect the form data
$data = array(
@@ -778,13 +776,10 @@ protected function add_edit_rule_data($entity, $data)
* @param int $rule_id The rule identifier to delete
* @return void
* @access public
- * @throws \phpbb\boardrules\exception\out_of_bounds If the rule does not exist
*/
public function delete_rule($rule_id)
{
- // Initiate and load the rule entity
- /* @var $entity \phpbb\boardrules\entity\rule */
- $entity = $this->container->get('phpbb.boardrules.entity')->load($rule_id);
+ $entity = $this->load_rule($rule_id);
// Use a confirmation box routine when deleting a rule
if (confirm_box(true))
@@ -811,7 +806,7 @@ public function delete_rule($rule_id)
$is_cat = (int) ($entity->get_right_id() - $entity->get_left_id() > 1);
// Request confirmation from the user to delete the rule
- confirm_box(false, $this->lang->lang('ACP_DELETE_RULE_CONFIRM', $is_cat), build_hidden_fields(array(
+ confirm_box(false, $this->lang->lang($is_cat ? 'ACP_DELETE_RULE_CATEGORY_CONFIRM' : 'ACP_DELETE_RULE_CONFIRM'), build_hidden_fields(array(
'mode' => 'manage',
'action' => 'delete',
'rule_id' => $rule_id,
@@ -831,10 +826,11 @@ public function delete_rule($rule_id)
* @param int $amount The number of places to move the rule
* @return void
* @access public
- * @throws \phpbb\boardrules\exception\out_of_bounds If the rule does not exist after moving
*/
public function move_rule($rule_id, $direction, $amount = 1)
{
+ $moved = false;
+
// If the link hash is invalid, stop and show an error message to the user
if (!check_link_hash($this->request->variable('hash', ''), $direction . $rule_id))
{
@@ -862,9 +858,7 @@ public function move_rule($rule_id, $direction, $amount = 1)
$json_response->send(array('success' => $moved));
}
- // Initiate and load the rule entity for no AJAX request
- /* @var $entity \phpbb\boardrules\entity\rule */
- $entity = $this->container->get('phpbb.boardrules.entity')->load($rule_id);
+ $entity = $this->load_rule($rule_id);
// Use a redirect to reload the current page
redirect("{$this->u_action}&language={$entity->get_language()}&parent_id={$entity->get_parent_id()}");
@@ -920,6 +914,24 @@ public function set_page_url($u_action)
$this->u_action = $u_action;
}
+ /**
+ * Load a rule or display a recoverable ACP error when it no longer exists.
+ *
+ * @param int $rule_id Rule identifier
+ * @return \phpbb\boardrules\entity\rule_interface
+ */
+ protected function load_rule($rule_id)
+ {
+ try
+ {
+ return $this->container->get('phpbb.boardrules.entity')->load($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);
+ }
+ }
+
/**
* Assign installed language options and return their dashboard data.
*
diff --git a/controller/main_controller.php b/controller/main_controller.php
index 25ab4803..17724a8b 100644
--- a/controller/main_controller.php
+++ b/controller/main_controller.php
@@ -116,6 +116,11 @@ public function display()
$item_depth = count($open_categories);
+ // Build a stable compound number from sibling positions at every nesting level
+ $compound_counters = array_slice($compound_counters, 0, $item_depth + 1);
+ $compound_counters[$item_depth] = isset($compound_counters[$item_depth]) ? $compound_counters[$item_depth] + 1 : 1;
+ $compound_number = implode('.', $compound_counters);
+
if ($entity->get_right_id() - $entity->get_left_id() > 1)
{
// Rule categories
@@ -131,7 +136,7 @@ public function display()
{
// Rules
$is_category = false;
- $anchor = $entity->get_anchor() ?: $this->lang->lang('BOARDRULES_RULE_ANCHOR', ($cat_counter - 1) . $rule_counter);
+ $anchor = $entity->get_anchor() ?: $this->lang->lang('BOARDRULES_RULE_ANCHOR', $item_depth ? ($cat_counter - 1) . $rule_counter : $compound_number);
// Increment rule counter
$rule_counter++;
@@ -141,11 +146,6 @@ public function display()
// one-based display depth; rules use the containing category count.
$depth = $is_category ? $item_depth + 1 : $item_depth;
- // Build a stable compound number from sibling positions at every nesting level
- $compound_counters = array_slice($compound_counters, 0, $item_depth + 1);
- $compound_counters[$item_depth] = isset($compound_counters[$item_depth]) ? $compound_counters[$item_depth] + 1 : 1;
- $compound_number = implode('.', $compound_counters);
-
// Assign values to template vars for this rule entity
$this->template->assign_block_vars('rules', array(
'TITLE' => $entity->get_title(),
diff --git a/entity/rule.php b/entity/rule.php
index 34699bbe..6ec87b86 100644
--- a/entity/rule.php
+++ b/entity/rule.php
@@ -89,7 +89,8 @@ public function load($id)
*
* Used when the data is already loaded externally.
* Any existing data on this rule is over-written.
- * All data is validated and an exception is thrown if any data is invalid.
+ * Required fields and basic data types are validated. Values already loaded
+ * from storage are not passed through write-time transformations again.
*
* @param array $data Data array, typically from the database
* @return rule_interface $this object for chaining calls; load()->set()->save()
@@ -111,7 +112,7 @@ public function import($data)
'rule_parent_id' => 'integer',
'rule_parents' => 'string',
'rule_anchor' => 'string',
- 'rule_title' => 'set_title', // call set_title()
+ 'rule_title' => 'string',
// We do not pass to set_message() as generate_text_for_storage would run twice
'rule_message' => 'string',
@@ -273,10 +274,13 @@ public function set_title($title)
// Enforce a string
$title = (string) $title;
- $title = $this->encode_unicode_for_storage($title);
+ // MSSQL string literals cannot safely preserve every BMP character.
+ $title = strpos($this->db->get_sql_layer(), 'mssql') === 0
+ ? utf8_encode_ncr($title)
+ : utf8_encode_ucr($title);
- // Limit both the displayed and stored title lengths to the column size.
- if (truncate_string($title, 200, 200) !== $title)
+ // Enforce the database column length after storage encoding.
+ if (utf8_strlen($title) > 200)
{
throw new \phpbb\boardrules\exception\unexpected_value(array('title', 'TOO_LONG'));
}
@@ -287,22 +291,6 @@ public function set_title($title)
return $this;
}
- /**
- * Encode Unicode characters that cannot be stored safely by the DBMS.
- *
- * @param string $text
- * @return string
- */
- protected function encode_unicode_for_storage($text)
- {
- if (strpos($this->db->get_sql_layer(), 'mssql') === 0)
- {
- return utf8_encode_ncr($text);
- }
-
- return utf8_encode_ucr($text);
- }
-
/**
* Get message for edit
*
@@ -497,31 +485,39 @@ public function set_anchor($anchor)
{
// Enforce a string
$anchor = (string) $anchor;
+ $rule_id = $this->get_id();
- // Anchors must begin with a letter and contain only URL-friendly
- // letters, marks, numbers, hyphens, and underscores. Four-byte
- // characters are rejected even when their Unicode category matches.
- if ($anchor !== '' && !preg_match('/^(?!.*[\x{10000}-\x{10FFFF}])\p{L}[\p{L}\p{M}\p{N}_-]*$/u', $anchor))
+ // Existing anchors may predate current validation rules.
+ if ($rule_id && $this->get_anchor() === $anchor)
{
- throw new \phpbb\boardrules\exception\unexpected_value(array('anchor', 'ILLEGAL_CHARACTERS'));
+ return $this;
}
- // Limit both the displayed and stored anchor lengths to the column size.
- if (truncate_string($anchor, 255, 255) !== $anchor)
+ if ($anchor !== '')
{
- throw new \phpbb\boardrules\exception\unexpected_value(array('anchor', 'TOO_LONG'));
- }
+ // HTML5 IDs allow broader values, but these are also URL fragments.
+ // Restrict them to BMP letters, marks, numbers, hyphens, and underscores.
+ if (!preg_match('/^(?!.*[\x{10000}-\x{10FFFF}])[\p{L}\p{N}_-][\p{L}\p{M}\p{N}_-]*$/u', $anchor))
+ {
+ throw new \phpbb\boardrules\exception\unexpected_value(array('anchor', 'ILLEGAL_CHARACTERS'));
+ }
- // Make sure rule anchors are unique for the current language
- // Test if new page and anchor field has data or...
- // if existing page and anchor field has new data not equal to existing anchor data
- if ((!$this->get_id() && $anchor !== '') || ($this->get_id() && $anchor !== '' && $this->get_anchor() !== $anchor))
- {
+ if (utf8_strlen($anchor) > 255)
+ {
+ throw new \phpbb\boardrules\exception\unexpected_value(array('anchor', 'TOO_LONG'));
+ }
+
+ // Make sure the anchor is unique for the current language.
$sql = 'SELECT 1
FROM ' . $this->boardrules_table . "
WHERE rule_anchor = '" . $this->db->sql_escape($anchor) . "'
- AND rule_id <> " . $this->get_id() .
- ($this->get_language() ? " AND rule_language = '" . $this->db->sql_escape($this->get_language()) . "'" : '');
+ AND rule_id <> " . $rule_id;
+ $language = $this->get_language();
+ if ($language !== '')
+ {
+ $sql .= " AND rule_language = '" . $this->db->sql_escape($language) . "'";
+ }
+
$result = $this->db->sql_query_limit($sql, 1);
$row = $this->db->sql_fetchrow($result);
$this->db->sql_freeresult($result);
diff --git a/exception/base.php b/exception/base.php
index 40afea89..881532ea 100644
--- a/exception/base.php
+++ b/exception/base.php
@@ -33,7 +33,7 @@ class base extends \Exception
* @param \Exception|null $previous
* @access public
*/
- public function __construct($message = null, $code = 0, \Exception $previous = null)
+ public function __construct($message = null, $code = 0, ?\Exception $previous = null)
{
parent::__construct();
diff --git a/language/ar/boardrules_acp.php b/language/ar/boardrules_acp.php
index 09739071..af475036 100644
--- a/language/ar/boardrules_acp.php
+++ b/language/ar/boardrules_acp.php
@@ -91,7 +91,7 @@
'ACP_BOARDRULES_DRAFT_NOTICE' => 'هذه القوانين غير مرئية للمستخدمين. يرى المستخدمون حالياً القوانين المكتوبة باللغة الافتراضية للمنتدى.',
'ACP_BOARDRULES_DRAFT_DEFAULT_NOTICE' => 'هذه القوانين غير مرئية للمستخدمين. انشرها لإتاحة قوانين المنتدى الافتراضية.',
'ACP_BOARDRULES_COPY_RULESET' => 'نسخ مجموعة قوانين اللغة',
- 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'انسخ كل الفئات والقوانين إلى %s. ستُضاف القوانين المنسوخة بعد أي قوانين موجودة، وستظل مجموعة القوانين الكاملة في اللغة الهدف مسودة حتى تنشرها.',
+ 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'انسخ كل الفئات والقوانين إلى %s. ستُضاف القوانين المنسوخة بعد أي قوانين موجودة، وسيتم تعيين مجموعة القوانين الكاملة في اللغة الهدف كمسودة حتى تنشرها.',
'ACP_BOARDRULES_COPY_APPEND' => 'إضافة إلى القوانين الموجودة',
'ACP_BOARDRULES_COPY_APPEND_EXPLAIN' => array(
1 => 'تحتوي اللغة الهدف حالياً على %d قانون. سيبقى دون تغيير، وستُضاف القوانين المنسوخة بعده. ستُضاف لاحقة رقمية إلى المراسي المنسوخة المتعارضة.',
@@ -152,10 +152,8 @@
'ACP_RULE_MESSAGE_EXPLAIN' => 'محتوى كل قانون على حده يظهر في صفحة القوانين ( يتم تعطيل هذا الخيار في الأقسام ).',
'ACP_RULE_MESSAGE_DISABLED' => 'هذا القسم يحتوي على قوانين , وبالتالي يتم تعطيل المحتوى ( محرر الكتابة ).',
'ACP_ADD_RULE' => 'إنشاء قانون جديد ',
- 'ACP_DELETE_RULE_CONFIRM' => array(
- 0 => 'متأكد أنك تريد حذف هذا القانون ؟',
- 1 => 'متأكد أنك تريد حذف هذا القانون ؟
تحذير : حذف قسم يعني حذف جميع القوانين الموجودة فيه أيضاً.',
- ),
+ 'ACP_DELETE_RULE_CONFIRM' => 'متأكد أنك تريد حذف هذا القانون ؟',
+ 'ACP_DELETE_RULE_CATEGORY_CONFIRM' => 'متأكد أنك تريد حذف هذا القانون ؟
تحذير : حذف قسم يعني حذف جميع القوانين الموجودة فيه أيضاً.',
'ACP_RULE_ADDED' => 'تم إضافة القانون بنجاح.',
'ACP_RULE_DELETED' => 'تم حذف القانون بنجاح.',
'ACP_RULE_EDITED' => 'تم تعديل القانون بنجاح.',
diff --git a/language/bg/boardrules_acp.php b/language/bg/boardrules_acp.php
index 64d7b775..0c02219c 100644
--- a/language/bg/boardrules_acp.php
+++ b/language/bg/boardrules_acp.php
@@ -90,7 +90,7 @@
'ACP_BOARDRULES_DRAFT_NOTICE' => 'Тези правила не са видими за потребителите. В момента потребителите виждат правилата на езика по подразбиране на форума.',
'ACP_BOARDRULES_DRAFT_DEFAULT_NOTICE' => 'Тези правила не са видими за потребителите. Публикувайте ги, за да направите правилата по подразбиране на форума достъпни.',
'ACP_BOARDRULES_COPY_RULESET' => 'Копирай набора от правила на езика',
- 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Копира всяка категория и правило в %s. Копираните правила се добавят след съществуващите, а пълният целеви набор остава чернова, докато не го публикувате.',
+ 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Копира всяка категория и правило в %s. Копираните правила се добавят след съществуващите, а пълният целеви набор ще бъде зададен като чернова, докато не го публикувате.',
'ACP_BOARDRULES_COPY_APPEND' => 'Добави към съществуващите правила',
'ACP_BOARDRULES_COPY_APPEND_EXPLAIN' => array(
1 => 'В момента целта съдържа %d правило. То ще остане непроменено, а копираните правила ще бъдат добавени след него. Конфликтните копирани котви ще получат цифров суфикс.',
@@ -136,10 +136,8 @@
'ACP_RULE_MESSAGE_EXPLAIN' => 'Съобщението на Правилото се показва на страницата на правилата за всяко правило (Категориите не показват съобщение за правилото).',
'ACP_RULE_MESSAGE_DISABLED' => 'Тази категория съдържа правила, които текстовият редактор е забранил.',
'ACP_ADD_RULE' => 'Създай ново правило',
- 'ACP_DELETE_RULE_CONFIRM' => array(
- 0 => 'Сигурни ли сте, че искате да изтриете това правило?',
- 1 => 'Сигурни ли сте, че искате да изтриете това правило?
Предупреждение: Премахвайки категория правила, ще премахнете и всички правила, които тя съдържа.',
- ),
+ 'ACP_DELETE_RULE_CONFIRM' => 'Сигурни ли сте, че искате да изтриете това правило?',
+ 'ACP_DELETE_RULE_CATEGORY_CONFIRM' => 'Сигурни ли сте, че искате да изтриете това правило?
Предупреждение: Премахвайки категория правила, ще премахнете и всички правила, които тя съдържа.',
'ACP_RULE_ADDED' => 'Правилото успешно добавено.',
'ACP_RULE_DELETED' => 'Правилото успешно изтрито.',
'ACP_RULE_EDITED' => 'Правилото успешно редактирано.',
diff --git a/language/cs/boardrules_acp.php b/language/cs/boardrules_acp.php
index 36a16cdb..037cbde7 100644
--- a/language/cs/boardrules_acp.php
+++ b/language/cs/boardrules_acp.php
@@ -90,7 +90,7 @@
'ACP_BOARDRULES_DRAFT_NOTICE' => 'Tato pravidla nejsou pro uživatele viditelná. Uživatelé nyní vidí pravidla ve výchozím jazyce fóra.',
'ACP_BOARDRULES_DRAFT_DEFAULT_NOTICE' => 'Tato pravidla nejsou pro uživatele viditelná. Zveřejněte je, aby byla výchozí pravidla fóra dostupná.',
'ACP_BOARDRULES_COPY_RULESET' => 'Kopírovat jazykovou sadu pravidel',
- 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Zkopíruje všechny kategorie a pravidla do %s. Zkopírovaná pravidla se přidají za stávající pravidla a celá cílová sada zůstane konceptem, dokud ji nezveřejníte.',
+ 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Zkopíruje všechny kategorie a pravidla do %s. Zkopírovaná pravidla se přidají za stávající pravidla a celá cílová sada bude nastavena jako koncept, dokud ji nezveřejníte.',
'ACP_BOARDRULES_COPY_APPEND' => 'Přidat ke stávajícím pravidlům',
'ACP_BOARDRULES_COPY_APPEND_EXPLAIN' => array(
1 => 'Cíl nyní obsahuje %d pravidlo. Zůstane beze změny a zkopírovaná pravidla budou přidána za něj. Konfliktní zkopírované odkazy dostanou číselnou příponu.',
@@ -140,10 +140,8 @@
'ACP_RULE_MESSAGE_EXPLAIN' => 'Obsah pravidla je zobrazen u každého z pravidel (toto pole je u kategorií ignorováno).',
'ACP_RULE_MESSAGE_DISABLED' => 'Toto je kategorie pravidel, proto není možné pravidlo upravovat.',
'ACP_ADD_RULE' => 'Vytvořit nové pravidlo',
- 'ACP_DELETE_RULE_CONFIRM' => array(
- 0 => 'Opravdu chcete smazat toto pravidlo?',
- 1 => 'Opravdu chcete smazat toto pravidlo?
Varování: Smazáním kategorie odstraníte také všechna vnořená pravidla.',
- ),
+ 'ACP_DELETE_RULE_CONFIRM' => 'Opravdu chcete smazat toto pravidlo?',
+ 'ACP_DELETE_RULE_CATEGORY_CONFIRM' => 'Opravdu chcete smazat toto pravidlo?
Varování: Smazáním kategorie odstraníte také všechna vnořená pravidla.',
'ACP_RULE_ADDED' => 'Pravidlo úspěšně přidáno.',
'ACP_RULE_DELETED' => 'Pravidlo úspěšně odstraněno.',
'ACP_RULE_EDITED' => 'Pravidlo úspěšně upraveno.',
diff --git a/language/da/boardrules_acp.php b/language/da/boardrules_acp.php
index bcfee75a..8e1bbe74 100644
--- a/language/da/boardrules_acp.php
+++ b/language/da/boardrules_acp.php
@@ -90,7 +90,7 @@
'ACP_BOARDRULES_DRAFT_NOTICE' => 'Disse regler er ikke synlige for brugerne. Brugerne ser i øjeblikket reglerne på boardets standardsprog.',
'ACP_BOARDRULES_DRAFT_DEFAULT_NOTICE' => 'Disse regler er ikke synlige for brugerne. Udgiv dem for at gøre boardets standardregler tilgængelige.',
'ACP_BOARDRULES_COPY_RULESET' => 'Kopiér sprogets regelsæt',
- 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Kopiér alle kategorier og regler til %s. Kopierede regler tilføjes efter eksisterende regler, og hele destinationsregelsættet forbliver en kladde, indtil du udgiver det.',
+ 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Kopiér alle kategorier og regler til %s. Kopierede regler tilføjes efter eksisterende regler, og hele destinationsregelsættet sættes som kladde, indtil du udgiver det.',
'ACP_BOARDRULES_COPY_APPEND' => 'Føj til eksisterende regler',
'ACP_BOARDRULES_COPY_APPEND_EXPLAIN' => array(
1 => 'Destinationen indeholder i øjeblikket %d regel. Den forbliver uændret, og kopierede regler tilføjes efter den. Kopierede ankre med konflikter får et numerisk suffiks.',
@@ -136,10 +136,8 @@
'ACP_RULE_MESSAGE_EXPLAIN' => 'Regelbeskeden vises på regler-siden for hver regel (kategorier viser ikke en regelbesked).',
'ACP_RULE_MESSAGE_DISABLED' => 'Dette er en kategori som indeholder regler, beskededitoren er blevet deaktiveret.',
'ACP_ADD_RULE' => 'Opret ny regel',
- 'ACP_DELETE_RULE_CONFIRM' => array(
- 0 => 'Er du sikker på, at du vil fjerne reglen?',
- 1 => 'Er du sikker på, at du vil fjerne regelkategorien?
Advarsel: Når en regelkategori fjernes, så fjernes også alle reglerne i den.',
- ),
+ 'ACP_DELETE_RULE_CONFIRM' => 'Er du sikker på, at du vil fjerne reglen?',
+ 'ACP_DELETE_RULE_CATEGORY_CONFIRM' => 'Er du sikker på, at du vil fjerne regelkategorien?
Advarsel: Når en regelkategori fjernes, så fjernes også alle reglerne i den.',
'ACP_RULE_ADDED' => 'Regel tilføjet.',
'ACP_RULE_DELETED' => 'Regel fjernet.',
'ACP_RULE_EDITED' => 'Regel redigeret.',
diff --git a/language/de/boardrules_acp.php b/language/de/boardrules_acp.php
index 0ca9f227..04546de2 100644
--- a/language/de/boardrules_acp.php
+++ b/language/de/boardrules_acp.php
@@ -91,7 +91,7 @@
'ACP_BOARDRULES_DRAFT_NOTICE' => 'Diese Regeln sind für Benutzer nicht sichtbar. Den Benutzern werden derzeit die Regeln in der Standardsprache des Forums angezeigt.',
'ACP_BOARDRULES_DRAFT_DEFAULT_NOTICE' => 'Diese Regeln sind für Benutzer nicht sichtbar. Veröffentlichen Sie sie, damit die Standardregeln des Forums verfügbar werden.',
'ACP_BOARDRULES_COPY_RULESET' => 'Sprachregelsatz kopieren',
- 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Kopiert alle Kategorien und Regeln nach %s. Die kopierten Regeln werden hinter vorhandenen Regeln angefügt. Der vollständige Zielregelsatz bleibt ein Entwurf, bis Sie ihn veröffentlichen.',
+ 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Kopiert alle Kategorien und Regeln nach %s. Die kopierten Regeln werden hinter vorhandenen Regeln angefügt. Der vollständige Zielregelsatz wird als Entwurf festgelegt, bis Sie ihn veröffentlichen.',
'ACP_BOARDRULES_COPY_APPEND' => 'An vorhandene Regeln anfügen',
'ACP_BOARDRULES_COPY_APPEND_EXPLAIN' => array(
1 => 'Das Ziel enthält derzeit %d Regel. Diese bleibt unverändert und die kopierten Regeln werden dahinter eingefügt. Bei Konflikten erhalten kopierte Anker einen numerischen Suffix.',
@@ -137,10 +137,8 @@
'ACP_RULE_MESSAGE_EXPLAIN' => 'Der Regel-Text wird für jede Regel angezeigt, die keine Regel-Kategorie ist.',
'ACP_RULE_MESSAGE_DISABLED' => 'Dies ist eine Regel-Kategorie. Der Regel-Text-Editor ist deshalb nicht verfügbar.',
'ACP_ADD_RULE' => 'Neue Regel erstellen',
- 'ACP_DELETE_RULE_CONFIRM' => array(
- 0 => 'Bist du dir sicher, dass du diese Regel entfernen möchtest?',
- 1 => 'Bist du dir sicher, dass du diese Regel-Kategorie entfernen möchtest?
Warnung: Das Entfernen einer Regel-Kategorie wird auch alle darin enthaltenen Regeln löschen.',
- ),
+ 'ACP_DELETE_RULE_CONFIRM' => 'Bist du dir sicher, dass du diese Regel entfernen möchtest?',
+ 'ACP_DELETE_RULE_CATEGORY_CONFIRM' => 'Bist du dir sicher, dass du diese Regel-Kategorie entfernen möchtest?
Warnung: Das Entfernen einer Regel-Kategorie wird auch alle darin enthaltenen Regeln löschen.',
'ACP_RULE_ADDED' => 'Regel hinzugefügt.',
'ACP_RULE_DELETED' => 'Regel gelöscht.',
'ACP_RULE_EDITED' => 'Regel bearbeitet.',
diff --git a/language/de_x_sie/boardrules_acp.php b/language/de_x_sie/boardrules_acp.php
index 19eba8e4..bc13bc6e 100644
--- a/language/de_x_sie/boardrules_acp.php
+++ b/language/de_x_sie/boardrules_acp.php
@@ -91,7 +91,7 @@
'ACP_BOARDRULES_DRAFT_NOTICE' => 'Diese Regeln sind für Benutzer nicht sichtbar. Den Benutzern werden derzeit die Regeln in der Standardsprache des Forums angezeigt.',
'ACP_BOARDRULES_DRAFT_DEFAULT_NOTICE' => 'Diese Regeln sind für Benutzer nicht sichtbar. Veröffentlichen Sie sie, damit die Standardregeln des Forums verfügbar werden.',
'ACP_BOARDRULES_COPY_RULESET' => 'Sprachregelsatz kopieren',
- 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Kopiert alle Kategorien und Regeln nach %s. Die kopierten Regeln werden hinter vorhandenen Regeln angefügt. Der vollständige Zielregelsatz bleibt ein Entwurf, bis Sie ihn veröffentlichen.',
+ 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Kopiert alle Kategorien und Regeln nach %s. Die kopierten Regeln werden hinter vorhandenen Regeln angefügt. Der vollständige Zielregelsatz wird als Entwurf festgelegt, bis Sie ihn veröffentlichen.',
'ACP_BOARDRULES_COPY_APPEND' => 'An vorhandene Regeln anfügen',
'ACP_BOARDRULES_COPY_APPEND_EXPLAIN' => array(
1 => 'Das Ziel enthält derzeit %d Regel. Diese bleibt unverändert und die kopierten Regeln werden dahinter eingefügt. Bei Konflikten erhalten kopierte Anker einen numerischen Suffix.',
@@ -137,10 +137,8 @@
'ACP_RULE_MESSAGE_EXPLAIN' => 'Der Regel-Text wird für jede Regel angezeigt, die keine Regel-Kategorie ist.',
'ACP_RULE_MESSAGE_DISABLED' => 'Dies ist eine Regel-Kategorie. Der Regel-Text-Editor ist deshalb nicht verfügbar.',
'ACP_ADD_RULE' => 'Neue Regel erstellen',
- 'ACP_DELETE_RULE_CONFIRM' => array(
- 0 => 'Sind Sie sicher, dass Sie diese Regel entfernen möchten?',
- 1 => 'Sind Sie sicher, dass diese Regel-Kategorie entfernt werden soll?
Warnung: Das Entfernen einer Regel-Kategorie wird auch alle darin enthaltenen Regeln entfernen.',
- ),
+ 'ACP_DELETE_RULE_CONFIRM' => 'Sind Sie sicher, dass Sie diese Regel entfernen möchten?',
+ 'ACP_DELETE_RULE_CATEGORY_CONFIRM' => 'Sind Sie sicher, dass diese Regel-Kategorie entfernt werden soll?
Warnung: Das Entfernen einer Regel-Kategorie wird auch alle darin enthaltenen Regeln entfernen.',
'ACP_RULE_ADDED' => 'Regel hinzugefügt.',
'ACP_RULE_DELETED' => 'Regel gelöscht.',
'ACP_RULE_EDITED' => 'Regel bearbeitet.',
diff --git a/language/el/boardrules_acp.php b/language/el/boardrules_acp.php
index 2406ec4a..79dc0101 100644
--- a/language/el/boardrules_acp.php
+++ b/language/el/boardrules_acp.php
@@ -91,7 +91,7 @@
'ACP_BOARDRULES_DRAFT_NOTICE' => 'Αυτοί οι κανόνες δεν είναι ορατοί στους χρήστες. Οι χρήστες βλέπουν αυτή τη στιγμή τους κανόνες στην προεπιλεγμένη γλώσσα της κοινότητας.',
'ACP_BOARDRULES_DRAFT_DEFAULT_NOTICE' => 'Αυτοί οι κανόνες δεν είναι ορατοί στους χρήστες. Δημοσιεύστε τους για να γίνουν διαθέσιμοι οι προεπιλεγμένοι κανόνες της κοινότητας.',
'ACP_BOARDRULES_COPY_RULESET' => 'Αντιγραφή συνόλου κανόνων γλώσσας',
- 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Αντιγράψτε κάθε κατηγορία και κανόνα στη γλώσσα %s. Οι αντιγραμμένοι κανόνες προστίθενται μετά από τυχόν υπάρχοντες και ολόκληρο το σύνολο κανόνων προορισμού παραμένει πρόχειρο μέχρι να το δημοσιεύσετε.',
+ 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Αντιγράψτε κάθε κατηγορία και κανόνα στη γλώσσα %s. Οι αντιγραμμένοι κανόνες προστίθενται μετά από τυχόν υπάρχοντες και ολόκληρο το σύνολο κανόνων προορισμού θα οριστεί ως πρόχειρο μέχρι να το δημοσιεύσετε.',
'ACP_BOARDRULES_COPY_APPEND' => 'Προσθήκη στους υπάρχοντες κανόνες',
'ACP_BOARDRULES_COPY_APPEND_EXPLAIN' => array(
1 => 'Ο προορισμός περιέχει αυτή τη στιγμή %d κανόνα. Θα παραμείνει αμετάβλητος και οι αντιγραμμένοι κανόνες θα προστεθούν μετά από αυτόν. Οι αντιγραμμένες άγκυρες που συγκρούονται θα λάβουν αριθμητικό επίθημα.',
@@ -136,10 +136,8 @@
'ACP_RULE_MESSAGE_EXPLAIN' => 'Το κείμενο του όρου εμφανίζεται στη σελίδα όρων για κάθε όρο (οι κατηγορίες δεν εμφανίζουν το κείμενο όρου).',
'ACP_RULE_MESSAGE_DISABLED' => 'Αυτή είναι μια κατηγορία που περιέχει όρους, ο κειμενογράφος έχει απενεργοποιηθεί.',
'ACP_ADD_RULE' => 'Δημιουργία νέου όρου',
- 'ACP_DELETE_RULE_CONFIRM' => array(
- 0 => 'Είστε σίγουρος (-η) ότι θέλετε να διαγράψετε αυτό τον όρο.',
- 1 => 'Είστε σίγουρος (-η) ότι θέλετε να διαγράψετε αυτό τον όρο.
Προσοχή: Διαγράφοντας μια κατηγορία όρων, θα διαγραφούν και όλοι οι όροι που περιέχονται σε αυτή.',
- ),
+ 'ACP_DELETE_RULE_CONFIRM' => 'Είστε σίγουρος (-η) ότι θέλετε να διαγράψετε αυτό τον όρο.',
+ 'ACP_DELETE_RULE_CATEGORY_CONFIRM' => 'Είστε σίγουρος (-η) ότι θέλετε να διαγράψετε αυτό τον όρο.
Προσοχή: Διαγράφοντας μια κατηγορία όρων, θα διαγραφούν και όλοι οι όροι που περιέχονται σε αυτή.',
'ACP_RULE_ADDED' => 'Ο όρος προστέθηκε με επιτυχία.',
'ACP_RULE_DELETED' => 'Ο όρος διαγράφηκε με επιτυχία.',
'ACP_RULE_EDITED' => 'Ο όρος επεξεργάστηκε με επιτυχία.',
diff --git a/language/en/boardrules_acp.php b/language/en/boardrules_acp.php
index a101c7d9..b76eb819 100644
--- a/language/en/boardrules_acp.php
+++ b/language/en/boardrules_acp.php
@@ -91,7 +91,7 @@
'ACP_BOARDRULES_DRAFT_NOTICE' => 'These rules are not visible to users. Users currently see rules from the board’s default language.',
'ACP_BOARDRULES_DRAFT_DEFAULT_NOTICE' => 'These rules are not visible to users. Publish them to make the board’s default rules available.',
'ACP_BOARDRULES_COPY_RULESET' => 'Copy language ruleset',
- 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Copy every category and rule into %s. Copied rules are appended after any existing rules, and the complete target ruleset remains a draft until you publish it.',
+ 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Copy every category and rule into %s. Copied rules are appended after any existing rules. The complete target ruleset will be set to draft until you publish it.',
'ACP_BOARDRULES_COPY_APPEND' => 'Append to existing rules',
'ACP_BOARDRULES_COPY_APPEND_EXPLAIN' => array(
1 => 'The target currently contains %d rule. It will remain unchanged, and copied rules will be added after it. Any conflicting copied anchors will receive a numeric suffix.',
@@ -138,10 +138,8 @@
'ACP_RULE_MESSAGE_EXPLAIN' => 'The rule message is displayed on the rules page for each rule (categories do not display a rule message).',
'ACP_RULE_MESSAGE_DISABLED' => 'This is a category containing rules, the message editor has been disabled.',
'ACP_ADD_RULE' => 'Create new rule',
- 'ACP_DELETE_RULE_CONFIRM' => array(
- 0 => 'Are you sure you want to remove this rule?',
- 1 => 'Are you sure you want to remove this rule category?
Warning: Removing a rule category will also remove all rules contained within it.',
- ),
+ 'ACP_DELETE_RULE_CONFIRM' => 'Are you sure you want to remove this rule?',
+ 'ACP_DELETE_RULE_CATEGORY_CONFIRM' => 'Are you sure you want to remove this rule category?
Warning: Removing a rule category will also remove all rules contained within it.',
'ACP_RULE_ADDED' => 'Rule successfully added.',
'ACP_RULE_DELETED' => 'Rule successfully removed.',
'ACP_RULE_EDITED' => 'Rule successfully edited.',
diff --git a/language/es/boardrules_acp.php b/language/es/boardrules_acp.php
index dc38b65a..01d119dc 100644
--- a/language/es/boardrules_acp.php
+++ b/language/es/boardrules_acp.php
@@ -91,7 +91,7 @@
'ACP_BOARDRULES_DRAFT_NOTICE' => 'Estas normas no son visibles para los usuarios. Los usuarios ven actualmente las normas en el idioma predeterminado del sitio.',
'ACP_BOARDRULES_DRAFT_DEFAULT_NOTICE' => 'Estas normas no son visibles para los usuarios. Publíquelas para que estén disponibles las normas predeterminadas del sitio.',
'ACP_BOARDRULES_COPY_RULESET' => 'Copiar conjunto de normas del idioma',
- 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Copia cada categoría y norma en %s. Las normas copiadas se añaden después de las existentes y el conjunto completo de destino permanece como borrador hasta que se publique.',
+ 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Copia cada categoría y norma en %s. Las normas copiadas se añaden después de las existentes y el conjunto completo de destino se establecerá como borrador hasta que se publique.',
'ACP_BOARDRULES_COPY_APPEND' => 'Añadir a las normas existentes',
'ACP_BOARDRULES_COPY_APPEND_EXPLAIN' => array(
1 => 'El destino contiene actualmente %d norma. Permanecerá sin cambios y las normas copiadas se añadirán después. Los anclajes copiados que entren en conflicto recibirán un sufijo numérico.',
@@ -137,10 +137,8 @@
'ACP_RULE_MESSAGE_EXPLAIN' => 'El mensaje de la Norma se muestra en la página de Normas para cada norma (las categorías no muestran un mensaje de norma).',
'ACP_RULE_MESSAGE_DISABLED' => 'Está es una categoría que contiene normas, el editor de mensajes está deshabilitado.',
'ACP_ADD_RULE' => 'Crear nueva norma',
- 'ACP_DELETE_RULE_CONFIRM' => array(
- 0 => '¿Está seguro de querer borrar esta norma?',
- 1 => '¿Está seguro de querer borrar esta norma de categoría?
Advertencia: Al eliminar una norma de categoría también eliminará todas las normas contenidas de la misma.',
- ),
+ 'ACP_DELETE_RULE_CONFIRM' => '¿Está seguro de querer borrar esta norma?',
+ 'ACP_DELETE_RULE_CATEGORY_CONFIRM' => '¿Está seguro de querer borrar esta norma de categoría?
Advertencia: Al eliminar una norma de categoría también eliminará todas las normas contenidas de la misma.',
'ACP_RULE_ADDED' => 'Norma añadida correctamente.',
'ACP_RULE_DELETED' => 'Norma eliminada correctamente.',
'ACP_RULE_EDITED' => 'Norma editada correctamente.',
diff --git a/language/et/boardrules_acp.php b/language/et/boardrules_acp.php
index a7e0b27a..756dffe9 100644
--- a/language/et/boardrules_acp.php
+++ b/language/et/boardrules_acp.php
@@ -91,7 +91,7 @@
'ACP_BOARDRULES_DRAFT_NOTICE' => 'Need reeglid pole kasutajatele nähtavad. Kasutajad näevad praegu foorumi vaikekeele reegleid.',
'ACP_BOARDRULES_DRAFT_DEFAULT_NOTICE' => 'Need reeglid pole kasutajatele nähtavad. Avalda need, et foorumi vaikereeglid oleksid saadaval.',
'ACP_BOARDRULES_COPY_RULESET' => 'Kopeeri keele reeglistik',
- 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Kopeeri kõik kategooriad ja reeglid keelde %s. Kopeeritud reeglid lisatakse olemasolevate järele ning kogu sihtkeele reeglistik jääb mustandiks, kuni selle avaldad.',
+ 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Kopeeri kõik kategooriad ja reeglid keelde %s. Kopeeritud reeglid lisatakse olemasolevate järele ning kogu sihtkeele reeglistik määratakse mustandiks, kuni selle avaldad.',
'ACP_BOARDRULES_COPY_APPEND' => 'Lisa olemasolevatele reeglitele',
'ACP_BOARDRULES_COPY_APPEND_EXPLAIN' => array(
1 => 'Sihtkeeles on praegu %d reegel. See jääb muutmata ning kopeeritud reeglid lisatakse selle järele. Konfliktsed kopeeritud ankrud saavad numbrilise järelliite.',
@@ -136,10 +136,8 @@
'ACP_RULE_MESSAGE_EXPLAIN' => 'Reegli sisu näidatakse reeglite lehel igal reeglil (kategooriatel ei ole reeglite sisu).',
'ACP_RULE_MESSAGE_DISABLED' => 'See on kategooria, mis sisaldab reegleid, sõnumi muutja on keelatud.',
'ACP_ADD_RULE' => 'Loo uus reegel',
- 'ACP_DELETE_RULE_CONFIRM' => array(
- 0 => 'Oled sa kindel, et soovid eemaldada selle reegli?',
- 1 => 'Oled sa kindel, et soovid eemaldada selle reeglite kategooria?
Hoiatus: Reeglite kategooria eemaldamisega, eemaldad ka selles kategoorias asetsevad reeglid.',
- ),
+ 'ACP_DELETE_RULE_CONFIRM' => 'Oled sa kindel, et soovid eemaldada selle reegli?',
+ 'ACP_DELETE_RULE_CATEGORY_CONFIRM' => 'Oled sa kindel, et soovid eemaldada selle reeglite kategooria?
Hoiatus: Reeglite kategooria eemaldamisega, eemaldad ka selles kategoorias asetsevad reeglid.',
'ACP_RULE_ADDED' => 'Reegel on edukalt lisatud.',
'ACP_RULE_DELETED' => 'Reegel on edukalt kustutatud.',
'ACP_RULE_EDITED' => 'Reegel on edukalt muudetud.',
diff --git a/language/fi/boardrules_acp.php b/language/fi/boardrules_acp.php
index 7f543743..b77c3684 100644
--- a/language/fi/boardrules_acp.php
+++ b/language/fi/boardrules_acp.php
@@ -90,7 +90,7 @@
'ACP_BOARDRULES_DRAFT_NOTICE' => 'Nämä säännöt eivät näy käyttäjille. Käyttäjät näkevät tällä hetkellä foorumin oletuskielen säännöt.',
'ACP_BOARDRULES_DRAFT_DEFAULT_NOTICE' => 'Nämä säännöt eivät näy käyttäjille. Julkaise ne, jotta foorumin oletussäännöt tulevat saataville.',
'ACP_BOARDRULES_COPY_RULESET' => 'Kopioi kielen sääntökokonaisuus',
- 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Kopioi kaikki kategoriat ja säännöt kielelle %s. Kopioidut säännöt lisätään olemassa olevien sääntöjen perään, ja koko kohdekielen sääntökokonaisuus pysyy luonnoksena, kunnes julkaiset sen.',
+ 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Kopioi kaikki kategoriat ja säännöt kielelle %s. Kopioidut säännöt lisätään olemassa olevien sääntöjen perään, ja koko kohdekielen sääntökokonaisuus asetetaan luonnokseksi, kunnes julkaiset sen.',
'ACP_BOARDRULES_COPY_APPEND' => 'Lisää olemassa oleviin sääntöihin',
'ACP_BOARDRULES_COPY_APPEND_EXPLAIN' => array(
1 => 'Kohteessa on tällä hetkellä %d sääntö. Se pysyy muuttumattomana, ja kopioidut säännöt lisätään sen perään. Ristiriitaisiin kopioituihin ankkureihin lisätään numeerinen jälkiliite.',
@@ -135,10 +135,8 @@
'ACP_RULE_MESSAGE_EXPLAIN' => 'Säännön sisältö näytetään kunkin säännön kohdalla Säännöt-sivulla (kategoriat eivät näytä sääntöviestiä).',
'ACP_RULE_MESSAGE_DISABLED' => 'Tämä on kategoria, joka sisältää sääntöjä, viestieditori on poistettu käytöstä.',
'ACP_ADD_RULE' => 'Luo uusi sääntö',
- 'ACP_DELETE_RULE_CONFIRM' => array(
- 0 => 'Haluatko varmasti poistaa tämän säännön?',
- 1 => 'Haluatko varmasti poistaa tämän sääntökategorian?
Varoitus: Sääntökategorian poistaminen poistaa myös kaikki sen sisältämät säännöt.',
- ),
+ 'ACP_DELETE_RULE_CONFIRM' => 'Haluatko varmasti poistaa tämän säännön?',
+ 'ACP_DELETE_RULE_CATEGORY_CONFIRM' => 'Haluatko varmasti poistaa tämän sääntökategorian?
Varoitus: Sääntökategorian poistaminen poistaa myös kaikki sen sisältämät säännöt.',
'ACP_RULE_ADDED' => 'Sääntö lisätty onnistuneesti.',
'ACP_RULE_DELETED' => 'Sääntö poistettu onnistuneesti.',
'ACP_RULE_EDITED' => 'Sääntöä muokattu onnistuneesti.',
diff --git a/language/fr/boardrules_acp.php b/language/fr/boardrules_acp.php
index c71aa621..2b31eda6 100644
--- a/language/fr/boardrules_acp.php
+++ b/language/fr/boardrules_acp.php
@@ -91,7 +91,7 @@
'ACP_BOARDRULES_DRAFT_NOTICE' => 'Ces règles ne sont pas visibles par les utilisateurs. Ceux-ci voient actuellement les règles dans la langue par défaut du forum.',
'ACP_BOARDRULES_DRAFT_DEFAULT_NOTICE' => 'Ces règles ne sont pas visibles par les utilisateurs. Publiez-les pour rendre disponibles les règles par défaut du forum.',
'ACP_BOARDRULES_COPY_RULESET' => 'Copier l’ensemble de règles d’une langue',
- 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Copie chaque catégorie et règle vers %s. Les règles copiées sont ajoutées après les règles existantes et l’ensemble complet de règles cible reste un brouillon jusqu’à sa publication.',
+ 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Copie chaque catégorie et règle vers %s. Les règles copiées sont ajoutées après les règles existantes et l’ensemble complet de règles cible sera défini comme brouillon jusqu’à sa publication.',
'ACP_BOARDRULES_COPY_APPEND' => 'Ajouter aux règles existantes',
'ACP_BOARDRULES_COPY_APPEND_EXPLAIN' => array(
1 => 'La cible contient actuellement %d règle. Elle restera inchangée et les règles copiées seront ajoutées après celle-ci. Les ancres copiées en conflit recevront un suffixe numérique.',
@@ -137,10 +137,8 @@
'ACP_RULE_MESSAGE_EXPLAIN' => 'Le texte de la règle est affiché sur la page des règles pour chacune d’elle (les catégories n’affichent aucun texte de règle).',
'ACP_RULE_MESSAGE_DISABLED' => 'Cette catégorie contient des règles, l’éditeur de message a été désactivé.',
'ACP_ADD_RULE' => 'Créer une nouvelle règle',
- 'ACP_DELETE_RULE_CONFIRM' => array(
- 0 => 'Confirmer la supression de cette règle.',
- 1 => 'Confirmer la suppression de cette catégorie.
Information importante : La suppression d’une catégorie supprimera aussi toutes les règles qu’elle contient.',
- ),
+ 'ACP_DELETE_RULE_CONFIRM' => 'Confirmer la supression de cette règle.',
+ 'ACP_DELETE_RULE_CATEGORY_CONFIRM' => 'Confirmer la suppression de cette catégorie.
Information importante : La suppression d’une catégorie supprimera aussi toutes les règles qu’elle contient.',
'ACP_RULE_ADDED' => 'Règle ajoutée avec succès.',
'ACP_RULE_DELETED' => 'Règle supprimée avec succès.',
'ACP_RULE_EDITED' => 'Règle modifiée avec succès.',
diff --git a/language/he/boardrules_acp.php b/language/he/boardrules_acp.php
index 3bb06470..c292c3d5 100644
--- a/language/he/boardrules_acp.php
+++ b/language/he/boardrules_acp.php
@@ -90,7 +90,7 @@
'ACP_BOARDRULES_DRAFT_NOTICE' => 'חוקים אלה אינם גלויים למשתמשים. המשתמשים רואים כעת את החוקים בשפת ברירת המחדל של הפורום.',
'ACP_BOARDRULES_DRAFT_DEFAULT_NOTICE' => 'חוקים אלה אינם גלויים למשתמשים. פרסם אותם כדי להפוך את חוקי ברירת המחדל של הפורום לזמינים.',
'ACP_BOARDRULES_COPY_RULESET' => 'העתק מערכת חוקים של שפה',
- 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'העתק כל קטגוריה וחוק אל %s. החוקים המועתקים יתווספו אחרי החוקים הקיימים, ומערכת החוקים המלאה בשפת היעד תישאר טיוטה עד שתפורסם.',
+ 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'העתק כל קטגוריה וחוק אל %s. החוקים המועתקים יתווספו אחרי החוקים הקיימים, ומערכת החוקים המלאה בשפת היעד תוגדר כטיוטה עד שתפורסם.',
'ACP_BOARDRULES_COPY_APPEND' => 'הוסף לחוקים קיימים',
'ACP_BOARDRULES_COPY_APPEND_EXPLAIN' => array(
1 => 'היעד מכיל כעת %d חוק. הוא יישאר ללא שינוי, והחוקים המועתקים יתווספו אחריו. לעוגנים מועתקים מתנגשים תתווסף סיומת מספרית.',
@@ -135,10 +135,8 @@
'ACP_RULE_MESSAGE_EXPLAIN' => 'הודעת החוק מופיעה בעמוד החוקים לכל חוק - קטגוריות לא מציגות הודעת חוקים',
'ACP_RULE_MESSAGE_DISABLED' => 'זוהי קטגוריה המכילה חוקים, העורך לא פעיל.',
'ACP_ADD_RULE' => 'צור חוק חדש',
- 'ACP_DELETE_RULE_CONFIRM' => array(
- 0 => 'האם אתה בטוח שברצונך למחוק חוק זה ?',
- 1 => 'האם אתה בטוח שברצונך למחוק חוק זה ?
אזהרה: מחיקת קטגוריית חוקים תמחק גם את כל החוקים בתוכה.',
- ),
+ 'ACP_DELETE_RULE_CONFIRM' => 'האם אתה בטוח שברצונך למחוק חוק זה ?',
+ 'ACP_DELETE_RULE_CATEGORY_CONFIRM' => 'האם אתה בטוח שברצונך למחוק חוק זה ?
אזהרה: מחיקת קטגוריית חוקים תמחק גם את כל החוקים בתוכה.',
'ACP_RULE_ADDED' => 'החוק נוסף בהצלחה.',
'ACP_RULE_DELETED' => 'החוק הוסר בהצלחה.',
'ACP_RULE_EDITED' => 'החוק נערך בהצלחה.',
diff --git a/language/hr/boardrules_acp.php b/language/hr/boardrules_acp.php
index b0bbf7c2..82edeb22 100644
--- a/language/hr/boardrules_acp.php
+++ b/language/hr/boardrules_acp.php
@@ -91,7 +91,7 @@
'ACP_BOARDRULES_DRAFT_NOTICE' => 'Ova pravila nisu vidljiva korisnicima. Korisnici trenutačno vide pravila na zadanom jeziku foruma.',
'ACP_BOARDRULES_DRAFT_DEFAULT_NOTICE' => 'Ova pravila nisu vidljiva korisnicima. Objavite ih kako bi zadana pravila foruma bila dostupna.',
'ACP_BOARDRULES_COPY_RULESET' => 'Kopiraj skup pravila jezika',
- 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Kopirajte sve kategorije i pravila u %s. Kopirana pravila dodat će se nakon postojećih pravila, a cijeli ciljni skup pravila ostat će skica dok ga ne objavite.',
+ 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Kopirajte sve kategorije i pravila u %s. Kopirana pravila dodat će se nakon postojećih pravila, a cijeli ciljni skup pravila bit će postavljen kao skica dok ga ne objavite.',
'ACP_BOARDRULES_COPY_APPEND' => 'Dodaj postojećim pravilima',
'ACP_BOARDRULES_COPY_APPEND_EXPLAIN' => array(
1 => 'Cilj trenutačno sadrži %d pravilo. Ono će ostati nepromijenjeno, a kopirana pravila dodat će se nakon njega. Svim kopiranim sidrima koja se podudaraju dodat će se brojčani sufiks.',
@@ -140,10 +140,8 @@
'ACP_RULE_MESSAGE_EXPLAIN' => 'Poruka pravila prikazana je na stranici pravila za svako pravilo.
Kategorije ne prikazuju poruke pravila.',
'ACP_RULE_MESSAGE_DISABLED' => 'Ovo je kategorija koja sadrži pravila.
Uređivač poruka je onemogućen.',
'ACP_ADD_RULE' => 'Dodaj novo pravilo',
- 'ACP_DELETE_RULE_CONFIRM' => array(
- 0 => 'Jesi li siguran/na da želiš izbrisati ovo pravilo?',
- 1 => 'Jesi li siguran/na da želiš izbrisati ovo kategorije pravila?
Upozorenje: izbrisivanje kategorije pravila rezultirat će izbrisivanjem svih pravila povezanih s istom.',
- ),
+ 'ACP_DELETE_RULE_CONFIRM' => 'Jesi li siguran/na da želiš izbrisati ovo pravilo?',
+ 'ACP_DELETE_RULE_CATEGORY_CONFIRM' => 'Jesi li siguran/na da želiš izbrisati ovo kategorije pravila?
Upozorenje: izbrisivanje kategorije pravila rezultirat će izbrisivanjem svih pravila povezanih s istom.',
'ACP_RULE_ADDED' => 'Pravilo je dodano.',
'ACP_RULE_DELETED' => 'Pravilo je izbrisano.',
'ACP_RULE_EDITED' => 'Pravilo je uređeno.',
diff --git a/language/hu/boardrules_acp.php b/language/hu/boardrules_acp.php
index 2e537187..d28344b1 100644
--- a/language/hu/boardrules_acp.php
+++ b/language/hu/boardrules_acp.php
@@ -90,7 +90,7 @@
'ACP_BOARDRULES_DRAFT_NOTICE' => 'Ezek a szabályok nem láthatók a felhasználók számára. A felhasználók jelenleg a fórum alapértelmezett nyelvén létrehozott szabályokat látják.',
'ACP_BOARDRULES_DRAFT_DEFAULT_NOTICE' => 'Ezek a szabályok nem láthatók a felhasználók számára. Tegye közzé őket, hogy a fórum alapértelmezett szabályai elérhetők legyenek.',
'ACP_BOARDRULES_COPY_RULESET' => 'Nyelvi szabálykészlet másolása',
- 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Másoljon át minden kategóriát és szabályt ide: %s. A másolt szabályok a meglévők után kerülnek, és a teljes cél-szabálykészlet piszkozat marad a közzétételig.',
+ 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Másoljon át minden kategóriát és szabályt ide: %s. A másolt szabályok a meglévők után kerülnek, és a teljes cél-szabálykészlet piszkozat állapotba kerül a közzétételig.',
'ACP_BOARDRULES_COPY_APPEND' => 'Hozzáfűzés a meglévő szabályokhoz',
'ACP_BOARDRULES_COPY_APPEND_EXPLAIN' => array(
1 => 'A cél jelenleg %d szabályt tartalmaz. Ez változatlan marad, a másolt szabályok pedig utána kerülnek. Az ütköző másolt horgonyok számozott utótagot kapnak.',
@@ -135,10 +135,8 @@
'ACP_RULE_MESSAGE_EXPLAIN' => 'A szabályzat megjelenik az egyes szabályzatok szabályzat oldalán (a kategóriák nem tartalmaznak szabályzatot).',
'ACP_RULE_MESSAGE_DISABLED' => 'Ez egy szabályzatokat tartalmazó kategória, az üzenetszerkesztő le van tiltva.',
'ACP_ADD_RULE' => 'Új szabályzat létrehozása',
- 'ACP_DELETE_RULE_CONFIRM' => array(
- 0 => 'Biztos törölni szeretné a szabályzat?',
- 1 => 'Biztos szeretné törölni a szabályzat kategőriát?
Figyelmeztetés: A szabályzat kategória eltávolítása esetén eltávolítja az abban foglalt szabályzatokat is.',
- ),
+ 'ACP_DELETE_RULE_CONFIRM' => 'Biztos törölni szeretné a szabályzat?',
+ 'ACP_DELETE_RULE_CATEGORY_CONFIRM' => 'Biztos szeretné törölni a szabályzat kategőriát?
Figyelmeztetés: A szabályzat kategória eltávolítása esetén eltávolítja az abban foglalt szabályzatokat is.',
'ACP_RULE_ADDED' => 'Szabályzat sikeresen hozzáadva.',
'ACP_RULE_DELETED' => 'Szabályzat sikeresen törölve.',
'ACP_RULE_EDITED' => 'Szabályzat sikeresen szerkesztve.',
diff --git a/language/it/boardrules_acp.php b/language/it/boardrules_acp.php
index 14b2041d..ab183f2b 100644
--- a/language/it/boardrules_acp.php
+++ b/language/it/boardrules_acp.php
@@ -91,7 +91,7 @@
'ACP_BOARDRULES_DRAFT_NOTICE' => 'Queste regole non sono visibili agli utenti. Gli utenti vedono attualmente le regole nella lingua predefinita della board.',
'ACP_BOARDRULES_DRAFT_DEFAULT_NOTICE' => 'Queste regole non sono visibili agli utenti. Pubblicale per rendere disponibili le regole predefinite della board.',
'ACP_BOARDRULES_COPY_RULESET' => 'Copia set di regole della lingua',
- 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Copia ogni categoria e regola in %s. Le regole copiate vengono aggiunte dopo quelle esistenti e l’intero set di regole di destinazione rimane una bozza finché non viene pubblicato.',
+ 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Copia ogni categoria e regola in %s. Le regole copiate vengono aggiunte dopo quelle esistenti e l’intero set di regole di destinazione verrà impostato come bozza finché non verrà pubblicato.',
'ACP_BOARDRULES_COPY_APPEND' => 'Aggiungi alle regole esistenti',
'ACP_BOARDRULES_COPY_APPEND_EXPLAIN' => array(
1 => 'La destinazione contiene attualmente %d regola. Rimarrà invariata e le regole copiate verranno aggiunte dopo di essa. Gli ancoraggi copiati in conflitto riceveranno un suffisso numerico.',
@@ -137,10 +137,8 @@
'ACP_RULE_MESSAGE_EXPLAIN' => 'Il messaggio regola viene visualizzato nella pagina regole per ogni regola (categorie non visualizzano un messaggio regola).',
'ACP_RULE_MESSAGE_DISABLED' => 'Si tratta di una categoria che contiene delle regole, l´editor di messaggio è stato disattivato.',
'ACP_ADD_RULE' => 'Crea nuova regola',
- 'ACP_DELETE_RULE_CONFIRM' => array(
- 0 => 'Sei sicuro di voler rimuovere questa regola?',
- 1 => 'Sei sicuro di voler rimuovere questa categoria di regole?
Attenzione: La rimozione di una categoria di regole comporterà anche la rimozione di tutte le regole in essa contenute.',
- ),
+ 'ACP_DELETE_RULE_CONFIRM' => 'Sei sicuro di voler rimuovere questa regola?',
+ 'ACP_DELETE_RULE_CATEGORY_CONFIRM' => 'Sei sicuro di voler rimuovere questa categoria di regole?
Attenzione: La rimozione di una categoria di regole comporterà anche la rimozione di tutte le regole in essa contenute.',
'ACP_RULE_ADDED' => 'Regola aggiunta con successo.',
'ACP_RULE_DELETED' => 'Regola rimossa con successo.',
'ACP_RULE_EDITED' => 'Regola modificata con successo.',
diff --git a/language/nb/boardrules_acp.php b/language/nb/boardrules_acp.php
index 0722f12b..10a1a12a 100644
--- a/language/nb/boardrules_acp.php
+++ b/language/nb/boardrules_acp.php
@@ -91,7 +91,7 @@
'ACP_BOARDRULES_DRAFT_NOTICE' => 'Disse reglene er ikke synlige for brukerne. Brukerne ser for øyeblikket reglene på forumets standardspråk.',
'ACP_BOARDRULES_DRAFT_DEFAULT_NOTICE' => 'Disse reglene er ikke synlige for brukerne. Publiser dem for å gjøre forumets standardregler tilgjengelige.',
'ACP_BOARDRULES_COPY_RULESET' => 'Kopier språkets regelsett',
- 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Kopier alle kategorier og regler til %s. Kopierte regler legges til etter eksisterende regler, og hele regelsettet for målspråket forblir et utkast til du publiserer det.',
+ 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Kopier alle kategorier og regler til %s. Kopierte regler legges til etter eksisterende regler, og hele regelsettet for målspråket settes som utkast til du publiserer det.',
'ACP_BOARDRULES_COPY_APPEND' => 'Legg til i eksisterende regler',
'ACP_BOARDRULES_COPY_APPEND_EXPLAIN' => array(
1 => 'Målet inneholder for øyeblikket %d regel. Den forblir uendret, og kopierte regler legges til etter den. Kopierte ankere med konflikter får et numerisk suffiks.',
@@ -137,10 +137,8 @@
'ACP_RULE_MESSAGE_EXPLAIN' => 'Regelmeldingen vises på regelsiden for hver regel. (Kategorier viser ikke regelmeldinger.)',
'ACP_RULE_MESSAGE_DISABLED' => 'Denne kategorien inneholder regler. Meldingsredigering har blitt deaktivert.',
'ACP_ADD_RULE' => 'Opprett en ny regel',
- 'ACP_DELETE_RULE_CONFIRM' => array(
- 0 => 'Er du sikker på at du vil slette denne regelen?',
- 1 => 'Er du sikker på at du vil slette denne regelkategori?
Advarsel: Hvis en regelkategori blir slettet, slettes også alle reglene i den.',
- ),
+ 'ACP_DELETE_RULE_CONFIRM' => 'Er du sikker på at du vil slette denne regelen?',
+ 'ACP_DELETE_RULE_CATEGORY_CONFIRM' => 'Er du sikker på at du vil slette denne regelkategori?
Advarsel: Hvis en regelkategori blir slettet, slettes også alle reglene i den.',
'ACP_RULE_ADDED' => 'Regelen har blitt opprettet.',
'ACP_RULE_DELETED' => 'Regelen har blitt slettet.',
'ACP_RULE_EDITED' => 'Regelen har blitt oppdatert.',
diff --git a/language/nl/boardrules_acp.php b/language/nl/boardrules_acp.php
index af42d0b8..172383f7 100644
--- a/language/nl/boardrules_acp.php
+++ b/language/nl/boardrules_acp.php
@@ -91,7 +91,7 @@
'ACP_BOARDRULES_DRAFT_NOTICE' => 'Deze regels zijn niet zichtbaar voor gebruikers. Gebruikers zien momenteel de regels in de standaardtaal van het forum.',
'ACP_BOARDRULES_DRAFT_DEFAULT_NOTICE' => 'Deze regels zijn niet zichtbaar voor gebruikers. Publiceer ze om de standaardregels van het forum beschikbaar te maken.',
'ACP_BOARDRULES_COPY_RULESET' => 'Regelset van taal kopiëren',
- 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Kopieer elke categorie en regel naar %s. Gekopieerde regels worden na bestaande regels toegevoegd en de volledige doelregelset blijft een concept totdat je deze publiceert.',
+ 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Kopieer elke categorie en regel naar %s. Gekopieerde regels worden na bestaande regels toegevoegd en de volledige doelregelset wordt als concept ingesteld totdat je deze publiceert.',
'ACP_BOARDRULES_COPY_APPEND' => 'Aan bestaande regels toevoegen',
'ACP_BOARDRULES_COPY_APPEND_EXPLAIN' => array(
1 => 'Het doel bevat momenteel %d regel. Deze blijft ongewijzigd en gekopieerde regels worden erna toegevoegd. Conflicterende gekopieerde ankers krijgen een numeriek achtervoegsel.',
@@ -137,10 +137,8 @@
'ACP_RULE_MESSAGE_EXPLAIN' => 'Het regelbericht wordt weergegeven op de regelspagina voor iedere regel (categorieën geven geen regelbericht weer.)',
'ACP_RULE_MESSAGE_DISABLED' => 'Deze categrie bevat onderregels. Je kan hier geen bericht tevegen.',
'ACP_ADD_RULE' => 'Nieuwe regel aanmaken',
- 'ACP_DELETE_RULE_CONFIRM' => array(
- 0 => 'Weet je zeker dat je deze regel wilt verwijderen?',
- 1 => 'Weet je zeker dat je deze regel categorie wilt verwijderen?
Let op: Als je deze regel categorie verwijdert, verwijder je ook de onderliggende regels.',
- ),
+ 'ACP_DELETE_RULE_CONFIRM' => 'Weet je zeker dat je deze regel wilt verwijderen?',
+ 'ACP_DELETE_RULE_CATEGORY_CONFIRM' => 'Weet je zeker dat je deze regel categorie wilt verwijderen?
Let op: Als je deze regel categorie verwijdert, verwijder je ook de onderliggende regels.',
'ACP_RULE_ADDED' => 'Regel succesvol toegevoegd.',
'ACP_RULE_DELETED' => 'Regel succesvol verwijderd.',
'ACP_RULE_EDITED' => 'Regel succesvol gewijzigd.',
diff --git a/language/pl/boardrules_acp.php b/language/pl/boardrules_acp.php
index ea996ace..e4e7f5fe 100644
--- a/language/pl/boardrules_acp.php
+++ b/language/pl/boardrules_acp.php
@@ -91,7 +91,7 @@
'ACP_BOARDRULES_DRAFT_NOTICE' => 'Te przepisy nie są widoczne dla użytkowników. Użytkownicy widzą obecnie regulamin w domyślnym języku forum.',
'ACP_BOARDRULES_DRAFT_DEFAULT_NOTICE' => 'Te przepisy nie są widoczne dla użytkowników. Opublikuj je, aby udostępnić domyślny regulamin forum.',
'ACP_BOARDRULES_COPY_RULESET' => 'Kopiuj regulamin języka',
- 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Kopiuje wszystkie rozdziały i przepisy do %s. Skopiowane przepisy są dodawane za istniejącymi, a cały regulamin docelowy pozostaje szkicem do czasu publikacji.',
+ 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Kopiuje wszystkie rozdziały i przepisy do %s. Skopiowane przepisy są dodawane za istniejącymi, a cały regulamin docelowy zostanie ustawiony jako szkic do czasu publikacji.',
'ACP_BOARDRULES_COPY_APPEND' => 'Dodaj do istniejących przepisów',
'ACP_BOARDRULES_COPY_APPEND_EXPLAIN' => array(
1 => 'Element docelowy zawiera obecnie %d przepis. Pozostanie on bez zmian, a skopiowane przepisy zostaną dodane za nim. Skopiowane zakotwiczenia powodujące konflikt otrzymają przyrostek liczbowy.',
@@ -141,10 +141,8 @@
'ACP_RULE_MESSAGE_EXPLAIN' => 'Treść przepisu jest wyświetlana na stronie regulaminu dla każdego przepisu (rozdziały nie wyświetlają treści przepisu).',
'ACP_RULE_MESSAGE_DISABLED' => 'To jest rozdział zawierający przepisy - edytor treści przepisu został wyłączony.',
'ACP_ADD_RULE' => 'Utwórz nowy przepis',
- 'ACP_DELETE_RULE_CONFIRM' => array(
- 0 => 'Czy na pewno chcesz usunąć ten przepis?',
- 1 => 'Czy na pewno chcesz usunąć ten kategorii reguły?
Uwaga: Usunięcie kategorii reguły spowoduje także usunięcie wszystkich zawartych w nim zasad.',
- ),
+ 'ACP_DELETE_RULE_CONFIRM' => 'Czy na pewno chcesz usunąć ten przepis?',
+ 'ACP_DELETE_RULE_CATEGORY_CONFIRM' => 'Czy na pewno chcesz usunąć ten kategorii reguły?
Uwaga: Usunięcie kategorii reguły spowoduje także usunięcie wszystkich zawartych w nim zasad.',
'ACP_RULE_ADDED' => 'Reguła została dodana.',
'ACP_RULE_DELETED' => 'Reguła została usunięta.',
'ACP_RULE_EDITED' => 'Reguła została zaktualizowana.',
diff --git a/language/pt/boardrules_acp.php b/language/pt/boardrules_acp.php
index c5fa71e5..1d5e5b3f 100644
--- a/language/pt/boardrules_acp.php
+++ b/language/pt/boardrules_acp.php
@@ -91,7 +91,7 @@
'ACP_BOARDRULES_DRAFT_NOTICE' => 'Estas regras não estão visíveis para os utilizadores. Os utilizadores veem atualmente as regras no idioma predefinido do fórum.',
'ACP_BOARDRULES_DRAFT_DEFAULT_NOTICE' => 'Estas regras não estão visíveis para os utilizadores. Publique-as para disponibilizar as regras predefinidas do fórum.',
'ACP_BOARDRULES_COPY_RULESET' => 'Copiar conjunto de regras do idioma',
- 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Copia todas as categorias e regras para %s. As regras copiadas são adicionadas depois das regras existentes e o conjunto completo de destino permanece como rascunho até ser publicado.',
+ 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Copia todas as categorias e regras para %s. As regras copiadas são adicionadas depois das regras existentes e o conjunto completo de destino será definido como rascunho até ser publicado.',
'ACP_BOARDRULES_COPY_APPEND' => 'Adicionar às regras existentes',
'ACP_BOARDRULES_COPY_APPEND_EXPLAIN' => array(
1 => 'O destino contém atualmente %d regra. Esta permanecerá inalterada e as regras copiadas serão adicionadas depois dela. As âncoras copiadas em conflito receberão um sufixo numérico.',
@@ -137,10 +137,8 @@
'ACP_RULE_MESSAGE_EXPLAIN' => 'A mensagem da regra é exibida na página de regra para cada regra (categorias não exibem mensagens das regras).',
'ACP_RULE_MESSAGE_DISABLED' => 'Esta é uma categoria que contém regras, o editor mensagem foi desativado.',
'ACP_ADD_RULE' => 'Criar nova regra',
- 'ACP_DELETE_RULE_CONFIRM' => array(
- 0 => 'Tem a certeza que deseja eliminar esta regra?',
- 1 => 'Tem a certeza que deseja eliminar esta categoria de regra?
Aviso: Removendo um categoria de regra irá remover todas as regras contidas dentro dela.',
- ),
+ 'ACP_DELETE_RULE_CONFIRM' => 'Tem a certeza que deseja eliminar esta regra?',
+ 'ACP_DELETE_RULE_CATEGORY_CONFIRM' => 'Tem a certeza que deseja eliminar esta categoria de regra?
Aviso: Removendo um categoria de regra irá remover todas as regras contidas dentro dela.',
'ACP_RULE_ADDED' => 'Regra criada com sucesso.',
'ACP_RULE_DELETED' => 'Regra eliminada com sucesso.',
'ACP_RULE_EDITED' => 'Regra editada com sucesso.',
diff --git a/language/pt_br/boardrules_acp.php b/language/pt_br/boardrules_acp.php
index dc65dc0b..344cd529 100644
--- a/language/pt_br/boardrules_acp.php
+++ b/language/pt_br/boardrules_acp.php
@@ -91,7 +91,7 @@
'ACP_BOARDRULES_DRAFT_NOTICE' => 'Estas regras não estão visíveis para os usuários. Os usuários estão vendo as regras no idioma padrão do fórum.',
'ACP_BOARDRULES_DRAFT_DEFAULT_NOTICE' => 'Estas regras não estão visíveis para os usuários. Publique-as para disponibilizar as regras padrão do fórum.',
'ACP_BOARDRULES_COPY_RULESET' => 'Copiar conjunto de regras do idioma',
- 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Copia todas as categorias e regras para %s. As regras copiadas são adicionadas depois das regras existentes e o conjunto completo de destino permanece como rascunho até ser publicado.',
+ 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Copia todas as categorias e regras para %s. As regras copiadas são adicionadas depois das regras existentes e o conjunto completo de destino será definido como rascunho até ser publicado.',
'ACP_BOARDRULES_COPY_APPEND' => 'Adicionar às regras existentes',
'ACP_BOARDRULES_COPY_APPEND_EXPLAIN' => array(
1 => 'O destino contém atualmente %d regra. Ela permanecerá inalterada e as regras copiadas serão adicionadas depois dela. As âncoras copiadas em conflito receberão um sufixo numérico.',
@@ -137,10 +137,8 @@
'ACP_RULE_MESSAGE_EXPLAIN' => 'A mensagem da regra é exibida na página de regra para cada regra (categorias não exibem mensagens das regras).',
'ACP_RULE_MESSAGE_DISABLED' => 'Esta é uma categoria que contém regras, o editor mensagem foi desativado.',
'ACP_ADD_RULE' => 'Criar nova regra',
- 'ACP_DELETE_RULE_CONFIRM' => array(
- 0 => 'Tem certeza que deseja remover esta regra?',
- 1 => 'Tem certeza que deseja remover esta categoria de regra?
Aviso: Removendo um categoria de regra irá remover todas as regras contidas dentro dela.',
- ),
+ 'ACP_DELETE_RULE_CONFIRM' => 'Tem certeza que deseja remover esta regra?',
+ 'ACP_DELETE_RULE_CATEGORY_CONFIRM' => 'Tem certeza que deseja remover esta categoria de regra?
Aviso: Removendo um categoria de regra irá remover todas as regras contidas dentro dela.',
'ACP_RULE_ADDED' => 'Regra criada com sucesso.',
'ACP_RULE_DELETED' => 'Regra removida com sucesso.',
'ACP_RULE_EDITED' => 'Regra editada com sucesso.',
diff --git a/language/pt_preao/boardrules_acp.php b/language/pt_preao/boardrules_acp.php
index 2f725f61..e2fb8408 100644
--- a/language/pt_preao/boardrules_acp.php
+++ b/language/pt_preao/boardrules_acp.php
@@ -91,7 +91,7 @@
'ACP_BOARDRULES_DRAFT_NOTICE' => 'Estas regras não estão visíveis para os utilizadores. Os utilizadores veem actualmente as regras no idioma predefinido do fórum.',
'ACP_BOARDRULES_DRAFT_DEFAULT_NOTICE' => 'Estas regras não estão visíveis para os utilizadores. Publique-as para disponibilizar as regras predefinidas do fórum.',
'ACP_BOARDRULES_COPY_RULESET' => 'Copiar conjunto de regras do idioma',
- 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Copia todas as categorias e regras para %s. As regras copiadas são adicionadas depois das regras existentes e o conjunto completo de destino permanece como rascunho até ser publicado.',
+ 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Copia todas as categorias e regras para %s. As regras copiadas são adicionadas depois das regras existentes e o conjunto completo de destino será definido como rascunho até ser publicado.',
'ACP_BOARDRULES_COPY_APPEND' => 'Adicionar às regras existentes',
'ACP_BOARDRULES_COPY_APPEND_EXPLAIN' => array(
1 => 'O destino contém actualmente %d regra. Esta permanecerá inalterada e as regras copiadas serão adicionadas depois dela. As âncoras copiadas em conflito receberão um sufixo numérico.',
@@ -137,10 +137,8 @@
'ACP_RULE_MESSAGE_EXPLAIN' => 'A mensagem da regra é exibida na página de regra para cada regra (categorias não exibem mensagens das regras).',
'ACP_RULE_MESSAGE_DISABLED' => 'Esta é uma categoria que contém regras, o editor mensagem foi desativado.',
'ACP_ADD_RULE' => 'Criar nova regra',
- 'ACP_DELETE_RULE_CONFIRM' => array(
- 0 => 'Tem a certeza que deseja eliminar esta regra?',
- 1 => 'Tem a certeza que deseja eliminar esta categoria de regra?
Aviso: Removendo um categoria de regra irá remover todas as regras contidas dentro dela.',
- ),
+ 'ACP_DELETE_RULE_CONFIRM' => 'Tem a certeza que deseja eliminar esta regra?',
+ 'ACP_DELETE_RULE_CATEGORY_CONFIRM' => 'Tem a certeza que deseja eliminar esta categoria de regra?
Aviso: Removendo um categoria de regra irá remover todas as regras contidas dentro dela.',
'ACP_RULE_ADDED' => 'Regra criada com sucesso.',
'ACP_RULE_DELETED' => 'Regra eliminada com sucesso.',
'ACP_RULE_EDITED' => 'Regra editada com sucesso.',
diff --git a/language/ro/boardrules_acp.php b/language/ro/boardrules_acp.php
index d48a5089..b6d3c51d 100644
--- a/language/ro/boardrules_acp.php
+++ b/language/ro/boardrules_acp.php
@@ -90,7 +90,7 @@
'ACP_BOARDRULES_DRAFT_NOTICE' => 'Aceste reguli nu sunt vizibile utilizatorilor. Utilizatorii văd în prezent regulile în limba implicită a forumului.',
'ACP_BOARDRULES_DRAFT_DEFAULT_NOTICE' => 'Aceste reguli nu sunt vizibile utilizatorilor. Publicați-le pentru a face disponibile regulile implicite ale forumului.',
'ACP_BOARDRULES_COPY_RULESET' => 'Copiază setul de reguli al limbii',
- 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Copiați fiecare categorie și regulă în %s. Regulile copiate sunt adăugate după cele existente, iar setul complet de reguli țintă rămâne ciornă până când îl publicați.',
+ 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Copiați fiecare categorie și regulă în %s. Regulile copiate sunt adăugate după cele existente, iar setul complet de reguli țintă va fi setat ca ciornă până când îl publicați.',
'ACP_BOARDRULES_COPY_APPEND' => 'Adaugă la regulile existente',
'ACP_BOARDRULES_COPY_APPEND_EXPLAIN' => array(
1 => 'Limba țintă conține în prezent %d regulă. Aceasta va rămâne neschimbată, iar regulile copiate vor fi adăugate după ea. Ancorele copiate care intră în conflict vor primi un sufix numeric.',
@@ -139,10 +139,8 @@
'ACP_RULE_MESSAGE_EXPLAIN' => 'Mesajul regula apare doar pe pagina de reguli.',
'ACP_RULE_MESSAGE_DISABLED' => 'Aceasta categorie contine mesaje, iar editarea a fost oprita.',
'ACP_ADD_RULE' => 'Creaza o regula noua',
- 'ACP_DELETE_RULE_CONFIRM' => array(
- 0 => 'Esti sigur ca vrei sa stergi aceasta regula?',
- 1 => 'Esti sigur ca vrei sa stergi aceasta regula?
Avertisment: Eliminarea unei categorii reguli va duce la elimina toate regulile conținute în ea.',
- ),
+ 'ACP_DELETE_RULE_CONFIRM' => 'Esti sigur ca vrei sa stergi aceasta regula?',
+ 'ACP_DELETE_RULE_CATEGORY_CONFIRM' => 'Esti sigur ca vrei sa stergi aceasta regula?
Avertisment: Eliminarea unei categorii reguli va duce la elimina toate regulile conținute în ea.',
'ACP_RULE_ADDED' => 'Regula a fost adaugata cu succes.',
'ACP_RULE_DELETED' => 'Regula a fost stearsa cu succes.',
'ACP_RULE_EDITED' => 'Regula a fost editata cu succes.',
diff --git a/language/ru/boardrules_acp.php b/language/ru/boardrules_acp.php
index 79661ce8..acaf1069 100644
--- a/language/ru/boardrules_acp.php
+++ b/language/ru/boardrules_acp.php
@@ -90,7 +90,7 @@
'ACP_BOARDRULES_DRAFT_NOTICE' => 'Эти правила не видны пользователям. Сейчас пользователи видят правила на языке форума по умолчанию.',
'ACP_BOARDRULES_DRAFT_DEFAULT_NOTICE' => 'Эти правила не видны пользователям. Опубликуйте их, чтобы сделать правила форума по умолчанию доступными.',
'ACP_BOARDRULES_COPY_RULESET' => 'Копирование набора правил языка',
- 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Копирует все категории и правила в %s. Скопированные правила добавляются после существующих, а полный целевой набор правил остаётся черновиком до публикации.',
+ 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Копирует все категории и правила в %s. Скопированные правила добавляются после существующих, а полный целевой набор правил будет переведён в статус черновика до публикации.',
'ACP_BOARDRULES_COPY_APPEND' => 'Добавить к существующим правилам',
'ACP_BOARDRULES_COPY_APPEND_EXPLAIN' => array(
1 => 'Сейчас целевой язык содержит %d правило. Оно останется без изменений, а скопированные правила будут добавлены после него. Конфликтующие скопированные якоря получат числовой суффикс.',
@@ -140,10 +140,8 @@
'ACP_RULE_MESSAGE_EXPLAIN' => 'Текст отображается под каждым правилом в их списке. Под категориями текст не отображается',
'ACP_RULE_MESSAGE_DISABLED' => 'Эта котегория содержит правила, поэтому редактор текста правил отключен',
'ACP_ADD_RULE' => 'Создать новое правило',
- 'ACP_DELETE_RULE_CONFIRM' => array(
- 0 => 'Вы действительно хотите удалить данное правило?',
- 1 => 'Вы действительно хотите удалить данное правило?
Предупреждение: удаление раздела правил также приведёт к удалению всех входящих в него пунктов.',
- ),
+ 'ACP_DELETE_RULE_CONFIRM' => 'Вы действительно хотите удалить данное правило?',
+ 'ACP_DELETE_RULE_CATEGORY_CONFIRM' => 'Вы действительно хотите удалить данное правило?
Предупреждение: удаление раздела правил также приведёт к удалению всех входящих в него пунктов.',
'ACP_RULE_ADDED' => 'Правило успешно добавлено.',
'ACP_RULE_DELETED' => 'Правило успешно удалено.',
'ACP_RULE_EDITED' => 'Правило успешно отредактировано.',
diff --git a/language/sk/boardrules_acp.php b/language/sk/boardrules_acp.php
index bf71038f..067d3df9 100644
--- a/language/sk/boardrules_acp.php
+++ b/language/sk/boardrules_acp.php
@@ -90,7 +90,7 @@
'ACP_BOARDRULES_DRAFT_NOTICE' => 'Tieto pravidlá nie sú pre používateľov viditeľné. Používatelia teraz vidia pravidlá v predvolenom jazyku fóra.',
'ACP_BOARDRULES_DRAFT_DEFAULT_NOTICE' => 'Tieto pravidlá nie sú pre používateľov viditeľné. Zverejnite ich, aby boli predvolené pravidlá fóra dostupné.',
'ACP_BOARDRULES_COPY_RULESET' => 'Kopírovať jazykovú sadu pravidiel',
- 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Skopíruje všetky kategórie a pravidlá do %s. Skopírované pravidlá sa pridajú za existujúce pravidlá a celá cieľová sada zostane konceptom, kým ju nezverejníte.',
+ 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Skopíruje všetky kategórie a pravidlá do %s. Skopírované pravidlá sa pridajú za existujúce pravidlá a celá cieľová sada bude nastavená ako koncept, kým ju nezverejníte.',
'ACP_BOARDRULES_COPY_APPEND' => 'Pridať k existujúcim pravidlám',
'ACP_BOARDRULES_COPY_APPEND_EXPLAIN' => array(
1 => 'Cieľ teraz obsahuje %d pravidlo. Zostane nezmenené a skopírované pravidlá budú pridané zaň. Konfliktné skopírované odkazy dostanú číselnú príponu.',
@@ -140,10 +140,8 @@
'ACP_RULE_MESSAGE_EXPLAIN' => 'Obsah pravidla je zobrazený pri každom z pravidiel (toto pole je pri kategóriách ignorované).',
'ACP_RULE_MESSAGE_DISABLED' => 'Toto je kategória pravidiel, preto nie je možné pravidlo upravovať.',
'ACP_ADD_RULE' => 'Vytvoriť nové pravidlo',
- 'ACP_DELETE_RULE_CONFIRM' => array(
- 0 => 'Naozaj chcete odstrániť toto pravidlo?',
- 1 => 'Naozaj chcete odstrániť toto pravidlo?
Varovanie: Odstránením kategórie odstraníte tiež všetky pravidlá v nej.',
- ),
+ 'ACP_DELETE_RULE_CONFIRM' => 'Naozaj chcete odstrániť toto pravidlo?',
+ 'ACP_DELETE_RULE_CATEGORY_CONFIRM' => 'Naozaj chcete odstrániť toto pravidlo?
Varovanie: Odstránením kategórie odstraníte tiež všetky pravidlá v nej.',
'ACP_RULE_ADDED' => 'Pravidlo bolo úspešne pridané.',
'ACP_RULE_DELETED' => 'Pravidlo bolo úspešne odstránené.',
'ACP_RULE_EDITED' => 'Pravidlo bolo úspešne upravené.',
diff --git a/language/sv/boardrules_acp.php b/language/sv/boardrules_acp.php
index fa7881d0..fe749321 100644
--- a/language/sv/boardrules_acp.php
+++ b/language/sv/boardrules_acp.php
@@ -91,7 +91,7 @@
'ACP_BOARDRULES_DRAFT_NOTICE' => 'Dessa regler är inte synliga för användarna. Användarna ser för närvarande reglerna på forumets standardspråk.',
'ACP_BOARDRULES_DRAFT_DEFAULT_NOTICE' => 'Dessa regler är inte synliga för användarna. Publicera dem för att göra forumets standardregler tillgängliga.',
'ACP_BOARDRULES_COPY_RULESET' => 'Kopiera språkets regeluppsättning',
- 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Kopiera alla kategorier och regler till %s. Kopierade regler läggs till efter befintliga regler och målspråkets fullständiga regeluppsättning förblir ett utkast tills du publicerar den.',
+ 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Kopiera alla kategorier och regler till %s. Kopierade regler läggs till efter befintliga regler och målspråkets fullständiga regeluppsättning sätts som utkast tills du publicerar den.',
'ACP_BOARDRULES_COPY_APPEND' => 'Lägg till i befintliga regler',
'ACP_BOARDRULES_COPY_APPEND_EXPLAIN' => array(
1 => 'Målet innehåller för närvarande %d regel. Den förblir oförändrad och kopierade regler läggs till efter den. Kopierade ankare med konflikter får ett numeriskt suffix.',
@@ -137,10 +137,8 @@
'ACP_RULE_MESSAGE_EXPLAIN' => 'Regelmeddelandet visas på regelsidan för varje regel (kategorier visar ej regelmeddelanden).',
'ACP_RULE_MESSAGE_DISABLED' => 'Denna kategori innehåller regler, meddelandeeditorn har deaktiverats.',
'ACP_ADD_RULE' => 'Skapa en ny regel',
- 'ACP_DELETE_RULE_CONFIRM' => array(
- 0 => 'Är du säker på att du vill ta bort denna regel?',
- 1 => 'Är du säker på att du vill ta bort denna regelkategori?
Varning: raderas en regelkategori så raderas även alla regler i denna kategori.',
- ),
+ 'ACP_DELETE_RULE_CONFIRM' => 'Är du säker på att du vill ta bort denna regel?',
+ 'ACP_DELETE_RULE_CATEGORY_CONFIRM' => 'Är du säker på att du vill ta bort denna regelkategori?
Varning: raderas en regelkategori så raderas även alla regler i denna kategori.',
'ACP_RULE_ADDED' => 'Regeln har skapats.',
'ACP_RULE_DELETED' => 'Regeln har raderats.',
'ACP_RULE_EDITED' => 'Regeln har uppdaterats.',
diff --git a/language/tr/boardrules_acp.php b/language/tr/boardrules_acp.php
index 89dd6c43..13abd5ab 100644
--- a/language/tr/boardrules_acp.php
+++ b/language/tr/boardrules_acp.php
@@ -91,7 +91,7 @@
'ACP_BOARDRULES_DRAFT_NOTICE' => 'Bu kurallar kullanıcılar tarafından görülemez. Kullanıcılar şu anda forumun varsayılan dilindeki kuralları görüyor.',
'ACP_BOARDRULES_DRAFT_DEFAULT_NOTICE' => 'Bu kurallar kullanıcılar tarafından görülemez. Forumun varsayılan kurallarını kullanılabilir hale getirmek için yayınlayın.',
'ACP_BOARDRULES_COPY_RULESET' => 'Dil kural kümesini kopyala',
- 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Tüm kategorileri ve kuralları %s diline kopyalayın. Kopyalanan kurallar mevcut kuralların ardından eklenir ve hedef kural kümesinin tamamı siz yayınlayana kadar taslak olarak kalır.',
+ 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Tüm kategorileri ve kuralları %s diline kopyalayın. Kopyalanan kurallar mevcut kuralların ardından eklenir ve hedef kural kümesinin tamamı siz yayınlayana kadar taslak olarak ayarlanır.',
'ACP_BOARDRULES_COPY_APPEND' => 'Mevcut kurallara ekle',
'ACP_BOARDRULES_COPY_APPEND_EXPLAIN' => array(
1 => 'Hedef şu anda %d kural içeriyor. Bu kurallar değişmeden kalacak ve kopyalanan kurallar onların ardından eklenecek. Çakışan kopyalanmış bağlantı çapalarına sayısal bir son ek verilecek.',
@@ -132,10 +132,8 @@
'ACP_RULE_MESSAGE_EXPLAIN' => 'Kural mesajı, her bir kural için kurallar sayfasında gösterilir (kategoriler bir kural mesajı görüntülemez).',
'ACP_RULE_MESSAGE_DISABLED' => 'Bu kurallar içeren bir kategoridir, mesaj editörü devre dışı bırakıldı.',
'ACP_ADD_RULE' => 'Yeni kural oluştur',
- 'ACP_DELETE_RULE_CONFIRM' => array(
- 0 => 'Bu kuralı kaldırmak istediğinize emin misiniz?',
- 1 => 'Bu kuralı kaldırmak istediğinize emin misiniz?
Dikkat: Bir kural kategorisi kaldırıldığında içerdiği tüm kurallar da kaldırılır.',
- ),
+ 'ACP_DELETE_RULE_CONFIRM' => 'Bu kuralı kaldırmak istediğinize emin misiniz?',
+ 'ACP_DELETE_RULE_CATEGORY_CONFIRM' => 'Bu kuralı kaldırmak istediğinize emin misiniz?
Dikkat: Bir kural kategorisi kaldırıldığında içerdiği tüm kurallar da kaldırılır.',
'ACP_RULE_ADDED' => 'Kural başarıyla eklendi.',
'ACP_RULE_DELETED' => 'Kural başarıyla kaldırıldı.',
'ACP_RULE_EDITED' => 'Kural başarıyla düzenlendi.',
diff --git a/language/uk/boardrules_acp.php b/language/uk/boardrules_acp.php
index a890ed44..2e9d7ec8 100644
--- a/language/uk/boardrules_acp.php
+++ b/language/uk/boardrules_acp.php
@@ -90,7 +90,7 @@
'ACP_BOARDRULES_DRAFT_NOTICE' => 'Ці правила не видимі користувачам. Зараз користувачі бачать правила типовою мовою форуму.',
'ACP_BOARDRULES_DRAFT_DEFAULT_NOTICE' => 'Ці правила не видимі користувачам. Опублікуйте їх, щоб зробити типові правила форуму доступними.',
'ACP_BOARDRULES_COPY_RULESET' => 'Копіювати набір правил мови',
- 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Копіює всі категорії та правила до %s. Скопійовані правила додаються після наявних, а повний цільовий набір правил залишається чернеткою до публікації.',
+ 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => 'Копіює всі категорії та правила до %s. Скопійовані правила додаються після наявних, а повний цільовий набір правил буде переведено в статус чернетки до публікації.',
'ACP_BOARDRULES_COPY_APPEND' => 'Додати до наявних правил',
'ACP_BOARDRULES_COPY_APPEND_EXPLAIN' => array(
1 => 'Зараз цільова мова містить %d правило. Воно залишиться без змін, а скопійовані правила буде додано після нього. Конфліктні скопійовані якорі отримають числовий суфікс.',
@@ -140,10 +140,8 @@
'ACP_RULE_MESSAGE_EXPLAIN' => 'Текст відображається під кожним правилом у списку. Під категоріями текст не відображається',
'ACP_RULE_MESSAGE_DISABLED' => 'Ця категория містить правила, тому редактор тексту правил вимкнено',
'ACP_ADD_RULE' => 'Створити нове правило',
- 'ACP_DELETE_RULE_CONFIRM' => array(
- 0 => 'Ви дійсно хочете видалити це правило?',
- 1 => 'Ви дійсно хочете видалити це правило?
Попередження: видалення розділу правил також призведе до видалення всіх пунктів, що входять до нього.',
- ),
+ 'ACP_DELETE_RULE_CONFIRM' => 'Ви дійсно хочете видалити це правило?',
+ 'ACP_DELETE_RULE_CATEGORY_CONFIRM' => 'Ви дійсно хочете видалити це правило?
Попередження: видалення розділу правил також призведе до видалення всіх пунктів, що входять до нього.',
'ACP_RULE_ADDED' => 'Правило успішно додано.',
'ACP_RULE_DELETED' => 'Правило успішно видалено.',
'ACP_RULE_EDITED' => 'Правило успішно відредаговано.',
diff --git a/language/zh_cmn_hans/boardrules_acp.php b/language/zh_cmn_hans/boardrules_acp.php
index 112a6022..1653b9c7 100644
--- a/language/zh_cmn_hans/boardrules_acp.php
+++ b/language/zh_cmn_hans/boardrules_acp.php
@@ -90,7 +90,7 @@
'ACP_BOARDRULES_DRAFT_NOTICE' => '用户看不到这些章程。用户目前看到的是论坛默认语言的章程。',
'ACP_BOARDRULES_DRAFT_DEFAULT_NOTICE' => '用户看不到这些章程。请发布它们,使论坛默认章程可用。',
'ACP_BOARDRULES_COPY_RULESET' => '复制语言章程集',
- 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => '将每个分类和章程复制到%s。复制的章程将添加到任何现有章程之后,完整的目标章程集在您发布前会保持草稿状态。',
+ 'ACP_BOARDRULES_COPY_RULESET_EXPLAIN' => '将每个分类和章程复制到%s。复制的章程将添加到任何现有章程之后,完整的目标章程集将被设为草稿,直到您发布为止。',
'ACP_BOARDRULES_COPY_APPEND' => '添加到现有章程',
'ACP_BOARDRULES_COPY_APPEND_EXPLAIN' => array(
1 => '目标目前包含 %d 条章程。它们将保持不变,复制的章程将添加到其后。任何冲突的已复制锚点都将获得数字后缀。',
@@ -131,10 +131,8 @@
'ACP_RULE_MESSAGE_EXPLAIN' => '章程消息是显示在章程页面。(分类并不会显示章程消息)',
'ACP_RULE_MESSAGE_DISABLED' => '这是分类,消息编辑器已经禁用。',
'ACP_ADD_RULE' => '创建一条新章程',
- 'ACP_DELETE_RULE_CONFIRM' => array(
- 0 => '您确认要删除这条章程?',
- 1 => '您确认要删除这条章程?
警告:删除分类会删除所有其包含的章程。',
- ),
+ 'ACP_DELETE_RULE_CONFIRM' => '您确认要删除这条章程?',
+ 'ACP_DELETE_RULE_CATEGORY_CONFIRM' => '您确认要删除这条章程?
警告:删除分类会删除所有其包含的章程。',
'ACP_RULE_ADDED' => '成功增加了章程。',
'ACP_RULE_DELETED' => '成功删除了章程。',
'ACP_RULE_EDITED' => '章程编辑成功。',
diff --git a/tests/controller/admin_controller_test.php b/tests/controller/admin_controller_test.php
index da423911..befa9033 100644
--- a/tests/controller/admin_controller_test.php
+++ b/tests/controller/admin_controller_test.php
@@ -633,6 +633,42 @@ public function test_edit_rule_initial_form_loads_real_entity(): void
self::assertTrue($this->blocks['rulemenu'][1]['S_DISABLED']);
}
+ public function test_edit_rule_reports_missing_rule(): void
+ {
+ $this->setExpectedTriggerError(E_USER_WARNING, 'EXCEPTION_OUT_OF_BOUNDS');
+
+ $this->controller->edit_rule(999);
+ }
+
+ public function test_edit_rule_initial_form_accepts_unchanged_legacy_anchor(): void
+ {
+ $this->db->sql_query("UPDATE phpbb_boardrules
+ SET rule_anchor = '1-general'
+ WHERE rule_id = 2");
+
+ $this->controller->edit_rule(2);
+
+ self::assertFalse($this->assigned_vars['S_ERROR']);
+ self::assertSame('1-general', $this->assigned_vars['RULE_ANCHOR']);
+ }
+
+ public function test_edit_rule_submit_preserves_unchanged_legacy_anchor(): void
+ {
+ $this->db->sql_query("UPDATE phpbb_boardrules
+ SET rule_anchor = '1-general'
+ WHERE rule_id = 2");
+ $this->post['submit'] = true;
+ $this->variables = array(
+ 'rule_title' => 'Updated legacy rule',
+ 'rule_anchor' => '1-general',
+ 'rule_message' => 'Updated',
+ 'rule_parent' => 1,
+ );
+ $this->setExpectedTriggerError(E_USER_NOTICE, 'ACP_RULE_EDITED');
+
+ $this->controller->edit_rule(2);
+ }
+
public function test_edit_rule_submit_saves_changes(): void
{
$this->post['submit'] = true;
@@ -727,6 +763,13 @@ public function test_delete_rule_requests_confirmation_and_redirects(): void
self::assertSame(array('adm.php?i=boardrules&language=en&parent_id=0'), admin_test_state::$redirects);
}
+ public function test_delete_rule_reports_missing_rule(): void
+ {
+ $this->setExpectedTriggerError(E_USER_WARNING, 'EXCEPTION_OUT_OF_BOUNDS');
+
+ $this->controller->delete_rule(999);
+ }
+
public function test_delete_rule_confirmed_deletes_real_tree(): void
{
$this->setExpectedTriggerError(E_USER_NOTICE, 'ACP_RULE_DELETED');
@@ -772,6 +815,23 @@ public function test_move_rule_redirects_to_own_parent(): void
self::assertSame(array('adm.php?i=boardrules&language=en&parent_id=1'), admin_test_state::$redirects);
}
+ public function test_move_rule_reports_rule_removed_after_move(): void
+ {
+ $entity = $this->getMockBuilder(\phpbb\boardrules\entity\rule::class)
+ ->disableOriginalConstructor()
+ ->getMock();
+ $entity->method('load')->willThrowException(new \phpbb\boardrules\exception\out_of_bounds('rule_id'));
+ $operator = $this->getMockBuilder(\phpbb\boardrules\operators\rule::class)
+ ->disableOriginalConstructor()
+ ->getMock();
+ $operator->method('move')->willReturn(true);
+ $this->replace_controller_service('container', $this->entity_container($entity));
+ $this->replace_controller_service('rule_operator', $operator);
+ $this->setExpectedTriggerError(E_USER_WARNING, 'EXCEPTION_OUT_OF_BOUNDS');
+
+ $this->controller->move_rule(2, 'down');
+ }
+
public function test_move_rule_returns_success_for_ajax_request(): void
{
$this->ajax = true;
diff --git a/tests/controller/main_controller_test.php b/tests/controller/main_controller_test.php
index 6196b3c5..ea24de63 100644
--- a/tests/controller/main_controller_test.php
+++ b/tests/controller/main_controller_test.php
@@ -173,7 +173,12 @@ public function test_display_redirects_when_disabled_and_closes_completed_tree()
'default_lang' => 'en',
'sitename' => 'Board',
));
- $loader = new \phpbb\language\language_file_loader($phpbb_root_path, $phpEx);
+ $loader = $this->createMock(\phpbb\language\language_file_loader::class);
+ $loader->method('load_extension')
+ ->willReturnCallback(function ($extension, $component, $locales, &$lang) {
+ $lang['BOARDRULES_CATEGORY_ANCHOR'] = 'section-%s';
+ $lang['BOARDRULES_RULE_ANCHOR'] = 'rule-%s';
+ });
$lang = new \phpbb\language\language($loader);
$lang->set_default_language('en');
$lang->set_user_language('en');
@@ -206,6 +211,7 @@ public function test_display_redirects_when_disabled_and_closes_completed_tree()
->disableOriginalConstructor()
->getMock();
$ruleset_operator->method('is_published')->with('en')->willReturn(true);
+ $assigned_rules = array();
$template = $this->createMock(\phpbb\template\template::class);
$template->expects(self::exactly(5))->method('assign_block_vars')->withConsecutive(
array('rules', self::arrayHasKey('TITLE')),
@@ -213,7 +219,12 @@ public function test_display_redirects_when_disabled_and_closes_completed_tree()
array('rules', array('S_CLOSE_LIST' => true)),
array('rules', self::arrayHasKey('TITLE')),
array('navlinks', self::arrayHasKey('U_VIEW_FORUM'))
- );
+ )->willReturnCallback(function ($block, $vars) use (&$assigned_rules) {
+ if ($block === 'rules' && isset($vars['U_ANCHOR']))
+ {
+ $assigned_rules[] = $vars;
+ }
+ });
$helper = $this->getMockBuilder(\phpbb\controller\helper::class)
->disableOriginalConstructor()
->getMock();
@@ -232,6 +243,7 @@ public function test_display_redirects_when_disabled_and_closes_completed_tree()
);
self::assertSame('rules', $controller->display()->getContent());
+ self::assertSame(array('section-1', 'rule-1a', 'rule-2'), array_column($assigned_rules, 'U_ANCHOR'));
self::assertCount(1, \phpbb\boardrules\controller\admin_test_state::$redirects);
self::assertStringContainsString('index.' . $phpEx, \phpbb\boardrules\controller\admin_test_state::$redirects[0]);
}
diff --git a/tests/entity/rule_entity_anchor_test.php b/tests/entity/rule_entity_anchor_test.php
index 405f41a8..952c15ff 100644
--- a/tests/entity/rule_entity_anchor_test.php
+++ b/tests/entity/rule_entity_anchor_test.php
@@ -28,6 +28,9 @@ public function anchor_test_data()
array('foø-bar', 'foø-bar'),
array('foó-bar', 'foó-bar'),
array('παράδειγμα-1', 'παράδειγμα-1'),
+ array('1-general', '1-general'),
+ array('-general', '-general'),
+ array('_general', '_general'),
array('', ''),
array(null, ''),
@@ -70,9 +73,6 @@ public function anchor_fails_test_data()
// Starts with illegal characters
array('#foo'),
array(' foo'),
- array('1foo'),
- array('-foo'),
- array('_foo'),
// Contains illegal characters
array('foo bar'),
@@ -189,6 +189,37 @@ public function test_unique_anchor($id, $language, $anchor, $expected)
self::assertSame($expected, $entity->get_anchor());
}
+ /**
+ * Existing anchors accepted by older versions remain editable when unchanged.
+ */
+ public function test_unchanged_legacy_anchor_is_accepted()
+ {
+ $data = $this->get_import_data()[1];
+ $data['rule_anchor'] = 'symbol-❤';
+
+ $entity = $this->get_rule_entity();
+ $entity
+ ->import($data)
+ ->set_anchor($data['rule_anchor']);
+
+ self::assertSame($data['rule_anchor'], $entity->get_anchor());
+ }
+
+ /**
+ * Changing a legacy anchor applies current validation rules.
+ */
+ public function test_changed_legacy_anchor_is_validated()
+ {
+ $data = $this->get_import_data()[1];
+ $data['rule_anchor'] = 'symbol-❤';
+
+ $entity = $this->get_rule_entity();
+ $entity->import($data);
+
+ $this->expectException(\phpbb\boardrules\exception\base::class);
+ $entity->set_anchor('another-❤');
+ }
+
/**
* Test data for the test_unique_anchor_fails() function
*
diff --git a/tests/entity/rule_entity_import_test.php b/tests/entity/rule_entity_import_test.php
index c935b42a..5b763c99 100644
--- a/tests/entity/rule_entity_import_test.php
+++ b/tests/entity/rule_entity_import_test.php
@@ -67,6 +67,20 @@ public function test_import($data)
}
}
+ /**
+ * Stored titles are imported without write-time encoding or validation.
+ */
+ public function test_import_accepts_existing_unicode_title()
+ {
+ $data = $this->get_import_data()[1];
+ $data['rule_title'] = str_repeat('К', 200);
+
+ $entity = $this->get_rule_entity();
+ $entity->import($data);
+
+ self::assertSame($data['rule_title'], $entity->get_title());
+ }
+
/**
* Test data for the test_import_fail() function
*
@@ -108,11 +122,6 @@ public function import_test_fail_data()
// 'rule_anchor' => str_repeat('a', 256),
// ));
- // Too long
- $data[] = array_merge($import_data[1], array(
- 'rule_title' => str_repeat('a', 201),
- ));
-
// Go through every field and unset it while submitting everything else
foreach ($import_data[1] as $field => $value)
{
diff --git a/tests/entity/rule_entity_save_test.php b/tests/entity/rule_entity_save_test.php
index abdac934..2322f7b5 100644
--- a/tests/entity/rule_entity_save_test.php
+++ b/tests/entity/rule_entity_save_test.php
@@ -73,7 +73,7 @@ public function test_save($id, $expected)
self::assertEquals($expected['rule_title'], $result->get_title());
}
- public function test_unicode_title_characters_are_encoded_for_storage_and_decoded_on_read()
+ public function test_four_byte_title_characters_are_encoded_and_other_unicode_is_preserved()
{
$entity = $this->get_rule_entity();
$entity->load(1)
@@ -88,10 +88,12 @@ public function test_unicode_title_characters_are_encoded_for_storage_and_decode
$this->db->sql_freeresult($result);
self::assertSame('emoji-title', $row['rule_anchor']);
- $expected_title = strpos($this->db->get_sql_layer(), 'mssql') === 0
- ? 'Emoji 😀 中文 Кириллица title'
- : 'Emoji 😀 中文 Кириллица title';
- self::assertSame($expected_title, $row['rule_title']);
+ self::assertSame(
+ strpos($this->db->get_sql_layer(), 'mssql') === 0
+ ? 'Emoji 😀 中文 Кириллица title'
+ : 'Emoji 😀 中文 Кириллица title',
+ $row['rule_title']
+ );
$entity->load(1);
self::assertSame('emoji-title', $entity->get_anchor());
diff --git a/tests/entity/rule_entity_title_test.php b/tests/entity/rule_entity_title_test.php
index c394fdf5..046a52f9 100644
--- a/tests/entity/rule_entity_title_test.php
+++ b/tests/entity/rule_entity_title_test.php
@@ -34,6 +34,10 @@ public function title_test_data()
str_repeat('a', 200),
str_repeat('a', 200),
),
+ array(
+ str_repeat('😀', 22),
+ str_repeat('😀', 22),
+ ),
);
}
@@ -72,10 +76,13 @@ public function title_fails_test_data()
str_repeat('a', 201),
),
- // Escaped request value exceeds the stored column length.
+ // Encoded request value exceeds the stored column length.
array(
str_repeat('a', 194) . '&&',
),
+ array(
+ str_repeat('😀', 23),
+ ),
);
}