OSDN Git Service

ウィジェットの動作に必要なシステムバージョンを保持する。
authornaoki hirata <naoki@magic3.org>
Thu, 24 Apr 2014 11:35:56 +0000 (20:35 +0900)
committernaoki hirata <naoki@magic3.org>
Thu, 24 Apr 2014 11:35:56 +0000 (20:35 +0900)
12 files changed:
include/global.php
include/manager/designManager.php
include/sql/update/2014040701_to_2014042301.sql [new file with mode: 0644]
include/sql/update_widgets.sql
templates/_admin4/css/style.css
widgets/admin_main/include/container/admin_mainWidgetlistWidgetContainer.php
widgets/admin_main/include/template/menudef.tmpl.html
widgets/admin_main/include/template/menudef_detail.tmpl.html
widgets/admin_main/include/template/smenudef.tmpl.html
widgets/admin_main/include/template/smenudef_detail.tmpl.html
widgets/default_menu/include/template/admin.tmpl.html
widgets/default_menu/include/template/admin_list.tmpl.html

index ac1abcd..d889aa3 100644 (file)
@@ -236,7 +236,8 @@ define('M3_REQUEST_PARAM_STAMP',                                    'stamp');                       // 公開発行ID
 define('M3_REQUEST_PARAM_OPTION',                                      'opt');                         // 通信オプション
 define('M3_REQUEST_PARAM_OPERATION_COMMAND',           'cmd');                         // 実行処理
 define('M3_REQUEST_PARAM_OPERATION_WIKI_COMMAND',      'wcmd');                        // Wikiコマンド実行
-define('M3_REQUEST_PARAM_OPERATION_TASK',                      'task');                        // ウィジェット間共通処理
+define('M3_REQUEST_PARAM_OPERATION_TASK',                      'task');                        // 画面指定用タスク
+define('M3_REQUEST_PARAM_OPERATION_ANCHOR',                    'anchor');                      // 画面指定用アンカー
 define('M3_REQUEST_PARAM_OPERATION_ACT',                       'act');                         // クライアントからの実行処理
 define('M3_REQUEST_PARAM_OPERATION_LANG',                      'lang');                        // 言語指定表示
 define('M3_REQUEST_PARAM_SERIAL_NO',                           'serial');                      // シリアル番号
index bbd462f..23bdf6e 100644 (file)
@@ -262,5 +262,55 @@ class DesignManager extends Core
                }
                return $destTag;
        }
+       /**
+        * 管理画面用ナビゲーションタブを作成
+        *
+        * @param array $tabDef                         タブの定義
+        * @param string $activeTask            選択状態のタスク
+        * @param bool $withBreadcrumb          パンくずリストを付加するかどうか
+        * @param string $breadcrumbTitle       パンくずリストのトップタイトル
+        * @return string                                       タブのHTML
+        */
+       function createConfigNavTab($tabDef, $activeTask = '', $withBreadcrumb = false, $breadcrumbTitle = '')
+       {
+               $tabDefCount = count($tabDef);
+               if ($tabDefCount <= 0) return '';
+
+               $tabHtml = '<ul id="m3navtab" class="nav nav-tabs">';
+               for ($i = 0; $i < $tabDefCount; $i++){
+                       $tabItem = $tabDef[$i];
+                       $name = $tabItem->name;
+                       $url = $tabItem->url;
+                       $active = '';
+                       if ($tabItem->active) $active = ' class="active"';
+                       $tabHtml .= '<li' . $active . '>';
+                       if (empty($url)){
+                               $tabHtml .= convertToHtmlEntity($name);
+                       } else {
+                               $tabHtml .= '<a href="' . convertUrlToHtmlEntity($url) . '" data-toggle="tab">' . convertToHtmlEntity($name) . '</a>';
+                       }
+                       $tabHtml .= '</li>';
+               }
+               $tabHtml .= '</ul>';
+               return $tabHtml;
+/*
+<ul class="nav nav-tabs" id="myTab">
+  <li class="active"><a href="#home" data-toggle="tab">Home</a></li>
+  <li><a href="#profile" data-toggle="tab">Profile</a></li>
+  <li><a href="#messages" data-toggle="tab" class="clickable">Messages(click!)</a></li>
+
+<li class="dropdown">
+    <a class="dropdown-toggle" data-toggle="dropdown" href="#">
+      Dropdown <span class="caret"></span>
+    </a>
+    <ul class="dropdown-menu">
+  <li><a href="#profile" >sample1</a></li>
+  <li><a href="#messages" >sample2</a></li>
+    </ul>
+</li>
+  <li><a href="#settings" data-toggle="tab">Settings</a></li>
+</ul>
+*/
+       }
 }
 ?>
