バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

管理機能

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
sumida
投稿日時: 2013/7/4 16:59
対応状況: −−−
仙人
登録日: 2013/2/10
居住地: 広島県呉市ときどき瀬戸内海
投稿: 641
Re: リロードでアンインストールが実行できていない。
結局、reload 関数を、以下のようにしました。

    function reload($plugin, $key) {

        // クラスファイルを読み込み.
        $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;
        }
        // プラグインが有効な場合に無効化処理を実行
        $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');
        SC_Plugin_Util_Ex::deletePluginByPluginId($plugin['plugin_id']);

        // plugin_infoを読み込み.
        $arrErr = $this->requirePluginFile(PLUGIN_UPLOAD_REALDIR . $plugin['plugin_code'] . '/' . 'plugin_info.php', $key);
        if ($this->isError($arrErr) === true) {
            return $arrErr;
        }

        // リフレクションオブジェクトを生成.
        $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;
    }
sumida
投稿日時: 2013/7/4 14:43
対応状況: −−−
仙人
登録日: 2013/2/10
居住地: 広島県呉市ときどき瀬戸内海
投稿: 641
リロードでアンインストールが実行できていない。
リロードの場合のアンインストールがどうも〜?
プラグインの「uninstall」を呼び出そうとすると、このクラスにuninstallメソッドがないとなります。

