バージョン選択

フォーラム

メニュー

オンライン状況

31 人のユーザが現在オンラインです。 (20 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 31
もっと...

サイト内検索

機能要望 > 管理機能 > プラグイン管理で、「アップロード」と「インストール」が分離されているとありがたいです。

管理機能

新規スレッドを追加する

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
sumida
投稿日時: 2013/6/12 18:41
対応状況: −−−
仙人
登録日: 2013/2/10
居住地: 広島県呉市ときどき瀬戸内海
投稿: 641
Re: プラグイン管理で、「アップロード」と「インストール」が分離されているとありがたいです。
参考にやってみました。

data/class/pages/admin/ownersstore/LC_Page_Admin_OwnersStore.php


// added
            // リロード
            case 'reload':
                // エラーチェック
                $this->arrErr = $objFormParam->checkError();
                if ($this->isError($this->arrErr) === false) {
                    $plugin_id = $objFormParam->getValue('plugin_id');
                    $plugin = SC_Plugin_Util_Ex::getPluginByPluginId($plugin_id);
                    $this->arrErr = $this->reload($plugin, $plugin['plugin_name']);
                    if ($this->isError($this->arrErr) === false) {
                        // コンパイルファイルのクリア処理
                        SC_Utils_Ex::clearCompliedTemplate();
                        $this->tpl_onload = "alert('" . $plugin['plugin_name'] ."をリロードしました。');";
                    }
                }
                if ($this->isError($this->arrErr) === true) {
                    $this->tpl_onload = "alert('" . $this->arrErr[$plugin['plugin_name']] . "');";
                }
                break;
// added
            default:
                break;
        }


以下の関数reloadには、不具合があります。
修正版を、以降の投稿に掲載しています。(次ページあたりにあります。)

// added
    /**
     * pluginをキーにリロードします.
     *
     * @param array $plugin プラグイン情報
     * @param string $key キー.
     * @return array エラー情報を格納した連想配列.
     */
    function reload($plugin, $key) {
        $arrErr = $this->requirePluginFile(PLUGIN_UPLOAD_REALDIR . $plugin['plugin_code'] . '/plugin_info.php', $key);
        if ($this->isError($arrErr) === true) {
            return $arrErr;
        }
        // プラグインが有効な場合に無効化処理を実行
        $plugin_enable = false;
        if ($plugin['enable'] == PLUGIN_ENABLE_TRUE){
            $plugin_enable = true;
            // 無効化処理を実行します.
            $arrErr = $this->execPlugin($plugin, $plugin['class_name'], 'disable');
            if ($this->isError($arrErr) === true) {
                return $arrErr;
            }
            // プラグインを無効にします.
            $this->updatePluginEnable($plugin['plugin_id'], PLUGIN_ENABLE_FALSE);
        }

        // アンインストール処理を実行します.
        $arrErr = $this->execPlugin($plugin, $plugin['class_name'], 'uninstall');
        if ($this->isError($arrErr) === true) {
            return $arrErr;
        }
        SC_Plugin_Util_Ex::deletePluginByPluginId($plugin['plugin_id']);

        // リフレクションオブジェクトを生成.
        $objReflection = new ReflectionClass('plugin_info');
        $arrPluginInfo = $this->getPluginInfo($objReflection);

        // プラグイン情報をDB登録
        if ($this->registerData($arrPluginInfo) === false) {
            $arrErr[$key] = '※ DB登録に失敗しました。<br/>';
            return $arrErr;
        }

        // プラグイン情報を取得
        $plugin = SC_Plugin_Util_Ex::getPluginByPluginCode($arrPluginInfo['PLUGIN_CODE']);

        // クラスファイルを読み込み.
        $plugin_class_file_path = $this->getPluginFilePath($plugin['plugin_code'], $plugin['class_name']);
        $arrErr = $this->requirePluginFile($plugin_class_file_path, $key);
        if ($this->isError($arrErr) === true) {
            return $arrErr;
        }
        $arrErr = $this->execPlugin($plugin, $plugin['class_name'], 'install');
        if ($this->isError($arrErr) === true) {
            return $arrErr;
        }
        // プラグインが有効だったか
        if ($plugin_enable === true) {
            // 有効化処理を実行します.
            $arrErr = $this->execPlugin($plugin, $plugin['class_name'], 'enable');
            if ($this->isError($arrErr) === true) {
                return $arrErr;
            }
            // プラグインを有効にします.
            $this->updatePluginEnable($plugin['plugin_id'], PLUGIN_ENABLE_TRUE);
        }
        return $arrErr;
    }
