wa - NucleusやFlashなどなど

RSS

Home > Nucleus > NP_AdminSkin 構想

07.23 '08

NP_AdminSkin 構想

重度の英語アレルギーなので、Nucleus本家の動向はまったくチェックできていませんが、結構古くから、「Skinnable Admin Area」の話が出ているんですよね。前進してるかどうかはノーチェックなのでわかりません。正直あんまり気にならないのは何故って話はおいといて^^

Twitterで話しに出た、「表スキンで管理ページ」について。

以前、CMSに不慣れな運営者のために、管理画面の一部の機能(ユーザ管理など)を表スキンに実装したことがあって、もうちょっと煮詰めれば 「Skinnable Admin Area」 を実装できるのではないかと、、ちょうど合宿ネタにもピッタリなんじゃないかということで、土台を作り始めました。

Nucleusの管理ページの構造

admin

pagehead()メソッドにハードコードされたhtmlを出力
次に、各actionの結果を出力(各actionの結果もハードコードされている)
最後に、pagefoot()メソッドにハードコードされたhtmlを出力

ちなみに、NP_znCustomAdminってプラグインではハードコードされている、pagehead()、pagefoot()、のhtmlを差し替えています。

NP_AdminSkinの構造

AdminSkin

新設したスキンタイプ「admin」の内部の<%AdminSkin(main)%>と記述した箇所に、各actionの結果を出力します。
更に、各actionの結果は、個別のテンプレートファイルを読み込みます。





実際には、ヘッダ内のextraheadや、クイックメニューの構造もあるのですが、おおまかには上記のようなイメージになります。
あと、細かい部分では、

ということで、ExtJSデスクトップ版new Adminは、当面放置の予定^^

コメント

07.23 '08 13:09:02 佐藤(な)
各view用テンプレートを、現状ではテンプレートファイルに記述する構造になっているけど、本当は、NP_znSpecialTemplatePartsで管理できると便利。
でもそうできない理由は、テンプレート数が結構な数になるので、パーツとして管理すると、$manager->getTemplate()で全てのパーツを読み込んでしまうため。
あー、個別に読むメソッド書くだけか・・・。:oops:
07.23 '08 13:11:30 しづき
>現状では、プラグインディレクトリに存在するテンプレートファイルに記述するので、
これ、skinディレクトリじゃダメかな?:roll:
「skin/admin/helium」みたいに、admin ディレクトリ内にある分はadminスキンっていうのは出来そう
コアの「読み込み/書き出し」はskinディレクトリ内の各スキンディレクトリ直下に「skinbackup.xml」があるかどうかをチェックしてるだけっぽいので。(そもそもこの仕様もどうかと思うけど)(ついでに、「skinbackup.xml」じゃなくて、「nucleusadminskin.xml」みたいにファイル名を変えてしまえばさらにコアからは認識されなくなって、混同することもなくなる?)
で、読み込み/書き出しはDOMDocument使うと楽チン:wink:
07.23 '08 13:27:17 佐藤(な)
> これ、skinディレクトリじゃダメかな?:roll:

いや、全然問題ないですよ。
というか、突貫で作ったので、あとから変更ができるようなところは、あんまり煮詰めていません。

さっきの自分のコメントに自分ツッコミ。
Nucleusのコアが1発取得するので、個別の意味はないよ。そう思ってやめたこと、もう忘れてる。おバカねぇ
07.23 '08 15:24:24 yu
管理対象はアイテムが一番頻度が高いとおもうのでそのへんでいくと、

・一覧方法(絞込み)の充実が欲しいですねえ。現状ではカテゴリー別アイテム一覧すらできないので。Super-adminだと(あなたのアイテムだけじゃなく)メンバー別アイテム一覧とか。
・同様に絞込みのために外部プラグイン(タグ等)との接続I/Fの用意ができればなおよし?(検索フォーム拡張かな)
・バッチ処理の充実。現状では移動と削除しかできないので、公開・非公開の追加

あたりですかねえ。
07.23 '08 15:31:12 yu
本格的に構成を変えようとすると、ユーザー権限が絡んで条件分岐が難しそうな部分がありますが
あとはそのままでメニューとかナビゲーション系は好き勝手作れそうですね。
07.23 '08 15:44:31 佐藤(な)
> 絞込み
> バッチ

なるほど。
公開・非公開のバッチ処理をしたくって、JavaScriptでゴリゴリhtmlを書き直すプラグインを作ったことがあります。^^
こういう部分、調整できるような構造は欲しいですね。

ユーザー権限の条件分岐は、テンプレートファイル内に<%if%>で書く構造になっています。
07.23 '08 15:47:27 佐藤(な)
■ Nucleusの作法に合わせた方が、使う人にとってわかりやすいのでは?という気持ちもあったりする。

・「各action = スキンタイプ」という粒度(ヘッダ・フッタブロックを内部から呼び出すというNucleus管理画面の構成に近い)
・ブログ一覧、アイテム一覧などの、「showlist的なもの = テンプレートパーツ」という粒度
といった感じの方が分かりやすいのかなぁ。実装にも問題ない気がする。

でも今回は、「テンプレートパーツの定義は、スキン内部に書く。」っていう方式でいきたいので、「各action(実際にはview) = テンプレートファイル」って構造にした方が実装しやすい。(スキンタイプを増やす方がしんどい)

コメント追加



プレビュー

コメント追加通知RSS:
↑このフィードをRSSリーダーに登録しておくと、この記事へのコメント追加をチェックすることができます。
コメント追加後の、返事待ちなどにお使い下さい。
なお、コメントチェックの必要がなくなった際には、このRSSを削除して下さいね。
不要なトラフィックを避けるために、ご協力お願いいたします。

トラックバック

トラックバック
このエントリにトラックバックはありません
このトラックバックURLを使ってこの記事にトラックバックを送ることができます。 もしあなたのブログがトラックバック送信に対応していない場合にはこちらのフォームからトラックバックを送信することができます。.
トラックバックURL:
PluginGenerator znBackup znItemFieldEX znCustomAdmin znBackup znSmiley znShowDraft yuiCalendar znSpeedCubing znKeywordLink znCommentRSS znCCitation znItemParts znMCList znHatenaExist znQuestionnaire znFlash