• 追加された行はこの色です。
  • 削除された行はこの色です。
''「ページ/」で始まるページを作成''
#lookup(ページ/,* 新規作成 *);

#br

RIGHT:&tag(ページ,思い付き,実装,モデリング,コード,目次,編集中);

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

*関連 [#l71ba1cd]
#lsx(tag=ページ,new=true,except=^ページ(/.*)?$)
#br
//#related
//#br
[[検索:ページ]]
#br
*ページ周辺のタグ [#yc4ea82b]
#tag(0,ページ)
#br
----

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


*思い付き [#o96998b0]

**アクセス権は引き継がれる [#cfbd8cd4]
自動生成ページは元のページ(入力されたページ)すべてのアクセス権を引き継ぐ。
アクセス権の合成ルールが必要。

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


**添付ファイルは1ページ扱い [#hf16f53a]
添付ファイル1つで1ページ。
閲覧用データ/編集用データがHTMLで添付ファイルを表示するようなもの。
内部用データは添付ファイルそのもの。
こうしたほうが扱いやすいし、ページの機能を利用できる。
ページにページを含める機能を利用して。


**Wiki構築をページで [#g3e22770]
Wiki構築をページで。
他のWikiEngineでのプラグイン。

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

-Wikiではページとはファイル権限、日付、読み専用などの属性、パスなどがある。
-段落を1ページにすれば使い回しや集約のために分ける作業が減る。
-ページは…
--ファイル
--メール
--書き込み
--フォルダー
--オブジェクト
--順序や前後のある本のページ
--ToDoリスト


**履歴を取らない [#z7d8afc2]
同一ユーザーによる同じページの複数回更新は上書き。
バックアップや履歴を取らない。無駄。
更新を1回取り消すと他のユーザーによる更新まで戻ることになる。


**ページの内容はコードと見なせる [#xae85282]
-全てコメント
-#で始まる行はコード
-コードの出力はコメント
-コードの出力はコードの位置に展開される


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

※利用者登録も?
WikiFarmとは違う?

**ページクラスに追加 [#ac7869e0]
iframeタグを生成するプラグインなど、管理者だけが使えるプラグインを使えるページ。
使える文字列が違う。

このページ事態管理者だけが使えるものでなくてはならない。


**newプラグインを標準に [#b38375a2]
章にはNew!が付く。
ということでページへのリンクにも付く。
章へのリンクにも。
RIGHT:[[:t/共通化]]

ページタイトルと章タイトルにも。
&hatena;タイトルに付ける方法は?
タイトルに付ける方法は?

RIGHT:[[:t/プラグイン]]


**名前変更でリダイレクト [#sef60446]
ページの名前変更をしたら旧名はリダイレクトページになる。
もう一手間かけてリダイレクトページを消してもいいし、旧名をまた使うまで残しておくのも良い。

他サイトからのリンクを切らないための措置。

RIGHT:[[:t/連携]]


**仕様が大きくなりそう [#t434f600]
ページは分割する必要がありそう?


*実装 [#t1357f32]

**1ページに4つの形式 [#n7e04c0c]
-閲覧用
HTML
-編集用
WikiText
-保存用
オブジェクト
内部用のページIDなどを使う
(オブジェクト間を間接的な参照に)
-検索用
表記の揺れを省く
大文字/小文字統一
カタカナ/ひらがな統一
全角/半角統一


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


**凍結 [#b7b3c75d]
ページの凍結は再生成を止めるということ。
編集、参照などは可能に。


**エクスポート機能 [#p9e21fc5]
データをテキストにする。
入力時そのままの形式のテキストに。

ずっとテキストで保存することに意味はない。
必要なときだけエクスポートできればいい。

分割数を指定。デフォルトでは1。テキストファイルを1つの圧縮ファイルに入れてブラウザーへ。

***OPML [#kb349719]
OPMLを使う手も。
[[キーワード:OPML]]


***XOXO [#gb9d53e3]
microformatsのXOXO。
[[キーワード:microformats]]
***不要? [#w862c155]
WikiTextにフォーマットなど無いので、共通フォーマットも不要。
ただページ→他のWikiEngineでのページに変換することができれば良いだけ。
インポート手順は相手WikiEngine次第なのでサポートしない。

→エクスポート機能は変換しやすい形式でダウンロードできればよし。


**ページに手を加えるにはページごとに [#pebfd532]
{属性→値}
でできた指示をキューイング。
適当なときに処理。

最新版が必要なときは自動リロード。

衝突したか知らせるために、編集後のレスポンスには最新版が必要。


**編集ページは検索エンジンにインデクシングさせないように指定 [#c52b3e86]


**継承される領域 [#ld61a28b]
タグもここに。
WikiFormatで。1ページにいくつでも入れられる。
継承され、下位のページにも適用される。
ページ移動時、消えたり追加されたり。
ただしシステムが追加、削除するのはページ/裏にある継承可能領域のみ。

-継承される(ページ/裏と同様)
-システムはここを変更しない(ページ/裏と異なる)

&hatena;継承に単位が無いのが問題。
継承に単位が無いのが問題?
ページの内容はテキスト1つ。これを継承するので分ける必要がある。
内容(継承されない)、ページ全体に影響するプラグイン呼び出しを書くところ(継承される)、裏の3つに分ける?
継承したものは埋め込み位置が失われている。位置が重要なページ/内容は継承できなくていい。

#br

この領域にプラグイン呼び出しを書けば、下位にあるページすべてに書いたのと同じ。
この領域から呼び出すプラグインを作れば、下位にあるページを管理するようなものも作れそう。
WikiEngineのオブジェクトを組み合わせて独自のCMSを作るとか。


**本体はオブジェクト [#qdd0826b]
ページの本体はオブジェクト。
WikiTextではない。
WikiTextはオブジェクトを操作するためのコマンド集。あるいはオブジェクトの設計書。


**アクセスログはページの属性 [#i50a7b52]
ページを扱うとき、一緒にアクセスログも扱えるように。
[[:t/フレームワーク]]


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


**再作成を頻繁に行う [#vbc54925]
ページにID
同一IDはFlyweight。
→PageFactoryが要る。

異なる版を集めた集約も要る。
1つのページは
Pageの集約 ◇─ Page ◇─ Plug-in

ページ…Page
版…Pageが持つRevision(Rev)属性。
それとPlug-in。
Pageの集約はリスト。内部は線形。(順序が必要。)
Pageは順序無し。平たい構造。グラフ構造。
Plug-inはRevを中心にした星形。

-&hatena;Pageの集約に名前を。
-Pageの集約に名前を。
ページが集まったら何になるか?
本?冊子?束?


**資料 [#sb6c1333]
ごく簡単なHTMLの説明 - The Web KANZAKI
http://www.kanzaki.com/docs/htminfo.html


*モデリング [#v2fc25cc]
RIGHT:[[:t/WikiText]] [[:t/WikiFormat]] [[:t/自動生成ページ]] [[:t/テンプレート]]

ページは…
-データ保存場所
-保持しているデータやそれに関する情報を文字で情報を提供する。
-利用者から送られてきたクエリーのうち、自身に関する部分だけは解釈できる。
-入れ子関係になっている場合、親になるページインスタンスから属性を受け継ぐ。

ページは…
-読まれる
-書かれる
-自動的に書かれる
-名前を持つ
-ID(内部名)を持つ

ページは…
-ページ
複数。順序あり。ランダムアクセスはしない。
-テキスト(WikiText)
複数。順序あり。ランダムアクセスはしない。
-テンプレート
1組で良い。
が、複数も良い。複数ならテンプレートに適用順序を設けて順次使用することに。あまり意味はない。

…を含む。

**WikiText [#c726567e]
WikiTextは…
-HTMLタグ
-プレーンテキスト
-WikiFormat
WikiFormatは入れ子にできる。Decoratorパターン。

…を含む。

**WikiFormat [#r1ad57c4]
WikiFormatは…
-WikiFormat
-プラグイン呼び出し
--プラグイン名と入力するデータ列
-プラグイン呼び出し以外のマークアップ
(これも結局プラグインとして扱うので、結局プラグインと同じ)

…を含む。

**テンプレート [#q38c9cf5]
テンプレートは…
-適合用正規表現
-置き換え用正規表現
複数。順序あり。

…を含む。


**継承 [#ld66cf91]
属性は''未定義のものだけ''親ページから継承する。
先祖に無ければデフォルト値。デフォルト値はWikiの設定にある。

ページ/内容内に章見出しか定義リストの形式で…
-属性名(継承する)
-値
-継承できるか否か

…を与えられるように。
通常のページ/内容は元からこの定義リストになっていることにする。
属性名が無いと通常の内容の定義になる。

RIGHT:[[:t/継承]]


**ページにI/Fを複数用意 [#c71f838d]
例えばPukiWikiのMenuBarは表示が違う。

-クライアントスクリプトが付く/付かない
-すべて表示/見出しのみ表示

などを変えるには?

→フィルタリングで。
実装は
-includeプラグインが独自に行う。
HTML→HTMLの変換。
-includeプラグインが特別な変換をするようページに指示する。
全プラグインにHTML出力を2種類用意。
-スタイルシートのみで。
それもプラグインで明示されていない分のみ。includeした部分をHTMLタグ1つで括って指定。

→&tip;却下。変えない。
表示は1通り。I/Fは1つ。
利用者にとって使いやすくなる。
クラス間の依存関係を増やしてまでやることではない。

RIGHT:[[:t/フィルタリング]]


**出力の統合はどうやるか? [#v39f55ec]
→順位付きで出力。同順位同士では後に追加。
順位には複数に分かれたHTMLヘッダー領域も含まれる。

**Wikiは1つのページ [#wc24b3e4]


**検索ページ [#ye014cc2]
検索フォームは検索兼追加投稿((Chain of Responsibilityで。))という特殊なもの。
検索ワードが検索結果へのリンクになって残るから。

検索ページは…
-検索フォーム
-検索履歴(検索ワードのリスト)

…を含む。

検索履歴の分量には制限を掛けられるように、検索履歴のみを独立したページに。
プラグイン/自動更新で新しい履歴のみの越す。


**ページ/編集はページ/属性を変える一例 [#oec184cc]
ページ/属性のエディターがWikiサイト。
ページ/編集はページ/属性にある「内容」を更新、保存する機能。
→継承される領域やページ/裏だけでなく、ページ/属性の数だけWiki上のページのフィールドがあるということに。


*コード [#b9332bbb]

**Perl [#n3bc38ca]
[[code*:364]]