diff --git a/include/sql/update/2014040701_to_2014042301.sql b/include/sql/update/2014040701_to_2014042301.sql
new file mode 100644 (file)
index 0000000..9794bfe
--- /dev/null
@@ -0,0 +1,25 @@
+-- *
+-- * バージョンアップ用スクリプト
+-- *
+-- * PHP versions 5
+-- *
+-- * LICENSE: This source file is licensed under the terms of the GNU General Public License.
+-- *
+-- * @package    Magic3 Framework
+-- * @author     平田直毅(Naoki Hirata) <naoki@aplo.co.jp>
+-- * @copyright  Copyright 2006-2014 Magic3 Project.
+-- * @license    http://www.gnu.org/copyleft/gpl.html  GPL License
+-- * @version    SVN: $Id$
+-- * @link       http://www.magic3.org
+-- *
+-- --------------------------------------------------------------------------------------------------
+-- バージョンアップ用スクリプト
+-- --------------------------------------------------------------------------------------------------
+
+-- *** システムベーステーブル ***
+
+-- ウィジェット情報マスター
+ALTER TABLE _widgets ADD wd_required_version      VARCHAR(10)    DEFAULT ''                    NOT NULL;      -- 動作に必要なシステムバージョン
+
+-- *** システム標準テーブル ***
+
index 2536d9a..48e0052 100644 (file)
@@ -47,8 +47,8 @@ INSERT INTO _widgets
 -- ウィジェット情報(PC用/メニュー)\r
 DELETE FROM _widgets WHERE wd_id = 'default_menu';\r
 INSERT INTO _widgets\r
-(wd_id,          wd_name,              wd_type, wd_type_option, wd_category_id, wd_template_type, wd_version, wd_joomla_class, wd_author,      wd_copyright, wd_license, wd_official_level, wd_description, wd_add_script_lib, wd_add_script_lib_a,                         wd_has_admin, wd_use_instance_def, wd_initialized, wd_cache_type, wd_view_control_type, wd_release_dt, wd_install_dt, wd_create_dt) VALUES\r
-('default_menu', 'デフォルトメニュー', 'menu',  'nav',          'menu',         'bootstrap', '3.0.0',    '', 'Naoki Hirata', 'Magic3.org', 'GPL',      10,                '複数のメニューが作成できる多階層のメニューです。「user3」ポジションに配置するとナビゲーションメニューが表示できます。', '', 'jquery-ui.tabs', true,  true,              true, 2,          1, '2014-03-14', now(),         now());\r
+(wd_id,          wd_name,              wd_type, wd_type_option, wd_category_id, wd_template_type, wd_version, wd_required_version, wd_author,      wd_copyright, wd_license, wd_official_level, wd_description, wd_add_script_lib, wd_add_script_lib_a,                         wd_has_admin, wd_use_instance_def, wd_initialized, wd_cache_type, wd_view_control_type, wd_release_dt, wd_install_dt, wd_create_dt) VALUES\r
+('default_menu', 'デフォルトメニュー', 'menu',  'nav',          'menu',         'bootstrap',      '3.1.0b',   '2.8.15',        'Naoki Hirata', 'Magic3.org', 'GPL',      10,                '複数のメニューが作成できる多階層のメニューです。「user3」ポジションに配置するとナビゲーションメニューが表示できます。', '', 'jquery-ui.tabs', true,  true,              true, 2,          1, '2014-04-24', now(),         now());\r
 DELETE FROM _widgets WHERE wd_id = 'accordion_menu';\r
 INSERT INTO _widgets\r
 (wd_id,            wd_name,                  wd_type, wd_category_id, wd_version, wd_author,      wd_copyright, wd_license, wd_official_level, wd_description, wd_add_script_lib, wd_add_script_lib_a,                         wd_has_admin, wd_use_instance_def, wd_initialized, wd_cache_type, wd_view_control_type, wd_release_dt, wd_install_dt, wd_create_dt) VALUES\r
