バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
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>

たびたび変更ですみません。
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/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;
    }
« 1 (2)
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

公式ストアEC-CUBE4系デザインテンプレート続々リリース中

統計情報

総メンバー数は67,446名です
総投稿数は98,813件です

投稿数ランキング

1
seasoft
7333
2
AMUAMU
2712
3
468
2693
4
nanasess
2116
5
umebius
1789
6
yuh
1612
7
red
1427
8
h_tanaka
1051
9
fukap
907
10
tsuji
863
11
shutta
835
12
tao_s
792
13 ramrun 789
14 karin 657
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
485
20 tonton 437


ネットショップの壺

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

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