Browse Source

* Admn -> Users + fix fonts in style

Visman 6 years ago
parent
commit
431047be87

+ 0 - 1
app/Controllers/Routing.php

@@ -128,7 +128,6 @@ class Routing
             $r->add(['GET', 'POST'], '/admin/users/result/{data}[/{page:[1-9]\d*}]', 'AdminUsersResult:view', 'AdminUsersResult');
             $r->add(['GET', 'POST'], '/admin/users/{action:\w+}/{ids:\d+(?:-\d+)*}', 'AdminUsersAction:view', 'AdminUsersAction');
 
-
             if ($user->canViewIP) {
                 $r->add('GET',           '/admin/get/host/{ip:[0-9a-fA-F:.]+}',      'AdminHost:view',           'AdminHost');
                 $r->add('GET',           '/admin/users/user/{id:[2-9]|[1-9]\d+}[/{page:[1-9]\d*}]',      'AdminUsersStat:view',            'AdminUserStat');

+ 10 - 2
app/Models/Pages/Admin/Users.php

@@ -79,14 +79,17 @@ abstract class Users extends Admin
      * Проверяет доступность действий над выбранными пользователями
      *
      * @param array $selected
-     * @param string $action // ????
+     * @param string $action
      *
      * @return false|array
      */
     protected function checkSelected(array $selected, $action)
     {
+        $selected = \array_map(function ($value) { // ????
+            return (int) $value;
+        }, $selected);
         $bad = \array_filter($selected, function ($value) {
-            return $value < 2; // ???? например '03'
+            return $value < 2;
         });
 
         if (! empty($bad)) {
@@ -143,6 +146,11 @@ abstract class Users extends Admin
             $result[] = $user->id;
         }
 
+        if (empty($result)) {
+            $this->fIswev = ['v', \ForkBB\__('No users selected')];
+            return false;
+        }
+
         return $result;
     }
 }

+ 177 - 0
app/Models/Pages/Admin/Users/Action.php

@@ -0,0 +1,177 @@
+<?php
+
+namespace ForkBB\Models\Pages\Admin\Users;
+
+use ForkBB\Core\Validator;
+use ForkBB\Models\Pages\Admin\Users;
+use RuntimeException;
+
+class Action extends Users
+{
+    /**
+     * Подготавливает данные для шаблона(ов) действия
+     *
+     * @param array $args
+     * @param string $method
+     *
+     * @throws RuntimeException
+     *
+     * @return Page
+     */
+    public function view(array $args, $method)
+    {
+        $this->rules = $this->c->UsersRules->init();
+
+        $error = false;
+        switch ($args['action']) {
+            case self::ACTION_BAN:
+                if (! $this->rules->banUsers) {
+                    $error = true;
+                }
+                break;
+            case self::ACTION_DEL:
+                if (! $this->rules->deleteUsers) {
+                    $error = true;
+                }
+                break;
+            case self::ACTION_CHG:
+                if (! $this->rules->changeGroup) {
+                    $error = true;
+                }
+                break;
+            default:
+                $error = true;
+        }
+
+        if ($error) {
+            return $this->c->Message->message('Bad request');
+        }
+
+        $ids = $this->checkSelected(\explode('-', $args['ids']), $args['action']);
+        if (false === $ids) {
+            $message = $this->c->Message->message('Action not available');
+            $message->fIswev = $this->fIswev; //????
+            return $message;
+        }
+
+        $this->userList = $this->c->users->load($ids);
+        switch ($args['action']) {
+            case self::ACTION_BAN:
+                return $this->ban($args, $method);
+            case self::ACTION_DEL:
+                return $this->delete($args, $method);
+            case self::ACTION_CHG:
+                return $this->change($args, $method);
+            default:
+                throw new RuntimeException("The action {$args['action']} is unavailable");
+        }
+    }
+
+    /**
+     * Удаляет пользователей
+     *
+     * @param array $args
+     * @param string $method
+     *
+     * @return Page
+     */
+    protected function delete(array $args, $method)
+    {
+
+
+        $this->nameTpl    = 'admin/form';
+        $this->classForm  = 'delete-users';
+        $this->titleForm  = \ForkBB\__('Deleting users');
+        $this->aCrumbs[]  = [$this->c->Router->link('AdminUsersAction', $args), \ForkBB\__('Deleting users')];
+        $this->form       = $this->formDelete($args);
+
+        return $this;
+
+    }
+
+    /**
+     * Возвращает список имен пользователей
+     *
+     * @param array $users
+     *
+     * @return array
+     */
+    protected function nameList(array $users)
+    {
+        $result = [];
+        foreach ($users as $user) {
+            $result[] = $user->username;
+        }
+        \sort($result, \SORT_STRING | \SORT_FLAG_CASE);
+        return $result;
+    }
+
+    /**
+     * Создает массив данных для формы статистики пользователя по ip
+     *
+     * @param array $stat
+     * @param int $number
+     *
+     * @return array
+     */
+    protected function formDelete(array $args)
+    {
+        $yn    = [1 => \ForkBB\__('Yes'), 0 => \ForkBB\__('No')];
+        $names = \implode(', ', $this->nameList($this->userList));
+        $form  = [
+            'action' => $this->c->Router->link('AdminUsersAction', $args),
+            'hidden' => [
+                'token' => $this->c->Csrf->create('AdminUsersAction', $args),
+            ],
+            'sets'   => [
+                'info' => [
+                    'info' => [
+                        'info1' => [
+                            'type'    => '', //????
+                            'value'   => \ForkBB\__('Confirm delete info', $names),
+                        ],
+                    ],
+                ],
+                'options' => [
+                    'fields' => [
+                        'confirm' => [
+                            'type'    => 'radio',
+                            'value'   => 0,
+                            'values'  => $yn,
+                            'caption' => \ForkBB\__('Delete users'),
+                        ],
+                        'delete_posts' => [
+                            'type'    => 'radio',
+                            'value'   => 0,
+                            'values'  => $yn,
+                            'caption' => \ForkBB\__('Delete posts'),
+                        ],
+                    ],
+                ],
+                'info2' => [
+                    'info' => [
+                        'info2' => [
+                            'type'    => '', //????
+                            'value'   => \ForkBB\__('Delete warning'),
+                            'html'    => true,
+                        ],
+                    ],
+                ],
+            ],
+            'btns'   => [
+                'delete'  => [
+                    'type'      => 'submit',
+                    'value'     => \ForkBB\__('Delete users'),
+                    'accesskey' => 'd',
+                ],
+                'cancel'  => [
+                    'type'      => 'btn',
+                    'value'     => \ForkBB\__('Cancel'),
+                    'link'      => $this->c->Router->link('AdminUsers'),
+                ],
+            ],
+        ];
+
+        return $form;
+    }
+}