index be84907..1395760 100644 (file)
@@ -602,6 +602,11 @@ background-color: #0081c2;
        width:95%;
        margin: 10px auto;
 }
+.m3config_fullwidth {
+       position: fixed;
+       left: 0px;
+       right: 0px;
+}
 /****** edit line ******/
 .m3line_image {
        width:16px;
index 1d82249..ac3c535 100644 (file)
@@ -28,6 +28,7 @@ class admin_mainWidgetlistWidgetContainer extends admin_mainBaseWidgetContainer
        private $showDetail;                    // 詳細表示するかどうか
        private $defaultImageSize = 32;         // ウィジェット画像サイズ
        private $isExistsWidgetList;            // ウィジェットが存在するかどうか
+       private $systemVer;                     // システムバージョン
        const SCRIPT_FILE_EXT = 'js';           // JavaScriptファイル拡張子
        const CSS_FILE_EXT = 'css';             // cssファイル拡張子
        const PHP_FILE_EXT = 'php';             // phpファイル拡張子
@@ -53,6 +54,8 @@ class admin_mainWidgetlistWidgetContainer extends admin_mainBaseWidgetContainer
                $this->widgetTypeArray = array( array(  'name' => $this->_('For PC'),                   'value' => '0'),        // PC用
                                                                                array(  'name' => $this->_('For Mobile'),               'value' => '1'),        // 携帯用
                                                                                array(  'name' => $this->_('For Smartphone'),   'value' => '2'));       // スマートフォン用
+                                                                               
+               $this->systemVer = $this->gSystem->getSystemConfig(M3_TB_FIELD_DB_VERSION);
        }
        /**
         * テンプレートファイルを設定
@@ -801,6 +804,7 @@ class admin_mainWidgetlistWidgetContainer extends admin_mainBaseWidgetContainer
        {
                $version = $fetchedRow['wd_version'];
                $latestVersion = $fetchedRow['wd_latest_version'];
+               $requiredVersion = $fetchedRow['wd_required_version'];          // 動作に必要なシステムバージョン
                
                // ウィジェットが存在するかどうかチェック
                $isExistsWidget = false;
@@ -883,10 +887,15 @@ class admin_mainWidgetlistWidgetContainer extends admin_mainBaseWidgetContainer
                $latestVer = '';
                $regex = '/([0-9\.]+)([a-z]*)/';
                if (preg_match($regex, $latestVersion, $matches)){
-                       if (version_compare($version, $latestVersion) == -1){           // 最新バージョンが現在のバージョンよりも上の場合のみ表示
+                       if (version_compare($version, $latestVersion) < 0){             // 最新バージョンが現在のバージョンよりも上の場合のみ表示
                                $optionVerStr = strtolower($matches[2]);
                                if (empty($optionVerStr)){              // 付加記号なしの場合
-                                       $latestVer = '<span class="available"><a href="javascript:void(0);" onclick="updateWidget(\'' . $widgetId . '\');">' . $this->convertToDispString($latestVersion) . '</a></span>';
+                                       // 動作に必要なシステムバージョン以上の場合のみバージョンアップ可能
+                                       if (version_compare($requiredVersion, $this->systemVer) <= 0){
+                                               $latestVer = '<span class="available"><a href="javascript:void(0);" onclick="updateWidget(\'' . $widgetId . '\');">' . $this->convertToDispString($latestVersion) . '</a></span>';
+                                       } else {
+                                               $latestVer = '<span class="available">' . $this->convertToDispString($latestVersion) . '</span>';
+                                       }
                                } else {
                                        switch ($optionVerStr){
                                                case 'x':               // 緊急バージョンアップ
index c0d06f5..e26153d 100644 (file)
@@ -161,7 +161,7 @@ $(function(){
 <input type="hidden" name="treesrc" />\r
 <input type="hidden" name="treedest" />\r
 <input type="hidden" name="treepos" />\r
-<table width="90%">\r
+<table>\r
 <tr><td><span {_HELP_MENUDEF_LIST}><label>{_LC_LABEL_MENU_ITEM_LIST}</label></span>\r
     <select name="menuid" onchange="selectMenu();" {SEL_MENU_ID_DISABLED}>\r
         <patTemplate:tmpl name="menu_id_list">\r
index d686f31..d579e1c 100644 (file)
@@ -104,7 +104,7 @@ $(function(){
 <input type="hidden" name="serial" value="{SERIAL}" />
 <input type="hidden" name="parentid" value="{PARENT_ID}" />
 <input type="hidden" name="menuid" value="{MENU_ID}" />
-<table width="90%">
+<table>
 <tr><td><span {_HELP_MENUDEF_DETAIL}><label>{_LC_LABEL_MENU_ITEM_DETAIL}</label></span></td>
 <td align="right"><span {_HELP_MENUDEF_RET_BTN}><input type="button" class="button" onclick="cancelItem();" value="{_LC_LABEL_GO_BACK}" /></span>
 </td></tr>
index 7879563..22f8c1a 100644 (file)
@@ -117,7 +117,7 @@ $(function(){
 <input type="hidden" name="serial" />\r
 <input type="hidden" name="seriallist" value="{SERIAL_LIST}" />\r
 <input type="hidden" name="menuitems" />\r
-<table width="90%">\r
+<table>\r
 <tr><td><span {_HELP_MENUDEF_LIST}><label>{_LC_LABEL_MENU_ITEM_LIST}</label></span>\r
     <select name="menuid" onchange="selectMenu();" {SEL_MENU_ID_DISABLED}>\r
         <patTemplate:tmpl name="menu_id_list">\r
index 4d422d0..8ddabf8 100644 (file)
@@ -103,7 +103,7 @@ $(function(){
 <input type="hidden" name="act" />
 <input type="hidden" name="serial" value="{SERIAL}" />
 <input type="hidden" name="menuid" value="{MENU_ID}" />
-<table width="90%">
+<table>
 <tr><td><span {_HELP_MENUDEF_DETAIL}><label>{_LC_LABEL_MENU_ITEM_DETAIL}</label></span></td>
 <td align="right"><span {_HELP_MENUDEF_RET_BTN}><input type="button" class="button" onclick="cancelItem();" value="{_LC_LABEL_GO_BACK}" /></span>
 </td></tr>
index 1a93987..7e090a6 100644 (file)
@@ -141,8 +141,7 @@ $(function(){
 </table>\r
 </form>\r
            </div>\r
-               <!--<div id="menu_define" style="padding:0;">-->\r
-           <div id="menu_define" class="tab-pane">\r
+           <div id="menu_define" class="tab-pane m3config_fullwidth">\r
            <iframe id="menu_def" name="menu_def" style="width:100%; height:2000px; border:none;" allowTransparency="true" frameborder="0">{_LC_LABEL_NENU_DEF}</iframe>\r
            </div>\r
 </div>\r
index aa98a2e..c3e179b 100644 (file)
@@ -116,8 +116,7 @@ $(function(){
 </table>\r
 </form>\r
            </div>\r
-           <!--<div id="menu_define">-->\r
-               <div id="menu_define" class="tab-pane">\r
+               <div id="menu_define" class="tab-pane m3config_fullwidth">\r
            <iframe id="menu_def" name="menu_def" style="width:100%; height:2000px; border:none;" allowTransparency="true" frameborder="0">{_LC_LABEL_NENU_DEF}</iframe>\r
            </div>\r
 </div>\r