• 追加された行はこの色です。
  • 削除された行はこの色です。
RIGHT:&tag(ページ,思い付き,実装,設計,コード,目次);

*目次 [#t94a8d59]
#contents
----
#lsx(new=true);

*関連 [#l71ba1cd]
#lsx(tag=ページ,new=true,except=^ページ(/.*)?$)

[[検索:ページ]]

*ページ周辺のタグ [#yc4ea82b]
#tag(0,ページ)

*ページとは [#qe624dec]
RIGHT:[[:t/ページ]] [[:t/フィルタリング]] [[:t/拡張]] [[:t/アクセス権]] [[:t/リダイレクト]]

→[[Page]]

ページは再帰構造のデータベース。MVCのModelの中でも最も重要なもの。MVCのViewでもある。
ページがMまたはVに属するのではなく、ページの中にMとVが存在する。
wikiは1つのページ。
*思い付き [#o96998b0]

-仕様が大きくなりそう
ページの仕様は分割する必要がありそう?

-Wikiのページにはファイルと同様にアクセス許可リスト、日付、読み専用などの属性、パスなどがある。

-章を1ページにすれば使い回しや情報集約のために分ける作業が減る。
**Wiki構築をページで [#g3e22770]
Wiki構築をページで。
他のWikiEngineでのプラグイン。

RIGHT:[[:t/組み立て]]

-ページにはアクセス権、日付、読み専用属性、パスなどがある。
-章を1ページにすれば使い回しや情報集約のために分ける作業が減る。

APIでページ内の表をレコード単位で読み出しするようなことができれば実現しやすい。
**アクセス権は引き継がれる [#cfbd8cd4]
自動生成ページは元のページ(入力されたページ)すべてのアクセス権を引き継ぐ。
アクセス権の合成ルールが必要。

RIGHT:[[:t/アクセス権]]

自動生成ページの実装次第。他の要素には影響しない。

**%%Wikiは1ページが1つの板%% [#g198eae4]
-%%この範囲で検索%%
-%%書き込み%%
-%%削除%%
%%などを。%%

%%※利用者登録も?WikiFarmとは違う?%%
**HTML許可ページ [#ac7869e0]
ブログパーツなど、サイトに貢献する人だけが作れるページ。
HTMLタグなどが閲覧ページまで残る。

作った後は(ページの機能を利用して)他のページに埋め込んだりできる。

**ヘッダーの使い道 [#s9cf9fc3]

%%**自由欄%%
%%適宜、動的要素を表示する部分。ページの先頭に表示。WikiFormatで位置が指定されているときはそこ(だけ)に表示。RIGHT:[[:t/属性]]%%
→ヘッダー。つまり通常のページを埋め込みリンクで埋め込むだけ。
動的かどうかはプラグインによるのでここでは考慮しない。

内容は…
-(管理者からではなく)システムからのメッセージ
リンクやボタンなども含む。
-検索に適合した部分リスト
前後の数文字、数行を含めて表示。
ページ内リンクも生成して。ページ内にはアンカーを埋め込んで。

…などを章として追加。
*実装 [#t1357f32]

RIGHT:[[:t/自動生成ページ]] [[:t/テンプレート]] [[:t/属性]]

ページは…
-データ保存場所
-保持しているデータや関連情報を提供する
-利用者から送られてきたクエリーのうち、自身に関する部分だけは解釈できる
→これはフレームワークに。他のクラスにおいても同じ。
-%%入れ子関係になっている場合、親になるページインスタンスから属性を受け継ぐ%%
→入れ子にはしない。埋め込みリンクで閲覧時にそう見えるようにするだけ。でも下位にあるページは属性を継承できる。

----

ページは…
-読まれる
-書かれる
-自動的に書かれる
-自動的に読まれる
ページに書かれた設定をプログラムが参照するとき。
-名前を持つ
-ID(内部名)を持つ

----

%%ページの構成…%%
-%%ページ%%
%%複数。順序あり。ランダムアクセスはしない。%%
-%%テキスト(WikiText)%%
%%複数。順序あり。ランダムアクセスはしない。%%
-%%HTMLテンプレート%%
%%ページの見た目。ビュー。スタイル。閲覧時のページ。1組で良い。が、複数も良い。複数ならテンプレートに適用順序を設けて順次使用することに。あまり意味はない。%%
**newプラグインを標準に [#b38375a2]
ページへのリンク(Wiki内リンク)にはNew!が付く。
実装するならオプション。サイト設定で。

RIGHT:[[:t/プラグイン]] [[:t/設定]]
**添付ファイルは1ページ扱い [#hf16f53a]
添付ファイル1つに1ページ生成。フォーマットの統一。
こうしたほうが扱いやすいし、ページの機能を添付ファイルでも利用できる。

埋め込みリンクを利用して添付ファイルに対応する''ページを他のページに埋め込み''。


RIGHT:[[:t/属性]]
**存在しないページは無い [#pc2d3b3b]
存在しないページ=内容が空で存在するページ。
ページ管理クラス(ページとファイルを結び付けるクラス)以外では(UIからも含めて)そうなっているように。
**ページの内容はコードと見なせる [#xae85282]
ページ内容をコードと見なすと…

-ページの内容は基本的に全てコメント
-ただし、#(プラグインの接頭辞)で始まる行はコード
-コードの出力はコメント
コードとして再処理することは無い。
他のコードの引数(データ)になることはある。
-コードの出力はコードと置き換わる。
**%%出力の統合はどうやるか?%% [#v39f55ec]
%%→順位付きで出力。同順位同士では後に追加。%%
%%順位には複数に分かれたHTMLヘッダー領域も含まれる。%%
**%%ページ/編集はページ/属性を変える一例%% [#oec184cc]
%%ページ/属性のエディターがWikiサイト。%%
%%ページ/編集はページ/属性にある「内容」を更新、保存する機能。%%
%%→継承される領域やページ/裏だけでなく、ページ/属性の数だけWiki上のページのフィールドがあるということに。%%
%%RIGHT:[[:t/属性]]%%

→ページ/属性はプログラムが扱う。エディターはページ内容だけ扱えればいい。

**本文のレンダリングは最後 [#ua1b6934]
本文(ヘッダーなど以外の部分)の展開(レンダリング、HTML変換)は最後。
1つの画面に重複部分があるとき、ヘッダーなどを優先する。
二重展開を防ぐようにした場合、先にヘッダーなどを展開しないとヘッダー編集時のプレビューができなくなるから。
**ページを更新できるのは自身だけ [#e17f3c5c]
編集など、ページの属性を変更する操作は自身が全て行なう。
(自身とはインスタンス)

他から変更したいときは、指示を対象ページにキューイング。
そのページは最新状態をリクエストされるまでに自身を変更すればいい。

参照は自由にできていい。

編集は遅延処理。
ページに手を加えるにはページごとに{属性→値}で指示をキューイング。
ページに手を加えるにはページごとに{属性→値}という形式で指示をキューイング。
適当なときに処理。

最新版が必要なときはそのページを呼び出して、最新版になってもらう。

衝突したか知らせるために、編集後のレスポンスには最新版が必要。
衝突したか知らせるために、編集後のレスポンスには最新版が必要。それまでに更新しなければならない。

RIGHT:[[:t/遅延処理]]
**Webページのテンプレートは特定のページに書く [#e7516dbe]
システムが用意するページ(Webページ)は:config/Page/Editのような特定のページで定義。

このページを書き換えて…
-ページの構造・内容(HTML)
-どんなときにどんなページを使うか
User-Agent別に定義して、フルブラウザ用とか、ケータイ用とか、スマートフォン用とか。
利用者の権限別とか。

条件、それに合ったときの戻り値は特定のページに。
条件に使えるデータ、戻り値の用途はシステムにコードで定義。
条件に使えるデータ、戻り値の用途はシステムにコードで定義。(用意されている中から選択して設定で利用)

RIGHT:[[:t/構築]] [[:t/設定]]
**コンテンツとスタイルの分離 [#jcbb0dd4]
「人気のページ」など、データを提供するページはコンテンツとスタイルを分ける。
スタイルは…
+スタイルシート
RIGHT:[[:t/スタイルシート]]
+フィルター
+テンプレート


…で。

フィルターとテンプレートは別のページに埋め込んだときに可能…になるはず。


**%%リストとハッシュ%% [#z69970b0]
%%リスト状に並んだページ…版。%%
%%ハッシュに格納…Wiki。%%

**ページ内容がオブジェクト構成を表す [#qdd0826b]
ページは独立したオブジェクト。
それを構成するElement系クラスを決めるのはページ内容。
**1つのページ名にインスタンスは1つ [#ocee16cb]
Flyweight。
**アクセスログはページの属性 [#i50a7b52]
ページを扱うとき、一緒にアクセスログも扱えるように。
RIGHT:[[:t/フレームワーク]] [[:t/属性]]


**ページはプラグインのDB [#d6676d32]
プラグインが生成するデータはページに記録。
独自形式を使うよりも使いやすくなければ無意味。


**再作成を頻繁に行うので… [#vbc54925]
ページにID
同一IDはFlyweight。
→Factoryが要る。
RIGHT:[[:t/属性]]
**資料 [#sb6c1333]
ごく簡単なHTMLの説明 - The Web KANZAKI
[[http://www.kanzaki.com/docs/htminfo.html>http://www.kanzaki.com/docs/htminfo.html]]
**属性はファイル名に保存 [#sa05e0d9]
ファイルの中に書くよりも活用しやすいので、属性はファイル名の一部に。
データ量が大きい属性やプラグインが定義する属性には対応せず、ファイルの中に書くことにして。
凍結→r、とか編集権限削除とか読み取り専用とか。
RIGHT:[[:t/属性]]


***ファイル名に書けない属性 [#ld87faa4]
長すぎるもの。
リンクされたときに、リンクのツールチップ(バルーン表示)に出す文字列。
そのページの概要、一行説明。
→ページ内%%か属性専用欄%%に。ページのヘッダーとして。
***ファイル名に置く属性 [#oe49cd6e]
-ページ名(ページ名のパスも含む)
-凍結中?
RIGHT:[[:t/属性]]


*設計 [#v3386267]
#lsx(prefix=ページ/設計/)
*コード [#b9332bbb]
**Perl [#n3bc38ca]
[[code*:364]]