で、よ〜くみたら、
data/class/pages/admin/ownersstore/LC_Page_Admin_OwnersStore.php


    function reload($plugin, $key) {

        $arrErr = $this->requirePluginFile(PLUGIN_UPLOAD_REALDIR . $plugin['plugin_code'] . '/plugin_info.php', $key);

は、

    function reload($plugin, $key) {

        $plugin_class_file_path = $this->getPluginFilePath($plugin['plugin_code'], $plugin['class_name']);
        $arrErr = $this->requirePluginFile($plugin_class_file_path, $key);

ではないだろうか。
sumida
投稿日時: 2013/6/14 15:00
対応状況: −−−
仙人
登録日: 2013/2/10
居住地: 広島県呉市ときどき瀬戸内海
投稿: 641
Re: 違うパターンもやってもました。(前回分と共存できます。)
すみません。インストール済みの判定フラグにミスがありました。
日を改めて、見直したら、変数名と中身の判定が逆でした。

plugin.tpl

                <tr <!--{if $dirList.installed == true}--> style="background:#C9C9C9;" <!--{/if}-->>
                    <td class="center plugin_img">
                    </td>
                    <td class="plugin_info">
                        <span class="plugin_name">
                            <sapn><!--{$dirList.dir_name|h}--></sapn>
                        </span>
                    </td>
                    <td class="center">
                        <!--{if $dirList.installed == true}-->
                            インストール済み
                        <!--{else}-->
                            <a class="btn-action" href="java script:;" onclick="installL('<!--{$dirList.dir_name}-->'); return false;"><span class="btn-next">インストール</span></a>
                        <!--{/if}-->
                    </td>
                </tr>

LC_Page_Admin_OwnersStore.php

                // インストール済みのプラグインかを判定.
                $foundDirName = false;
                for ($j=0; $j<count($plugins); $j++) {
                    if ($plugins[$j]['plugin_code'] === $dirName) {
                        $foundDirName = true;
                        break;
                    }
                }
                if ($foundDirName) {
                    if ($dirALL === true) {
                        $arrDirLists[$arrCount]['dir_name'] = $dirName;
                        $arrDirLists[$arrCount]['installed'] = true;
                        $arrCount++;
                    }
                } else {
                    $arrDirLists[$arrCount]['dir_name'] = $dirName;
                    $arrDirLists[$arrCount]['installed'] = false;
                    $arrCount++;
                }

追記
LC_Page_Admin_OwnersStore.phpは、こっちのほうがスマートですね

                // インストール済みのプラグインかを判定.
                if ($this->isInstalledPlugin($dirName)) {
                    if ($dirALL === true) {
                        $arrDirLists[$arrCount]['dir_name'] = $dirName;
                        $arrDirLists[$arrCount]['installed'] = true;
                        $arrCount++;
                    }
                } else {
                    $arrDirLists[$arrCount]['dir_name'] = $dirName;
                    $arrDirLists[$arrCount]['installed'] = false;
                    $arrCount++;
                }


追記
$this->tpl_onloadに$this->arrErrを設定すると、エラーの文字列後部に「<br/>」がくっついてくるので、除去する必要があります。
が、以下の修正で対策できます。
LC_Page_Admin_OwnersStore.php
今回、修正分から下記の部分を削除する。

                if ($this->isError($this->arrErr) === true) {
                    $this->tpl_onload = "alert('" . $this->arrErr[$plugin_dir_name] . "');";
                }


plugin.tpl
今回、修正分に、エラーメッセージ用の<span>タグを追加する

                        <span class="plugin_name">
                            <span class="attention"><!--{$arrErr[$dirList.dir_name]}--></span>
                            <sapn><!--{$dirList.dir_name|h}--></sapn>
                        </span>

たびたび変更ですみません。
eccube_admin
投稿日時: 2013/6/14 13:04
対応状況: −−−
管理人
登録日: 2006/9/6
居住地:
投稿: 159
Re: 違うパターンもやってもました。(前回分と共存できます。)
※運営チーム編集※
元の投稿 http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=12779&forum=7&post_id=58907
カット分を再掲載させていただいております。
$arrErr['plugin_file']の記述を$arrErr[$key]に変更

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


    /**
     * インストール
     */
    function install() {
        if (window.confirm('プラグインをインストールしても宜しいでしょうか?')){
            fnModeSubmit('install','','');
        }
    }
// added
    function installL(dir_name) {
        if (window.confirm('プラグインをインストールしても宜しいでしょうか?')){
            fnModeSubmit('installL', 'dir_name', dir_name);
        }
    }
// added



<input type="hidden" name="mode" value="" />
<input type="hidden" name="plugin_id" value="" />
<input type="hidden" name="plugin_code" value="" />
<input type="hidden" name="priority" value="" />
<!--{*  added *}-->
<input type="hidden" name="dir_name" value="" />
<!--{* added *}-->


    <h2>プラグイン登録</h2>
    <table class="form">
        <tr>
            <th>プラグイン<span class="attention"> *</span></th>
            <td>
                <!--{assign var=key value="plugin_file"}-->
                <span class="attention"><!--{$arrErr[$key]}--></span>
                <input type="file" name="<!--{ $key }-->" class="box45" size="43"  style="<!--{$arrErr[$key]|sfGetErrorColor}--> <!--{if $arrErr[$key]}--> background-color:<!--{$smarty.const.ERR_COLOR|h}--><!--{/if}-->">
                <a class="btn-action" href="java script:;" onclick="install(); return false;"><span class="btn-next">インストール</span></a>
            </td>
        </tr>
    </table>
<!--{* added *}-->
    <!--▼ディレクトリ一覧ここから-->
    <h2>インストールしていないプラグイン一覧</h2>

    <!--{if count($dirLists) > 0}-->
        <span class="attention"><!--{$arrErr.dir_plugin_error}--></span>
        <table class="system-plugin">
            <col width="10%" />
            <col width="77" />
            <col width="13%" />
            <tr>
                <th colspan="3">プラグイン(ディレクトリ)名</th>
            </tr>
            <!--{section name=i start=0 loop=$dirLists|@count}-->
                <!--{assign var=dirList value=$dirLists[i]}-->
                <tr <!--{if $dirList.installed == false}--> style="background:#C9C9C9;" <!--{/if}-->>
                    <td class="center plugin_img">
                    </td>
                    <td class="plugin_info">
                        <span class="plugin_name">
                            <sapn><!--{$dirList.dir_name|h}--></sapn>
                        </span>
                    </td>
                    <td class="center">
                        <!--{if $dirList.installed == true}-->
                            <a class="btn-action" href="java script:;" onclick="installL('<!--{$dirList.dir_name}-->'); return false;"><span class="btn-next">インストール</span></a>
                        <!--{else}-->
                            インストール済み
                        <!--{/if}-->
                    </td>
                </tr>
            <!--{/section}-->
        </table>
    <!--{else}-->
        <span>インストールしていないプラグインはありません。</span>
    <!--{/if}-->
<!--{* added *}-->
sumida
投稿日時: 2013/6/13 15:19
対応状況: −−−
仙人
登録日: 2013/2/10
居住地: 広島県呉市ときどき瀬戸内海
投稿: 641
違うパターンもやってもました。(前回分と共存できます。)
前回の仕様を変更したものです。
共存しても動作します。
お好きなほうでどうぞ。
(1) 前回
   プラグインのディレクトリ名を時下入力
(2) 今回
   data/downloads/plugin下のディレクトリ一覧で指示

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


        switch ($mode) {
            // インストール
            case 'install':
                $file_key = 'plugin_file';
                $this->arrErr = $this->checkUploadFile($file_key);
                if ($this->isError($this->arrErr) === false) {
                    $archive_file_name = $_FILES[$file_key]['name'];
                    // インストール処理.
                    $this->arrErr = $this->installPlugin($archive_file_name, 'plugin_file');
                    if ($this->isError($this->arrErr) === false) {
                        // コンパイルファイルのクリア処理
                        SC_Utils_Ex::clearCompliedTemplate();
                        $this->tpl_onload = "alert('プラグインをインストールしました。');";
                    }
                }
                break;
// added
            // インストール
            case 'installL':
                    // インストール処理.
                $plugin_dir_name = $objFormParam->getValue('dir_name');
                $this->arrErr = $this->installPluginL($plugin_dir_name, $plugin_dir_name);
                if ($this->isError($this->arrErr) === false) {
                    // コンパイルファイルのクリア処理
                    SC_Utils_Ex::clearCompliedTemplate();
                    $this->tpl_onload = "alert('プラグインをインストールしました。');";
                }
                if ($this->isError($this->arrErr) === true) {
                    $this->tpl_onload = "alert('" . $this->arrErr[$plugin_dir_name] . "');";
                }
                break;
// added



        // DBからプラグイン情報を取得
        $plugins = SC_Plugin_Util_Ex::getAllPlugin();

        foreach ($plugins as $key => $plugin) {
            // ロゴファイルへのパスを生成(ロゴが無い場合はNO_IMAGEを表示)
            if (file_exists(PLUGIN_HTML_REALDIR . $plugins[$key]['plugin_code'] . '/logo.png') === true){
                $plugins[$key]['logo'] = ROOT_URLPATH . 'plugin/' . $plugins[$key]['plugin_code'] . '/logo.png';
            } else {
                $plugins[$key]['logo'] = IMAGE_SAVE_URLPATH . 'noimage_plugin_list.png';
            }

            // 設定ファイルがあるかを判定.
            $plugins[$key]['config_flg'] = $this->isContainsFile(PLUGIN_UPLOAD_REALDIR . $plugin['plugin_code'], 'config.php');
            if ($plugins[$key]['enable'] === PLUGIN_ENABLE_TRUE) {
                // 競合するプラグインがあるかを判定.
                $plugins[$key]['conflict_message']= $this->checkConflictPlugin($plugin['plugin_id']);
            }
        }

        $this->plugins = $plugins;
// added
        // インストールしていないプラグイン一覧
        $arrList = SC_Helper_FileManager_Ex::sfGetFileList(rtrim(PLUGIN_UPLOAD_REALDIR, '/'));

        // true  : プラグインディレクトリ一覧
        // false : インストールしていないプラグインディレクトリ一覧
        $dirALL = true;

        $arrDirLists = array();
        $arrCount = 0;
        for ($i=0; $i<count($arrList); $i++) {
            // ディレクトリであるかを判定.
            if ($arrList[$i]['is_dir'] === true) {
                 $dirName = $arrList[$i]['file_name'];
                 // インストール済みのプラグインかを判定.
                 $foundDirName = FALSE;
                 for ($j=0; $j<count($plugins); $j++) {
                     if ($plugins[$j]['plugin_code'] === $dirName) {
                         $foundDirName = TRUE;
                         break;
                     }
                 }
                 if ($foundDirName) {
                     $arrDirLists[$arrCount]['dir_name'] = $dirName;
                     $arrDirLists[$arrCount]['installed'] = false;
                     $arrCount++;
                 } else {
                     if ($dirALL === true) {
                         $arrDirLists[$arrCount]['dir_name'] = $dirName;
                         $arrDirLists[$arrCount]['installed'] = true;
                     $arrCount++;
                     }
                }
            }
        }
        $this->dirLists = $arrDirLists;
// added
    }




    function initParam(&$objFormParam, $mode) {
        $objFormParam->addParam('mode', 'mode', INT_LEN, '', array('ALPHA_CHECK', 'MAX_LENGTH_CHECK'));
        $objFormParam->addParam('plugin_id', 'plugin_id', INT_LEN, '', array('NUM_CHECK', 'MAX_LENGTH_CHECK'));
        if ($mode === 'priority') {
            $objFormParam->addParam('優先度', 'priority', INT_LEN, '', array('EXIST_CHECK', 'NUM_CHECK', 'MAX_LENGTH_CHECK'));
        }
//  added
        if ($mode === 'installL') {
            $objFormParam->addParam('ディレクトリ名', 'dir_name');
        }
// added
    }


        // リフレクションオブジェクトを生成.
        $objReflection = new ReflectionClass('plugin_info');
        $arrPluginInfo = $this->getPluginInfo($objReflection);
        // プラグインクラスに必須となるパラメータが正常に定義されているかチェックします.
// changed
//        $arrErr = $this->checkPluginConstants($objReflection, DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR);
// changed
        $arrErr = $this->checkPluginConstants($objReflection, DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR, $key);
// changed
        if ($this->isError($arrErr) === true) {
            $this->rollBack(DOWNLOADS_TEMP_PLUGIN_INSTALL_DIR);
            return $arrErr;
        }



// added
    function installPluginL($directory_name, $key) {
        $arrErr = array();
        // 必須拡張モジュールのチェック
        $arrErr = SC_Plugin_Util_Ex::checkExtension($key);
        if ($this->isError($arrErr) === true) {
            return $arrErr;
        }

        // plugin_infoを読み込み.
        $arrErr = $this->requirePluginFile(PLUGIN_UPLOAD_REALDIR . $directory_name . '/' . 'plugin_info.php', $key);
        if ($this->isError($arrErr) === true) {
            return $arrErr;
        }

        // リフレクションオブジェクトを生成.
        $objReflection = new ReflectionClass('plugin_info');
        $arrPluginInfo = $this->getPluginInfo($objReflection);
        // プラグインクラスに必須となるパラメータが正常に定義されているかチェックします.
        $arrErr = $this->checkPluginConstants($objReflection, PLUGIN_UPLOAD_REALDIR . $directory_name . '/', $key);
        if ($this->isError($arrErr) === true) {
            return $arrErr;
        }

        // 既にインストールされていないかを判定.
        if ($this->isInstalledPlugin($arrPluginInfo['PLUGIN_CODE']) === true) {
            $arrErr[$key] = '※ ' . $arrPluginInfo['PLUGIN_NAME'] . 'は既にインストールされています。<br/>';
            return $arrErr;
        }

        // プラグイン情報を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) {
            $this->rollbackL($plugin['plugin_id']);
            return $arrErr;
        }

        // プラグインhtmlディレクトリ作成
        $plugin_html_dir_path = $this->getHtmlPluginDir($plugin['plugin_code']);
        $this->makeDir($plugin_html_dir_path);

        $arrErr = $this->execPlugin($plugin, $plugin['class_name'], 'install');
        if ($this->isError($arrErr) === true) {
            $this->rollbackL($plugin['plugin_id'], $plugin_html_dir_path);
            return $arrErr;
        }
    }

    function rollbackL($plugin_id = '', $plugin_html_dir_path ='') {
        // DBからプラグイン情報を削除
        if (empty($plugin_id) === false) {
            SC_Plugin_Util_Ex::deletePluginByPluginId($plugin_id);
        }
        // htmlディレクトリを削除
        if (empty($plugin_html_dir_path) === false) {
            SC_Helper_FileManager_Ex::deleteFile($plugin_html_dir_path, true);
        }
    }
// added


function checkPluginConstantsは、引数を追加

    function checkPluginConstants(ReflectionClass $objReflection, $dir_path, $key) {


※運営チーム編集※
XOOPSのシステムエラーが発生していたためこの下の投稿はいったんカットさせていただいております。
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/12 17:58
対応状況: −−−
仙人
登録日: 2013/2/10
居住地: 広島県呉市ときどき瀬戸内海
投稿: 641
Re: プラグイン管理で、「アップロード」と「インストール」が分離されているとありがたいです。
リロードがシステムエラーになります。
function reload($plugin) {
に、$keyが定義されていません。

$arrErr = $this->requirePluginFile(PLUGIN_UPLOAD_REALDIR . $plugin['plugin_code'] . '/plugin_info.php', $key);


$arrErr = $this->requirePluginFile($plugin_class_file_path, $key);

$keyは、エラーメッセージの対象を指定するので、今回の場合、どこにしたらいいのだろう?
sumida
投稿日時: 2013/6/12 10:19
対応状況: −−−
仙人
登録日: 2013/2/10
居住地: 広島県呉市ときどき瀬戸内海
投稿: 641
Re: プラグイン管理で、「アップロード」と「インストール」が分離されているとありがたいです。
プラグイン用ディレクトリのチェックを

                $this->arrErr = $objFormParam->checkError();

でさせようとしたところ、

$modeにいれた「install2」が、実は、エラー(半角英字でない)になってしまっていたので、
ソースを更新しました。
nanasess
投稿日時: 2013/6/11 16:01
対応状況: −−−
登録日: 2006/9/9
居住地:
投稿: 2324
Re: プラグイン管理で、「アップロード」と「インストール」が分離されているとありがたいです。
プラグインの開発用に「リロード」も作ってみました。

https://gist.github.com/nanasess/5747139

プラグインの開発中に、プラグイン本体のファイルを削除せずに uninstall/install ができます。

# プラグイン関連の関数群は使いにくいものが多いので、リファクタリングしたいですね。。。
tao_s
投稿日時: 2013/6/11 15:25
対応状況: −−−
仙人
登録日: 2008/8/20
居住地: 東京
投稿: 804
Re: プラグイン管理で、「アップロード」と「インストール」が分離されているとありがたいです。
ありがとうございます。
素晴らしいです。

これコアに必要ですね。チケット切っておきます。


----------------
EC-CUBEカスタマイズ相談してください。
緊急のEC-CUBEの障害対応
EC-CUBEカスタマイズブログ

(1) 2 »
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は94,726名です
総投稿数は111,341件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2324
5
umebius
2085
6
yuh
1881
7
h_tanaka
1796
8
red
1574
9
mcontact
1507
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
804
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.