リビジョン | e7b1bdf74202aad2ed067b492c3c85af1e4d7613 (tree) |
---|---|
日時 | 2013-08-05 10:32:10 |
作者 | naoki hirata <naoki@magi...> |
コミッター | naoki hirata |
管理画面メニューバーからのサイトの公開制御機能追加。
@@ -46,20 +46,24 @@ | ||
46 | 46 | -webkit-box-shadow:0px 3px 4px #591E12 inset; |
47 | 47 | -box-shadow:0px 3px 4px #591E12 inset;*/ |
48 | 48 | } |
49 | -#m3menubar a.ldd_subfoot{ | |
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{ | |
50 | 57 | display:block; |
51 | 58 | clear:both; |
52 | - padding:15px 20px; | |
53 | - text-transform:uppercase; | |
59 | + padding:5px 10px; | |
60 | + white-space: nowrap; | |
54 | 61 | /* font-size:12px;*/ |
55 | 62 | /* -moz-box-shadow:0px 0px 2px #777 inset; |
56 | 63 | -webkit-box-shadow:0px 0px 2px #777 inset; |
57 | 64 | -box-shadow:0px 0px 2px #777 inset;*/ |
58 | 65 | } |
59 | -#m3menubar .device img { | |
60 | - margin: 10px 7px; | |
61 | -} | |
62 | -#m3menubar .device .static { | |
63 | - display:inline-block; | |
64 | - height:45px; | |
66 | +#m3menubar .ldd_submenu span { | |
67 | + cursor:pointer; | |
68 | + margin-right:50px; | |
65 | 69 | } |
@@ -37,12 +37,20 @@ class admin_menu3WidgetContainer extends BaseAdminWidgetContainer | ||
37 | 37 | const PC_CLOSED_ICON_FILE = '/images/system/device/pc_closed.png'; // PCアイコン(非公開) |
38 | 38 | const SMARTPHONE_CLOSED_ICON_FILE = '/images/system/device/smartphone_closed.png'; // スマートフォンアイコン(非公開) |
39 | 39 | const MOBILE_CLOSED_ICON_FILE = '/images/system/device/mobile_closed.png'; // 携帯アイコン(非公開) |
40 | + const SITE_OPEN_ICON_FILE = '/images/system/site_open24.png'; // アクセスポイント公開 | |
41 | + const SITE_CLOSE_ICON_FILE = '/images/system/site_close24.png'; // アクセスポイント非公開 | |
40 | 42 | const MAX_SITENAME_LENGTH = 20; // サイト名の最大文字数 |
41 | 43 | const ICON_SIZE = 24; // アイコンサイズ |
42 | 44 | const PREVIEW_ICON_SIZE = 24; // プレビューアイコンサイズ |
43 | 45 | const HELP_TITLE = 'ヘルプ'; |
44 | 46 | const MENU_TITLE_CONTENT = 'コンテンツ管理'; // コンテンツ編集メニューのタイトル |
45 | 47 | const MENU_TITLE_SUB_CONTENT = '補助コンテンツ管理'; // サブコンテンツ編集メニューのタイトル |
48 | + | |
49 | + // DB定義値 | |
50 | + const CF_SITE_IN_PUBLIC = 'site_in_public'; // サイト公開状況 | |
51 | + const CF_SITE_PC_IN_PUBLIC = 'site_pc_in_public'; // PC用サイトの公開状況 | |
52 | + const CF_SITE_MOBILE_IN_PUBLIC = 'site_mobile_in_public'; // 携帯用サイトの公開状況 | |
53 | + const CF_SITE_SMARTPHONE_IN_PUBLIC = 'site_smartphone_in_public'; // スマートフォン用サイトの公開状況 | |
46 | 54 | |
47 | 55 | /** |
48 | 56 | * コンストラクタ |
@@ -89,9 +97,75 @@ class admin_menu3WidgetContainer extends BaseAdminWidgetContainer | ||
89 | 97 | |
90 | 98 | $menu = $request->trimValueOf('menu'); |
91 | 99 | $openBy = $request->trimValueOf(M3_REQUEST_PARAM_OPEN_BY); // ウィンドウオープンタイプ |
100 | + $pageSubId = $request->trimValueOf(M3_REQUEST_PARAM_PAGE_SUB_ID); // ページIDを取得 | |
101 | + $act = $request->trimValueOf('act'); | |
92 | 102 | |
93 | - // ページIDを取得 | |
94 | - $pageSubId = $request->trimValueOf(M3_REQUEST_PARAM_PAGE_SUB_ID); | |
103 | + if ($act == 'opensite'){ // サイト公開制御 | |
104 | + $deviceType = $request->trimIntValueOf('device'); | |
105 | + $isOpen = $request->trimIntValueOf('isopen'); // サイトの公開状況 | |
106 | + | |
107 | + $siteInPublic = $this->gSystem->siteInPublic(); // サイト全体の公開状況 | |
108 | + $sitePcInPublic = $this->gSystem->sitePcInPublic(); // PC用サイトの公開状況 | |
109 | + $siteMobileInPublic = $this->gSystem->siteMobileInPublic(); // 携帯用サイトの公開状況 | |
110 | + $siteSmartphoneInPublic = $this->gSystem->siteSmartphoneInPublic(); // スマートフォン用サイトの公開状況 | |
111 | + | |
112 | + switch ($deviceType){ | |
113 | + case 0: // PC用画面のとき | |
114 | + if ($isOpen){ | |
115 | + if ($siteInPublic){ // 全サイト公開のとき | |
116 | + $this->_db->updateSystemConfig(self::CF_SITE_PC_IN_PUBLIC, 1); // PCサイト公開 | |
117 | + } else { | |
118 | + $this->_db->updateSystemConfig(self::CF_SITE_IN_PUBLIC, 1); // サイト運用開始 | |
119 | + | |
120 | + $this->_db->updateSystemConfig(self::CF_SITE_PC_IN_PUBLIC, 1); // PCサイト公開 | |
121 | + $this->_db->updateSystemConfig(self::CF_SITE_MOBILE_IN_PUBLIC, 0); // 携帯サイト公開 | |
122 | + $this->_db->updateSystemConfig(self::CF_SITE_SMARTPHONE_IN_PUBLIC, 0); // スマートフォンサイト公開 | |
123 | + } | |
124 | + } else { | |
125 | + if ($siteInPublic){ // 全サイト公開のとき | |
126 | + $this->_db->updateSystemConfig(self::CF_SITE_PC_IN_PUBLIC, 0); // PCサイト非公開 | |
127 | + } | |
128 | + } | |
129 | + break; | |
130 | + case 1: // 携帯用画面のとき | |
131 | + if ($isOpen){ | |
132 | + if ($siteInPublic){ // 全サイト公開のとき | |
133 | + $this->_db->updateSystemConfig(self::CF_SITE_MOBILE_IN_PUBLIC, 1); // 携帯サイト公開 | |
134 | + } else { | |
135 | + $this->_db->updateSystemConfig(self::CF_SITE_IN_PUBLIC, 1); // サイト運用開始 | |
136 | + | |
137 | + $this->_db->updateSystemConfig(self::CF_SITE_PC_IN_PUBLIC, 0); // PCサイト公開 | |
138 | + $this->_db->updateSystemConfig(self::CF_SITE_MOBILE_IN_PUBLIC, 1); // 携帯サイト公開 | |
139 | + $this->_db->updateSystemConfig(self::CF_SITE_SMARTPHONE_IN_PUBLIC, 0); // スマートフォンサイト公開 | |
140 | + } | |
141 | + } else { | |
142 | + if ($siteInPublic){ // 全サイト公開のとき | |
143 | + $this->_db->updateSystemConfig(self::CF_SITE_MOBILE_IN_PUBLIC, 0); // 携帯サイト非公開 | |
144 | + } | |
145 | + } | |
146 | + break; | |
147 | + case 2: // スマートフォン用画面のとき | |
148 | + if ($isOpen){ | |
149 | + if ($siteInPublic){ // 全サイト公開のとき | |
150 | + $this->_db->updateSystemConfig(self::CF_SITE_SMARTPHONE_IN_PUBLIC, 1); // スマートフォンサイト公開 | |
151 | + } else { | |
152 | + $this->_db->updateSystemConfig(self::CF_SITE_IN_PUBLIC, 1); // サイト運用開始 | |
153 | + | |
154 | + $this->_db->updateSystemConfig(self::CF_SITE_PC_IN_PUBLIC, 0); // PCサイト公開 | |
155 | + $this->_db->updateSystemConfig(self::CF_SITE_MOBILE_IN_PUBLIC, 0); // 携帯サイト公開 | |
156 | + $this->_db->updateSystemConfig(self::CF_SITE_SMARTPHONE_IN_PUBLIC, 1); // スマートフォンサイト公開 | |
157 | + } | |
158 | + } else { | |
159 | + if ($siteInPublic){ // 全サイト公開のとき | |
160 | + $this->_db->updateSystemConfig(self::CF_SITE_SMARTPHONE_IN_PUBLIC, 0); // スマートフォンサイト非公開 | |
161 | + } | |
162 | + } | |
163 | + break; | |
164 | + } | |
165 | + | |
166 | + // 画面を全体を再表示する | |
167 | + $this->gPage->redirect(); | |
168 | + } | |
95 | 169 | |
96 | 170 | // メニューの表示制御 |
97 | 171 | $menuStatus = $request->trimValueOf('showmenu'); |
@@ -282,15 +356,17 @@ class admin_menu3WidgetContainer extends BaseAdminWidgetContainer | ||
282 | 356 | // PC用サイトアイコン作成 |
283 | 357 | $isActiveSite = $this->gSystem->getSiteActiveStatus(0); // PC用サイト |
284 | 358 | if ($isActiveSite){ |
359 | + $isVisibleSite = false; // 公開中かどうか | |
285 | 360 | $iconTitle = 'PC画面プレビュー'; |
286 | 361 | if ($isOpen && $sitePcInPublic){ |
287 | 362 | $iconUrl = $this->gEnv->getRootUrl() . self::PC_ICON_FILE; |
363 | + $isVisibleSite = true; // 公開中かどうか | |
288 | 364 | } else { |
289 | 365 | $iconUrl = $this->gEnv->getRootUrl() . self::PC_CLOSED_ICON_FILE; // サイト非公開 |
290 | 366 | } |
291 | - $iconTag = '<span class="static"><a href="#" onclick="m3ShowPreviewWindow(0, \'' . $this->gEnv->getDefaultUrl() . '\');return false;">'; | |
367 | + $iconTag = '<div class="static"><a href="#" onclick="m3ShowPreviewWindow(0, \'' . $this->gEnv->getDefaultUrl() . '\');return false;">'; | |
292 | 368 | $iconTag .= '<img src="' . $this->getUrl($iconUrl) . '" width="' . self::PREVIEW_ICON_SIZE . '" height="' . self::PREVIEW_ICON_SIZE . '" border="0" alt="' . $iconTitle . '" title="' . $iconTitle . '" /></a>'; |
293 | - $iconTag .= $this->createContentMenu(0) . '</span>'; // コンテンツ編集メニュー付加 | |
369 | + $iconTag .= $this->createContentMenu(0, $isVisibleSite) . '</div>'; // コンテンツ編集メニュー付加 | |
294 | 370 | $previewTag .= $iconTag; |
295 | 371 | } |
296 | 372 |
@@ -298,14 +374,16 @@ class admin_menu3WidgetContainer extends BaseAdminWidgetContainer | ||
298 | 374 | $isActiveSite = $this->gSystem->getSiteActiveStatus(2); // スマートフォン用サイト |
299 | 375 | if ($isActiveSite){ |
300 | 376 | $iconTitle = 'スマートフォン画面プレビュー'; |
377 | + $isVisibleSite = false; // 公開中かどうか | |
301 | 378 | if ($isOpen && $siteSmartphoneInPublic){ |
302 | 379 | $iconUrl = $this->gEnv->getRootUrl() . self::SMARTPHONE_ICON_FILE; |
380 | + $isVisibleSite = true; // 公開中かどうか | |
303 | 381 | } else { |
304 | 382 | $iconUrl = $this->gEnv->getRootUrl() . self::SMARTPHONE_CLOSED_ICON_FILE;// サイト非公開 |
305 | 383 | } |
306 | - $iconTag = '<span class="static"><a href="#" onclick="m3ShowPreviewWindow(2, \'' . $this->gEnv->getDefaultSmartphoneUrl() . '\');return false;">'; | |
384 | + $iconTag = '<div class="static"><a href="#" onclick="m3ShowPreviewWindow(2, \'' . $this->gEnv->getDefaultSmartphoneUrl() . '\');return false;">'; | |
307 | 385 | $iconTag .= '<img src="' . $this->getUrl($iconUrl) . '" width="' . self::PREVIEW_ICON_SIZE . '" height="' . self::PREVIEW_ICON_SIZE . '" border="0" alt="' . $iconTitle . '" title="' . $iconTitle . '" /></a>'; |
308 | - $iconTag .= $this->createContentMenu(2) . '</span>'; // コンテンツ編集メニュー付加 | |
386 | + $iconTag .= $this->createContentMenu(2, $isVisibleSite) . '</div>'; // コンテンツ編集メニュー付加 | |
309 | 387 | $previewTag .= $iconTag; |
310 | 388 | } |
311 | 389 |
@@ -313,14 +391,16 @@ class admin_menu3WidgetContainer extends BaseAdminWidgetContainer | ||
313 | 391 | $isActiveSite = $this->gSystem->getSiteActiveStatus(1); // 携帯用サイト |
314 | 392 | if ($isActiveSite){ |
315 | 393 | $iconTitle = '携帯画面プレビュー'; |
394 | + $isVisibleSite = false; // 公開中かどうか | |
316 | 395 | if ($isOpen && $siteMobileInPublic){ |
317 | 396 | $iconUrl = $this->gEnv->getRootUrl() . self::MOBILE_ICON_FILE; |
397 | + $isVisibleSite = true; // 公開中かどうか | |
318 | 398 | } else { |
319 | 399 | $iconUrl = $this->gEnv->getRootUrl() . self::MOBILE_CLOSED_ICON_FILE;// サイト非公開 |
320 | 400 | } |
321 | - $iconTag = '<span class="static"><a href="#" onclick="m3ShowPreviewWindow(1, \'' . $this->gEnv->getDefaultMobileUrl() . '\');return false;">'; | |
401 | + $iconTag = '<div class="static"><a href="#" onclick="m3ShowPreviewWindow(1, \'' . $this->gEnv->getDefaultMobileUrl() . '\');return false;">'; | |
322 | 402 | $iconTag .= '<img src="' . $this->getUrl($iconUrl) . '" width="' . self::PREVIEW_ICON_SIZE . '" height="' . self::PREVIEW_ICON_SIZE . '" border="0" alt="' . $iconTitle . '" title="' . $iconTitle . '" /></a>'; |
323 | - $iconTag .= $this->createContentMenu(1) . '</span>'; // コンテンツ編集メニュー付加 | |
403 | + $iconTag .= $this->createContentMenu(1, $isVisibleSite) . '</div>'; // コンテンツ編集メニュー付加 | |
324 | 404 | $previewTag .= $iconTag; |
325 | 405 | } |
326 | 406 | return $previewTag; |
@@ -399,13 +479,14 @@ class admin_menu3WidgetContainer extends BaseAdminWidgetContainer | ||
399 | 479 | * コンテンツ編集メニュー作成 |
400 | 480 | * |
401 | 481 | * @param int $deviceType デバイスタイプ |
482 | + * @param bool $isVisibleSite アクセスポイント公開中かどうか | |
402 | 483 | * @return string メニュータグ |
403 | 484 | */ |
404 | - function createContentMenu($deviceType) | |
485 | + function createContentMenu($deviceType, $isVisibleSite) | |
405 | 486 | { |
406 | 487 | $menu = $this->contentMenu[$deviceType]; // コンテンツ編集メニュー |
407 | 488 | $subMenu = $this->subContentMenu[$deviceType]; // サブコンテンツ編集メニュー |
408 | - if (empty($menu) && empty($subMenu)) return ''; | |
489 | +// if (empty($menu) && empty($subMenu)) return ''; | |
409 | 490 | |
410 | 491 | $menuTag .= '<div class="ldd_submenu ui-widget-header">'; |
411 | 492 | $menuTag .= '<table border="0" cellpadding="0" cellspacing="0" align="center"><tr valign="top"><td>'; |
@@ -492,8 +573,23 @@ class admin_menu3WidgetContainer extends BaseAdminWidgetContainer | ||
492 | 573 | $menuTag .= '</ul>'; |
493 | 574 | $menuTag .= '</div>'; |
494 | 575 | } |
495 | - | |
496 | 576 | $menuTag .= '</td></tr></table>'; |
577 | + | |
578 | + // アクセスポイントの公開制御 | |
579 | + if ($isVisibleSite){ | |
580 | + $openSiteMessage = 'アクセスポイントを非公開'; | |
581 | + $iconTitle = 'アクセスポイントを非公開'; | |
582 | + $iconUrl = $this->gEnv->getRootUrl() . self::SITE_CLOSE_ICON_FILE;// アクセスポイント非公開 | |
583 | + } else { | |
584 | + $openSiteMessage = 'アクセスポイントを公開'; | |
585 | + $iconTitle = 'アクセスポイントを公開'; | |
586 | + $iconUrl = $this->gEnv->getRootUrl() . self::SITE_OPEN_ICON_FILE; // アクセスポイント公開 | |
587 | + } | |
588 | + $menuTag .= '<div class="ldd_subfoot">'; | |
589 | + $menuTag .= '<span onclick="siteOpen(' . $deviceType . ',' . intval(!$isVisibleSite) . ');return false;" style="vertical-align:middle;">'; | |
590 | + $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>'; | |
591 | + $menuTag .= '</div>'; | |
592 | + | |
497 | 593 | $menuTag .= '</div>'; |
498 | 594 | return $menuTag; |
499 | 595 | } |
@@ -5,7 +5,7 @@ | ||
5 | 5 | * |
6 | 6 | * @package Magic3 Framework |
7 | 7 | * @author 平田直毅(Naoki Hirata) <naoki@aplo.co.jp> |
8 | - * @copyright Copyright 2006-2012 Magic3 Project. | |
8 | + * @copyright Copyright 2006-2013 Magic3 Project. | |
9 | 9 | * @license http://www.gnu.org/copyleft/gpl.html GPL License |
10 | 10 | * @version SVN: $Id: index.tmpl.html 5505 2013-01-02 13:24:32Z fishbone $ |
11 | 11 | * @link http://www.magic3.org |
@@ -29,6 +29,13 @@ function logout() | ||
29 | 29 | location.href = '?cmd=logout'; |
30 | 30 | return true; |
31 | 31 | } |
32 | +function siteOpen(device, isOpen){ | |
33 | + document.menu.act.value = 'opensite'; | |
34 | + document.menu.device.value = device; | |
35 | + document.menu.isopen.value = isOpen; | |
36 | + document.menu.submit(); | |
37 | + return true; | |
38 | +} | |
32 | 39 | $(function(){ |
33 | 40 | /** |
34 | 41 | * the menu |
@@ -73,6 +80,11 @@ $(function(){ | ||
73 | 80 | }); |
74 | 81 | //]]> |
75 | 82 | </script> |
83 | +<form method="post" name="menu"> | |
84 | +<input type="hidden" name="act" /> | |
85 | +<input type="hidden" name="device" /> | |
86 | +<input type="hidden" name="isopen" /> | |
87 | +</form> | |
76 | 88 | <div> |
77 | 89 | <ul id="m3menubar" class="ui-widget ui-widget-header"> |
78 | 90 | <li><span onclick="goUrl('{PC_URL}');">{SITE_NAME}</span></li> |