Ignore:
Timestamp:
2012/02/23 15:34:37 (12 years ago)
Author:
h_yoshimoto
Message:

#1603 #1632 プラグイン仕様変更に伴う修正

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

Legend:

Unmodified
Added
Removed
  • branches/version-2_12-dev/data/class/SC_Display.php

    r21514 r21546  
    7272        } 
    7373        $this->assignobj($page); 
     74        $this->view->setPage($page); 
    7475        $this->response->setResposeBody($this->view->getResponse($page->getTemplate())); 
    7576    } 
    76  
     77     
    7778    /** 
    7879     * リロードを行う. 
  • branches/version-2_12-dev/data/class/SC_View.php

    r21514 r21546  
    2727 
    2828    var $_smarty; 
     29     
     30    var $objPage; 
    2931 
    3032    // コンストラクタ 
     
    8991            } 
    9092        } 
     93        // 各filterをセットします. 
     94        $this->registFilter(); 
    9195        $res =  $this->_smarty->fetch($template); 
    9296        if (ADMIN_MODE == '1') { 
     
    97101        return $res; 
    98102    } 
    99  
     103     
     104    /** 
     105     * Pageオブジェクトをセットします. 
     106     * @param LC_Page_Ex $objPage  
     107     * @return void 
     108     */ 
     109    function setPage(LC_Page_Ex $objPage) { 
     110       $this->objPage = $objPage; 
     111    } 
     112     
     113    /** 
     114     * Smartyのfilterをセットします.  
     115     * @return void 
     116     */ 
     117    function registFilter() { 
     118        $this->_smarty->register_prefilter(array(&$this, 'prefilter_transforme')); 
     119        $this->_smarty->register_outputfilter(array(&$this, 'outputfilter_transforme')); 
     120    } 
     121     
     122    /** 
     123     * prefilter用のフィルタ関数。プラグイン用のフックポイント処理を実行 
     124     * @param string $source ソース 
     125     * @param Smarty_Compiler $smarty Smartyのコンパイラクラス 
     126     * @return string $source ソース 
     127     */ 
     128    function prefilter_transforme($source, &$smarty) { 
     129        // フックポイントを実行. 
     130        $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance(); 
     131        $objPlugin->doAction('prefilterTransforme', array(&$source, $this->objPage)); 
     132        return $source; 
     133    } 
     134 
     135    /** 
     136     * outputfilter用のフィルタ関数。プラグイン用のフックポイント処理を実行 
     137     * @param string $source ソース 
     138     * @param Smarty_Compiler $smarty Smartyのコンパイラクラス 
     139     * @return string $source ソース 
     140     */ 
     141    function outputfilter_transforme($source, &$smarty) { 
     142        // フックポイントを実行. 
     143        $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance(); 
     144        $objPlugin->doAction('outputfilterTransforme', array(&$source, $this->objPage)); 
     145        return $source; 
     146    } 
     147     
    100148    // テンプレートの処理結果を表示 
    101149    function display($template, $no_error = false) { 
  • branches/version-2_12-dev/data/class/helper/SC_Helper_Plugin.php

    r21527 r21546  
    3535    // プラグインのIDの配列. 
    3636    var $arrPluginIds = array(); 
    37  
     37    // HeadNaviブロックの配列 
     38    var $arrHeadNaviBlocsByPlugin = array(); 
     39     
    3840    /** 
    3941     * 有効なプラグインのロード. プラグインエンジンが有効になっていない場合は 
     
    285287 
    286288    /** 
    287      * 全てのテンプレートを再生成する 
    288      * 
    289      * @param boolean $test_mode true の場合、validate のみを行い、実際にテンプレートの再生成は行わない 
    290      * @return void 
    291      */ 
    292     function remakeAllTemplates($test_mode = false) { 
    293         $this->load(); // 最新のデータを読み込みなおす 
    294         if (!is_writable(PLUGIN_TMPL_CACHE_REALDIR)) { 
    295             // TODO エラー処理; 
    296             exit; 
    297         } 
    298         // キャッシュテンプレートを削除 
    299         if ($test_mode === false) { 
    300             SC_Utils_Ex::deleteFile(PLUGIN_TMPL_CACHE_REALDIR, false); 
    301         } 
    302         $objTemplateTransformList = SC_Plugin_TemplateTransformList::getSingletonInstance(); 
    303         $objTemplateTransformList->init(); 
    304         // プラグインのsetTemplateTransformerを実行します. 
    305         foreach ($this->arrPluginInstances as $objPlugin) { 
    306             if (method_exists($objPlugin, 'setTemplateTransformer') === true) { 
    307                 // SC_Plugin_TemplateTransformList::arrConfsByTemplatesにトランスフォーム情報をセットします 
    308                 $objPlugin->setTemplateTransformer(); 
    309             } 
    310         } 
    311         // SC_Plugin_TemplateTransformList::arrConfsByTemplatesにセットされた情報を元にトランスフォームの実行 
    312         $objTemplateTransformList->transformAll($test_mode); 
    313     } 
    314  
    315     /** 
    316      * テンプレートキャッシュファイルのフルパスを返す. 
    317      * 
    318      * @param string $tpl_mainpage  返すキャッシュファイルのパスの対象となるテンプレート. 
    319      * @param object $objPage  ページオブジェクト. 
    320      */ 
    321     function getPluginTemplateCachePath($objPage) { 
    322         // main_template の差し替え 
    323         if (strpos($objPage->tpl_mainpage, SMARTY_TEMPLATES_REALDIR) === 0) { 
    324             // フルパスで指定された 
    325             $dir = ''; 
    326             $default_tpl_mainpage = str_replace(SMARTY_TEMPLATES_REALDIR, '', $objPage->tpl_mainpage); 
    327         } else { 
    328             // フロントページ or 管理画面を判定 
    329             $dir = ($objPage instanceof LC_Page_Admin) ? 'admin/' : TEMPLATE_NAME . '/'; 
    330             $default_tpl_mainpage = $objPage->tpl_mainpage; 
    331         } 
    332         return PLUGIN_TMPL_CACHE_REALDIR . $dir . $default_tpl_mainpage; 
    333     } 
    334  
    335     /** 
    336289     * ブロックの配列から有効でないpluginのブロックを除外して返します. 
    337290     * 
     
    353306    } 
    354307 
    355     /** 
    356      * テンプレートの再生成 
    357      * 
     308   /** 
     309     * テンプレートのヘッダに追加するPHPのURLをセットする 
     310     * 
     311     * @param string $url PHPファイルのURL 
    358312     * @return void 
    359313     */ 
    360     function remakeTemplate() { 
    361         $this->remakeAllTemplates(true); 
    362         $this->remakeAllTemplates(); 
     314    function setHeadNavi($url) { 
     315        $this->arrHeadNaviBlocsByPlugin[$url] = TARGET_ID_HEAD; 
     316    } 
     317 
     318    /** 
     319     * PHPのURLをテンプレートのヘッダに追加する 
     320     * 
     321     * @param array|null $arrBlocs  配置情報を含めたブロックの配列 
     322     * @return void 
     323     */ 
     324    function setHeadNaviBlocs(&$arrBlocs) { 
     325        foreach ($this->arrHeadNaviBlocsByPlugin as $key => $value) { 
     326            $arrBlocs[] = array( 
     327                'target_id' =>$value, 
     328                'php_path' => $key 
     329            ); 
     330        } 
    363331    } 
    364332} 
  • branches/version-2_12-dev/data/class/pages/LC_Page.php

    r21514 r21546  
    121121 
    122122        // HeadNaviにpluginテンプレートを追加する. 
    123         $objTemplateTransformList = SC_Plugin_TemplateTransformList::getSingletonInstance(); 
    124         $objTemplateTransformList->setHeadNaviBlocs($this->arrPageLayout['HeadNavi']); 
    125  
    126         // plugin側で生成したページがあるかを検証し、ある場合は tpl_mainpage にセットする. 
    127123        $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance(); 
    128         $plugin_tmplpath = $objPlugin->getPluginTemplateCachePath($this); 
    129         if (file_exists($plugin_tmplpath)) $this->tpl_mainpage = $plugin_tmplpath; 
     124        $objPlugin->setHeadNaviBlocs($this->arrPageLayout['HeadNavi']); 
    130125 
    131126        // スーパーフックポイントを実行. 
    132         $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance(); 
    133127        $objPlugin->doAction('lc_page_process', array($this)); 
    134128 
  • branches/version-2_12-dev/data/class/pages/admin/LC_Page_Admin.php

    r21515 r21546  
    9292        if ($_SERVER['PHP_SELF'] !== ROOT_URLPATH . ADMIN_DIR . 'system/plugin.php') { 
    9393 
    94             // プラグインによってトランスフォームされたテンプレートがあればセットする 
     94            // HeadNaviにpluginテンプレートを追加する. 
    9595            $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance(); 
    96             $plugin_tmplpath = $objPlugin->getPluginTemplateCachePath($this); 
    97             if (file_exists($plugin_tmplpath)) $this->tpl_mainpage = $plugin_tmplpath; 
     96            $objPlugin->setHeadNaviBlocs($this->arrPageLayout['HeadNavi']); 
    9897 
    9998            // スーパーフックポイントを実行. 
    100             $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance(); 
    10199            $objPlugin->doAction('lc_page_process', array($this)); 
    102  
    103             // HeadNaviにpluginテンプレートを追加する. 
    104             $objTemplateTransformList = SC_Plugin_TemplateTransformList::getSingletonInstance(); 
    105             $objTemplateTransformList->setHeadNaviBlocs($this->arrPageLayout['HeadNavi']); 
    106100        } 
    107101 
  • branches/version-2_12-dev/data/class/pages/admin/system/LC_Page_Admin_System_Plugin.php

    r21527 r21546  
    6969        // パラメーター管理クラス 
    7070        $objFormParam = new SC_FormParam_Ex(); 
     71        $mode = $this->getMode();    
    7172        // パラメーター情報の初期化 
    72         $this->lfInitParam($objFormParam); 
     73        $this->lfInitParam($objFormParam, $mode); 
    7374        $objFormParam->setParam($_POST); 
    7475 
     
    9091                        $this->arrErr = $this->installPlugin($plugin_code, $plugin_file_name); 
    9192                        if ($this->isError($this->arrErr) === false) { 
    92                             // テンプレート再生成. 
    93                             $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance(); 
    94                             $objPlugin->remakeTemplate(); 
     93                            // コンパイルファイルのクリア処理 
     94                            SC_Utils_Ex::clearCompliedTemplate(); 
    9595                            $this->tpl_onload = "alert('プラグインをインストールしました。');"; 
    9696                        } 
     
    112112                    // 完了メッセージアラート設定. 
    113113                    if ($this->isError($this->arrErr) === false) { 
    114                         // テンプレート再生成. 
    115                         $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance(); 
    116                         $objPlugin->remakeTemplate(); 
     114                        // コンパイルファイルのクリア処理 
     115                        SC_Utils_Ex::clearCompliedTemplate(); 
    117116                        $this->tpl_onload = "alert('" . $plugin['plugin_name'] ."を削除しました。');"; 
    118117                    } 
     
    130129                    $this->arrErr = $this->enablePlugin($plugin_id, $plugin['plugin_code']);                     
    131130                    if ($this->isError($this->arrErr) === false) { 
    132                         // テンプレート再生成. 
    133                         $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance(); 
    134                         $objPlugin->remakeTemplate(); 
     131                        // コンパイルファイルのクリア処理 
     132                        SC_Utils_Ex::clearCompliedTemplate(); 
    135133                        $this->tpl_onload = "alert('" . $plugin['plugin_name'] . "を有効にしました。');"; 
    136134                    } 
     
    148146                    $this->arrErr = $this->disablePlugin($plugin_id, $plugin['plugin_code']);                     
    149147                    if ($this->isError($this->arrErr) === false) { 
    150                         // テンプレート再生成. 
    151                         $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance(); 
    152                         $objPlugin->remakeTemplate(); 
     148                        // コンパイルファイルのクリア処理 
     149                        SC_Utils_Ex::clearCompliedTemplate(); 
    153150                        $this->tpl_onload = "alert('" . $plugin['plugin_name'] . "を無効にしました。');"; 
    154151                    } 
     
    172169                            $this->arrErr = $this->updatePlugin($plugin_code, $update_plugin_file_name, $plugin_code, $objFormParam->getValue('plugin_id')); 
    173170                            if ($this->isError($this->arrErr) === false) { 
    174                                 // テンプレート再生成. 
    175                                 $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance(); 
    176                                 $objPlugin->remakeTemplate(); 
     171                                // コンパイルファイルのクリア処理 
     172                                SC_Utils_Ex::clearCompliedTemplate(); 
    177173                                $this->tpl_onload = "alert('プラグインをアップデートしました。');"; 
    178174                            } 
     
    192188                    $priority = $objFormParam->getValue('priority'); 
    193189                    $this->updatePriority($plugin_id, $priority); 
    194                     // テンプレート再生成. 
    195                     $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance(); 
    196                     $objPlugin->remakeTemplate(); 
     190                    // コンパイルファイルのクリア処理 
     191                    SC_Utils_Ex::clearCompliedTemplate(); 
    197192                } else { 
    198193                    // エラーメッセージを詰め直す. 
     
    231226     * パラメーター初期化. 
    232227     * 
    233      * @param object $objFormParam 
     228     * @param SC_FormParam_Ex $objFormParam 
     229     * @param string $mode モード 
    234230     * @return void 
    235      *  
    236      */ 
    237     function lfInitParam(&$objFormParam) { 
     231     */ 
     232    function lfInitParam(&$objFormParam, $mode) { 
    238233        $objFormParam->addParam('mode', 'mode', INT_LEN, '', array('ALPHA_CHECK', 'MAX_LENGTH_CHECK')); 
    239234        $objFormParam->addParam('plugin_id', 'plugin_id', INT_LEN, '', array('NUM_CHECK', 'MAX_LENGTH_CHECK')); 
    240235        $objFormParam->addParam('plugin_code', 'plugin_code', MTEXT_LEN, '', array('ALPHA_CHECK', 'MAX_LENGTH_CHECK')); 
    241         $objFormParam->addParam('優先度', 'priority', INT_LEN, '', array('NUM_CHECK', 'MAX_LENGTH_CHECK')); 
     236        if($mode === "priority"){ 
     237            $objFormParam->addParam('優先度', 'priority', INT_LEN, '', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK')); 
     238        } 
    242239    } 
    243240 
     
    245242     * ファイルパラメーター初期化. 
    246243     * 
    247      * @param object $objUpFile SC_UploadFileのインスタンス. 
     244     * @param SC_UploadFile_Ex $objUpFile SC_UploadFileのインスタンス. 
    248245     * @param string $key 登録するキー. 
    249246     * @return void 
     
    738735    } 
    739736 
    740 //    /** 
    741 //     * テンプレート再生成 
    742 //     * 
    743 //     * @return void 
    744 //     */ 
    745 //    function remakeTemplate() { 
    746 //        $objPlugin = SC_Helper_Plugin_Ex::getSingletonInstance(); 
    747 //        $objPlugin->remakeAllTemplates(true); 
    748 //        $objPlugin->remakeAllTemplates(); 
    749 //    } 
    750  
    751737    /** 
    752738     * plugin_idをキーにdtb_pluginのstatusを更新します. 
     
    852838     * 
    853839     * @param string $dir_path 作成するディレクトリのパス 
     840     * @return void 
    854841     */ 
    855842    function makeDir($dir_path) { 
  • branches/version-2_12-dev/data/class/util/SC_Utils.php

    r21527 r21546  
    21772177        return $flg; 
    21782178    } 
     2179     
     2180   /** 
     2181     * コンパイルファイルを削除します. 
     2182     * @return void 
     2183     */ 
     2184    function clearCompliedTemplate() { 
     2185        // コンパイルファイルの削除処理 
     2186        SC_Utils_Ex::deleteFile(COMPILE_REALDIR, false); 
     2187        SC_Utils_Ex::deleteFile(COMPILE_ADMIN_REALDIR, false); 
     2188        SC_Utils_Ex::deleteFile(SMARTPHONE_COMPILE_REALDIR, false); 
     2189        SC_Utils_Ex::deleteFile(MOBILE_COMPILE_REALDIR, false); 
     2190    } 
    21792191} 
  • branches/version-2_12-dev/data/require_plugin.php

    r21500 r21546  
    2222 */ 
    2323 
    24 require_once (PLUGIN_ENGINE_REALDIR . 'SC_Plugin_TemplateTransformList.php'); 
    25 require_once (PLUGIN_ENGINE_REALDIR . 'SC_Plugin_TemplateTransformList.php'); 
    26 require_once (PLUGIN_ENGINE_REALDIR . 'SC_Plugin_TemplateSelector.php'); 
    2724require_once (PLUGIN_UPLOAD_REALDIR . 'SC_Plugin_Base.php'); 
Note: See TracChangeset for help on using the changeset viewer.