+ 1 - 0
app/config/main.dist.php

@@ -169,6 +169,7 @@ return [
         'AdminUsers'      => \ForkBB\Models\Pages\Admin\Users\View::class,
         'AdminUsersResult' => \ForkBB\Models\Pages\Admin\Users\Result::class,
         'AdminUsersStat'  => \ForkBB\Models\Pages\Admin\Users\Stat::class,
+        'AdminUsersAction'  => \ForkBB\Models\Pages\Admin\Users\Action::class,
         'AdminHost'       => \ForkBB\Models\Pages\Admin\Host::class,
 
         'ConfigModel'     => \ForkBB\Models\Config\Model::class,

+ 6 - 3
app/lang/en/admin_users.po

@@ -66,6 +66,9 @@ msgstr "Invalid group ID."
 msgid "Users move redirect"
 msgstr "User group changed. Redirecting …"
 
+msgid "Deleting users"
+msgstr "Delete users"
+
 msgid "Delete users"
 msgstr "Delete users"
 
@@ -73,13 +76,13 @@ msgid "Confirm delete legend"
 msgstr "Important: read before deleting users"
 
 msgid "Confirm delete info"
-msgstr "Please confirm that you want to delete these users."
+msgstr "Please confirm that you want to delete these users: %s."
 
 msgid "Delete posts"
-msgstr "Delete any posts and topics these users have made."
+msgstr "Delete any posts and topics"
 
 msgid "Delete warning"
-msgstr "Warning! Deleted users and/or posts cannot be restored. If you choose not to delete the posts made by these users, the posts can only be deleted manually at a later time."
+msgstr "<b>Warning!</b> Deleted users and/or posts cannot be restored. If you choose not to delete the posts made by these users, the posts can only be deleted manually at a later time."
 
 msgid "Users delete redirect"
 msgstr "Users deleted. Redirecting …"

+ 7 - 4
app/lang/ru/admin_users.po

@@ -66,20 +66,23 @@ msgstr "Неверная группа."
 msgid "Users move redirect"
 msgstr "Пользователям изменена группа. Переадресация..."
 
-msgid "Delete users"
+msgid "Deleting users"
 msgstr "Удаление пользователей"
 
+msgid "Delete users"
+msgstr "Удалить пользователей"
+
 msgid "Confirm delete legend"
 msgstr "ВАЖНО: прочтите перед удалением"
 
 msgid "Confirm delete info"
-msgstr "Пожалуйста, подтвердите удаление пользователя."
+msgstr "Пожалуйста, подтвердите удаление этих пользователей: %s."
 
 msgid "Delete posts"
-msgstr "Удалить все темы и сообщения пользователей."
+msgstr "Удалить все темы и сообщения"
 
 msgid "Delete warning"
-msgstr "Предупреждаем! Удалённых пользователей и/или сообщения невозможно восстановить. Если вы выберете "не удалять сообщения", их можно будет удалить вручную в любое время."
+msgstr "<b>Предупреждение!</b> Удалённых пользователей (и сообщения) невозможно восстановить. Если вы выберете "не удалять сообщения", их можно будет удалить вручную в любое время."
 
 msgid "Users delete redirect"
 msgstr "Пользователи удалены. Переадресация..."

+ 11 - 5
public/style/ForkBB/style.css

@@ -41,7 +41,10 @@ img,
 abbr,
 cite,
 address,
-article {
+article,
+input,
+textarea,
+a {
   border: 0;
   font-style: normal;
   font-weight: normal;
@@ -49,11 +52,13 @@ article {
   padding: 0;
   box-sizing: border-box;
   word-wrap: break-word;
+  font-family: Arial, Helvetica, sans-serif;
 }
 
 ul,
 ol {
   list-style: none;
+  font-family: Arial, Helvetica, sans-serif;
 }
 
 /*******************/
@@ -90,7 +95,6 @@ ol {
 }
 
 html {
-  font-family: Arial, Helvetica, sans-serif;
   font-size: 16px;
   line-height: 1.5;
 }
@@ -175,6 +179,7 @@ body,
       -ms-user-select: none;
           user-select: none;
   white-space: nowrap;
+  text-align: center;
 }
 
 .f-btn.f-minor {
@@ -1647,7 +1652,7 @@ select {
 
 .f-btnsrow-form .f-btns .f-btn {
   width: auto;
-  display: inline;
+  display: inline-block;
 }
 
 #id-message {
@@ -2294,8 +2299,9 @@ select {
   text-align: right;
 }
 
-.f-search-result-form .f-btns .f-btn {
-  display: inline;
+.f-search-result-form .f-btns .f-btn,
+.f-delete-users-form .f-btns .f-btn{
+  display: inline-block;
   width: auto;
 }