詳細な設計→Page

目次 Edit


関連 Edit

検索:ページ

ページ周辺のタグ Edit

Array

ページとは Edit

→Page[?]

ページは再帰構造のデータベース。MVCのModelの中核。MVCのViewでもある。
ページがMまたはVに属するのではなく、ページの中にMとVが存在する。
wikiは1つのページ

思い付き Edit

  • 仕様が大きくなりそう
    ページの仕様は分割する必要がありそう?
  • Wikiのページにはファイルと同様にアクセス許可リスト、日付、読み専用などの属性、パスなどがある。
  • 章を1ページにすれば使い回しや情報集約のために分ける作業が減る。

スレッドモード Edit

コメント、トラックバック、Wikipediaでのノートのようなものは裏に隠す。(ページ/裏に限らず、普段見えないところ)
UIWikipedia形式(タブ)でいい。

Wiki構築をページ Edit

Wiki構築をページで。
他のWikiEngineでのプラグイン

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

APIページ内の表をレコード単位で読み出しするようなことができれば実現しやすい。

アクセス権は引き継がれる Edit

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

自動生成ページの実装次第。他の要素には影響しない。
すべてのページで上位のアクセス権を引き継ぐようにすれば、アクセス制御が簡単。利用者を増やしても既存グループに追加、ページを増やしても既存ページの下位に追加すれば新しい設定は不要。

Wikiは1ページが1つの板 Edit

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

HTML許可ページ Edit

ブログパーツなど、サイトに貢献する人だけが作れるページ
HTMLタグなどが閲覧ページまで残る。

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

ヘッダーの使い道 Edit

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

内容は…

…などを章として追加。

実装 Edit

構成 Edit

310x310

ページヘッダー内容ページフッターは連結して1つのページとして閲覧時展開

ページヘッダーページ見出しページ名とEditボタン)やタグリンク一覧(そのページ名を表すメタシンボル付き)を置く。

ページとは Edit

ページは…

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

ページは…

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

ページの構成…

ページ見出しから始める Edit

閲覧時、ページ名見出しと同様に表示。
見出しにはEditボタンを。

ページ内容の有効な一行目がページ名。なのでページ名見出しにすればいい。
(一行目かTITLE:やNAME:で始まる行。複数あるなら全てを連結したもの)

newプラグインを標準に Edit

ページへのリンク(Wiki内リンク)にはプラグイン/New![?]が付く。
実装するならオプション。サイト設定で。

添付ファイルは1ページ扱い Edit

添付ファイル1つに1ページ生成。フォーマットの統一。
こうしたほうが扱いやすいし、ページの機能を添付ファイルでも利用できる。

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

存在しないページは無い Edit

存在しないページ=内容が空で存在するページ
ページ管理クラス(ページとファイルを結び付けるクラス)以外では(UIからも含めて)そうなっているように。

ページ内容はコードと見なせる Edit

ページ内容をコードと見なすと…

  • ページ内容は基本的に全てコメント
  • ただし、#(プラグインの接頭辞)で始まる行はコード
  • コードの出力はコメント
    コードとして再処理することは無い。
    他のコードの引数(データ)になることはある。
  • コードの出力はコードと置き換わる。

本文のレンダリングは最後 Edit

本文ヘッダーなど以外の部分)の展開(レンダリング、HTML変換)は最後。
1つの画面に重複部分があるとき、ヘッダーなどを優先する。
二重展開を防ぐようにした場合、先にヘッダーなどを展開しないとヘッダー編集時のプレビューができなくなるから。

ページ更新できるのは自身だけ Edit

編集など、ページ属性を変更する操作は自身が全て行なう。
(自身とはインスタンス)

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

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

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

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

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

Webページテンプレートは特定のページに書く Edit

システムが用意するページ(Webページ)は:config/Page/Editのような特定のページで定義。

このページを書き換えて…

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

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

コンテンツとスタイルの分離 Edit

「人気のページ」など、データを提供するページはコンテンツとスタイルを分ける。
スタイルは…

  1. スタイルシート
    RIGHT::t/スタイルシート[?]
  2. フィルター
  3. テンプレート

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

検索に含まれている。

リストとハッシュ Edit

リスト状に並んだページ
ハッシュに格納…Wiki。

ページ内容がオブジェクト構成を表す Edit

ページは独立したオブジェクト。
それを構成するElement系クラスを決めるのはページ内容

プラグインからはこのオブジェクト構成を参照できるように。
WebページのDOMアクセスと同様に。

1つのページ内部名にインスタンスは1つ Edit

Flyweight。内部名がID。ページ名は同じものが複数あっていい。

アクセスログページ属性 Edit

アクセスログページ化する。
プラグインから扱えるように。

アクセスログから逆リンクを表示すればその場しのぎの低負荷のBackLinkになる。

ページプラグインのDB Edit

プラグインが生成するデータはページに記録。
プラグインが独自にデータ保存するよりも使いやすくなければ無意味。

資料 Edit

ごく簡単なHTMLの説明 - The Web KANZAKI
http://www.kanzaki.com/docs/htminfo.html

閲覧時のページ→HTML変換の参考に。

空のページ Edit

空でページ名だけのページは、閲覧時に編集画面。DanglingLinkのかわり。

設計 Edit

属性内容 Edit

ページ/属性と、ページ/内容
属性」という言葉が紛らわしい。:t/?[?]

属性
テキストのリスト。下位ページ継承する。(1項目ごとに)
内容
テキスト1つ。継承されない。

どちらもWikiNotationあり。内容の方はそれに加えてプレーンテキストも。
属性の方にプレーンテキストを書いてもいいが特に意味がない。

APIプラグイン呼び出しからは区別なし。指定すると呼び出しが煩雑になるので。
継承処理後の属性内容を1つにしたものが参照可能になる。
属性部分を何かで括ったりもしない。

他オブジェクトとの関わり合い Edit

ページ…Elementのコンテナー。ページページを含むことはできない。
ページ同士に関連は無し。リンクオブジェクトでつながりが分かるだけ。
Element…ページ要素ページはElementに含まない。深い構造にしないため。

PageとNotationは、ContainerとElementの関係。
クラス名…Page、Notation。”Container”、”Element”という言葉は属性名やインターフェイス名で使用。

機能

  • のオブジェクトとの類似度算出
    コードで。Elementのクラス別。
  • 出力用(ページの一部になるもの)に変換
    逆変換は不可能。
  • 生成
    コンストラクター

コード Edit

Perl Edit

code*:364