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