From bec6e3d338398d8988e76948b8b8aa6653c9dac8 Mon Sep 17 00:00:00 2001 From: Alexander Smirnov Date: Mon, 16 Sep 2024 11:57:31 +0300 Subject: [PATCH] =?utf8?q?[ERP-51]=20=D0=9F=D0=BE=D0=BA=D0=B0=D0=B7=D1=8B?= =?utf8?q?=D0=B2=D0=B0=D0=B5=D1=82=20=D0=BF=D1=80=D0=B0=D0=B2=D0=B0=20?= =?utf8?q?=D0=B2=20=D0=BE=D0=B4=D0=BD=D0=BE=D0=B9=20=D1=82=D0=B0=D0=B1?= =?utf8?q?=D0=BB=D0=B8=D1=86=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- erp24/controllers/AuthController.php | 40 +++++++++++++++++ erp24/views/auth/menu-export.php | 64 ++++++++++++++++++++++++++++ erp24/web/js/auth/menu.js | 2 + 3 files changed, 106 insertions(+) create mode 100644 erp24/views/auth/menu-export.php diff --git a/erp24/controllers/AuthController.php b/erp24/controllers/AuthController.php index 3c5a673a..f4d06822 100644 --- a/erp24/controllers/AuthController.php +++ b/erp24/controllers/AuthController.php @@ -219,4 +219,44 @@ class AuthController extends BaseController CrmMenu::deleteAll(['parent_id' => $id]); return $this->redirect('menu'); } + + public function actionMenuExport() { + $adminGroupMap = ArrayHelper::map(AdminGroup::find()->all(), 'id', 'name'); + $cellMap = []; + $adminGroups = []; + foreach (AdminGroupRbacConfig::find()->all() as /** @var AdminGroupRbacConfig $agrc */ $agrc) { + $adminGroups[$agrc->admin_group_id] = true; + $groups = explode(',', $agrc->config); + foreach($groups as $group) { + if (!empty($group)) { + $cellMap[$group][] = $agrc->admin_group_id; + } + } + } + + $permissions = []; + foreach (CrmMenu::find()->all() as $menu) { + $permission = 'menu' . $menu->url; + $permissions[$permission] = $menu->name; + $crmMenuPermissions = CrmMenuPermission::find()->where(['menu_id' => $menu->id])->all(); + foreach ($crmMenuPermissions as $menuPermission) { + $permissions[$menuPermission->alias] = $menu->name . ': ' . $menuPermission->name; + } + if ($menu->dynamic_list) { + $list = UniversalCatalog::getDynamicList($menu->dynamic_list); + if (isset($list)) { + foreach ($list as $item => $name) { + $url = 'menu' . $menu->url . "_" . $item; + $permissions[$url] = $menu->name . ': ' . $name; + foreach ($crmMenuPermissions as $menuPermission) { + $permissions[$menuPermission->alias . $item] = $menu->name . ': ' . $name . ': ' . $menuPermission->name; + } + } + } + } + } + + return $this->render('menu-export', compact('cellMap', 'adminGroups', 'adminGroupMap', + 'permissions')); + } } \ No newline at end of file diff --git a/erp24/views/auth/menu-export.php b/erp24/views/auth/menu-export.php new file mode 100644 index 00000000..dcf9d696 --- /dev/null +++ b/erp24/views/auth/menu-export.php @@ -0,0 +1,64 @@ +registerJsFile('/js/xlsx.full.min.js', ['position' => \yii\web\View::POS_END]); +$this->registerCss(".hidden { display: none; }"); + +?> + +
+ + + + + +
+ + + + $adminGroup): ?> + + + + + + + + + $perm): ?> + + + $adminGroup): ?> + + + + + + + + + + + + + + + + +
+
+ +
\ No newline at end of file diff --git a/erp24/web/js/auth/menu.js b/erp24/web/js/auth/menu.js index 13ee2b9b..6d3eae80 100644 --- a/erp24/web/js/auth/menu.js +++ b/erp24/web/js/auth/menu.js @@ -1,3 +1,5 @@ +/* jshint esversion: 6 */ + const param = $('meta[name=csrf-param]').attr('content'); const token = $('meta[name=csrf-token]').attr('content'); -- 2.39.5