// added


data/Smarty/templates/admin/ownerstore/plugin.tpl


// added
    /**
     * リロード
     */
    function reload(plugin_id, plugin_code) {
        if (window.confirm('プラグインをリロードしても宜しいでしょうか?')){
            fnSetFormValue('plugin_id', plugin_id);
            fnModeSubmit('reload','plugin_code', plugin_code);
        }
    }
// added

//]]></script>



                             <!-- アップデート -->
                                <a class="update_link" href="java script:;" name="<!--{$plugin.plugin_id}-->">アップデート</a>&nbsp;|&nbsp;
<!--{* added *}-->
                            <!-- リロード -->
                                <a  href="java script:;" name="reload" onclick="reload(<!--{$plugin.plugin_id}-->, '<!--{$plugin.plugin_code}-->'); return false;">リロード</a>&nbsp;|&nbsp;
<!--{* added *}-->
                            <!-- 削除 -->
                                <a  href="java script:;" name="uninstall" onclick="uninstall(<!--{$plugin.plugin_id}-->, '<!--{$plugin.plugin_code}-->'); return false;">削除</a>&nbsp;|&nbsp;

追記
6/14 以下について修正
・リロード後、プラグイン自身の有効化を行っていなかった。
・無効のプラグインをリロードすると、無条件に有効にしていた。
フラット表示 前のトピック | 次のトピック


題名 投稿者 日時
   プラグイン管理で、「アップロード」と「インストール」が分離されているとありがたいです。 sumida 2013/6/8 18:48
     Re: プラグイン管理で、「アップロード」と「インストール」が分離されているとありがたいです。 sumida 2013/6/9 17:14
       Re: プラグイン管理で、「アップロード」と「インストール」が分離されているとありがたいです。 sumida 2013/6/11 13:36
         Re: プラグイン管理で、「アップロード」と「インストール」が分離されているとありがたいです。 tao_s 2013/6/11 15:25
           Re: プラグイン管理で、「アップロード」と「インストール」が分離されているとありがたいです。 nanasess 2013/6/11 16:01
             Re: プラグイン管理で、「アップロード」と「インストール」が分離されているとありがたいです。 sumida 2013/6/12 10:19
               Re: プラグイン管理で、「アップロード」と「インストール」が分離されているとありがたいです。 sumida 2013/6/12 17:58
               » Re: プラグイン管理で、「アップロード」と「インストール」が分離されているとありがたいです。 sumida 2013/6/12 18:41
                   違うパターンもやってもました。(前回分と共存できます。) sumida 2013/6/13 15:19
                     Re: 違うパターンもやってもました。(前回分と共存できます。) eccube_admin 2013/6/14 13:04
                       Re: 違うパターンもやってもました。(前回分と共存できます。) sumida 2013/6/14 15:00
                   リロードでアンインストールが実行できていない。 sumida 2013/7/4 14:43
                     Re: リロードでアンインストールが実行できていない。 sumida 2013/7/4 16:59

 



ログイン



統計情報

総メンバー数は75,051名です
総投稿数は104,353件です

投稿数ランキング

1
seasoft
7333
2
468
3217
3
AMUAMU
2712
4
nanasess
2202
5
umebius
2085
6
yuh
1664
7
red
1535
8
h_tanaka
1189
9
tsuji
942
10
fukap
907
11
shutta
835
12
tao_s
794
13 ramrun 789
14 karin 689
15 sumida 641
16
homan
633
17 DELIGHT 572
18
patapata
502
19
flealog
485
20 tonton 437
Copyright© EC-CUBE CO.,LTD. All Rights Reserved.