瀏覽代碼

Use friendly_name in code

Visman 1 年之前
父節點
當前提交
223efdfb8f

+ 10 - 2
app/Models/Forum/Forum.php

@@ -47,6 +47,14 @@ class Forum extends DataModel
         return $this->forum_name;
     }
 
+    /**
+     * Возвращает название для формирования URL
+     */
+    protected function getfriendly(): ?string
+    {
+        return isset($this->friendly_name[0]) ? $this->friendly_name : $this->forum_name;
+    }
+
     /**
      * Статус возможности создания новой темы
      */
@@ -129,7 +137,7 @@ class Forum extends DataModel
                 'Forum',
                 [
                     'id'   => $this->id,
-                    'name' => $this->c->Func->friendly($this->forum_name),
+                    'name' => $this->friendly,
                 ]
             );
         }
@@ -391,7 +399,7 @@ class Forum extends DataModel
             'Forum',
             [
                 'id'   => $this->id,
-                'name' => $this->c->Func->friendly($this->forum_name),
+                'name' => $this->friendly,
             ]
         );
     }

+ 1 - 1
app/Models/Forum/Refresh.php

@@ -37,7 +37,7 @@ class Refresh extends Action
             $vars = [
                 ':gid' => $gid,
             ];
-            $query = 'SELECT f.cat_id, c.cat_name, f.id, f.forum_name, f.redirect_url, f.parent_forum_id,
+            $query = 'SELECT f.cat_id, c.cat_name, f.id, f.forum_name, f.friendly_name, f.redirect_url, f.parent_forum_id,
                     f.moderators, f.no_sum_mess, f.disp_position, f.sort_by, fp.post_topics, fp.post_replies
                 FROM ::categories AS c
                 INNER JOIN ::forums AS f ON c.id=f.cat_id

+ 14 - 5
app/Models/Pages/Admin/Forums.php

@@ -362,6 +362,7 @@ class Forums extends Admin
                 ->addRules([
                     'token'                => 'token:' . $marker,
                     'forum_name'           => 'required|string:trim|max:80',
+                    'friendly_name'        => 'string:trim|max:80|regex:%^[\w-]*$%',
                     'forum_desc'           => 'exist|string:trim|max:65000 bytes|html',
                     'parent'               => 'required|integer|in:' . \implode(',', $this->listOfIndexes),
                     'sort_by'              => 'required|integer|in:0,1,2,4,5,6',
@@ -379,11 +380,12 @@ class Forums extends Admin
 
             $valid = $v->validation($_POST);
 
-            $forum->forum_name   = $v->forum_name;
-            $forum->forum_desc   = $v->forum_desc;
-            $forum->sort_by      = $v->sort_by;
-            $forum->redirect_url = $v->redirect_url ?? '';
-            $forum->no_sum_mess  = $v->no_sum_mess;
+            $forum->forum_name    = $v->forum_name;
+            $forum->friendly_name = \trim($v->friendly_name, '_-');
+            $forum->forum_desc    = $v->forum_desc;
+            $forum->sort_by       = $v->sort_by;
+            $forum->redirect_url  = $v->redirect_url ?? '';
+            $forum->no_sum_mess   = $v->no_sum_mess;
 
             if ($v->parent > 0) {
                 $forum->parent_forum_id = $v->parent;
@@ -462,6 +464,13 @@ class Forums extends Admin
                     'caption'   => 'Forum name label',
                     'required'  => true,
                 ],
+                'friendly_name' => [
+                    'type'      => 'text',
+                    'maxlength' => '80',
+                    'value'     => $forum->friendly_name,
+                    'caption'   => 'Friendly name label',
+                    'help'      => 'Friendly name help',
+                ],
                 'forum_desc' => [
                     'type'    => 'textarea',
                     'value'   => $forum->forum_desc,

+ 2 - 2
app/Models/Pages/Forum.php

@@ -48,7 +48,7 @@ class Forum extends Page
             'Forum',
             [
                 'id'   => $args['id'],
-                'name' => $this->c->Func->friendly($forum->forum_name),
+                'name' => $forum->friendly,
                 'page' => $forum->page,
             ]
         );
@@ -156,7 +156,7 @@ class Forum extends Page
             'Forum',
             [
                 'id'   => $forum->id,
-                'name' => $forum->forum_name,
+                'name' => $forum->friendly,
                 'page' => $forum->page,
                 '#'    => "topic-{$topic->id}",
             ]

+ 1 - 1
app/Models/Pages/Moderate.php

@@ -284,7 +284,7 @@ class Moderate extends Page
                 'Forum',
                 [
                     'id'   => $this->curForum->id,
-                    'name' => $this->curForum->forum_name,
+                    'name' => $this->curForum->friendly,
                     'page' => $v->page,
                 ]
             );

+ 6 - 0
app/lang/en/admin_forums.po

@@ -134,3 +134,9 @@ msgstr "If YES, then new messages from users in this forum will increase their c
 
 msgid "<span></span>"
 msgstr "<span></span>"
+
+msgid "Friendly name label"
+msgstr "Name for URL"
+
+msgid "Friendly name help"
+msgstr "A string identifier on the basis of which the url to this forum will be generated. May consist of Latin letters, numbers, underscores and hyphens."

+ 6 - 0
app/lang/ru/admin_forums.po

@@ -134,3 +134,9 @@ msgstr "Если ДА, то новые сообщения пользовател
 
 msgid "<span></span>"
 msgstr "<span></span>"
+
+msgid "Friendly name label"
+msgstr "Имя для URL"
+
+msgid "Friendly name help"
+msgstr "Строковый идентификатор на основе которого будет сформирован адрес указывающий на данный раздел. Может состоять из латинских букв, цифр, знаков подчеркивания и дефисов."