NP_admin 製作進捗
2009年1月2日
バックアップをかねて、ブログに現在のバージョン(v 0.1.9)をアップ。
次のバージョン、0.2.0では、スキン・テンプレート変数の使用を少し変える予定なので、その前の動くバージョンを保存しておく意味も兼ねている。
今までに完成しているアクションは、以下の通り。
overview, banlist, blogsettings, bookmarklet, browsowncomments, browseownitems, createitem, deleteblog, editmembersettings, itemlist, showlogin
次にitemeditアクションを実装する部分で引っかかり、全体の仕様を少し変更することになった。その大幅な変更の前の保存版が、v0.1.9。
これまでの製作でほぼ固まった仕様は、次の通り。
1)スキン・テンプレートエンジンは、Nucleusのパーサをそのまま使用。
2)スキンタイプはindexのみ。ここに含まれるスキン変数、<%admin%>がNucleusのselector()の役割とほぼ同じ役割をする。アクションの種類ごとに、skins/admin/actions/ディレクトリからスキンを呼び出して、パースを行う。ここで言うアクションは、Nucleusのスペシャルスキンパーツのパーツ名(specialで指定する)と同様の概念。
3)Nucleusの<%blog%>に相当する、テンプレートを用いてDBの内容をパースするためのスキン変数が、複数用意されている。
4)3のパースで用いられるテンプレートとして、Nucleusのテンプレートは使わない。デフォルトでは、skins/admin/templates/ディレクトリに含まれるファイルが指定される(3のスキン変数での引数で変更が可能)。
5)テンプレート設定ファイルでは、<!--[head]--> <!--[body]-->などのデリミタを記述することで、ヘッダ・本体・フッタなど、複数のテンプレートを指定するようになっている。この仕組みは、Jeansにも導入予定。
6)テンプレート設定ファイルでは、<!--[extends]-->指定により、他のテンプレートの内容から派生することができる。この仕組みは、Jeansにも導入予定。
7)テンプレートのパースには、Nucleusのスキンパーサ(テンプレートパーサではない)を用いる。従って<%if%>等を用いることが可能。また、この仕様により、用いているスキン変数とテンプレート変数の間に明確な違いは無い。実際、NP_adminでは、doTemplateVarは用いられていない。
8)テンプレート変数の多くは、<%admin(fill,xxxx)%>のように記述される。これは単に、mysql_fetch_assocから得られたrowにおける、キーがxxxxである値(row[xxxx])を表示するだけである。v0.2では多分、<%contents(xxxx)%>に変更される。また、Jeansにおけるテンプレート変数の多くも、<%contents(xxxx)%>形式に変更すると思う。
以下の仕様はまだ導入していないが、今後のバージョンで導入予定。
1)スキンは、他のスキンから派生させることが可能。多分、スペシャルスキンパーツのextendsタイプで派生もとのスキン名を指定することになる。おそらく、この派生機能を盛り込まないとskinnableにする意味が無い。なぜかというと、NucleusやJeansのバージョンアップの際には、デバッグや新機能への対応等でadminスキンも変更されることがあるはず。その際、上書きでadminスキンをアップグレードしてしまうと、自分用にカスタマイズした変更がすべてなくなってしまう。これでは、ADMIN.php等を変更して対応するのとなんら変わりがないといえる。
派生が可能だと、そういう問題がほとんど無くなる(あるいは、かなり軽減する)。例えばadmin2という名のスキンを新規に作成し、派生元をadminにしておく。skins/admin2/ディレクトリのうち、変更したい部分だけincファイルをskins/admin/ディレクトリからコピーし、修正すればよい。skins/admin2/ディレクトリに設定されていない部分は、自動的にskins/admin/ディレクトリから読み込まれる仕様である。同様に、孫スキン、ひ孫スキンも作成できるので、複数のアドミンスキンの管理が比較的容易に行えるはず。
<%media(20090103-admin019.zip|NP_admin及び、adminスキンは、ここから。)%>
NP_adminインストールの前に、NP_SkinVarManagerをインストールしてください。まだまだαバージョンで、機能性はゼロです。
追記:zipに入れる書類を一つ忘れたので、ここに書いておきます。admin.phpという名で、config.phpと同じディレクトリに保存してください。
次のバージョン、0.2.0では、スキン・テンプレート変数の使用を少し変える予定なので、その前の動くバージョンを保存しておく意味も兼ねている。
今までに完成しているアクションは、以下の通り。
overview, banlist, blogsettings, bookmarklet, browsowncomments, browseownitems, createitem, deleteblog, editmembersettings, itemlist, showlogin
次にitemeditアクションを実装する部分で引っかかり、全体の仕様を少し変更することになった。その大幅な変更の前の保存版が、v0.1.9。
これまでの製作でほぼ固まった仕様は、次の通り。
1)スキン・テンプレートエンジンは、Nucleusのパーサをそのまま使用。
2)スキンタイプはindexのみ。ここに含まれるスキン変数、<%admin%>がNucleusのselector()の役割とほぼ同じ役割をする。アクションの種類ごとに、skins/admin/actions/ディレクトリからスキンを呼び出して、パースを行う。ここで言うアクションは、Nucleusのスペシャルスキンパーツのパーツ名(specialで指定する)と同様の概念。
3)Nucleusの<%blog%>に相当する、テンプレートを用いてDBの内容をパースするためのスキン変数が、複数用意されている。
4)3のパースで用いられるテンプレートとして、Nucleusのテンプレートは使わない。デフォルトでは、skins/admin/templates/ディレクトリに含まれるファイルが指定される(3のスキン変数での引数で変更が可能)。
5)テンプレート設定ファイルでは、<!--[head]--> <!--[body]-->などのデリミタを記述することで、ヘッダ・本体・フッタなど、複数のテンプレートを指定するようになっている。この仕組みは、Jeansにも導入予定。
6)テンプレート設定ファイルでは、<!--[extends]-->指定により、他のテンプレートの内容から派生することができる。この仕組みは、Jeansにも導入予定。
7)テンプレートのパースには、Nucleusのスキンパーサ(テンプレートパーサではない)を用いる。従って<%if%>等を用いることが可能。また、この仕様により、用いているスキン変数とテンプレート変数の間に明確な違いは無い。実際、NP_adminでは、doTemplateVarは用いられていない。
8)テンプレート変数の多くは、<%admin(fill,xxxx)%>のように記述される。これは単に、mysql_fetch_assocから得られたrowにおける、キーがxxxxである値(row[xxxx])を表示するだけである。v0.2では多分、<%contents(xxxx)%>に変更される。また、Jeansにおけるテンプレート変数の多くも、<%contents(xxxx)%>形式に変更すると思う。
以下の仕様はまだ導入していないが、今後のバージョンで導入予定。
1)スキンは、他のスキンから派生させることが可能。多分、スペシャルスキンパーツのextendsタイプで派生もとのスキン名を指定することになる。おそらく、この派生機能を盛り込まないとskinnableにする意味が無い。なぜかというと、NucleusやJeansのバージョンアップの際には、デバッグや新機能への対応等でadminスキンも変更されることがあるはず。その際、上書きでadminスキンをアップグレードしてしまうと、自分用にカスタマイズした変更がすべてなくなってしまう。これでは、ADMIN.php等を変更して対応するのとなんら変わりがないといえる。
派生が可能だと、そういう問題がほとんど無くなる(あるいは、かなり軽減する)。例えばadmin2という名のスキンを新規に作成し、派生元をadminにしておく。skins/admin2/ディレクトリのうち、変更したい部分だけincファイルをskins/admin/ディレクトリからコピーし、修正すればよい。skins/admin2/ディレクトリに設定されていない部分は、自動的にskins/admin/ディレクトリから読み込まれる仕様である。同様に、孫スキン、ひ孫スキンも作成できるので、複数のアドミンスキンの管理が比較的容易に行えるはず。
<%media(20090103-admin019.zip|NP_admin及び、adminスキンは、ここから。)%>
NP_adminインストールの前に、NP_SkinVarManagerをインストールしてください。まだまだαバージョンで、機能性はゼロです。
追記:zipに入れる書類を一つ忘れたので、ここに書いておきます。admin.phpという名で、config.phpと同じディレクトリに保存してください。
<?php $CONF = array(); $CONF['Self'] = 'admin.php'; $CONF['NP_admin']=array(); include('./config.php'); $p=$manager->getPlugin('NP_admin'); $p->selector(); ?>