From 9d4f4aff4afcc3666d6095961b0a23cf72e11e7a Mon Sep 17 00:00:00 2001 From: marina Date: Thu, 7 Nov 2024 09:14:07 +0300 Subject: [PATCH] =?utf8?q?ERP-199=20=D0=94=D0=BE=D1=80=D0=B0=D0=B1=D0=BE?= =?utf8?q?=D1=82=D0=BA=D0=B0=20=D0=BC=D0=B5=D0=BD=D1=8E=20(=D0=B2=D1=91?= =?utf8?q?=D1=80=D1=81=D1=82=D0=BA=D0=B0+)?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- erp24/controllers/AuthController.php | 56 +++++++++++++++++++ erp24/records/AdminMenuPositions.php | 55 ++++++++++++++++++ erp24/templates/top.php | 22 +++++--- erp24/views/layouts/api2_menu.php | 3 + erp24/views/layouts/main.php | 46 +++++++++++++++ erp24/views/layouts/menu.php | 3 +- erp24/views/site/index.php | 1 + .../web/azea/assets/css-rtl/sidemenu-icon.css | 32 +++++++++++ erp24/web/azea/assets/css-rtl/sidemenu.scss | 3 +- erp24/web/min/css_1646055591.css | 45 +++++++++++++-- erp24/web/min/css_1646055591.nogz.css | 8 +-- 11 files changed, 254 insertions(+), 20 deletions(-) create mode 100644 erp24/records/AdminMenuPositions.php diff --git a/erp24/controllers/AuthController.php b/erp24/controllers/AuthController.php index bd5f70ca..279ec544 100644 --- a/erp24/controllers/AuthController.php +++ b/erp24/controllers/AuthController.php @@ -7,6 +7,7 @@ use yii\helpers\ArrayHelper; use yii_app\records\Admin; use yii_app\records\AdminGroup; use yii_app\records\AdminGroupRbacConfig; +use yii_app\records\AdminMenuPositions; use yii_app\records\CrmMenu; use yii_app\records\CrmMenuPermission; use yii_app\records\UniversalCatalog; @@ -252,4 +253,59 @@ class AuthController extends BaseController CrmMenu::deleteAll(['parent_id' => $id]); return $this->redirect('menu'); } + + public function actionMenuByRoles() + { + $roles = ArrayHelper::map(AdminGroup::find()->all(), 'id', 'name'); + $menuItems = []; + + if (Yii::$app->request->isPost) { + // Сохранение порядка + $data = Yii::$app->request->post('order'); + foreach ($data as $position => $id) { + AdminMenuPositions::updateAll(['position' => $position], ['id' => $id]); + } + Yii::$app->session->setFlash('success', 'Порядок сохранён'); + return $this->refresh(); + } + + $selectedRole = Yii::$app->request->get('role'); + if ($selectedRole) { + // Attempt to get menu items for the selected role + $menuItems = AdminMenuPositions::find()->where(['role' => $selectedRole])->orderBy('position')->all(); + + // If no items found, fetch from CrmMenu + if (empty($menuItems)) { + $crmMenuItems = CrmMenu::find()->all(); // Fetch all items from CrmMenu + foreach ($crmMenuItems as $crmItem) { + // Check if the item already exists in AdminMenuPositions + if (!AdminMenuPositions::find()->where(['id' => $crmItem->id, 'role' => $selectedRole])->exists()) { + // Create a new AdminMenuPosition record + $adminMenuPosition = new AdminMenuPositions(); + $adminMenuPosition->id = $crmItem->id; // Assuming 'id' is the same + $adminMenuPosition->title = $crmItem->title; // Assuming 'title' exists in CrmMenu + $adminMenuPosition->role = $selectedRole; // Assign the selected role + $adminMenuPosition->position = 0; // Set default position (you can modify this logic) + $adminMenuPosition->save(); + } + } + + // After saving, get the menu items again + $menuItems = AdminMenuPositions::find()->where(['role' => $selectedRole])->orderBy('position')->all(); + } + } + + if (Yii::$app->request->isAjax) { + if ($selectedRole) { + return $this->asJson($menuItems); + } + } + + return $this->render('menu-by-roles', [ + 'roles' => $roles, + 'menuItems' => $menuItems, + 'selectedRole' => $selectedRole, + ]); + } + } \ No newline at end of file diff --git a/erp24/records/AdminMenuPositions.php b/erp24/records/AdminMenuPositions.php new file mode 100644 index 00000000..8ca1a188 --- /dev/null +++ b/erp24/records/AdminMenuPositions.php @@ -0,0 +1,55 @@ + 'ID', + 'admin_group_id' => 'Admin Group ID', + 'crm_menu_id' => 'Crm Menu ID', + 'is_parent' => 'Is Parent', + 'position' => 'Position' + ]; + } +} \ No newline at end of file diff --git a/erp24/templates/top.php b/erp24/templates/top.php index 22dd4f1f..8361ea09 100644 --- a/erp24/templates/top.php +++ b/erp24/templates/top.php @@ -95,11 +95,14 @@ elseif(!is_mobile()) echo" [MENU_COLLAPSE]"; - - +