>゚)))>彡 (ΦωΦ)

ToraToraWikiを読む

ToraToraWiki 1.3.2(2014-04-20) を読む。

index.php

エントリーポイント。

主な流れは

初回起動時
index.php -> app/install.inc
普段

index.php -> app/boot.inc -> app/main.inc -> main() -> ... -> app/theme/basic/html.php

...部分は app/page.inc -> app/handler/wiki.inc -> app/handler/wiki/wiki_convert.inc など。保存されているページを読み込む処理。

app/main.inc

本体。

  • 各種設定の読み込み
  • プラグインモジュール読み込み
  • 短縮URLを option/shorturl.inc 呼び出しに置き換え
  • ページ名の相対パスをフルパスに変換
  • ページ読み込み。→ app/handle.inc でページ種別(wiki/text/file)ごとの処理へ。
  • DOM生成 → PHPの DOMDocument::saveXML でHTML出力

app/main.inc: main()

  • $OPTIONS はURLクエリーで与えられた"option"や"action"に適用するフィルター。 app/option/... を読み込んだ時に定義される。$OPTIONSにない"option"パラメーターは無効。
  • $is_continue は app/option/... から app/main.inc(呼び出した側)へのフラグ。app/page.inc を実行するかどうか(ページをHTML化して返すかどうか)を示している。
  1. app/main.inc: main()
  2. app/option.inc: option() で(URLクエリーで指定された)"option"に応じた処理を呼び出す。それぞれ処理に応じたHTMLを返す。
  3. main()でHTMLが得られる。
  4. 実行した"option"によってはここで app/page.inc: page() を実行。保存されているページを元にしたHTMLを得る。
  5. main()は大体終わり。
  6. app/boot.incまで戻ってから、app/theme/... の html.php を呼び出す。これまでに作ったHTMLをテンプレートに埋め込んでレスポンスにする。

"action"

"action"は<form action="...">のaction? optionをさらに分岐させるための制御情報。

例えばURLや、POSTされたフォームデータに… … option=replace&action=write …があれば app/option/replace.inc: replace_write() が呼ばれる。

注目

ディレクトリ一覧

app/
ToraToraWiki本体
app/handler/
ページ種別ごとの処理
app/handler/file/
ページ種別"file"
app/handler/wiki/
ページ種別"wiki"の処理・記法の解析
app/handler/wiki/function/
ファンクションの定義
app/manual/
マニュアルになるページを連結したファイル
app/option/
URLクエリー"option"と"action"に対応する処理

app/main.inc(87): $main_page_output = option($args, '', $is_continue);

app/otherwiki/
他のWikiシステムからの移行ツール
app/plugin/
プラグインを作ったらここに置く
app/sentence/

ページ名や検索クエリーなどを意味ある文にする処理

自動リンクはページ名が単語境界に挟まれてるときだけ(Page1はPageにリンクしない)…とか、 検索クエリーは空白区切り、""でくくると空白も使える…などのルールが書かれている。

app/theme/
外観のテーマに必要なもの
app/tool/
Wikiエンジンとは別に単体で動くツール
resource/
画像や一般公開されているライブラリ
storage/
運用中に作られるデータ
theme/
外観のテーマ。「外観の設定」を反映したもの。

ToraToraWikiManual/ja/Administration/Settings

コメント

tarotoro

memo

misc

spam


[支援] Wikiサイトを作成

仲間をさがす

wink