Ignore:
Timestamp:
2012/02/13 22:05:16 (12 years ago)
Author:
h_yoshimoto
Message:

#1632 優先度変更処理、各エラー処理、アラート処理の実装

Location:
branches/version-2_12-dev/data
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_12-dev/data/Smarty/templates/admin/system/plugin.tpl

    r21467 r21501  
    2727        $('input[id^=plugin_enable]').change(function(event) { 
    2828            var data = {}; 
    29              
    3029            // モード(有効 or 無効) 
    3130            data.mode = event.target.name; 
    32             // プラグインID 
    33             data.plugin_id = event.target.value; 
    34             data['<!--{$smarty.const.TRANSACTION_ID_NAME}-->'] = '<!--{$transactionid}-->'; 
    35             $.ajax({ 
    36                 type : 'POST', 
    37                 url : location.pathname, 
    38                 dataType : "json", 
    39                 data: data, 
    40                 cache : false, 
    41                 error : remoteException, 
    42                 success : function(data, dataType) { 
    43                         alert(data.message); 
    44                         location.href = location.pathname; 
    45                 } 
    46             }); 
     31             
     32            if(data.mode === 'disable') { 
     33                result = window.confirm('プラグインを無効しても宜しいですか?'); 
     34            } else if(data.mode === 'enable') { 
     35                result = window.confirm('プラグインを有効にしても宜しいですか?'); 
     36            } 
     37            if(result){ 
     38                // プラグインID 
     39                data.plugin_id = event.target.value; 
     40                data['<!--{$smarty.const.TRANSACTION_ID_NAME}-->'] = '<!--{$transactionid}-->'; 
     41                $.ajax({ 
     42                    type : 'POST', 
     43                    url : location.pathname, 
     44                    dataType : "json", 
     45                    data: data, 
     46                    cache : false, 
     47                    error : remoteException, 
     48                    success : function(data, dataType) { 
     49                            window.location.reload(); 
     50                            alert(data.message); 
     51                    } 
     52                }); 
     53            } 
    4754        }); 
    4855 
     
    6572        $('input[id="' + select_id + '"]').removeAttr("disabled"); 
    6673    } 
     74     
     75    function install() { 
     76        if (window.confirm('プラグインをインストールしても宜しいでしょうか?')){ 
     77            fnModeSubmit('install', '', ''); 
     78        } 
     79    } 
     80     
     81    function uninstall(plugin_id, plugin_code) { 
     82        if (window.confirm('一度削除したデータは元に戻せません。\nプラグインを削除しても宜しいですか?')){ 
     83           fnSetFormValue('plugin_id', plugin_id); 
     84           fnModeSubmit('uninstall', 'plugin_code', plugin_code); 
     85        } 
     86    } 
     87     
     88    function update(plugin_id, plugin_code) { 
     89        if (window.confirm('プラグインをアップデートしても宜しいですか?')){ 
     90           removeUpdateFile('update_file_' + plugin_id); 
     91           fnSetFormValue('plugin_id', plugin_id); 
     92           fnModeSubmit('update','plugin_code', plugin_code); 
     93        } 
     94    } 
     95     
     96    function priority(plugin_id) { 
     97        if (window.confirm('プラグインをアップデートしても宜しいですか?')){ 
     98           fnModeSubmit('priority','plugin_id',plugin_id); 
     99        } 
     100    } 
     101     
     102     
    67103//]]> 
    68104</script> 
     
    74110<input type="hidden" name="plugin_id" value="" /> 
    75111<input type="hidden" name="plugin_code" value="" /> 
    76  
     112<input type="hidden" name="priority" value="" /> 
    77113<div id="system" class="contents-main"> 
    78114    <h2>プラグイン登録</h2> 
     
    84120                <span class="attention"><!--{$arrErr[$key]}--></span> 
    85121                <input type="file" name="<!--{ $key }-->" class="box45" size="43"  style="<!--{$arrErr[$key]|sfGetErrorColor}--> <!--{if $arrErr[$key]}--> background-color:<!--{$smarty.const.ERR_COLOR|h}--><!--{/if}-->"> 
    86                 <a class="btn-action" href="javascript:;" onclick="fnModeSubmit('install', '', '');return false;"><span class="btn-next">インストール</span></a> 
     122                <a class="btn-action" href="javascript:;" onclick="install(); return false;"><span class="btn-next">インストール</span></a> 
    87123            </td> 
    88124        </tr> 
     
    95131        <table class="system-plugin" width="900"> 
    96132            <col width="10%" /> 
    97             <col width="80%" /> 
    98             <col width="10%" /> 
     133            <col width="77" /> 
     134            <col width="13%" /> 
    99135            <tr> 
    100136                <th colspan="2">機能説明</th> 
    101                 <th>優先度<a class="btn-action" href="javascript:;" onclick="fnModeSubmit('priority','','');return false;"><span class="btn-next">反映</span></a></th> 
     137                <th>優先度</th> 
    102138            </tr> 
    103139            <!--{section name=data loop=$plugins}--> 
     
    150186                                <a class="update_link" href="#" name="<!--{$plugin.plugin_id}-->">アップデート</a>&nbsp;|&nbsp; 
    151187                            <!-- 削除 --> 
    152                                 <a  href="javascript:;" name="uninstall" onclick="fnSetFormValue('plugin_id', '<!--{$plugin.plugin_id}-->'); fnModeSubmit('uninstall','plugin_code','<!--{$plugin.plugin_code}-->'); return false;">削除</a>&nbsp;|&nbsp; 
     188                                <a  href="javascript:;" name="uninstall" onclick="uninstall(<!--{$plugin.plugin_id}-->, '<!--{$plugin.plugin_code}-->'); return false;">削除</a>&nbsp;|&nbsp; 
    153189                            <!-- 有効/無効 --> 
    154190                                <!--{if $plugin.enable == $smarty.const.PLUGIN_ENABLE_TRUE}--> 
    155191                                    <input id="plugin_enable" type="checkbox" name="disable" value="<!--{$plugin.plugin_id}-->" id="login_memory" checked="checked">有効</input><br/> 
    156192                                <!--{else}--> 
    157                                     <input id="plugin_enable" type="checkbox" name="enable" value="<!--{$plugin.plugin_id}-->" id="login_memory" onclick="fnSetFormValue('plugin_id', '<!--{$plugin.plugin_id}-->'); return false;">有効にする</input><br/> 
     193                                    <input id="plugin_enable" type="checkbox" name="enable" value="<!--{$plugin.plugin_id}-->" id="login_memory">有効にする</input><br/> 
    158194                                <!--{/if}--> 
    159195 
     
    161197                                <div id="plugin_update_<!--{$plugin.plugin_id}-->" style="display: none">                                 
    162198                                    <input id="update_file_<!--{$plugin.plugin_id}-->" name="<!--{$plugin.plugin_code}-->" type="file" style="<!--{$arrErr[$key]|sfGetErrorColor}-->" class="box30" size="30" <!--{if $arrErr[$key]}-->style="background-color:<!--{$smarty.const.ERR_COLOR|h}-->"<!--{/if}--> /> 
    163                                     <a class="btn-action" href="javascript:;" onclick="removeUpdateFile('update_file_<!--{$plugin.plugin_id}-->'); fnSetFormValue('plugin_id', '<!--{$plugin.plugin_id}-->'); fnModeSubmit('update','plugin_code','<!--{$plugin.plugin_code}-->');return false;"><span class="btn-next">アップデート</span></a> 
     199                                    <a class="btn-action" href="javascript:;" onclick="update(<!--{$plugin.plugin_id}-->, '<!--{$plugin.plugin_code}-->'); return false;"><span class="btn-next">アップデート</span></a> 
    164200                                </div> 
    165201                        </div> 
     
    168204                <!--{assign var=key value="rank"}--> 
    169205                <td class="center"> 
    170                     <input type="text" name="priority[<!--{$plugin.plugin_id}-->]" value="<!--{$plugin.rank|h}-->" size="1" class="rank" /><br/> 
     206                    <span class="attention"><!--{$arrErr.priority[$plugin.plugin_id]}--></span> 
     207                    <input type="text" class="center" name="priority" value="<!--{$plugin.rank|h}-->" size="1" class="rank" /> 
     208                    <a class="btn-action" href="javascript:;" onclick="priority(<!--{$plugin.plugin_id}-->);return false;"><span class="btn-next">変更</span></a><br/> 
    171209                </td> 
    172210            </tr> 
  • branches/version-2_12-dev/data/class/pages/admin/system/LC_Page_Admin_System_Plugin.php

    r21490 r21501  
    8484                    $plugin_file_name = $plugin_file['name']; 
    8585                    $plugin_code = $this->getPluginCode($plugin_file_name); 
    86  
     86                     
    8787                    // 既に登録されていないか判定. 
    8888                    if ($this->isInstalledPlugin($plugin_code) === false) { 
     
    106106                    $plugin_code = $objFormParam->getValue('plugin_code'); 
    107107                    $plugin_id = $objFormParam->getValue('plugin_id'); 
    108  
     108                    $plugin = SC_Helper_Plugin_Ex::getPluginByPluginId($plugin_id); 
     109                     
    109110                    $this->arrErr = $this->uninstallPlugin($plugin_id, $plugin_code); 
    110111                    // 完了メッセージアラート設定. 
    111112                    if ($this->isError($this->arrErr) === false) { 
    112                         $plugin = SC_Helper_Plugin_Ex::getPluginByPluginId($plugin_id); 
    113113                        // テンプレート再生成. 
    114114                        $this->remakeTemplate(); 
     
    182182            // 優先度. 
    183183            case 'priority': 
    184                 // TODO 優先度の変更処理. 
    185 //                // 優先度を取得 
    186 //                $priority_array = $objFormParam->getValue('priority'); 
    187 //                 
    188 //                // 優先度の更新 
    189 //                $objQuery =& SC_Query_Ex::getSingletonInstance(); 
    190 //                foreach ($priority_array as $key => $value) { 
    191 //                    $sqlval['rank'] = $value; 
    192 //                    $objQuery->update('dtb_plugin', $sqlval, "plugin_id = ?", array($key)); 
    193 //                } 
    194 //                break; 
     184                // エラーチェック 
     185                $arrErr = $objFormParam->checkError(); 
     186                $plugin_id = $objFormParam->getValue('plugin_id'); 
     187                if ($this->isError($arrErr) === false) { 
     188                    // 優先度の更新 
     189                    $priority = $objFormParam->getValue('priority'); 
     190                    $this->updatePriority($plugin_id, $priority); 
     191                } else { 
     192                    // エラーメッセージを詰め直す. 
     193                    $this->arrErr['priority'][$plugin_id] = $arrErr['priority']; 
     194                } 
     195                 
     196                break; 
    195197            default: 
    196198                break; 
     
    231233        $objFormParam->addParam('plugin_id', 'plugin_id', INT_LEN, '', array('NUM_CHECK', 'MAX_LENGTH_CHECK')); 
    232234        $objFormParam->addParam('plugin_code', 'plugin_code', MTEXT_LEN, '', array('ALPHA_CHECK', 'MAX_LENGTH_CHECK')); 
    233         $objFormParam->addParam("優先順位", 'priority', INT_LEN, 'n', array('NUM_CHECK', 'MAX_LENGTH_CHECK')); 
     235        $objFormParam->addParam('優先度', 'priority', INT_LEN, '', array('NUM_CHECK', 'MAX_LENGTH_CHECK')); 
    234236    } 
    235237 
     
    287289    function checkPluginFile($file_path, $plugin_code, $key_file) { 
    288290        $arrErr = array(); 
    289  
     291         
    290292        // Archive_Tarを生成します. 
    291293        $tar_obj = new Archive_Tar($file_path); 
    292  
     294         
    293295        // 圧縮ファイル名とディレクトリ名が同一であるかを判定します. 
    294296        if ($this->checkUploadFileName($tar_obj, $plugin_code) === false) { 
     
    383385            return $arrErr; 
    384386        } 
    385  
     387         
    386388        // リフレクションオブジェクトを生成. 
    387389        $objReflection = new ReflectionClass($plugin_code); 
     
    404406        $plugin_html_dir = PLUGIN_HTML_REALDIR . $plugin_code; 
    405407        $this->makeDir($plugin_html_dir); 
    406  
     408         
    407409        $plugin = SC_Helper_Plugin_Ex::getPluginByPluginCode($plugin_code); 
    408410        $arrErr = $this->execPlugin($plugin['plugin_id'], $plugin_code, 'install'); 
    409  
     411         
    410412        return $arrErr; 
    411413    } 
     
    535537        $this->makeDir($unpack_dir); 
    536538        $objUpFile->moveTempFile(); 
    537  
     539         
    538540        // 解凍 
    539541        $update_plugin_file_path = $unpack_dir . "/" . $unpack_file_name; 
     
    623625 
    624626        return $arrErr; 
     627    } 
     628     
     629    /** 
     630     * 優先度を更新します. 
     631     *  
     632     * @param int $plugin_id プラグインID 
     633     * @param int $priority 優先度 
     634     * @return integer 更新件数 
     635     */ 
     636    function updatePriority($plugin_id, $priority) { 
     637        $objQuery =& SC_Query_Ex::getSingletonInstance(); 
     638        // UPDATEする値を作成する。 
     639        $sqlval['rank'] = $priority; 
     640        $sqlval['update_date'] = 'CURRENT_TIMESTAMP'; 
     641        $where = "plugin_id = ?"; 
     642        // UPDATEの実行 
     643        $ret = $objQuery->update('dtb_plugin', $sqlval, $where, array($plugin_id)); 
     644        return $ret; 
    625645    } 
    626646 
     
    703723    function execPlugin($plugin_id, $plugin_code, $exec_func) { 
    704724        $arrErr = array(); 
    705             // インスタンスの生成. 
    706             $objPlugin = new $plugin_code(); 
    707             if (method_exists($objPlugin, $exec_func) === true) { 
    708                 $arrErr = $objPlugin->$exec_func($plugin_id); 
    709             } else { 
    710                 $arrErr['plugin_error'] = "※ " . $plugin_code . ".php に" . $exec_func . "が見つかりません。<br/>"; 
    711             } 
     725        if (method_exists($plugin_code, $exec_func) === true) { 
     726            call_user_func(array($plugin_code, $exec_func), $plugin_id); 
     727        } else { 
     728            $arrErr['plugin_error'] = "※ " . $plugin_code . ".php に" . $exec_func . "が見つかりません。<br/>"; 
     729        } 
    712730 
    713731        return $arrErr; 
Note: See TracChangeset for help on using the changeset viewer.