OSDN Git Service

サイト運用モードで管理画面のメニュー項目を一部非表示にする機能を追加。
authornaoki hirata <naoki@magic3.org>
Tue, 6 Feb 2018 04:40:20 +0000 (13:40 +0900)
committernaoki hirata <naoki@magic3.org>
Tue, 6 Feb 2018 04:40:20 +0000 (13:40 +0900)
include/sql/update/2018010701_to_2018012901.sql
widgets/admin_main/include/container/admin_mainConfigsysWidgetContainer.php
widgets/admin_main/include/template/configsystem.tmpl.html
widgets/admin_menu4/include/container/admin_menu4WidgetContainer.php

index 3a4951b..ede40cc 100644 (file)
@@ -7,7 +7,7 @@
 -- *
 -- * @package    Magic3 Framework
 -- * @author     平田直毅(Naoki Hirata) <naoki@aplo.co.jp>
--- * @copyright  Copyright 2006-2017 Magic3 Project.
+-- * @copyright  Copyright 2006-2018 Magic3 Project.
 -- * @license    http://www.gnu.org/copyleft/gpl.html  GPL License
 -- * @version    SVN: $Id$
 -- * @link       http://www.magic3.org
 
 -- *** システムベーステーブル ***
 -- システム設定マスター
-DELETE FROM _system_config WHERE sc_id = 'operation_mode';
+DELETE FROM _system_config WHERE sc_id = 'site_operation_mode';
 INSERT INTO _system_config 
 (sc_id,                      sc_value,            sc_name) VALUES
-('operation_mode',          '0',                 'システム運用モード');
+('site_operation_mode',          '0',                 'サイト運用モード');
 
 -- テンプレート情報
 DELETE FROM _templates WHERE tm_id = 'art41_sample1';
@@ -37,4 +37,46 @@ INSERT INTO _templates
 (tm_id,                           tm_name,                         tm_type, tm_device_type, tm_mobile, tm_use_bootstrap, tm_available, tm_generator, tm_version, tm_info_url) VALUES
 ('_layout',                       '_layout',                       99,       0,              false,     false,            false,        '',           '',         '');
 
