This Project Has Not Released Any Files
システムリソースのうち、拡張性アイテム(PetanizeExtend)を拡張する機能を提供するものを「テンプレート」と言う。
アイテムのデータ項目だけでは足りなくて、好き勝手に項目を追加してごにょごにょやりたい時に使う。
テンプレートはシステムリソースである。管理者はあらかじめテンプレートのデータをインポートしておく。
ユーザからはこのように見える。このように管理者が登録したテンプレートのデータをテンプレートアイテムという。
楕円フキダシ・透明フキダシ・長方形フキダシ…テンプレートアイテムごとにふるまいが違い、必要なデータも変わってくる。この違いはテンプレートに付随してくるモジュールで吸収する。モジュールには、処理とデータモデルが含まれる。これらを総称してテンプレートモジュールという。このうち、処理の部分を拡張モジュール 、データモデルを拡張モデルと言う。
ユーザが拡張性アイテムを作成する時、テンプレートアイテムを選択することから始まる。ここでは例として、フキダシテンプレートからフキダシを生成する。
テンプレート | フキダシテンプレート |
拡張性アイテム | フキダシ |
テンプレートアイテムに楕円フキダシを選択すると、それに応じた拡張モデルが入力フォームに展開されるので、テンプレートアイテムに沿った形でデータ入力を行う。
テンプレートアイテム | 楕円フキダシ |
テンプレートモジュール | CircleSpeechBalloon |
なお、楕円フキダシのテンプレートモジュールには、次の拡張モジュールと拡張モデルが定義されている。入力フォームは拡張モデルに従って表示され、このフォームで入力されたデータは拡張データとしてjson文字列で保存される。
拡張モジュール | SpeechBalloonModule |
拡張モデル | SpeechBalloon |
Postすると、拡張性アイテムにテンプレートモジュール名が記録され、今後はそれを元に拡張データを展開し、利用する。
結果作成されるデータはこんな感じ。テンプレートに関係のあるカラムには*をつけておいた。
Id | 49 |
コマ | 32 |
様子 | |
フキダシテンプレート* | 1 |
フキダシテンプレートモジュール名* | CircleSpeechBalloon |
重なり | 3 |
話順 | 2 |
フキダシテンプレート拡張データ* | |
作成 | 2014/06/10 02:09:11 |
更新 | 2014/06/10 02:09:11 |
拡張性アイテムについてはPetanizeExtendを参照。
テンプレートのモデルには次のカラムを用意していなければならない。このカラムから、拡張モジュールと拡張モデルを引き出す。
テンプレートは拡張性アイテムが作成される時に参照される。拡張性アイテムの動作に必要なデータは、拡張性アイテムにコピーされるので、作成後にテンプレートが参照される事はない。
拡張モデルのデータは、モデルとしてデータベースに保存されない。拡張データはjson文字列に変換されて、拡張性アイテムにテキスト型の項目として収められる。 テンプレートには拡張モデルを持たないものもある。 テンプレートは、全体を通じて拡張モデルあり・拡張モデルなしのどちらかを選ばなければならない。
拡張モデルのすべてのカラムをjson文字列をしたもの。拡張性アイテムには、この状態で保存され、ブーストした時に拡張モデルに展開される。
テンプレートを使って拡張するという事は、データベースのデータを使って動的に処理を実行することになる。これではデータベースのデータが汚染されていると、任意の処理を実行できてしまう。セキュリティ面から危険。そこで、マニフェスト(テキストファイル)のシステムリソース項目に記述してあるテンプレートと付き合わせて、怪しいものは実行できないようにしている。ただし、それがどの程度有効なのかは定かでは無い。
テンプレートには必ず次の機能が用意されている。
有効なテンプレートアイテムを返す。
テンプレートアイテムをマニフェストで無効にすることができる。無効にされたテンプレートアイテムは、拡張性アイテムの作成・更新で選択できなくなる。すでに作成されたコンテンツでは利用されたテンプレートアイテムについては参照することはできる。
システムリソースのマニフェストから、このテンプレートのマニフェストを取得する。
同じ機能がブースターに実装されているが、彼方からこちらを見る事はできない。
テンプレートアイテムがマニフェストで有効になっているかどうかを返す。
インスタンスメソッドなので、自身はテンプレートアイテムである。
システムリソースのマニフェストからテンプレートのマニフェストを取得できる。さらにそこからテンプレートアイテムの状況を調べることができるので、自分自身が有効であるかどうかを判別できる。
テンプレートモジュールを返す。
インスタンスメソッドなので、自身はテンプレートアイテムである。
モジュール名からテンプレートモジュール名を導き出せるので、ブーストマニフェストに頼らずともテンプレートモジュールを返せる。
システムリソースのマニフェストのテンプレート項目からテンプレート名のスネークケースを取得する。次のようなケースでは、'circle_speech_balloon'が返る。メソッド名は「パス名」になっているけど、実際はもっと広い幅の意味を持っている。
speech_balloon_template: { template_items: { CircleSpeechBalloon: 'circle_speech_balloon', }, },
[PageInfo]
LastUpdate: 2014-06-16 06:38:14, ModifiedBy: yasushiito
[Permissions]
view:all, edit:login users, delete/config:members