Changeset 22641


Ignore:
Timestamp:
2013/03/09 18:57:53 (11 years ago)
Author:
Yammy
Message:

フックポイントのON/OFF機能実装

refs #2179

Location:
branches/camp/camp-2_13-plugin/data
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/camp/camp-2_13-plugin/data/Smarty/templates/admin/ownersstore/plugin_hookpoint_list.tpl

    r22629 r22641  
    2929         * 「有効/有効にする」チェックボタン押下時 
    3030         */ 
    31         $('input[id^=plugin_enable]').change(function(event) { 
     31        $('input[name^=plugin_hookpoint_use]').change(function(event) { 
    3232            // モード(有効 or 無効) 
    33             var mode = event.target.name; 
     33            var value = event.target.value; 
     34            var id = event.target.id; 
    3435 
    35             if(mode === 'disable') { 
    36                 result = window.confirm('プラグインを無効にしても宜しいですか?'); 
     36            if(value === 'f') { 
     37                result = window.confirm('無効にしても宜しいですか?'); 
    3738                if(result === false) { 
    38                     $(event.target).attr("checked", "checked"); 
     39                    //$(event.target).attr("checked", "checked"); 
     40                    event.target.value = 't'; 
    3941                } 
    40             } else if(mode === 'enable') { 
    41                 result = window.confirm('プラグインを有効にしても宜しいですか?'); 
     42            } else if(value === 't') { 
     43                result = window.confirm('有効にしても宜しいですか?'); 
    4244                if(result === false) { 
    43                     $(event.target).attr("checked", ""); 
     45                    //$(event.target).attr("checked", "checked"); 
     46                    event.target.value = 'f '; 
    4447                } 
    4548            } 
    46             if(result === true){ 
    47                 // プラグインID 
    48                 var plugin_id = event.target.value; 
    49                 fnModeSubmit(mode, 'plugin_id', plugin_id); 
    50             } 
    51         }); 
    52  
    53     /** 
    54      * アップデートリンク押下時の処理. 
    55      */ 
    56     $('.update_link').click(function(event) { 
    57         var plugin_id = event.target.name; 
    58         $('div[id="plugin_update_' + plugin_id + '"]').toggle("slow"); 
     49            // プラグインフックID 
     50            fnModeSubmit('update_use', 'plugin_hookpoint_id', id); 
    5951        }); 
    6052    }); 
    61  
    62     /** 
    63      * アプデートボタン押下時の処理. 
    64      * アップデート対象ファイル以外はPOSTされない様にdisabled属性を付与 
    65      */ 
    66     function removeUpdateFile(select_id) { 
    67         $('input[name="update_plugin_file"]').attr("disabled", "disabled"); 
    68         $('input[id="' + select_id + '"]').removeAttr("disabled"); 
    69     } 
    70  
    71     /** 
    72      * インストール 
    73      */ 
    74     function install() { 
    75         if (window.confirm('プラグインをインストールしても宜しいでしょうか?')){ 
    76             fnModeSubmit('install','',''); 
    77         } 
    78     } 
    79  
    80     /** 
    81      * アンインストール(削除) 
    82      */ 
    83     function uninstall(plugin_id, plugin_code) { 
    84         if (window.confirm('一度削除したデータは元に戻せません。\nプラグインを削除しても宜しいですか?')){ 
    85             fnSetFormValue('plugin_id', plugin_id); 
    86             fnModeSubmit('uninstall', 'plugin_code', plugin_code); 
    87         } 
    88     } 
    89  
    90     /** 
    91      * アップデート処理 
    92      */ 
    93     function update(plugin_id, plugin_code) { 
    94         if (window.confirm('プラグインをアップデートしても宜しいですか?')){ 
    95             removeUpdateFile('update_file_' + plugin_id); 
    96             fnSetFormValue('plugin_id', plugin_id); 
    97             fnModeSubmit('update','plugin_code', plugin_code); 
    98         } 
    99     } 
    100  
    101  
    102     /** 
    103      * 優先度変更. 
    104      */ 
    105     function update_priority(plugin_id, plugin_code) { 
    106         var priority = $("*[name=priority_" + plugin_code +"]").val(); 
    107         fnSetFormValue('priority', priority); 
    108         fnModeSubmit('priority','plugin_id',plugin_id); 
    109     } 
    11053 
    11154//]]></script> 
    11255 
    11356<!--<form name="form1" id="form1" method="post" action="?">--> 
    114 <form name="form1" method="post" action="?" enctype="multipart/form-data"> 
     57<form name="form1" method="post" action="?"> 
    11558<input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" /> 
    11659<input type="hidden" name="mode" value="" /> 
    117 <input type="hidden" name="plugin_id" value="" /> 
    118 <input type="hidden" name="plugin_code" value="" /> 
    119 <input type="hidden" name="priority" value="" /> 
     60<input type="hidden" name="plugin_hookpoint_id" value="" /> 
    12061<div id="system" class="contents-main"> 
    12162    <h2>プラグイン競合チェック</h2> 
     
    12768        <span class="attention"><!--{$arrErr.plugin_error}--></span> 
    12869        <table class="system-plugin" width="900"> 
    129             <col width="10%" /> 
    130             <col width="77" /> 
    131             <col width="13%" /> 
     70            <col width="40%" /> 
     71            <col width="5" /> 
     72            <col width="40%" /> 
     73            <col width="15%" /> 
    13274            <tr> 
    13375                <th>フックポイント</th> 
     
    13779            </tr> 
    13880    <!--{foreach from=$arrHookPoint item=hookpoint}--> 
    139     <!--{foreach from=$hookpoint item=val}--> 
    140  
    141  
     81    <!--{foreach from=$hookpoint item=val name="plugin"}--> 
    14282            <tr> 
     83                <!--{if $hookpoint|@count > 0 && $smarty.foreach.plugin.iteration == '1'}--> 
     84                <td rowspan="<!--{$hookpoint|@count}-->"><!--{$val.hook_point}--></td> 
     85                <!--{elseif !$smarty.foreach.plugin.iteration > 1}--> 
    14386                <td><!--{$val.hook_point}--></td> 
    144                 <td><!--{$val.priority}--></td> 
    145                 <td><!--{$val.plugin_name}--></td> 
    146                 <td> 
    147 plugin_hookpoint_id:<!--{$val.plugin_id}-->, plugin_id:<!--{$val.plugin_id}--> 
    148 use_flg:<!--{$val.use_flg}--><br /> 
     87                <!--{/if}--> 
     88                <td<!--{if $val.use_flg == "f"}--> bgcolor="grey"<!--{/if}-->><!--{$val.priority}--></td> 
     89                <td<!--{if $val.use_flg == "f"}--> bgcolor="grey"<!--{/if}-->><!--{$val.plugin_name}--></td> 
     90                <td<!--{if $val.use_flg == "f"}--> bgcolor="grey"<!--{/if}-->> 
     91                <!--{html_radios name="plugin_hookpoint_use[`$val.plugin_hookpoint_id`]" options=$arrUse selected=$val.use_flg id=$val.plugin_hookpoint_id}--> 
    14992                </td> 
    15093            </tr> 
  • branches/camp/camp-2_13-plugin/data/class/pages/admin/ownersstore/LC_Page_Admin_OwnersStore_PluginHookPointList.php

    r22629 r22641  
    5151        $this->tpl_maintitle = 'オーナーズストア'; 
    5252        $this->tpl_subtitle = 'プラグインフックポイント管理'; 
     53 
     54        $this->arrUse[t] = 'ON'; 
     55        $this->arrUse[f] = 'OFF'; 
    5356    } 
    5457 
     
    7881        $mode = $this->getMode(); 
    7982        switch ($mode) { 
    80             // 削除 
    81             case 'uninstall': 
     83            // ON/OFF 
     84            case 'update_use': 
    8285                // エラーチェック 
    8386                $this->arrErr = $objFormParam->checkError(); 
    84                 if ($this->isError($this->arrErr) === false) { 
    85                     $plugin_id = $objFormParam->getValue('plugin_id'); 
    86                     $plugin = SC_Plugin_Util_Ex::getPluginByPluginId($plugin_id); 
    87                     $this->arrErr = $this->uninstallPlugin($plugin); 
    88                     if ($this->isError($this->arrErr) === false) { 
    89                         // TODO 全プラグインのインスタンスを保持したまま後続処理が実行されるので、全てのインスタンスを解放する。 
    90                         unset($GLOBALS['_SC_Helper_Plugin_instance']); 
    91                         // コンパイルファイルのクリア処理 
    92                         SC_Utils_Ex::clearCompliedTemplate(); 
    93                         $this->tpl_onload = "alert('" . $plugin['plugin_name'] ."を削除しました。');"; 
    94                     } 
    95                 } 
    96                 break; 
    97             // 有効化 
    98             case 'enable': 
    99                 // エラーチェック 
    100                 $this->arrErr = $objFormParam->checkError(); 
    101                 if ($this->isError($this->arrErr) === false) { 
    102                     $plugin_id = $objFormParam->getValue('plugin_id'); 
    103                     // プラグイン取得. 
    104                     $plugin = SC_Plugin_Util_Ex::getPluginByPluginId($plugin_id); 
    105                     $this->arrErr = $this->enablePlugin($plugin); 
    106                     if ($this->isError($this->arrErr) === false) { 
    107                         // TODO 全プラグインのインスタンスを保持したまま後続処理が実行されるので、全てのインスタンスを解放する。 
    108                         unset($GLOBALS['_SC_Helper_Plugin_instance']); 
    109                         // コンパイルファイルのクリア処理 
    110                         SC_Utils_Ex::clearCompliedTemplate(); 
    111                         $this->tpl_onload = "alert('" . $plugin['plugin_name'] . "を有効にしました。');"; 
    112                     } 
    113                 } 
    114                 break; 
    115             // 無効化 
    116             case 'disable': 
    117                 // エラーチェック 
    118                 $this->arrErr = $objFormParam->checkError(); 
    119                 if ($this->isError($this->arrErr) === false) { 
    120                     $plugin_id = $objFormParam->getValue('plugin_id'); 
    121                     // プラグイン取得. 
    122                     $plugin = SC_Plugin_Util_Ex::getPluginByPluginId($plugin_id); 
    123                     $this->arrErr = $this->disablePlugin($plugin); 
    124                     if ($this->isError($this->arrErr) === false) { 
    125                         // TODO 全プラグインのインスタンスを保持したまま後続処理が実行されるので、全てのインスタンスを解放する。 
    126                         unset($GLOBALS['_SC_Helper_Plugin_instance']); 
    127                         // コンパイルファイルのクリア処理 
    128                         SC_Utils_Ex::clearCompliedTemplate(); 
    129                         $this->tpl_onload = "alert('" . $plugin['plugin_name'] . "を無効にしました。');"; 
    130                     } 
     87                if (!(count($this->arrErr) > 0)) { 
     88                    $arrPluginHookpointUse = $objFormParam->getValue('plugin_hookpoint_use'); 
     89                    $plugin_hookpoint_id = $objFormParam->getValue('plugin_hookpoint_id'); 
     90                $use_flg = ($arrPluginHookpointUse[$plugin_hookpoint_id] == 't') ? true :false; 
     91                SC_Plugin_Util_Ex::setPluginHookPointChangeUse($plugin_hookpoint_id, $use_flg); 
    13192                } 
    13293                break; 
     
    157118     * @return void 
    158119     */ 
    159     function initParam(&$objFormParam, $mode) 
     120    function initParam(&$objFormParam) 
    160121    { 
    161         $objFormParam->addParam('mode', 'mode', INT_LEN, '', array('ALPHA_CHECK', 'MAX_LENGTH_CHECK')); 
    162         $objFormParam->addParam('plugin_id', 'plugin_id', INT_LEN, '', array('NUM_CHECK', 'MAX_LENGTH_CHECK')); 
    163         if ($mode === 'priority') { 
    164             $objFormParam->addParam('優先度', 'priority', INT_LEN, '', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); 
    165         } 
     122        $objFormParam->addParam('モード', 'mode', STEXT_LEN, '', array('MAX_LENGTH_CHECK')); 
     123        $objFormParam->addParam('ON/OFFフラグ', 'plugin_hookpoint_use', INT_LEN, '', array('EXIST_CHECK', 'MAX_LENGTH_CHECK')); 
     124        $objFormParam->addParam('プラグインフックポイントID', 'plugin_hookpoint_id', INT_LEN, '', array('NUM_CHECK', 'EXIST_CHECK', 'MAX_LENGTH_CHECK')); 
    166125    } 
    167126 
  • branches/camp/camp-2_13-plugin/data/class/plugin/SC_Plugin_Util.php

    r22629 r22641  
    155155    { 
    156156        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    157         $objQuery->setOrder('priority DESC'); 
     157        $objQuery->setOrder('hook_point ASC, priority DESC'); 
    158158        $cols = 'dtb_plugin_hookpoint.*, dtb_plugin.priority, dtb_plugin.plugin_name'; 
    159159        $from = 'dtb_plugin_hookpoint LEFT JOIN dtb_plugin USING(plugin_id)'; 
    160         $arrRet = $objQuery->select($cols, $from); 
     160        $where = 'enable = 1'; 
     161        $arrRet = $objQuery->select($cols, $from, $where); 
    161162        $arrList = array(); 
    162163        foreach ($arrRet AS $key=>$val) { 
    163             $arrList[$val['plugin_hookpoint_id']][$val['plugin_id']] = $val; 
     164            $arrList[$val['hook_point']][$val['plugin_id']] = $val; 
    164165        } 
    165166        return $arrList; 
     
    192193        return $arrErr; 
    193194    } 
     195 
     196    /** 
     197     * フックポイントのON/OFF変更 
     198     * 
     199     * @param intger $plugin_hookpoint_id  フックポイントID 
     200     * @return bolean $use_flg:ture=ON、false=OFF 
     201     */ 
     202    function setPluginHookPointChangeUse($plugin_hookpoint_id, $use_flg = false) { 
     203        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
     204        $sqlval['use_flg'] = $use_flg; 
     205        $objQuery->update('dtb_plugin_hookpoint', $sqlval, 'plugin_hookpoint_id = ?', array($plugin_hookpoint_id)); 
     206    } 
    194207} 
Note: See TracChangeset for help on using the changeset viewer.