+-- 管理画面メニューデータ
+ALTER TABLE _nav_item ADD ni_hide_option     TEXT                                         NOT NULL;      -- 非表示制御オプション(「,」区切りで指定。値=site_operation(サイト運用モード時))
+
+DELETE FROM _nav_item WHERE ni_nav_id = 'admin_menu';
+DELETE FROM _nav_item WHERE ni_nav_id = 'admin_menu.en';
+INSERT INTO _nav_item
+(ni_id, ni_parent_id, ni_index, ni_nav_id,       ni_task_id,           ni_view_control, ni_visible, ni_param, ni_hide_option,   ni_name,                ni_help_title,          ni_help_body) VALUES
+(100,   0,            0,        'admin_menu',    '_page',              0,               true,       '',       'site_operation', '画面管理',             '画面管理',             'Webサイトのデザインや機能を管理します。'),
+(101,   100,          0,        'admin_menu',    'pagedef',            0,               true,       '',       '',               'PC画面',         'PC画面編集',         'PC用Webサイトの画面を作成します。'),
+(102,   100,          1,        'admin_menu',    'pagedef_smartphone', 0,               false,      '',       '',               'スマートフォン画面', 'スマートフォン画面編集',       'スマートフォン用Webサイトの画面を作成します。'),
+(103,   100,          2,        'admin_menu',    'pagedef_mobile',     0,               false,      '',       '',               '携帯画面',       '携帯画面編集',       '携帯用Webサイトの画面を作成します。'),
+(104,   100,          3,        'admin_menu',    '_104',               3,               true,       '',       '',               'セパレータ',                 '',                     ''),
+(105,   100,          4,        'admin_menu',    'widgetlist',         0,               true,       '',       '',               'ウィジェット管理',     'ウィジェット管理',     'ウィジェットの管理を行います。'),
+(106,   100,          5,        'admin_menu',    'templist',           0,               true,       '',       '',               'テンプレート管理',     'テンプレート管理',     'テンプレートの管理を行います。'),
+(107,   100,          6,        'admin_menu',    'smenudef',           0,               true,       '',       '',               'メニュー管理', 'メニュー管理', 'メニュー定義を管理します。'),
+(199,   0,            1,        'admin_menu',    '_199',               1,               true,       '',       '',               '改行',                 '',                     ''),
+(200,   0,            2,        'admin_menu',    '_login',             0,               true,       '',       '',               'システム運用',         '',                     ''),
+(201,   200,          0,        'admin_menu',    'userlist',           0,               true,       '',       '',               'ユーザ管理',           'ユーザ管理',           'ログイン可能なユーザを管理します。'),
+(202,   200,          1,        'admin_menu',    'opelog',             0,               true,       '',       '',               '運用状況', '運用状況', 'サイトの運用状況を表示します。'),
+(299,   0,            3,        'admin_menu',    '_299',               1,               true,       '',       '',               '改行',                 '',                     ''),
+(300,   0,            4,        'admin_menu',    '_config',            0,               true,       '',       '',               'システム管理',         '',                     ''),
+(301,   300,          0,        'admin_menu',    'configsite',         0,               true,       '',       '',               '基本情報',             '基本情報',             'サイト運営に必要な情報を設定します。'),
+(302,   300,          1,        'admin_menu',    'configsys',          0,               true,       '',       '',               'システム情報',         'システム情報',         'システム全体の設定、運用状況を管理します。'),
+(303,   300,          2,        'admin_menu',    'mainte',             0,               true,       '',       '',               'メンテナンス', 'メンテナンス', 'ファイルやDBなどのメンテナンスを行います。'),
+(10100, 0,            0,        'admin_menu.en', '_page',              0,               true,       '',       'site_operation', 'Edit Page',             'Edit Page',             'Edit page for design and function.'),
+(10101, 10100,        0,        'admin_menu.en', 'pagedef',            0,               true,       '',       '',               'PC Page',         'PC Page',         'Edit page for PC.'),
+(10102, 10100,        1,        'admin_menu.en', 'pagedef_smartphone', 0,               false,      '',       '',               'Smartphone Page', 'Smartphone Page',       'Edit page for Smartphone.'),
+(10103, 10100,        2,        'admin_menu.en', 'pagedef_mobile',     0,               false,      '',       '',               'Mobile Page',       'Mobile Page',       'Edit page for Mobile.'),
+(10104, 10100,        3,        'admin_menu.en', '_10104',             3,               true,       '',       '',               'Separator',                 '',                     ''),
+(10105, 10100,        4,        'admin_menu.en', 'widgetlist',         0,               true,       '',       '',               'Widget Administration',     'Widget Administration',     'Administrate widgets with widget config window.'),
+(10106, 10100,        5,        'admin_menu.en', 'templist',           0,               true,       '',       '',               'Template Administration',     'Template Administration',     'Administrate templates.'),
+(10107, 10100,        6,        'admin_menu.en', 'smenudef',           0,               true,       '',       '',               'Menu Administration', 'Menu Administration', 'Administrate menu definition.'),
+(10199, 0,            1,        'admin_menu.en', '_10199',             1,               true,       '',       '',               'Return',                 '',                     ''),
+(10200, 0,            2,        'admin_menu.en', '_login',             0,               true,       '',       '',               'System Operation',         '',                     ''),
+(10201, 10200,        0,        'admin_menu.en', 'userlist',           0,               true,       '',       '',               'User List',           'User List',           'Administrate user to login.'),
+(10202, 10200,        1,        'admin_menu.en', 'opelog',             0,               true,       '',       '',               'Site Conditions', 'Site Conditions', 'Operation log and access analytics on site.'),
+(10299, 0,            3,        'admin_menu.en', '_10299',             1,               true,       '',       '',               'Return',                 '',                     ''),
+(10300, 0,            4,        'admin_menu.en', '_config',            0,               true,       '',       '',               'System Administration',         '',                     ''),
+(10301, 10300,        0,        'admin_menu.en', 'configsite',         0,               true,       '',       '',               'Site Information',             'Site Information',             'Configure site information.'),
+(10302, 10300,        1,        'admin_menu.en', 'configsys',          0,               true,       '',       '',               'System Information',         'System Information',         'Configure sytem information.'),
+(10303, 10300,        2,        'admin_menu.en', 'mainte',             0,               true,       '',       '',               'System Maintenance', 'System Maintenance', 'Maintenance about file system and database.');
+
 -- *** システム標準テーブル ***
