• R/O
  • HTTP
  • SSH
  • HTTPS

magic3: 提交

Cloud computing platform


Commit MetaInfo

修訂7cfe55480911def2ebb7836e373bc7fe318f7065 (tree)
時間2018-01-15 22:35:26
作者naoki hirata <naoki@magi...>
Commiternaoki hirata

Log Message

アクセスポイントメニューにメニュー定義へのリンクを付加。

Change Summary

差異

Binary files /dev/null and b/images/system/menu24.png differ
Binary files /dev/null and b/images/system/menu32.png differ
--- a/widgets/admin_menu4/include/container/admin_menu4WidgetContainer.php
+++ b/widgets/admin_menu4/include/container/admin_menu4WidgetContainer.php
@@ -8,7 +8,7 @@
88 *
99 * @package Magic3 Framework
1010 * @author 平田直毅(Naoki Hirata) <naoki@aplo.co.jp>
11- * @copyright Copyright 2006-2017 Magic3 Project.
11+ * @copyright Copyright 2006-2018 Magic3 Project.
1212 * @license http://www.gnu.org/copyleft/gpl.html GPL License
1313 * @version SVN: $Id$
1414 * @link http://www.magic3.org
@@ -25,6 +25,7 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer
2525 protected $useMenu; // メニューを使用するかどうか
2626 protected $useCloseButton; // 「閉じる」を使用するかどうか
2727 protected $systemType; // システム運用タイプ
28+ protected $isHierMenu; // メニュー定義編集画面が多階層タイプであるかどうか
2829 const DEFAULT_CSS_FILE = '/default.css'; // CSSファイル
2930 const WIDGET_CSS_FILE = '/widget.css'; // ウィジェット単体表示用CSS
3031 const DEFAULT_NAV_ID = 'admin_menu'; // ナビゲーションメニューID
@@ -49,6 +50,7 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer
4950 const SITE_CLOSE_ICON_FILE = '/images/system/site_close24.png'; // アクセスポイント非公開
5051 const LOGOUT_ICON_FILE = '/images/system/logout24.png'; // ログアウトアイコン
5152 const CONFIG_ICON_FILE = '/images/system/config24.png'; // ウィジェット設定画面アイコン
53+ const MENU_ICON_FILE = '/images/system/menu24.png'; // メニュー定義画面アイコン
5254 const MAX_SITENAME_LENGTH = 20; // サイト名の最大文字数
5355 const MAX_SITENAME_LENGTH_S = 9; // サイト名の最大文字数
5456 const ICON_SIZE = 24; // アイコンサイズ
@@ -58,13 +60,16 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer
5860 const MENU_TITLE_PREVIEW = 'プレビュー';
5961 const MENU_TITLE_CONTENT = 'コンテンツ管理'; // コンテンツ編集メニューのタイトル
6062 const MENU_TITLE_SUB_CONTENT = 'サブコンテンツ管理'; // サブコンテンツ編集メニューのタイトル
63+ const MENU_TITLE_MENUDEF = 'メニュー定義'; // メニュー定義編集メニューのタイトル
6164 const UNTITLED_USER_NAME = '名称なしユーザ'; // ユーザ名が設定されていなかった場合の表示名
6265 const MAINMENU_INDENT_LEBEL = 4; // メインメニューのインデントレベル
6366 const SITEMENU_INDENT_LEBEL = 2; // サイトメニューのインデントレベル
6467 const MAINMENU_COL_STYLE = 'col-md-'; // Bootstrapのカラムクラス
6568 const MENUBAR_HEIGHT = 60; // メインメニューバーの高さ
6669 const SUB_MENUBAR_HEIGHT = 50; // サブメニューバーの高さ
67-
70+ const SEL_MENU_ID = 'admin_menu'; // メニュー変換対象メニューバーID
71+ const TREE_MENU_TASK = 'menudef'; // メニュー管理画面(多階層)
72+
6873 // DB定義値
6974 const CF_SITE_IN_PUBLIC = 'site_in_public'; // サイト公開状況
7075 const CF_SITE_PC_IN_PUBLIC = 'site_pc_in_public'; // PC用サイトの公開状況
@@ -475,6 +480,9 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer
475480 $menuTag = '';
476481 $isOpen = $this->gSystem->siteInPublic();
477482
483+ // メニュー定義の編集画面のタイプを取得
484+ $this->isHierMenu = $this->getMenuIsHider(); // メニュー定義編集画面が多階層タイプであるかどうか
485+
478486 // アクセスポイントごとの公開状況
479487 $sitePcInPublic = $this->gSystem->sitePcInPublic(); // PC用サイトの公開状況
480488 $siteSmartphoneInPublic = $this->gSystem->siteSmartphoneInPublic(); // スマートフォン用サイトの公開状況
@@ -497,6 +505,8 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer
497505 $iconTag .= '<img src="' . $this->getUrl($iconUrl) . '" width="' . self::SITE_ICON_SIZE . '" height="' . self::SITE_ICON_SIZE . '" border="0" alt="' . $iconTitle . '" /><b class="caret"></b></a>' . M3_NL;
498506 $iconTag .= str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL + 1) . '<ul class="dropdown-menu">' . M3_NL;
499507 $iconTag .= $this->createContentMenu(0, $isVisibleSite); // コンテンツ編集メニュー付加
508+ $iconTag .= $this->createMenuDefMenu(0, $isVisibleSite); // メニュー定義編集メニュー付加
509+ $iconTag .= $this->createAccessPointControlMenu(0, $isVisibleSite); // アクセスポイント公開制御メニュー付加
500510 $iconTag .= str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL + 1) . '</ul>'. M3_NL;
501511 $iconTag .= str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL) . '</li>' . M3_NL;
502512 $menuTag .= $iconTag;
@@ -519,6 +529,8 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer
519529 $iconTag .= '<img src="' . $this->getUrl($iconUrl) . '" width="' . self::SITE_ICON_SIZE . '" height="' . self::SITE_ICON_SIZE . '" border="0" alt="' . $iconTitle . '" /><b class="caret"></b></a>' . M3_NL;
520530 $iconTag .= str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL + 1) . '<ul class="dropdown-menu">' . M3_NL;
521531 $iconTag .= $this->createContentMenu(2, $isVisibleSite);// コンテンツ編集メニュー付加
532+ $iconTag .= $this->createMenuDefMenu(2, $isVisibleSite); // メニュー定義編集メニュー付加
533+ $iconTag .= $this->createAccessPointControlMenu(2, $isVisibleSite); // アクセスポイント公開制御メニュー付加
522534 $iconTag .= str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL + 1) . '</ul>'. M3_NL;
523535 $iconTag .= str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL) . '</li>' . M3_NL;
524536 $menuTag .= $iconTag;
@@ -541,6 +553,8 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer
541553 $iconTag .= '<img src="' . $this->getUrl($iconUrl) . '" width="' . self::SITE_ICON_SIZE . '" height="' . self::SITE_ICON_SIZE . '" border="0" alt="' . $iconTitle . '" /><b class="caret"></b></a>' . M3_NL;
542554 $iconTag .= str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL + 1) . '<ul class="dropdown-menu">' . M3_NL;
543555 $iconTag .= $this->createContentMenu(1, $isVisibleSite); // コンテンツ編集メニュー付加
556+ $iconTag .= $this->createMenuDefMenu(1, $isVisibleSite); // メニュー定義編集メニュー付加
557+ $iconTag .= $this->createAccessPointControlMenu(1, $isVisibleSite); // アクセスポイント公開制御メニュー付加
544558 $iconTag .= str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL + 1) . '</ul>'. M3_NL;
545559 $iconTag .= str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL) . '</li>' . M3_NL;
546560 $menuTag .= $iconTag;
@@ -757,6 +771,18 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer
757771 $menuTag .= '<li ><a href="#" onclick="m3ShowConfigWindow(\'' . $widgetId . '\', 0, 0);return false;">' . $iconTag . $this->convertToDispString($title) . '</a></li>' . M3_NL;
758772 }
759773 }
774+ return $menuTag;
775+ }
776+ /**
777+ * アクセスポイント公開制御メニュー作成
778+ *
779+ * @param int $deviceType デバイスタイプ
780+ * @param bool $isVisibleSite アクセスポイント公開中かどうか
781+ * @return string メニュータグ
782+ */
783+ function createAccessPointControlMenu($deviceType, $isVisibleSite)
784+ {
785+ $menuTag = '';
760786
761787 // サーバ管理でのシステム運用の場合はアクセスポイントの制御項目を表示しない
762788 if ($this->systemType == self::SYSTEM_TYPE_SERVER_ADMIN) return $menuTag; // サーバ管理の場合
@@ -778,6 +804,63 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer
778804 $menuTag .= str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL + 2);
779805 $menuTag .= '<li><a href="#" onclick="siteOpen(' . $deviceType . ',' . intval(!$isVisibleSite) . ');return false;">';
780806 $menuTag .= '<img src="' . $this->getUrl($iconUrl) . '" width="' . self::ICON_SIZE . '" height="' . self::ICON_SIZE . '" border="0" alt="' . $iconTitle . '" />' . $openSiteMessage . '</a></li>' . M3_NL;
807+
808+ return $menuTag;
809+ }
810+
811+ /**
812+ * メニュー定義編集メニュー作成
813+ *
814+ * @param int $deviceType デバイスタイプ
815+ * @param bool $isVisibleSite アクセスポイント公開中かどうか
816+ * @return string メニュータグ
817+ */
818+ function createMenuDefMenu($deviceType, $isVisibleSite)
819+ {
820+ $menuTag = '';
821+
822+ // セパレータ
823+ $menuTag .= str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL + 2);
824+ $menuTag .= '<li class="divider hidden-xs"></li>' . M3_NL;
825+
826+ // タイトル
827+ $menuTag .= str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL + 2);
828+ $menuTag .= '<li class="dropdown-header">' . self::MENU_TITLE_MENUDEF . '</li>' . M3_NL;
829+
830+ // ページID取得
831+ $pageId = '';
832+ switch ($deviceType){
833+ case 0: // PC用画面のとき
834+ default:
835+ $pageId = $this->gEnv->getDefaultPageId();
836+ break;
837+ case 1: // 携帯用画面のとき
838+ $pageId = $this->gEnv->getDefaultMobilePageId();
839+ break;
840+ case 2: // スマートフォン用画面のとき
841+ $pageId = $this->gEnv->getDefaultSmartphonePageId();
842+ break;
843+ }
844+ $ret = $this->db->getMenuId($pageId, $rows);
845+ if ($ret){
846+ $iconTitle = 'メニュー定義';
847+ $iconUrl = $this->gEnv->getRootUrl() . self::MENU_ICON_FILE; // メニュー定義画面アイコン
848+
849+ for ($i = 0; $i < count($rows); $i++){
850+ $title = $rows[$i]['mn_name'];
851+ $menuTag .= str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL + 2);
852+ $menuTag .= '<li><a href="#" onclick="siteOpen(' . $deviceType . ',' . intval(!$isVisibleSite) . ');return false;">';
853+ $menuTag .= '<img src="' . $this->getUrl($iconUrl) . '" width="' . self::ICON_SIZE . '" height="' . self::ICON_SIZE . '" border="0" alt="' . $iconTitle . '" />' . $this->convertToDispString($title) . '</a></li>' . M3_NL;
854+ }
855+ }
856+
857+ // メニュー定義画面のURLを作成
858+ $taskValue = 'menudef';
859+ if (empty($isHierMenu)) $taskValue = 'smenudef';
860+ $menuDefUrl = $this->gEnv->getDefaultAdminUrl() . '?' . 'task=' . $taskValue . '&openby=tabs&menuid=' . $menuId;
861+ $this->tmpl->addVar("_widget", "url", $this->getUrl($menuDefUrl));
862+ $this->tmpl->addVar("_widget", "menu_id", $menuId);
863+
781864 return $menuTag;
782865 }
783866 /**
@@ -817,5 +900,18 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer
817900
818901 return array($titleTag, $menuTag);
819902 }
903+ /**
904+ * メニュー管理画面が多階層メニューかどうかを取得
905+ *
906+ * @return bool true=多階層、false=単階層
907+ */
908+ function getMenuIsHider()
909+ {
910+ $isHier = false; // 多階層メニューかどうか
911+ $ret = $this->db->getNavItemsByTask(self::SEL_MENU_ID, self::TREE_MENU_TASK, $row);
912+ if ($ret) $isHier = true;
913+
914+ return $isHier;
915+ }
820916 }
821917 ?>
--- a/widgets/admin_menu4/include/db/admin_menuDb.php
+++ b/widgets/admin_menu4/include/db/admin_menuDb.php
@@ -8,7 +8,7 @@
88 *
99 * @package Magic3 Framework
1010 * @author 平田直毅(Naoki Hirata) <naoki@aplo.co.jp>
11- * @copyright Copyright 2006-2014 Magic3 Project.
11+ * @copyright Copyright 2006-2018 Magic3 Project.
1212 * @license http://www.gnu.org/copyleft/gpl.html GPL License
1313 * @version SVN: $Id$
1414 * @link http://www.magic3.org
@@ -49,7 +49,7 @@ class admin_menuDb extends BaseDb
4949 $queryStr = 'SELECT * FROM _nav_item ';
5050 $queryStr .= 'WHERE ni_nav_id = ? ';
5151 $queryStr .= 'AND ni_task_id = ? ';
52- $queryStr .= 'AND ni_visible = true ';
52+// $queryStr .= 'AND ni_visible = true ';
5353 $retValue = $this->selectRecord($queryStr, array($navId, $taskId), $row);
5454 return $retValue;
5555 }
@@ -60,13 +60,13 @@ class admin_menuDb extends BaseDb
6060 * @param bool $taskId タスク
6161 * @return true = 正常、false=異常
6262 */
63- function updateNavItemMenuType($itemId, $taskId)
63+/* function updateNavItemMenuType($itemId, $taskId)
6464 {
6565 $sql = 'UPDATE _nav_item SET ni_task_id = ? WHERE ni_id = ?';
6666 $params = array($taskId, $itemId);
6767 $retValue =$this->execStatement($sql, $params);
6868 return $retValue;
69- }
69+ }*/
7070 /**
7171 * 画面配置している主要コンテンツ編集ウィジェットを取得
7272 *
@@ -165,5 +165,33 @@ class admin_menuDb extends BaseDb
165165 $retValue = $this->selectRecords($queryStr, array($setId), $rows);
166166 return $retValue;
167167 }
168+ /**
169+ * 画面に表示中のメニューのメニューIDを取得
170+ *
171+ * @param string $pageId ページID
172+ * @param array $rows レコード
173+ * @param int $setId 定義セットID
174+ * @return bool 1行以上取得 = true, 取得なし= false
175+ */
176+ function getMenuId($pageId, &$rows, $setId = 0)
177+ {
178+ $queryStr = 'SELECT DISTINCT pd_menu_id, mn_name, mn_sort_order, ';
179+ $queryStr .= 'CASE pd_sub_id ';
180+ $queryStr .= 'WHEN \'\' THEN -1 ';
181+ $queryStr .= 'ELSE pg_priority ';
182+ $queryStr .= 'END AS idx ';
183+ $queryStr .= 'FROM (_page_def LEFT JOIN _widgets ON pd_widget_id = wd_id AND wd_deleted = false) ';
184+ $queryStr .= 'LEFT JOIN _page_id ON pd_sub_id = pg_id AND pg_type = 1 ';// ページサブID
185+ $queryStr .= 'LEFT JOIN _menu_id ON pd_menu_id = mn_id ';// メニューID
186+ $queryStr .= 'WHERE pd_id = ? ';
187+// $queryStr .= 'AND (pd_sub_id = ? or pd_sub_id = \'\') '; // 空の場合は共通項目
188+ $queryStr .= 'AND pd_set_id = ? ';
189+ $queryStr .= 'AND pd_menu_id != \'\' '; // メニューIDが設定されている
190+ $queryStr .= 'AND pd_visible = true '; // ウィジェットは表示中
191+ $queryStr .= 'AND wd_deleted = false '; // ウィジェットは削除されていない
192+ $queryStr .= 'ORDER BY idx, mn_sort_order';
193+ $retValue = $this->selectRecords($queryStr, array($pageId, $setId), $rows);
194+ return $retValue;
195+ }
168196 }
169197 ?>
Show on old repository browser