PokiWiki

Top > Hack > PokiWiki

もし PokiWiki (Post PukiWiki) を作るとしたら

作らないけどね、確実に。

  • ベースは pukiwiki plus
  • convert_html 作り直し
    • 整形ルールを変数定義
      • すぐ変更できる
    • プラグインの実行と、他の文法は分離
      • pukiwiki syntax という別ツールとして公開できるほど分離
      • 他の整形ツール(Markdownなど)を使用できるようになる。Markdown($text) -> インライン、ブロックプラグイン変換
  • タイムスタンプは別ファイルに保存し、実際のファイルのタイムスタンプとは別にする
    • notimestamp のために php 実行ユーザにファイルを作り直さずにすむ。
    • 実際のタイムスタンプと pukiwiki に表示されるタイムスタンプは別になるため、notimestamp 編集されても本当は編集されたことが検知でき、キャッシュ系プラグインを正常に動作させられる。
    • サイト移転時にタイムスタンプが新しくならずにすむ。remakepage.inc.php のタイムスタンプリストアを使用せずにすむ
  • 概要フィールドを作る
    • 現状は第一見出しに概要を書いて、#lsx(contents=(num=1)) でなんとかそれっぽくできるだけ。
    • 質問箱などには多大な効果を発揮するだろう。
  • freeze もチェックボックスにする。
    • 本文に #freeze はうざい。
  • その他の追加も簡単にできる仕組みをなんとか考える
  • 参照時だけではなく、編集更新時にプラグイン動作を追加できるような仕組みを作る
  • MoinMoinWiki のように FCKEditor を用いた Wiki 文法記述ができるようにする
  • ファイル名を bin2hex ではなく、rawurlencode 的にする
    • 英語ページ名ならディレクトリを除けばすぐにわかる。
    • 文字数が長くなるので困ることもある・・
  • 仮想階層を本当の階層にする
    • get_existpages($dir = '/') とする
  • プラグインは
    class PluginXXX {
       function convert(){
       }
       function inline(){
       }
       function action(){
       }
    }
    
    のようなものも許す。現状も許可。init はコンストラクタではないほうがいい気がする。init がコンストラクタとすると、毎呼び出し時に new するわけで、関数内で static を使用していても消える。クラス変数としての static は PHP5 から。まぁ考える
  • pukiwiki.usr.ini.php のようなものを作り、pukiwiki.ini.php を上書きするようにする。
    • ユーザ独自設定はそちらに書くことでアップデート時に再編集しなくてよい
  • プラグインの define を if(! defined に徹底し、別ファイルに設定を記述しておけるようにする
    • プラグインアップデート時に再編集しなくてよい
  • plugin に自分が何行目で呼ばれたかの情報も渡す。
  • plus の部分編集アイコンになにか css class をつける。anchor_super は † 用なんだろう?
  • plugin_xxx_init() がなんとなく意味がない
  • プラグインのインライン型は数値参照などと型がかぶるのでよくない
  • 定数は全てグローバル変数に。定数だとハックできない。
  • pukiwiki mod など xoops など他の cms に組みこまれることもあるので、全体的に名前空間 pkwk を作る。
  • plugin_xxx_write_after とか
  • table 形式が一行にまとめあげないといけないのがつらい。
  • ajax できるように、javascript 側からいろいろ情報を受け取れるような形にしておく必要が。無論直接ファイルにアクセスできるようにする、ではまずいので、cmd=source でソースが返るとかなんらかの WebAPI 的な形にするのだとは思うが、どちらにしろ、wiki ソースを外から見れないように隠す、ということができなくなるのかな?投稿はちょっと整理すれば cmd=edit に post すればいいはず?
  • css の plug-in
  • plugin をアップデートする仕組み。
  • PEAR 標準なら関数、変数名は lowerCamel. 現在 pukiwiki は lower_case.
  • 編集画面スキン、など、も用意可能に。
  • skin/, image/, ではなく、skin/ だけでおk。中に image とか css とか、それぞれのスキンで自由に。monobook_plus?andreas01 のように。
  • ul,ol css リストの変な設定
  • [[[]]] が [hoge] のような表示にならない
  • [[ http://.... ]] がリンクにならない