index a367247..2772e32 100644 (file)
@@ -41,7 +41,7 @@ class admin_mainConfigsysWidgetContainer extends admin_mainConfigsystemBaseWidge
        const CF_SMARTPHONE_AUTO_REDIRECT = 'smartphone_auto_redirect';                 // スマートフォンの自動遷移
        const CF_SITE_SMARTPHONE_URL = 'site_smartphone_url';           // スマートフォン用サイトURL
        const CF_SITE_MOBILE_URL = 'site_mobile_url';           // 携帯用サイトURL
-       const CF_OPERATION_MODE = 'operation_mode';                     // システム運用モード
+       const CF_SITE_OPERATION_MODE = 'site_operation_mode';                   // サイト運用モード
        const CF_ACCESS_IN_INTRANET = 'access_in_intranet';             // イントラネット運用
        const CF_MULTI_DOMAIN = 'multi_domain';         // マルチドメイン運用
        const CF_SITE_ACCESS_EXCEPTION_IP = 'site_access_exception_ip';         // アクセス制御、例外とするIP
@@ -348,10 +348,10 @@ class admin_mainConfigsysWidgetContainer extends admin_mainConfigsystemBaseWidge
                        $this->db->updateSystemConfig(self::CF_SITE_IN_PUBLIC, 1);
                } else if ($act == 'siteclose'){                // サイト運用停止のとき
                        $this->db->updateSystemConfig(self::CF_SITE_IN_PUBLIC, 0);
-               } else if ($act == 'operation_mode_on'){                        // システム運用モード変更
-                       $this->db->updateSystemConfig(self::CF_OPERATION_MODE, 1);
-               } else if ($act == 'operation_mode_off'){                       // システム運用モード変更
-                       $this->db->updateSystemConfig(self::CF_OPERATION_MODE, 0);
+               } else if ($act == 'site_operation_mode_on'){                   // サイト運用モード変更
+                       $this->db->updateSystemConfig(self::CF_SITE_OPERATION_MODE, 1);
+               } else if ($act == 'site_operation_mode_off'){                  // サイト運用モード変更
+                       $this->db->updateSystemConfig(self::CF_SITE_OPERATION_MODE, 0);
                } else if ($act == 'clearcache'){               // キャッシュクリアのとき
                        $ret = $this->gCache->clearAllCache();
                        if ($ret){
@@ -430,8 +430,8 @@ class admin_mainConfigsysWidgetContainer extends admin_mainConfigsystemBaseWidge
                $this->tmpl->addVar("_widget", "site_status_checked", $checked);
                $this->tmpl->addVar("_widget", "except_ip", $this->db->getSystemConfig(self::CF_SITE_ACCESS_EXCEPTION_IP));
                $checked = '';
-               if ($this->db->getSystemConfig(self::CF_OPERATION_MODE) == '1') $checked = 'checked';           // システム運用モードのとき
-               $this->tmpl->addVar("_widget", "operation_mode_checked", $checked);
+               if ($this->db->getSystemConfig(self::CF_SITE_OPERATION_MODE) == '1') $checked = 'checked';              // サイト運用モードのとき
+               $this->tmpl->addVar("_widget", "site_operation_mode_checked", $checked);
                
                // 項目の表示制御
                $isActiveSite = $this->gSystem->getSiteActiveStatus(0);         // PC用サイト
index c56c9c2..5f8d673 100644 (file)
@@ -63,15 +63,15 @@ $(function(){
                        $(this).removeClass('fired');\r
                }\r
        });\r
-       $('#operation_mode_status').on('change', function(){\r
+       $('#site_operation_mode_status').on('change', function(){\r
                if ($(this).hasClass('fired') == false){\r
                        $(this).addClass('fired');\r
                        \r
                        var act;\r
                        if ($(this).prop('checked')){\r
-                               act = 'operation_mode_on';\r
+                               act = 'site_operation_mode_on';\r
                        } else {\r
-                               act = 'operation_mode_off';\r
+                               act = 'site_operation_mode_off';\r
                        }\r
                        document.main.act.value = act;\r
                        document.main.submit();\r
@@ -119,7 +119,7 @@ $(function(){
        </tr>\r
     <tr>\r
            <th><span {_HELP_CONFIGSYS_ADMIM_MODE}>管理画面モード</span></th>\r
-           <td colspan="2"><input type="checkbox" id="operation_mode_status" data-toggle="toggle" data-onstyle="success" data-offstyle="primary" data-on="サイト運用モード" data-off="サイト構築モード" data-width="160" {OPERATION_MODE_CHECKED} />\r
+           <td colspan="2"><input type="checkbox" id="site_operation_mode_status" data-toggle="toggle" data-onstyle="success" data-offstyle="primary" data-on="サイト運用モード" data-off="サイト構築モード" data-width="160" {SITE_OPERATION_MODE_CHECKED} />\r
                </td>\r
        </tr>\r
     </tbody>\r
index c1031b9..c8ea27b 100644 (file)
@@ -74,6 +74,7 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer
        const CF_SITE_PC_IN_PUBLIC              = 'site_pc_in_public';                          // PC用サイトの公開状況
        const CF_SITE_MOBILE_IN_PUBLIC  = 'site_mobile_in_public';              // 携帯用サイトの公開状況
        const CF_SITE_SMARTPHONE_IN_PUBLIC = 'site_smartphone_in_public';               // スマートフォン用サイトの公開状況
+       const CF_SITE_OPERATION_MODE = 'site_operation_mode';                   // サイト運用モード
        const CF_PERMIT_DETAIL_CONFIG   = 'permit_detail_config';                               // 詳細設定が可能かどうか
        const CF_SYSTEM_TYPE                    = 'system_type';                // システム運用タイプ
        const SYSTEM_TYPE_SERVER_ADMIN  = 'serveradmin';                // システム運用タイプ(サーバ管理)
@@ -234,6 +235,9 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer
                        $this->tmpl->setAttribute('menu', 'visibility', 'visible');
                        
                        // ##### メニューを作成 #####
+                       // システムの表示モードを取得
+                       $isSiteOperationModeOn = $this->gSystem->getSystemConfig(self::CF_SITE_OPERATION_MODE);         // サイト運用モード
+
                        // トップレベル項目を取得
                        $navId = self::DEFAULT_NAV_ID . '.' . $this->gEnv->getCurrentLanguage();
                        if (!$this->db->getNavItems($navId, 0, $rows)){                 // 現在の言語で取得できないときはデフォルト言語で取得
@@ -253,11 +257,26 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer
                        if ($topMenuCount > 0 && $rows[$topMenuCount -1]['ni_view_control'] == 0) $columnCount++;
                        $columnWidth = 12 / $columnCount;               // Bootstrapでの幅
                        $menuInner = str_repeat(M3_INDENT_SPACE, self::MAINMENU_INDENT_LEBEL) . '<li class="' . self::MAINMENU_COL_STYLE . $columnWidth . '"><ul>' . M3_NL;
-                                               
+                       
+                       $escapeColumnEnd = false;               // 改行読み飛ばしをリセット
                        for ($i = 0; $i < $topMenuCount; $i++){
+                               // 非表示オプション取得
+                               $hideOptions = array();
+                               if (!empty($rows[$i]['ni_hide_option'])) $hideOptions = explode(',', $rows[$i]['ni_hide_option']);
+                               
+                               // サイト運用モードがオンの場合は非表示項目を非表示にする
+                               if ($isSiteOperationModeOn && in_array('site_operation', $hideOptions)){
+                                       $escapeColumnEnd = true;                // 改行を読み飛ばす
+                                       continue;
+                               }
+                               
                                if ($rows[$i]['ni_view_control'] == 1){         // 改行のとき
+                                       // 改行読み飛ばしのときは終了
+                                       if ($escapeColumnEnd) continue;
+                                       
                                        $menuInner .= str_repeat(M3_INDENT_SPACE, self::MAINMENU_INDENT_LEBEL) . '</ul></li><li class="' . self::MAINMENU_COL_STYLE . $columnWidth . '"><ul>' . M3_NL;
                                } else {                // 改行以外のとき
+                                       $escapeColumnEnd = false;               // 改行読み飛ばしをリセット
                                        $topId = $rows[$i]['ni_id'];
                        
                                        // サブレベル取得