Revize Geeklog!

オープンソースCMS「Geeklog」のテーマ開発・配布サイト

フォーラム

#1 2007-10-15 18:25:59

maruyo
メンバー
登録日: 2007-10-13
投稿: 48
ウェブサイト

プラグインの管理画面でエラーの件

<geeklog>system/lib-secutiry.php
function SEC_getPermissionsHTML内の428行目

$perm_templates = new Template($_CONF['path_layout'] . 'admin/common');

これを

$perm_templates = new Template($_CONF['path_html'] . 'layout/Admin/admin/common');

こうするのが正解、かな?cool
Mediagalleryの問題はこれで表示されるようになりました。このライブラリはほかのプラグインにも影響すると思うのでこちらで新規トピックにしました。

オフライン

 

#2 2007-10-16 04:40:37

Phize
管理者
登録日: 2007-09-23
投稿: 45
ウェブサイト

Re: プラグインの管理画面でエラーの件

maruyoさん、ご報告ありがとうございます smile
日本語版ではエラーは出ないのに、Geeklog Rだとエラーが出る感じでしょうか?
調査してみます。

オフライン

 

#3 2007-10-16 12:07:50

maruyo
メンバー
登録日: 2007-10-13
投稿: 48
ウェブサイト

Re: プラグインの管理画面でエラーの件

そうですね。ファイルの構成が変わってレイアウトの中にadmin/commonがないのが原因です。
GeeklogRの場合管理者用のレイアウトが各テーマから切り離されて独立したレイアウトとなっているため、<geeklog>/public_html/layout/Adminに押し込められていますね。ここで渡された$_CONF['path_layout'] . 'admin/common'は最終的に<geeklog>/system/classes/template.class.phpの222行目にあるfunction set_rootでディレクトリの判定を受けますが当然ないのでアウトです、str_replaceで再度判定が試みられますがこちらもアウトになりhaltします。
1度目の判定<geeklog>/public_html/layout/Revize/admin/common
2度目の判定<geeklog>/public_html/layout//admin/common

1度目の判定はTemplateクラスがnewされたときに渡された内容でフォルダの判定がなされます。2度目の判定は間違ったフォルダを渡されていたり、フォルダでないアドレスが渡された場合にカレントの ./admin/common を見に行くという2段構えのようです。
ここからは想像ですが、これをPhizeさんが改造してテーマフォルダのadmin/commonをチェックするようにしたかったんだと思います。プログラムの内容からするとRevizeが入ることになることを想定しているとしか思えませんw
ところがテーマRevizeにはfunctions.phpで$_CONF['r_theme_base'] = 'Revize';が宣言されていないので$this->set_baseに渡る変数が空っぽになりlayoutの部分までしか戻ってきません。
これが思惑通りの動作ならすみません。
$_CONF['r_theme_base'] = 'Revize';をfunctions.phpもしくはconfig.phpに追加しただけでは解決にはなりませんケドね^^;

うーん、このへんはいろんな要素が絡み合ってるので説明が難しいですネ。3回ぐらい書き直しました^^;(配列も変数と書いています)
コードの変更方法によっては管理者画面を通常はAdminテーマ、テーマにadminを入れてやればテーマ専用管理者画面という方式にもできそうな感じです。

オフライン

 

#4 2007-10-16 12:35:27

maruyo
メンバー
登録日: 2007-10-13
投稿: 48
ウェブサイト

Re: プラグインの管理画面でエラーの件

$perm_templates = new Template($_CONF['path_html'] . 'layout/Admin/admin/common');
ではなく

$perm_templates = new Template($_CONF['path_html'] . 'layout/$_CONF['r_theme_admin']/admin/common');
こうすべきなのかな?

適当なのがあればそれでw

オフライン

 

#5 2007-10-17 20:53:47

Phize
管理者
登録日: 2007-09-23
投稿: 45
ウェブサイト

Re: プラグインの管理画面でエラーの件

詳しいご報告ありがとうございました smile
その部分はいじってないので、これは日本語版でもエラーが出る可能性ありますね。
管理画面の固定機能を使う場合、日本語版でもテーマのadminディレクトリを削除するので、たぶん日本語版でもエラーがでそうですね。
一応、Geeklog Rはオーバーライド機能と管理画面の分離機能に対応するため、以下のように修正してみました。


function SEC_getPermissionsHTML内の428行目

コード:

    // Changed by Phize <----
    if( is_dir($_CONF['path_layout'] . 'admin/common' ) === true ){
        $perm_templates = new Template($_CONF['path_layout'] . 'admin/common');
    } else {
        if ((!empty($_CONF['r_theme_admin'])) && (is_dir($_CONF['path_themes'] . $_CONF['r_theme_admin']) === true)) {
            $perm_templates = new Template($_CONF['path_themes'] . $_CONF['r_theme_admin'] . '/admin/common');
        } else {
            $perm_templates = new Template($_CONF['path_themes'] . 'Admin/admin/common');
        }
    }
    // Changed by Phize ---->

まずはテーマのadmin/commonを探して、なければ管理ページテーマ($_CONF['r_theme_admin'])、それもなければAdmin/commonを使用、という感じで。

オフライン

 

#6 2007-10-18 00:29:24

maruyo
メンバー
登録日: 2007-10-13
投稿: 48
ウェブサイト

Re: プラグインの管理画面でエラーの件

まずはテーマのadmin/commonを探して、なければ管理ページテーマ($_CONF['r_theme_admin'])、それもなければAdmin/commonを使用、という感じで。

そうですね、テーマ開発者がそこまで対応するかどうかは別として、そちらの方法が幅が広くてベターだと思います。私のところはとりあえずは動いているんで新しいリリースを待つことにします~smile

オフライン

 

ボードフッタ

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson

Thanks to famfamfam.com for some icons(Creative Commons Attribution 2.5).

Copyright© 2007-2007 Revize Geeklog!.