WikiEngineが用意する画面。WebブラウザーをX専用ブラウザーにするスクリプトとUIのコンテナー。
MVCのView. ユースケースとビューは多対一の関係。ユースケースを選べばビューも選ばれることになる。リクエスト時にビュー選ぶことはなくて、代わりにユースケースとデータ型(コンテキスト)を指定できる。WebブラウザーをX専用ブラウザーにするためのスクリプトやUIを含む。
- ビュー
- ビュー
- 実装するビュー
- :i/ビューの種類
- :i/ロール別のビュー
- レイアウト
- :Done/ビューとレイアウトの違いをはっきりと
- :i/レイアウトも下位展開も実装はページセットを受け入れるテンプレート
- :i/レイアウトも下位展開も実装はページセットを受け入れるテンプレート
- ビュー
- HTMLヘッダー
- :i/3カラムレイアウトよりもいいレイアウトとは[?]
- :/3カラムレイアウトよりもいいレイアウトとは
- :i/ページの分け方
- テンプレート構造の中のビュー
- 本文は埋め込み
- ユースケース別のビュー
- ビューはデータコンテキストを変えるだけ…ではない
- 下位展開の区画を作る
- ビューでやること
- フレームワーク/Webアプリケーションでのビュー
ビュー †
MVCのView
ユースケースを果たすために効果的なUIの組み合わせ。
実装はMVC/Viewクラスと、操作対象ページごと×MVC/Viewごとに用意されたテンプレート。
テンプレートはMVC/Viewクラスの設定項目と見なせる。特別な仕組みは無い。
ビュー †
実装するビュー †
どれもページの見せ方。それ以上に機能や処理を要するものは必要な権限を決めてユースケースとして作らないと。
- 閲覧[?]
- 編集
- 読む(閲覧)
複数の見解を表示。 - 書く(編集)
既存ページかどうかで「書く」「書き直す」に分かれる。 - 編集する
編集というユースケースのステップ1 - 履歴
- 読むビューで見せる差分
- 書くビューで見せる差分
- 履歴
版の一覧。
下位展開をどう実現するかはそれぞれのビューで異なる。
下位展開付き閲覧ビューとか。
:i/ビューの種類 †
:i/ロール別のビュー †
レイアウト †
ここにグローバルナビを追加。
:Done/ビューとレイアウトの違いをはっきりと †
変更。
ビューはUI。レイアウトとその他(なんとかヘッダーなどを含む)テンプレートはHTMLをデコレーションするもの。
ビューはUI。レイアウトとその他の(なんとかヘッダーなどを含む)テンプレートはHTMLをデコレーションするもの。
ビューとテンプレート類(レイアウト含む)という分け方。
ビューはリクエストと対象ページで決まるが、レイアウトとコンテンツ領域テンプレートは対象ページだけで決まるので状況依存しない。
ビューはリクエストで決まる(対象ページの属性や権限によってはリクエスト通りにならないことがある)が、レイアウトとコンテンツ領域テンプレートは対象ページさえ分かれば決まるので状況依存しない?
下位展開付きのビューは区画ごとに別リクエスト。なのでビューは区画を用意するだけ。区画の中は別のリクエスト・別のビューの役割。
ページ/属性にはレイアウトページ名、ビュー名×そのビューが使うテンプレートページ名、コンテンツ領域のテンプレートのページ名を書いておく。継承(オーバーライド)可能で最も下位で定義されたものが有効。
ページ/属性には
:i/レイアウトも下位展開も実装はページセットを受け入れるテンプレート †
:i/レイアウトも下位展開も実装はページセットを受け入れるテンプレート †
レイアウトも下位展開(ビューのひとつ)もテンプレート。というわけで、いずれもクエリー(の一部)に応じて選択されるもの。ということでいい。
ビュー †
同じページの別の見え方。フレームワーク/WebアプリケーションのMVC Viewとは別。同じデータ(Wikiページ)の見せ方。要素の表現方法と取捨選択のこと。
テンプレートになるページが違うだけ。にしたいが機能が個別に対応する必要がありそう。実装ではリクエストされた通りのビューが使えるならそれ、使えなければ汎用のビューを使用。
同じページ/内容の別の見え方。フレームワーク/WebアプリケーションのMVC Viewとは別。同じデータ(Wikiページ)の見せ方。要素の表現方法と取捨選択のこと。
テンプレートになるページが違うだけ。にしたいが
- 閲覧
- 画面用(デフォルト、要定義)
- スマートフォン画面用
- ケータイ画面用
- 印刷用
- 読み上げ用
- API用
データをそのまま。
- 編集
- 履歴
履歴ビューは閲覧ビューで見る履歴と、編集ビューで見る履歴がある。
HTMLヘッダー †
ヘッダー領域は辞書。
レンダリングの終わりの方で文字列化。
内部で発生した全てのヘッダーを連結。ページ/要素もヘッダーを出力する。
†:i/出力の統合はどうやるか?[?]
:i/3カラムレイアウトよりもいいレイアウトとは[?] †
:/3カラムレイアウトよりもいいレイアウトとは †
分かりやすさのためのビュー。
:i/ページの分け方 †
HTMLヘッダー、サイトヘッダー/フッター、サイドがレイアウトの範囲。
「ページ…」の区分がビューごとテンプレートの範囲。
リクエストされたビューで変わるのは内側だけ。
テンプレート構造の中のビュー †
…がすべて1つのビューの中に入る。
と、これらをまとめるルートテンプレートというかマスターテンプレート。
閲覧や編集といったビューの違いは「コンテンツ」の枠。上中下を分けているところ。つまり「分けないビューを作れる」ということ。閲覧などのビューの違いは「コンテンツ」の違い。
下位展開ビューではコンテンツ部分が下位ページの数だけ用意した区画(だけ)。それぞれの区画は別リクエスト。区画の中には下位展開時の順番を考慮したページ名とそれぞれのビューなどを反映させる。
下位展開で1区画に入れるのが「コンテンツ」の部分。
ビューの外側は呼び出すときに選べるが、ビューの中はビューが決める。ビューの中を変更できるかどうかはビュー次第。
本文は埋め込み †
ビュー内のページ内容部分は埋め込みと同等の要素で。
埋め込みでも可。でも埋め込みは実体が別にあるときのものなので、意味合いが違う。
ページ展開先(PageHolder)要素。
ユースケース別のビュー †
- reading
閲覧ビュー editではなくupdateというよりwriting
つまり書き込み。
編集ビュー(2ステップ構成。ステップ1がNotationTextを返す編集ビュー。ステップ2が投稿・更新)- history
履歴ビュー
…など。
ビューはデータコンテキストを変えるだけ…ではない †
下位展開ビューは繰り返し部分を含むので、データコンテキストを変えるだけの仕様では対応できない。
それぞれのビューにあったコードが必要。
下位展開の区画を作る †
ビューが下位展開の区画を作る。
含む下位ページの数だけ区画は必要。これをコードで普通に作る。仕組みやルールではなく。下位ページのリクエスト方法とそれらがいくつあるのかを知る必要がある。
ビューでやること †
ビューを実装するには。
フレームワーク/Webアプリケーションでのビュー †
MVCのViewはUI。入出力担当。
- 入力
クエリー文字列やフォーム、セッションの中の外から来た生データ領域を等価な、自身が生成したデータに置き換え。
外から来たデータを排除。
- 出力
エスケープ処理。無害化というよりも型の遵守。文字列→エスケープ済み文字列への変換。等価な値に型変換。