• R/O
  • HTTP
  • SSH
  • HTTPS

magic3: コミット

Cloud computing platform


コミットメタ情報

リビジョン3b50a358770c605cffc49d81bda7dccf514fbdaa (tree)
日時2014-01-09 21:33:12
作者naoki hirata <naoki@magi...>
コミッターnaoki hirata

ログメッセージ

「管理メニュー4」ウィジェットを作成。

変更サマリ

差分

--- a/include/sql/create_base.sql
+++ b/include/sql/create_base.sql
@@ -7,9 +7,9 @@
77 -- *
88 -- * @package Magic3 Framework
99 -- * @author 平田直毅(Naoki Hirata) <naoki@aplo.co.jp>
10--- * @copyright Copyright 2006-2011 Magic3 Project.
10+-- * @copyright Copyright 2006-2014 Magic3 Project.
1111 -- * @license http://www.gnu.org/copyleft/gpl.html GPL License
12--- * @version SVN: $Id: create_base.sql 6157 2013-07-02 00:04:47Z fishbone $
12+-- * @version SVN: $Id$
1313 -- * @link http://www.magic3.org
1414 -- *
1515 -- --------------------------------------------------------------------------------------------------
@@ -411,7 +411,7 @@ CREATE TABLE _nav_item (
411411 ni_task_id VARCHAR(70) DEFAULT '' NOT NULL, -- 起動タスクID、「_」で始まるときはリンクなし
412412 ni_param VARCHAR(20) DEFAULT '' NOT NULL, -- 追加パラメータ
413413 ni_group_id VARCHAR(20) DEFAULT '' NOT NULL, -- 項目グループ識別ID
414- ni_view_control INT DEFAULT 0 NOT NULL, -- 表示位置制御、1のとき表示位置変更
414+ ni_view_control INT DEFAULT 0 NOT NULL, -- 項目制御(0=リンク,1=改行,2=使用不可,3=セパレータ)
415415 ni_name VARCHAR(40) DEFAULT '' NOT NULL, -- 名前
416416 ni_help_title TEXT NOT NULL, -- ヘルプタイトル
417417 ni_help_body TEXT NOT NULL, -- ヘルプ本文
--- a/scripts/jquery/jquery.contextmenu.r2.js
+++ b/scripts/jquery/jquery.contextmenu.r2.js
@@ -52,7 +52,7 @@
5252 if (!menu) { // Create singleton menu
5353 menu = $('<div id="jqContextMenu"></div>')
5454 .hide()
55- .css({position:'absolute', zIndex:'500'})
55+ .css({position:'absolute', zIndex:'2000'})
5656 .appendTo('body')
5757 .bind('click', function(e) {
5858 e.stopPropagation();
@@ -60,7 +60,7 @@
6060 }
6161 if (!shadow) {
6262 shadow = $('<div></div>')
63- .css({backgroundColor:'#000',position:'absolute',opacity:0.2,zIndex:499})
63+ .css({backgroundColor:'#000',position:'absolute',opacity:0.2,zIndex:1999})
6464 .appendTo('body')
6565 .hide();
6666 }
--- a/widgets/admin_menu4/css/default.css
+++ b/widgets/admin_menu4/css/default.css
@@ -1,69 +1,38 @@
1-#m3menubar {
2- margin:0px;
3- padding:0;
4- display:block;
5- height:45px; /* menubar height */
6- list-style:none;
7- /*margin-right:4px;*/ /* Firefox only */
8- /*margin-bottom:5px;*/ /* menubar bottom margin */
9- /*border-top:1px solid #EF593B;
10- border-bottom:1px solid #EF593B;*/
11-/* border-left:10px solid #D04528;*/
12-/* border-left:0px solid #D04528;*/
13-/* -moz-box-shadow:0px 3px 4px #591E12;
14- -webkit-box-shadow:0px 3px 4px #591E12;
15- -box-shadow:0px 3px 4px #591E12;*/
16-}
17-#m3menubar a{
18- text-decoration:none;
19- font-weight: bold;
20-}
21-#m3menubar > li{
22- float:left;
23- position:relative;
24- z-index: 50000; /* IE only */
25-}
26-#m3menubar > li > span{
27- float:left;
28- height:45px; /* menubar height */
29- line-height:45px; /* menubar height */
30-/* cursor:default;*/
31- cursor:pointer;
32- padding:0px 20px;
33-}
34-#m3menubar .ldd_submenu{
35- position:absolute;
36- top:45px; /* menubar height */
37-/* width:725px;*/ /* submenu width */
38- display:none;
39-/* opacity:0.95;*/
40- left:0px;
41-/* font-size:110%;*/
42- z-index:50000; /* display top */
43- background-image: none;
44-/* border-top:1px solid #EF593B;
45- -moz-box-shadow:0px 3px 4px #591E12 inset;
46- -webkit-box-shadow:0px 3px 4px #591E12 inset;
47- -box-shadow:0px 3px 4px #591E12 inset;*/
48-}
49-#m3menubar .device img {
50- margin: 10px 7px;
51-}
52-#m3menubar .device .static {
53- display:inline-block;
54- height:45px;
55-}
56-#m3menubar .ldd_subfoot{
57- display:block;
58- clear:both;
59- padding:5px 10px;
60- white-space: nowrap;
61-/* font-size:12px;*/
62-/* -moz-box-shadow:0px 0px 2px #777 inset;
63- -webkit-box-shadow:0px 0px 2px #777 inset;
64- -box-shadow:0px 0px 2px #777 inset;*/
65-}
66-#m3menubar .ldd_submenu span {
67- cursor:pointer;
68- margin-right:50px;
1+
2+
3+/* BootstrapのMagic3用の修正 */
4+.navbar-brand {
5+ font-weight: bold; /* added by Magic3 */
6+}
7+.dropdown-menu-large .dropdown-header {
8+ font-weight: bold; /* added by Magic3 */
9+}
10+/* メニューバー固定用 */
11+body { padding-top: 70px; }
12+
13+/*img.brand {
14+ padding: 0;
15+}*/
16+.dropdown-menu img {
17+ margin-right:5px;
18+}
19+img.avatar {
20+ margin-right:5px;
21+}
22+.dropdown-menu-large > li > ul > li {
23+ width:180px;
24+}
25+ul.pos-right {
26+ float:right;
27+}
28+a.dropdown-toggle.device_icon, a.dropdown-toggle.avatar_icon {
29+ padding-top:16px;
30+ padding-bottom:15px;
31+ margin-top:0;
32+ margin-bottom:0;
33+}
34+
35+/* デバイスアイコンとユーザ項目間のスペーサー */
36+li.user_menu {
37+ margin-left:20px;
6938 }
--- a/widgets/admin_menu4/include/container/admin_menu4WidgetContainer.php
+++ b/widgets/admin_menu4/include/container/admin_menu4WidgetContainer.php
@@ -20,14 +20,13 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer
2020 {
2121 protected $db; // DB接続オブジェクト
2222 protected $cssFilePath; // CSSファイル
23- protected $themeFilePath; // テーマファイル
2423 protected $contentMenu; // コンテンツ編集メニュー
2524 protected $subContentMenu; // サブコンテンツ編集メニュー
2625 //const DEFAULT_SITE_NAME = 'サイト名未設定';
2726 const DEFAULT_CSS_FILE = '/default.css'; // CSSファイル
2827 const DEFAULT_NAV_ID = 'admin_menu'; // ナビゲーションメニューID
29- const DEFAULT_THEME_DIR = '/ui/themes/'; // jQueryUIテーマ格納ディレクトリ
30- const THEME_CSS_FILE = 'jquery-ui.custom.css'; // テーマファイル
28+// const DEFAULT_THEME_DIR = '/ui/themes/'; // jQueryUIテーマ格納ディレクトリ
29+// const THEME_CSS_FILE = 'jquery-ui.custom.css'; // テーマファイル
3130 // const CF_ADMIN_DEFAULT_THEME = 'admin_default_theme'; // 管理画面用jQueryUIテーマ
3231 const HELP_ICON_FILE = '/images/system/help24.gif'; // ヘルプアイコン
3332 const CLOSE_ICON_FILE = '/images/system/close32.png'; // ウィンドウ閉じるアイコン
@@ -41,12 +40,18 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer
4140 const MOBILE_CLOSED_ICON_FILE = '/images/system/device/mobile_closed.png'; // 携帯アイコン(非公開)
4241 const SITE_OPEN_ICON_FILE = '/images/system/site_open24.png'; // アクセスポイント公開
4342 const SITE_CLOSE_ICON_FILE = '/images/system/site_close24.png'; // アクセスポイント非公開
43+ const LOGOUT_ICON_FILE = '/images/system/logout24.png'; // ログアウトアイコン
4444 const MAX_SITENAME_LENGTH = 20; // サイト名の最大文字数
4545 const ICON_SIZE = 24; // アイコンサイズ
46- const PREVIEW_ICON_SIZE = 24; // プレビューアイコンサイズ
46+ const SITE_ICON_SIZE = 32; // サイトメニューアイコンサイズ
47+ const AVATAR_ICON_SIZE = 32; // ユーザアバターアイコンサイズ
4748 const HELP_TITLE = 'ヘルプ';
49+ const MENU_TITLE_PREVIEW = 'プレビュー';
4850 const MENU_TITLE_CONTENT = 'コンテンツ管理'; // コンテンツ編集メニューのタイトル
4951 const MENU_TITLE_SUB_CONTENT = '補助コンテンツ管理'; // サブコンテンツ編集メニューのタイトル
52+ const UNTITLED_USER_NAME = '名称なしユーザ'; // ユーザ名が設定されていなかった場合の表示名
53+ const MAINMENU_INDENT_LEBEL = 4; // メインメニューのインデントレベル
54+ const SITEMENU_INDENT_LEBEL = 2; // サイトメニューのインデントレベル
5055
5156 // DB定義値
5257 const CF_SITE_IN_PUBLIC = 'site_in_public'; // サイト公開状況
@@ -218,9 +223,16 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer
218223 }
219224 }
220225
221- $menuInner = '';
222- $menuInner .= '<tr valign="top"><td>'. M3_NL;
226+ // カラム数を求める
223227 $topMenuCount = count($rows);
228+ $columnCount = 0;
229+ for ($i = 0; $i < $topMenuCount; $i++){
230+ if ($rows[$i]['ni_view_control'] != 0) $columnCount++; // 改行のとき
231+ }
232+ if ($topMenuCount > 0 && $rows[$topMenuCount -1]['ni_view_control'] == 0) $columnCount++;
233+ $columnWidth = 12 / $columnCount; // Bootstrapでの幅
234+ $menuInner = str_repeat(M3_INDENT_SPACE, self::MAINMENU_INDENT_LEBEL) . '<li class="col-sm-' . $columnWidth . '"><ul>' . M3_NL;
235+
224236 for ($i = 0; $i < $topMenuCount; $i++){
225237 if ($rows[$i]['ni_view_control'] == 0){ // 改行以外のとき
226238 $topId = $rows[$i]['ni_id'];
@@ -228,39 +240,29 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer
228240 // サブレベル取得
229241 $this->db->getNavItems($navId, $topId, $subRows);
230242
231- // メニュー外枠
232- //$menuInner .= '<div class="ui-widget m3toppage_menu">'. M3_NL;
233- $menuInner .= '<div class="m3toppage_menu">'. M3_NL;
234-
235243 // ヘルプの作成
236244 $helpText = '';
237- /*$title = $rows[$i]['ni_help_title'];
245+ $title = $rows[$i]['ni_help_title'];
238246 if (!empty($title)){
239247 $helpText = $this->gInstance->getHelpManager()->createHelpText($title, $rows[$i]['ni_help_body']);
240- }*/
241-
242- // メニューカテゴリのタイトル
243- $menuInner .= str_repeat(' ', 4);
244- $menuInner .= '<div class="ui-state-default ui-priority-primary ui-corner-tl ui-corner-tr"><span ' . $helpText . '>' .
245- $this->convertToDispString($rows[$i]['ni_name']) . '</span></div>'. M3_NL;
248+ }
246249
247- // 「ul」タグ
248- $menuInner .= str_repeat(' ', 4);
249- $menuInner .= '<ul class="ui-widget-content ui-corner-bl ui-corner-br">' . M3_NL;
250-
251- // 「li」タグ
250+ // メニュー大項目
251+ $menuInner .= str_repeat(M3_INDENT_SPACE, self::MAINMENU_INDENT_LEBEL + 1);
252+ $menuInner .= '<li class="dropdown-header"><span ' . $helpText . '>' . $this->convertToDispString($rows[$i]['ni_name']) . '</span></li>' . M3_NL;
253+
254+ // メニュー小項目
252255 if (count($subRows) > 0){
253256 for ($l = 0; $l < count($subRows); $l++){
254257 // ヘルプの作成
255258 $helpText = '';
256- /*$title = $subRows[$l]['ni_help_title'];
259+ $title = $subRows[$l]['ni_help_title'];
257260 if (!empty($title)){
258261 $helpText = $this->gInstance->getHelpManager()->createHelpText($title, $subRows[$l]['ni_help_body']);
259- }*/
262+ }
260263
261- $menuInner .= str_repeat(' ', 8);
262- $menuInner .= '<li ';
263- $menuInner .= '><a href="';
264+ $menuInner .= str_repeat(M3_INDENT_SPACE, self::MAINMENU_INDENT_LEBEL + 2);
265+ $menuInner .= '<li><a href="';
264266 $menuInner .= $this->getUrl($this->gEnv->getDefaultAdminUrl() . '?task=' . $subRows[$l]['ni_task_id']); // 起動タスクパラメータを設定
265267 if (!empty($subRows[$l]['ni_param'])){ // パラメータが存在するときはパラメータを追加
266268 $menuInner .= '&' . M3_REQUEST_PARAM_OPERATION_TODO . '=' . urlencode($subRows[$l]['ni_param']);
@@ -269,32 +271,19 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer
269271 }
270272 }
271273 $menuInner .= str_repeat(' ', 4);
272- $menuInner .= '</ul>' . M3_NL;
273- $menuInner .= '</div>' . M3_NL; // メニュー外枠
274274 } else { // 改行のとき
275- $menuInner .= '</td><td>' . M3_NL;
275+ $menuInner .= str_repeat(M3_INDENT_SPACE, self::MAINMENU_INDENT_LEBEL) . '</ul></li><li class="col-sm-' . $columnWidth . '"><ul>' . M3_NL;
276276 }
277277 }
278- // ヘルプへのリンク
279- $iconTitle = self::HELP_TITLE;
280- $iconUrl = $this->gEnv->getRootUrl() . self::HELP_ICON_FILE;
281- $iconTag = '<a href="#" onclick="goHelp();return false;">';
282- $iconTag .= '<img src="' . $this->getUrl($iconUrl) . '" width="' . self::ICON_SIZE . '" height="' . self::ICON_SIZE . '" border="0" alt="' . $iconTitle . '" title="' . $iconTitle . '" />';
283- $iconTag .= '</a>';
284- $menuInner .= '<div style="text-align:right;">' . $iconTag . '</div>';
285278
286- $menuInner .= '</td></tr>';
279+ $menuInner .= str_repeat(M3_INDENT_SPACE, self::MAINMENU_INDENT_LEBEL) . '</ul></li>' . M3_NL;
287280 $this->tmpl->addVar("menu", "menu_inner", $menuInner);
288281 $this->tmpl->addVar("menu", "widget_url", $this->getUrl($this->gEnv->getCurrentWidgetRootUrl())); // ウィジェットのルートディレクトリ
289282
290283 $this->tmpl->addVar("menu", "top_url", $this->getUrl($this->gEnv->getDefaultAdminUrl())); // トップメニュー画面URL
291- //$themeFile = $this->gEnv->getRootUrl() . self::DEFAULT_THEME_DIR . $this->_db->getSystemConfig(self::CF_ADMIN_DEFAULT_THEME) . '/'. self::THEME_CSS_FILE; // 管理画面用jQueryUIテーマ
292- $themeFile = $this->gEnv->getRootUrl() . self::DEFAULT_THEME_DIR . $this->gSystem->adminDefaultTheme() . '/'. self::THEME_CSS_FILE; // 管理画面用jQueryUIテーマ
293- $this->themeFilePath = $this->getUrl($themeFile); // jQuery UIテーマ
294284
295285 // サイト表示
296286 $siteName = $this->gEnv->getSiteName();
297-// if (empty($siteName)) $siteName = $this->_('Untitled Site');
298287 $siteName = makeTruncStr($siteName, self::MAX_SITENAME_LENGTH);
299288 $siteUrl = $this->gEnv->getRootUrl();
300289 $this->tmpl->addVar("menu", "site_name", $siteName);
@@ -305,13 +294,39 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer
305294 $this->tmpl->addVar("menu", "system", 'Magic3 v' . M3_SYSTEM_VERSION);
306295 $this->tmpl->addVar("menu", "official_url", 'http://www.magic3.org');
307296
297+ // ユーザ名
298+ $userId = $this->gEnv->getCurrentUserId();
299+ $ret = $this->_db->getLoginUserRecordById($userId, $row);// ユーザ情報取得
300+ if ($ret){
301+ $userName = $row['lu_name']; // ユーザ名
302+ $avatar = $row['lu_avatar']; // アバター
303+ }
304+ if (empty($userName)) $userName = self::UNTITLED_USER_NAME;
305+ $this->tmpl->addVar("menu", "user", $this->convertToDispString($userName));
306+
307+ // アバター
308+ $avatarFormat = $this->gInstance->getImageManager()->getDefaultAvatarFormat(); // 画像フォーマット取得
309+ // アバター画像取得
310+ $this->gInstance->getImageManager()->parseImageFormat($avatarFormat, $imageType, $imageAttr, $imageSize); // 画像情報取得
311+ $avatarUrl = $this->gInstance->getImageManager()->getAvatarUrl($avatar);
312+ $iconTitle = 'アバター画像';
313+ $imageSize = self::AVATAR_ICON_SIZE;
314+ $iconTag = '<img class="avatar" src="' . $this->getUrl($avatarUrl) . '" width="' . $imageSize . '" height="' . $imageSize . '" border="0" alt="' . $iconTitle . '" title="' . $iconTitle . '" />';
315+ $this->tmpl->addVar("menu", "avatar_img", $iconTag);
316+
317+ // ユーザメニュー
318+ $iconTitle = 'ログアウト';
319+ $iconUrl = $this->gEnv->getRootUrl() . self::LOGOUT_ICON_FILE; // ログアウト
320+ $iconTag = '<img src="' . $this->getUrl($iconUrl) . '" width="' . self::ICON_SIZE . '" height="' . self::ICON_SIZE . '" border="0" alt="' . $iconTitle . '" title="' . $iconTitle . '" />';
321+ $this->tmpl->addVar("menu", "logout_img", $iconTag);
322+
308323 // 運用中のコンテンツを取得
309324 $this->contentMenu = $this->getContentMenu(); // コンテンツ編集メニュー項目取得
310325 $this->subContentMenu = $this->getSubContentMenu(); // サブコンテンツ編集メニュー
311326
312- // サイトプレビュー
313- $previewTag = $this->createSitePreviewTag();
314- $this->tmpl->addVar("menu", "site_preview", $previewTag);
327+ // サイトメニュー
328+ $siteMenuTag = $this->createSiteManuTag();
329+ $this->tmpl->addVar("menu", "site_menu", $siteMenuTag);
315330 }
316331 // 「前へ」「次へ」アイコンを設定
317332 $this->tmpl->setAttribute('prevnextbutton', 'visibility', 'visible');
@@ -341,20 +356,16 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer
341356 */
342357 function _addCssFileToHead($request, &$param)
343358 {
344- if (empty($this->cssFilePath)){
345- return array();
346- } else {
347- return array($this->themeFilePath, $this->cssFilePath); // jQueryUIテーマを先に読み込み
348- }
359+ return $this->cssFilePath;
349360 }
350361 /**
351- * サイトプレビュータグを作成
362+ * サイトメニュータグを作成
352363 *
353- * @return string プレビュータグ
364+ * @return string サイトメニュータグ
354365 */
355- function createSitePreviewTag()
366+ function createSiteManuTag()
356367 {
357- $previewTag = '';
368+ $menuTag = '';
358369 $isOpen = $this->gSystem->siteInPublic();
359370
360371 // アクセスポイントごとの公開状況
@@ -366,23 +377,27 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer
366377 $isActiveSite = $this->gSystem->getSiteActiveStatus(0); // PC用サイト
367378 if ($isActiveSite){
368379 $isVisibleSite = false; // 公開中かどうか
369- $iconTitle = 'PC画面プレビュー';
380+ $iconTitle = 'PC用アクセスポイント';
370381 if ($isOpen && $sitePcInPublic){
371382 $iconUrl = $this->gEnv->getRootUrl() . self::PC_ICON_FILE;
372383 $isVisibleSite = true; // 公開中かどうか
373384 } else {
374385 $iconUrl = $this->gEnv->getRootUrl() . self::PC_CLOSED_ICON_FILE; // サイト非公開
375386 }
376- $iconTag = '<div class="static"><a href="#" onclick="m3ShowPreviewWindow(0, \'' . $this->gEnv->getDefaultUrl() . '\');return false;">';
377- $iconTag .= '<img src="' . $this->getUrl($iconUrl) . '" width="' . self::PREVIEW_ICON_SIZE . '" height="' . self::PREVIEW_ICON_SIZE . '" border="0" alt="' . $iconTitle . '" title="' . $iconTitle . '" /></a>';
378- $iconTag .= $this->createContentMenu(0, $isVisibleSite) . '</div>'; // コンテンツ編集メニュー付加
379- $previewTag .= $iconTag;
387+ $iconTag = str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL) . '<li class="dropdown" >' . M3_NL;
388+ $iconTag .= str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL + 1) . '<a href="#" class="dropdown-toggle device_icon" data-toggle="dropdown">';
389+ $iconTag .= '<img src="' . $this->getUrl($iconUrl) . '" width="' . self::SITE_ICON_SIZE . '" height="' . self::SITE_ICON_SIZE . '" border="0" alt="' . $iconTitle . '" title="' . $iconTitle . '" /><b class="caret"></b></a>' . M3_NL;
390+ $iconTag .= str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL + 1) . '<ul class="dropdown-menu">' . M3_NL;
391+ $iconTag .= $this->createContentMenu(0, $isVisibleSite); // コンテンツ編集メニュー付加
392+ $iconTag .= str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL + 1) . '</ul>'. M3_NL;
393+ $iconTag .= str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL) . '</li>' . M3_NL;
394+ $menuTag .= $iconTag;
380395 }
381396
382397 // スマートフォン用サイトアイコン作成
383398 $isActiveSite = $this->gSystem->getSiteActiveStatus(2); // スマートフォン用サイト
384399 if ($isActiveSite){
385- $iconTitle = 'スマートフォン画面プレビュー';
400+ $iconTitle = 'スマートフォン用アクセスポイント';
386401 $isVisibleSite = false; // 公開中かどうか
387402 if ($isOpen && $siteSmartphoneInPublic){
388403 $iconUrl = $this->gEnv->getRootUrl() . self::SMARTPHONE_ICON_FILE;
@@ -390,16 +405,20 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer
390405 } else {
391406 $iconUrl = $this->gEnv->getRootUrl() . self::SMARTPHONE_CLOSED_ICON_FILE;// サイト非公開
392407 }
393- $iconTag = '<div class="static"><a href="#" onclick="m3ShowPreviewWindow(2, \'' . $this->gEnv->getDefaultSmartphoneUrl() . '\');return false;">';
394- $iconTag .= '<img src="' . $this->getUrl($iconUrl) . '" width="' . self::PREVIEW_ICON_SIZE . '" height="' . self::PREVIEW_ICON_SIZE . '" border="0" alt="' . $iconTitle . '" title="' . $iconTitle . '" /></a>';
395- $iconTag .= $this->createContentMenu(2, $isVisibleSite) . '</div>'; // コンテンツ編集メニュー付加
396- $previewTag .= $iconTag;
408+ $iconTag = str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL) . '<li class="dropdown" >' . M3_NL;
409+ $iconTag .= str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL + 1) . '<a href="#" class="dropdown-toggle device_icon" data-toggle="dropdown">';
410+ $iconTag .= '<img src="' . $this->getUrl($iconUrl) . '" width="' . self::SITE_ICON_SIZE . '" height="' . self::SITE_ICON_SIZE . '" border="0" alt="' . $iconTitle . '" title="' . $iconTitle . '" /><b class="caret"></b></a>' . M3_NL;
411+ $iconTag .= str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL + 1) . '<ul class="dropdown-menu">' . M3_NL;
412+ $iconTag .= $this->createContentMenu(2, $isVisibleSite);// コンテンツ編集メニュー付加
413+ $iconTag .= str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL + 1) . '</ul>'. M3_NL;
414+ $iconTag .= str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL) . '</li>' . M3_NL;
415+ $menuTag .= $iconTag;
397416 }
398417
399418 // 携帯用サイトアイコン作成
400419 $isActiveSite = $this->gSystem->getSiteActiveStatus(1); // 携帯用サイト
401420 if ($isActiveSite){
402- $iconTitle = '携帯画面プレビュー';
421+ $iconTitle = '携帯用アクセスポイント';
403422 $isVisibleSite = false; // 公開中かどうか
404423 if ($isOpen && $siteMobileInPublic){
405424 $iconUrl = $this->gEnv->getRootUrl() . self::MOBILE_ICON_FILE;
@@ -407,12 +426,16 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer
407426 } else {
408427 $iconUrl = $this->gEnv->getRootUrl() . self::MOBILE_CLOSED_ICON_FILE;// サイト非公開
409428 }
410- $iconTag = '<div class="static"><a href="#" onclick="m3ShowPreviewWindow(1, \'' . $this->gEnv->getDefaultMobileUrl() . '\');return false;">';
411- $iconTag .= '<img src="' . $this->getUrl($iconUrl) . '" width="' . self::PREVIEW_ICON_SIZE . '" height="' . self::PREVIEW_ICON_SIZE . '" border="0" alt="' . $iconTitle . '" title="' . $iconTitle . '" /></a>';
412- $iconTag .= $this->createContentMenu(1, $isVisibleSite) . '</div>'; // コンテンツ編集メニュー付加
413- $previewTag .= $iconTag;
429+ $iconTag = str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL) . '<li class="dropdown" >' . M3_NL;
430+ $iconTag .= str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL + 1) . '<a href="#" class="dropdown-toggle device_icon" data-toggle="dropdown">';
431+ $iconTag .= '<img src="' . $this->getUrl($iconUrl) . '" width="' . self::SITE_ICON_SIZE . '" height="' . self::SITE_ICON_SIZE . '" border="0" alt="' . $iconTitle . '" title="' . $iconTitle . '" /><b class="caret"></b></a>' . M3_NL;
432+ $iconTag .= str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL + 1) . '<ul class="dropdown-menu">' . M3_NL;
433+ $iconTag .= $this->createContentMenu(1, $isVisibleSite); // コンテンツ編集メニュー付加
434+ $iconTag .= str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL + 1) . '</ul>'. M3_NL;
435+ $iconTag .= str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL) . '</li>' . M3_NL;
436+ $menuTag .= $iconTag;
414437 }
415- return $previewTag;
438+ return $menuTag;
416439 }
417440 /**
418441 * コンテンツ編集メニュー項目を取得
@@ -493,18 +516,35 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer
493516 */
494517 function createContentMenu($deviceType, $isVisibleSite)
495518 {
519+ $menuTag = '';
496520 $menu = $this->contentMenu[$deviceType]; // コンテンツ編集メニュー
497521 $subMenu = $this->subContentMenu[$deviceType]; // サブコンテンツ編集メニュー
498522 // if (empty($menu) && empty($subMenu)) return '';
499523
500- $menuTag .= '<div class="ldd_submenu ui-widget-header">';
501- $menuTag .= '<table border="0" cellpadding="0" cellspacing="0" align="center"><tr valign="top"><td>';
524+ // プレビュー用リンク
525+ $menuTag .= str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL + 2);
526+ switch ($deviceType){
527+ case 0: // PC用画面のとき
528+ default:
529+ $menuTag .= '<li><a href="#" onclick="m3ShowPreviewWindow(0, \'' . $this->gEnv->getDefaultUrl() . '\');return false;">' . self::MENU_TITLE_PREVIEW . '</a></li>' . M3_NL;
530+ break;
531+ case 1: // 携帯用画面のとき
532+ $menuTag .= '<li><a href="#" onclick="m3ShowPreviewWindow(1, \'' . $this->gEnv->getDefaultMobileUrl() . '\');return false;">' . self::MENU_TITLE_PREVIEW . '</a></li>' . M3_NL;
533+ break;
534+ case 2: // スマートフォン用画面のとき
535+ $menuTag .= '<li><a href="#" onclick="m3ShowPreviewWindow(2, \'' . $this->gEnv->getDefaultSmartphoneUrl() . '\');return false;">' . self::MENU_TITLE_PREVIEW . '</a></li>' . M3_NL;
536+ break;
537+ }
502538
503539 // コンテンツ編集メニュー
504540 if (!empty($menu)){
505- $menuTag .= '<div class="m3toppage_menu">';
506- $menuTag .= '<div class="ui-state-default ui-priority-primary ui-corner-tl ui-corner-tr"><span>' . self::MENU_TITLE_CONTENT . '</span></div>';
507- $menuTag .= '<ul class="ui-widget-content ui-corner-bl ui-corner-br">';
541+ // セパレータ
542+ $menuTag .= str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL + 2);
543+ $menuTag .= '<li class="divider"></li>' . M3_NL;
544+
545+ // タイトル
546+ $menuTag .= str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL + 2);
547+ $menuTag .= '<li class="dropdown-header">' . self::MENU_TITLE_CONTENT . '</li>' . M3_NL;
508548
509549 for ($i = 0; $i < count($menu); $i++){
510550 $widgetId = $menu[$i]['wd_id'];
@@ -546,17 +586,20 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer
546586 if (empty($title)) $title = $menu[$i]['wd_name']; // コンテンツ名が取得できないときはウィジェット名を設定
547587 if (empty($title)) continue;
548588
549- $menuTag .= '<li ><a href="#" onclick="m3ShowConfigWindow(\'' . $widgetId . '\', 0, 0);return false;"><span >' . $this->convertToDispString($title) . '</span></a></li>';
589+ $menuTag .= str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL + 2);
590+ $menuTag .= '<li ><a href="#" onclick="m3ShowConfigWindow(\'' . $widgetId . '\', 0, 0);return false;"><span >' . $this->convertToDispString($title) . '</span></a></li>' . M3_NL;
550591 }
551- $menuTag .= '</ul>';
552- $menuTag .= '</div>';
553592 }
554593
555594 // サブコンテンツ編集メニュー
556595 if (!empty($subMenu)){
557- $menuTag .= '<div class="m3toppage_menu">';
558- $menuTag .= '<div class="ui-state-default ui-priority-primary ui-corner-tl ui-corner-tr"><span>' . self::MENU_TITLE_SUB_CONTENT . '</span></div>';
559- $menuTag .= '<ul class="ui-widget-content ui-corner-bl ui-corner-br">';
596+ // セパレータ
597+ $menuTag .= str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL + 2);
598+ $menuTag .= '<li class="divider"></li>' . M3_NL;
599+
600+ // タイトル
601+ $menuTag .= str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL + 2);
602+ $menuTag .= '<li class="dropdown-header">' . self::MENU_TITLE_SUB_CONTENT . '</li>' . M3_NL;
560603
561604 for ($i = 0; $i < count($subMenu); $i++){
562605 $widgetId = $subMenu[$i]['wd_id'];
@@ -577,12 +620,13 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer
577620 if (empty($title)) $title = $subMenu[$i]['wd_name']; // サブコンテンツ名が取得できないときはウィジェット名を設定
578621 if (empty($title)) continue;
579622
580- $menuTag .= '<li ><a href="#" onclick="m3ShowConfigWindow(\'' . $widgetId . '\', 0, 0);return false;"><span >' . $this->convertToDispString($title) . '</span></a></li>';
623+ $menuTag .= str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL + 2);
624+ $menuTag .= '<li ><a href="#" onclick="m3ShowConfigWindow(\'' . $widgetId . '\', 0, 0);return false;"><span >' . $this->convertToDispString($title) . '</span></a></li>' . M3_NL;
581625 }
582- $menuTag .= '</ul>';
583- $menuTag .= '</div>';
584626 }
585- $menuTag .= '</td></tr></table>';
627+ // セパレータ
628+ $menuTag .= str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL + 2);
629+ $menuTag .= '<li class="divider"></li>' . M3_NL;
586630
587631 // アクセスポイントの公開制御
588632 if ($isVisibleSite){
@@ -594,12 +638,10 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer
594638 $iconTitle = 'アクセスポイントを公開';
595639 $iconUrl = $this->gEnv->getRootUrl() . self::SITE_OPEN_ICON_FILE; // アクセスポイント公開
596640 }
597- $menuTag .= '<div class="ldd_subfoot">';
598- $menuTag .= '<span onclick="siteOpen(' . $deviceType . ',' . intval(!$isVisibleSite) . ');return false;" style="vertical-align:middle;">';
599- $menuTag .= '<img src="' . $this->getUrl($iconUrl) . '" width="' . self::ICON_SIZE . '" height="' . self::ICON_SIZE . '" border="0" alt="' . $iconTitle . '" title="' . $iconTitle . '" style="float:left;margin-top:0;" />' . $openSiteMessage . '</span>';
600- $menuTag .= '</div>';
641+ $menuTag .= str_repeat(M3_INDENT_SPACE, self::SITEMENU_INDENT_LEBEL + 2);
642+ $menuTag .= '<li><a href="#" onclick="siteOpen(' . $deviceType . ',' . intval(!$isVisibleSite) . ');return false;">';
643+ $menuTag .= '<img src="' . $this->getUrl($iconUrl) . '" width="' . self::ICON_SIZE . '" height="' . self::ICON_SIZE . '" border="0" alt="' . $iconTitle . '" title="' . $iconTitle . '" />' . $openSiteMessage . '</a></li>' . M3_NL;
601644
602- $menuTag .= '</div>';
603645 return $menuTag;
604646 }
605647 }
--- a/widgets/admin_menu4/include/template/index.tmpl.html
+++ b/widgets/admin_menu4/include/template/index.tmpl.html
@@ -14,14 +14,6 @@
1414 <patTemplate:tmpl name="menu" visibility="hidden">
1515 <script type="text/javascript">
1616 //<![CDATA[
17-function goUrl(url)
18-{
19- location.href = url;
20-}
21-function goHelp()
22-{
23- location.href = '?task=menuhelp';
24-}
2517 function logout()
2618 {
2719 if (!window.confirm('{_LC_MSG_LOGOUT}')) return false;
@@ -37,42 +29,6 @@ function siteOpen(device, isOpen){
3729 return true;
3830 }
3931 $(function(){
40- /**
41- * the menu
42- */
43- var $menu = $('#m3menubar');
44-
45- /**
46- * トップメニュー作成
47- */
48- $menu.children('li.movable').each(function(){
49- var $this = $(this);
50- var $span = $this.children('span.m3toplevel');
51- $span.data('width',$span.width());
52-
53- $this.bind('mouseenter',function(){
54- //var menuwidth = $this.children('div.ldd_submenu').width() - 40;
55- var menuwidth = 100; // メニューバー上のパネル幅固定(2012/6/11)
56- $menu.find('.ldd_submenu').stop(true,true).hide();
57- //$span.stop().animate({'width':'685px'},300,function(){
58- $span.stop().animate({'width':menuwidth+'px'},300,function(){
59- $this.find('.ldd_submenu').slideDown(100);
60- });
61- }).bind('mouseleave',function(){
62- $this.find('.ldd_submenu').stop(true,true).hide();
63- $span.stop().animate({'width':$span.data('width')+'px'},100);
64- });
65- });
66- $('#m3device').children('.static').each(function(){
67- var $this = $(this);
68- $this.bind('mouseenter',function(){
69- //$menu.find('.ldd_submenu').stop(true,true).hide();
70- $this.find('.ldd_submenu').slideDown(100);
71- }).bind('mouseleave',function(){
72- $this.find('.ldd_submenu').stop(true,true).hide();
73- });
74- });
75-
7632 // キー設定
7733 $(document).keyup(function(e){
7834 if (e.which == 36) location.href = '{TOP_URL}'; // HOMEキー
@@ -85,32 +41,42 @@ $(function(){
8541 <input type="hidden" name="device" />
8642 <input type="hidden" name="isopen" />
8743 </form>
88-<div>
89-<ul id="m3menubar" class="ui-widget ui-widget-header">
90-<li><span onclick="goUrl('{PC_URL}');">{SITE_NAME}</span></li>
91-<li><span onclick="goUrl('{TOP_URL}');">{_LC_LABEL_TOP}</span></li>
92-<li style="float:right;"><span onclick="logout();">{_LC_LABEL_LOGOUT}</span></li>
93-<li style="float:right;"><span style="border-left:0px;" onclick="window.open('{OFFICIAL_URL}');return false;">{SYSTEM}</span></li>
94-<li style="float:right;"><div id="m3device" class="device" style="display:inline-block;">{SITE_PREVIEW}</div></li>
95-<li class="movable">
96-<span class="m3toplevel">{_LC_LABEL_MENU}</span><!-- Increases to 685px in width-->
97-<div class="ldd_submenu ui-widget-header">
98-<table border="0" cellpadding="0" cellspacing="0" align="center">
99-{MENU_INNER}
100-</table>
44+<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
45+<!--<nav class="navbar navbar-default" role="navigation">-->
46+<div class="navbar-header">
47+ <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapse">
48+ <span class="sr-only">Toggle navigation</span>
49+ <span class="icon-bar"></span>
50+ <span class="icon-bar"></span>
51+ <span class="icon-bar"></span>
52+ </button>
53+ <a class="navbar-brand" href="{PC_URL}">{SITE_NAME}</a>
10154 </div>
102-</li>
103-<!-- <li">*****移動するメニュー項目*****</li> -->
104-</ul>
55+<div class="collapse navbar-collapse" id="navbar-collapse">
56+ <ul class="nav navbar-nav">
57+ <li><a href="{TOP_URL}">{_LC_LABEL_TOP}</a></li>
58+ <li class="dropdown dropdown-large">
59+ <a href="#" class="dropdown-toggle" data-toggle="dropdown">{_LC_LABEL_MENU} <b class="caret"></b></a>
60+ <ul class="dropdown-menu dropdown-menu-large row">
61+{MENU_INNER}
62+ </ul>
63+ </li>
64+ </ul>
65+ <ul class="nav navbar-nav pos-right">
66+{SITE_MENU}
67+ <li class="dropdown user_menu">
68+ <a href="#" class="dropdown-toggle avatar_icon" data-toggle="dropdown">{AVATAR_IMG}{USER} <b class="caret"></b></a>
69+ <ul class="dropdown-menu">
70+ <li><a href="#" onclick="logout();">{LOGOUT_IMG}{_LC_LABEL_LOGOUT}</a></li>
71+ </ul>
72+ </li>
73+ <li><a href="{OFFICIAL_URL}" target="_blank">{SYSTEM}</a></li>
74+ </ul>
75+ <ul class="nav navbar-nav navbar-right"><!-- 右端項目 --></ul>
10576 </div>
77+</nav>
10678 </patTemplate:tmpl>
10779 <patTemplate:tmpl name="closebutton" visibility="hidden">
108-<!--<div>
109-<ul id="m3menubar">
110-<li style="float:right;"><span onclick="window.close();">{_LC_LABEL_CLOSE}</span></li>
111-<li style="float:right;"><span style="border-left:0px;">{SERVER_NAME}</span></li>
112-</ul>
113-</div>-->
11480 <div class="m3configclose"><a href="#" onclick="window.close();"><img src="{CLOSE_IMAGE}" alt="{_LC_LABEL_CLOSE}" title="{_LC_LABEL_CLOSE}" /></a></div>
11581 </patTemplate:tmpl>
11682 <patTemplate:tmpl name="prevnextbutton" visibility="hidden">
旧リポジトリブラウザで表示