リビジョン | 3b50a358770c605cffc49d81bda7dccf514fbdaa (tree) |
---|---|
日時 | 2014-01-09 21:33:12 |
作者 | naoki hirata <naoki@magi...> |
コミッター | naoki hirata |
「管理メニュー4」ウィジェットを作成。
@@ -7,9 +7,9 @@ | ||
7 | 7 | -- * |
8 | 8 | -- * @package Magic3 Framework |
9 | 9 | -- * @author 平田直毅(Naoki Hirata) <naoki@aplo.co.jp> |
10 | --- * @copyright Copyright 2006-2011 Magic3 Project. | |
10 | +-- * @copyright Copyright 2006-2014 Magic3 Project. | |
11 | 11 | -- * @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$ | |
13 | 13 | -- * @link http://www.magic3.org |
14 | 14 | -- * |
15 | 15 | -- -------------------------------------------------------------------------------------------------- |
@@ -411,7 +411,7 @@ CREATE TABLE _nav_item ( | ||
411 | 411 | ni_task_id VARCHAR(70) DEFAULT '' NOT NULL, -- 起動タスクID、「_」で始まるときはリンクなし |
412 | 412 | ni_param VARCHAR(20) DEFAULT '' NOT NULL, -- 追加パラメータ |
413 | 413 | 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=セパレータ) | |
415 | 415 | ni_name VARCHAR(40) DEFAULT '' NOT NULL, -- 名前 |
416 | 416 | ni_help_title TEXT NOT NULL, -- ヘルプタイトル |
417 | 417 | ni_help_body TEXT NOT NULL, -- ヘルプ本文 |
@@ -52,7 +52,7 @@ | ||
52 | 52 | if (!menu) { // Create singleton menu |
53 | 53 | menu = $('<div id="jqContextMenu"></div>') |
54 | 54 | .hide() |
55 | - .css({position:'absolute', zIndex:'500'}) | |
55 | + .css({position:'absolute', zIndex:'2000'}) | |
56 | 56 | .appendTo('body') |
57 | 57 | .bind('click', function(e) { |
58 | 58 | e.stopPropagation(); |
@@ -60,7 +60,7 @@ | ||
60 | 60 | } |
61 | 61 | if (!shadow) { |
62 | 62 | 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}) | |
64 | 64 | .appendTo('body') |
65 | 65 | .hide(); |
66 | 66 | } |
@@ -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; | |
69 | 38 | } |
@@ -20,14 +20,13 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer | ||
20 | 20 | { |
21 | 21 | protected $db; // DB接続オブジェクト |
22 | 22 | protected $cssFilePath; // CSSファイル |
23 | - protected $themeFilePath; // テーマファイル | |
24 | 23 | protected $contentMenu; // コンテンツ編集メニュー |
25 | 24 | protected $subContentMenu; // サブコンテンツ編集メニュー |
26 | 25 | //const DEFAULT_SITE_NAME = 'サイト名未設定'; |
27 | 26 | const DEFAULT_CSS_FILE = '/default.css'; // CSSファイル |
28 | 27 | 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'; // テーマファイル | |
31 | 30 | // const CF_ADMIN_DEFAULT_THEME = 'admin_default_theme'; // 管理画面用jQueryUIテーマ |
32 | 31 | const HELP_ICON_FILE = '/images/system/help24.gif'; // ヘルプアイコン |
33 | 32 | const CLOSE_ICON_FILE = '/images/system/close32.png'; // ウィンドウ閉じるアイコン |
@@ -41,12 +40,18 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer | ||
41 | 40 | const MOBILE_CLOSED_ICON_FILE = '/images/system/device/mobile_closed.png'; // 携帯アイコン(非公開) |
42 | 41 | const SITE_OPEN_ICON_FILE = '/images/system/site_open24.png'; // アクセスポイント公開 |
43 | 42 | const SITE_CLOSE_ICON_FILE = '/images/system/site_close24.png'; // アクセスポイント非公開 |
43 | + const LOGOUT_ICON_FILE = '/images/system/logout24.png'; // ログアウトアイコン | |
44 | 44 | const MAX_SITENAME_LENGTH = 20; // サイト名の最大文字数 |
45 | 45 | const ICON_SIZE = 24; // アイコンサイズ |
46 | - const PREVIEW_ICON_SIZE = 24; // プレビューアイコンサイズ | |
46 | + const SITE_ICON_SIZE = 32; // サイトメニューアイコンサイズ | |
47 | + const AVATAR_ICON_SIZE = 32; // ユーザアバターアイコンサイズ | |
47 | 48 | const HELP_TITLE = 'ヘルプ'; |
49 | + const MENU_TITLE_PREVIEW = 'プレビュー'; | |
48 | 50 | const MENU_TITLE_CONTENT = 'コンテンツ管理'; // コンテンツ編集メニューのタイトル |
49 | 51 | const MENU_TITLE_SUB_CONTENT = '補助コンテンツ管理'; // サブコンテンツ編集メニューのタイトル |
52 | + const UNTITLED_USER_NAME = '名称なしユーザ'; // ユーザ名が設定されていなかった場合の表示名 | |
53 | + const MAINMENU_INDENT_LEBEL = 4; // メインメニューのインデントレベル | |
54 | + const SITEMENU_INDENT_LEBEL = 2; // サイトメニューのインデントレベル | |
50 | 55 | |
51 | 56 | // DB定義値 |
52 | 57 | const CF_SITE_IN_PUBLIC = 'site_in_public'; // サイト公開状況 |
@@ -218,9 +223,16 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer | ||
218 | 223 | } |
219 | 224 | } |
220 | 225 | |
221 | - $menuInner = ''; | |
222 | - $menuInner .= '<tr valign="top"><td>'. M3_NL; | |
226 | + // カラム数を求める | |
223 | 227 | $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 | + | |
224 | 236 | for ($i = 0; $i < $topMenuCount; $i++){ |
225 | 237 | if ($rows[$i]['ni_view_control'] == 0){ // 改行以外のとき |
226 | 238 | $topId = $rows[$i]['ni_id']; |
@@ -228,39 +240,29 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer | ||
228 | 240 | // サブレベル取得 |
229 | 241 | $this->db->getNavItems($navId, $topId, $subRows); |
230 | 242 | |
231 | - // メニュー外枠 | |
232 | - //$menuInner .= '<div class="ui-widget m3toppage_menu">'. M3_NL; | |
233 | - $menuInner .= '<div class="m3toppage_menu">'. M3_NL; | |
234 | - | |
235 | 243 | // ヘルプの作成 |
236 | 244 | $helpText = ''; |
237 | - /*$title = $rows[$i]['ni_help_title']; | |
245 | + $title = $rows[$i]['ni_help_title']; | |
238 | 246 | if (!empty($title)){ |
239 | 247 | $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 | + } | |
246 | 249 | |
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 | + // メニュー小項目 | |
252 | 255 | if (count($subRows) > 0){ |
253 | 256 | for ($l = 0; $l < count($subRows); $l++){ |
254 | 257 | // ヘルプの作成 |
255 | 258 | $helpText = ''; |
256 | - /*$title = $subRows[$l]['ni_help_title']; | |
259 | + $title = $subRows[$l]['ni_help_title']; | |
257 | 260 | if (!empty($title)){ |
258 | 261 | $helpText = $this->gInstance->getHelpManager()->createHelpText($title, $subRows[$l]['ni_help_body']); |
259 | - }*/ | |
262 | + } | |
260 | 263 | |
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="'; | |
264 | 266 | $menuInner .= $this->getUrl($this->gEnv->getDefaultAdminUrl() . '?task=' . $subRows[$l]['ni_task_id']); // 起動タスクパラメータを設定 |
265 | 267 | if (!empty($subRows[$l]['ni_param'])){ // パラメータが存在するときはパラメータを追加 |
266 | 268 | $menuInner .= '&' . M3_REQUEST_PARAM_OPERATION_TODO . '=' . urlencode($subRows[$l]['ni_param']); |
@@ -269,32 +271,19 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer | ||
269 | 271 | } |
270 | 272 | } |
271 | 273 | $menuInner .= str_repeat(' ', 4); |
272 | - $menuInner .= '</ul>' . M3_NL; | |
273 | - $menuInner .= '</div>' . M3_NL; // メニュー外枠 | |
274 | 274 | } 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; | |
276 | 276 | } |
277 | 277 | } |
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>'; | |
285 | 278 | |
286 | - $menuInner .= '</td></tr>'; | |
279 | + $menuInner .= str_repeat(M3_INDENT_SPACE, self::MAINMENU_INDENT_LEBEL) . '</ul></li>' . M3_NL; | |
287 | 280 | $this->tmpl->addVar("menu", "menu_inner", $menuInner); |
288 | 281 | $this->tmpl->addVar("menu", "widget_url", $this->getUrl($this->gEnv->getCurrentWidgetRootUrl())); // ウィジェットのルートディレクトリ |
289 | 282 | |
290 | 283 | $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テーマ | |
294 | 284 | |
295 | 285 | // サイト表示 |
296 | 286 | $siteName = $this->gEnv->getSiteName(); |
297 | -// if (empty($siteName)) $siteName = $this->_('Untitled Site'); | |
298 | 287 | $siteName = makeTruncStr($siteName, self::MAX_SITENAME_LENGTH); |
299 | 288 | $siteUrl = $this->gEnv->getRootUrl(); |
300 | 289 | $this->tmpl->addVar("menu", "site_name", $siteName); |
@@ -305,13 +294,39 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer | ||
305 | 294 | $this->tmpl->addVar("menu", "system", 'Magic3 v' . M3_SYSTEM_VERSION); |
306 | 295 | $this->tmpl->addVar("menu", "official_url", 'http://www.magic3.org'); |
307 | 296 | |
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 | + | |
308 | 323 | // 運用中のコンテンツを取得 |
309 | 324 | $this->contentMenu = $this->getContentMenu(); // コンテンツ編集メニュー項目取得 |
310 | 325 | $this->subContentMenu = $this->getSubContentMenu(); // サブコンテンツ編集メニュー |
311 | 326 | |
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); | |
315 | 330 | } |
316 | 331 | // 「前へ」「次へ」アイコンを設定 |
317 | 332 | $this->tmpl->setAttribute('prevnextbutton', 'visibility', 'visible'); |
@@ -341,20 +356,16 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer | ||
341 | 356 | */ |
342 | 357 | function _addCssFileToHead($request, &$param) |
343 | 358 | { |
344 | - if (empty($this->cssFilePath)){ | |
345 | - return array(); | |
346 | - } else { | |
347 | - return array($this->themeFilePath, $this->cssFilePath); // jQueryUIテーマを先に読み込み | |
348 | - } | |
359 | + return $this->cssFilePath; | |
349 | 360 | } |
350 | 361 | /** |
351 | - * サイトプレビュータグを作成 | |
362 | + * サイトメニュータグを作成 | |
352 | 363 | * |
353 | - * @return string プレビュータグ | |
364 | + * @return string サイトメニュータグ | |
354 | 365 | */ |
355 | - function createSitePreviewTag() | |
366 | + function createSiteManuTag() | |
356 | 367 | { |
357 | - $previewTag = ''; | |
368 | + $menuTag = ''; | |
358 | 369 | $isOpen = $this->gSystem->siteInPublic(); |
359 | 370 | |
360 | 371 | // アクセスポイントごとの公開状況 |
@@ -366,23 +377,27 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer | ||
366 | 377 | $isActiveSite = $this->gSystem->getSiteActiveStatus(0); // PC用サイト |
367 | 378 | if ($isActiveSite){ |
368 | 379 | $isVisibleSite = false; // 公開中かどうか |
369 | - $iconTitle = 'PC画面プレビュー'; | |
380 | + $iconTitle = 'PC用アクセスポイント'; | |
370 | 381 | if ($isOpen && $sitePcInPublic){ |
371 | 382 | $iconUrl = $this->gEnv->getRootUrl() . self::PC_ICON_FILE; |
372 | 383 | $isVisibleSite = true; // 公開中かどうか |
373 | 384 | } else { |
374 | 385 | $iconUrl = $this->gEnv->getRootUrl() . self::PC_CLOSED_ICON_FILE; // サイト非公開 |
375 | 386 | } |
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; | |
380 | 395 | } |
381 | 396 | |
382 | 397 | // スマートフォン用サイトアイコン作成 |
383 | 398 | $isActiveSite = $this->gSystem->getSiteActiveStatus(2); // スマートフォン用サイト |
384 | 399 | if ($isActiveSite){ |
385 | - $iconTitle = 'スマートフォン画面プレビュー'; | |
400 | + $iconTitle = 'スマートフォン用アクセスポイント'; | |
386 | 401 | $isVisibleSite = false; // 公開中かどうか |
387 | 402 | if ($isOpen && $siteSmartphoneInPublic){ |
388 | 403 | $iconUrl = $this->gEnv->getRootUrl() . self::SMARTPHONE_ICON_FILE; |
@@ -390,16 +405,20 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer | ||
390 | 405 | } else { |
391 | 406 | $iconUrl = $this->gEnv->getRootUrl() . self::SMARTPHONE_CLOSED_ICON_FILE;// サイト非公開 |
392 | 407 | } |
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; | |
397 | 416 | } |
398 | 417 | |
399 | 418 | // 携帯用サイトアイコン作成 |
400 | 419 | $isActiveSite = $this->gSystem->getSiteActiveStatus(1); // 携帯用サイト |
401 | 420 | if ($isActiveSite){ |
402 | - $iconTitle = '携帯画面プレビュー'; | |
421 | + $iconTitle = '携帯用アクセスポイント'; | |
403 | 422 | $isVisibleSite = false; // 公開中かどうか |
404 | 423 | if ($isOpen && $siteMobileInPublic){ |
405 | 424 | $iconUrl = $this->gEnv->getRootUrl() . self::MOBILE_ICON_FILE; |
@@ -407,12 +426,16 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer | ||
407 | 426 | } else { |
408 | 427 | $iconUrl = $this->gEnv->getRootUrl() . self::MOBILE_CLOSED_ICON_FILE;// サイト非公開 |
409 | 428 | } |
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; | |
414 | 437 | } |
415 | - return $previewTag; | |
438 | + return $menuTag; | |
416 | 439 | } |
417 | 440 | /** |
418 | 441 | * コンテンツ編集メニュー項目を取得 |
@@ -493,18 +516,35 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer | ||
493 | 516 | */ |
494 | 517 | function createContentMenu($deviceType, $isVisibleSite) |
495 | 518 | { |
519 | + $menuTag = ''; | |
496 | 520 | $menu = $this->contentMenu[$deviceType]; // コンテンツ編集メニュー |
497 | 521 | $subMenu = $this->subContentMenu[$deviceType]; // サブコンテンツ編集メニュー |
498 | 522 | // if (empty($menu) && empty($subMenu)) return ''; |
499 | 523 | |
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 | + } | |
502 | 538 | |
503 | 539 | // コンテンツ編集メニュー |
504 | 540 | 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; | |
508 | 548 | |
509 | 549 | for ($i = 0; $i < count($menu); $i++){ |
510 | 550 | $widgetId = $menu[$i]['wd_id']; |
@@ -546,17 +586,20 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer | ||
546 | 586 | if (empty($title)) $title = $menu[$i]['wd_name']; // コンテンツ名が取得できないときはウィジェット名を設定 |
547 | 587 | if (empty($title)) continue; |
548 | 588 | |
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; | |
550 | 591 | } |
551 | - $menuTag .= '</ul>'; | |
552 | - $menuTag .= '</div>'; | |
553 | 592 | } |
554 | 593 | |
555 | 594 | // サブコンテンツ編集メニュー |
556 | 595 | 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; | |
560 | 603 | |
561 | 604 | for ($i = 0; $i < count($subMenu); $i++){ |
562 | 605 | $widgetId = $subMenu[$i]['wd_id']; |
@@ -577,12 +620,13 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer | ||
577 | 620 | if (empty($title)) $title = $subMenu[$i]['wd_name']; // サブコンテンツ名が取得できないときはウィジェット名を設定 |
578 | 621 | if (empty($title)) continue; |
579 | 622 | |
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; | |
581 | 625 | } |
582 | - $menuTag .= '</ul>'; | |
583 | - $menuTag .= '</div>'; | |
584 | 626 | } |
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; | |
586 | 630 | |
587 | 631 | // アクセスポイントの公開制御 |
588 | 632 | if ($isVisibleSite){ |
@@ -594,12 +638,10 @@ class admin_menu4WidgetContainer extends BaseAdminWidgetContainer | ||
594 | 638 | $iconTitle = 'アクセスポイントを公開'; |
595 | 639 | $iconUrl = $this->gEnv->getRootUrl() . self::SITE_OPEN_ICON_FILE; // アクセスポイント公開 |
596 | 640 | } |
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; | |
601 | 644 | |
602 | - $menuTag .= '</div>'; | |
603 | 645 | return $menuTag; |
604 | 646 | } |
605 | 647 | } |
@@ -14,14 +14,6 @@ | ||
14 | 14 | <patTemplate:tmpl name="menu" visibility="hidden"> |
15 | 15 | <script type="text/javascript"> |
16 | 16 | //<![CDATA[ |
17 | -function goUrl(url) | |
18 | -{ | |
19 | - location.href = url; | |
20 | -} | |
21 | -function goHelp() | |
22 | -{ | |
23 | - location.href = '?task=menuhelp'; | |
24 | -} | |
25 | 17 | function logout() |
26 | 18 | { |
27 | 19 | if (!window.confirm('{_LC_MSG_LOGOUT}')) return false; |
@@ -37,42 +29,6 @@ function siteOpen(device, isOpen){ | ||
37 | 29 | return true; |
38 | 30 | } |
39 | 31 | $(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 | - | |
76 | 32 | // キー設定 |
77 | 33 | $(document).keyup(function(e){ |
78 | 34 | if (e.which == 36) location.href = '{TOP_URL}'; // HOMEキー |
@@ -85,32 +41,42 @@ $(function(){ | ||
85 | 41 | <input type="hidden" name="device" /> |
86 | 42 | <input type="hidden" name="isopen" /> |
87 | 43 | </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> | |
101 | 54 | </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> | |
105 | 76 | </div> |
77 | +</nav> | |
106 | 78 | </patTemplate:tmpl> |
107 | 79 | <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>--> | |
114 | 80 | <div class="m3configclose"><a href="#" onclick="window.close();"><img src="{CLOSE_IMAGE}" alt="{_LC_LABEL_CLOSE}" title="{_LC_LABEL_CLOSE}" /></a></div> |
115 | 81 | </patTemplate:tmpl> |
116 | 82 | <patTemplate:tmpl name="prevnextbutton" visibility="hidden"> |