General

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と同じディレクトリに保存してください。
<?php

$CONF = array();
$CONF['Self'] = 'admin.php';

$CONF['NP_admin']=array();

include('./config.php');

$p=$manager->getPlugin('NP_admin');
$p->selector();

?>

コメント

コメントはありません

コメント送信