インストールにはGauche 0.8.3 以降が動作する環境が必要。デフォルトのバックエンドデータベースライブラリは gdbm であり、WiLiKiのインストール時 gdbm の利用環境も合わせてインストールされる。qdbm を使う場合は qdbm そのものに加え、Gauche で qdbm が使えるようにするためのモジュール Gauche-qdbm のインストールも必要。
WiLiKiの動作には、Gauche(ゴーシュ)というScheme系インタプリタ処理系環境が必要。必要バージョンは0.8.3以降。Gaucheのインストールについてはこちら参照。
WiLiKiは、既定ではバックエンドデータベースとしてgdbmを使用する設定になっている。qdbmを利用するなら、qdbmそのものとGaucheからqdbmを扱うのに必要なGauche-qdbmのインストールが必要。qdbmのインストールについてはこちら参照。Gauche-qdbmのインストールについては以下の通り。
SourceForge.netよりソースをダウンロード。2010/1/22 現在、最新バージョンは0.61。
shell> wget http://downloads.sourceforge.net/project/wiliki/wiliki/0.6.1/WiLiKi-0.6.1.tgz
ダウンロードしたディレクトリで、gauche-package
を実行すればよい(必要に応じ"sudo
"を前につけて)。
shell> gauche-package install WiLiKi-0.6.1.tgz
以下の一般的手順でもOK(必要に応じ"sudo
"を前につけて)だが、通常は前者の方が一度に済むので便利。
shell> tar -zxvf WiLiKi-0.6.1.tgz shell> cd WiLiKi-0.6.1 shell> ./configure shell> make shell> make check shell> make install
ソースバイナリを展開した中にcgiのサンプルが入っている。これを適宜修正して利用。
shell> tar -zxvf WiLiKi-0.6.1.tgz ←未展開なら展開する shell> cp WiLiKi-0.6.1/src/wiliki.cgi /var/www/cgi-bin/ ←CGIスクリプトディレクトリへスクリプトをコピー shell> cp WiLiKi-0.6.1/src/wiliki.css /var/www/html/ ←スタイルシートをコピー shell> cd /var/www/cgi-bin/ shell> vi wiliki.cgi
1: #!/usr/bin/gosh →goshの場所。which gosh コマンドで確認できる 2: (use wiliki) →wilikiに関するgaucheモジュールを読み込む 3: (define (main args) 4: (wiliki-main 5: (make <wiliki> 6: :db-path "/home/kudou/data/wikidata.dbm" → 7: :log-file "/home/kudou/data/wikidata.log" → 8: :top-page "WiLiKi" → 9: :title "MyWiliki" → 10: :description "Kudou's Wiliki Site" 11: :style-sheet "/wiliki.css" 12: :language 'jp 13: :charsets '((jp . euc-jp) (en . euc-jp)) 14: :image-urls '((#/^http:\/\/sourceforge.net\/sflogo/ allow)) 15: :editable? #t 16: :debug-level 0 17: :db-type <gdbm> 18: )))
wiliki.cgi
)があるディレクトリからの相対指定となります。指定場所はhttpで外部からアクセスできるディレクトリの外に置くことを推奨します。データベースファイルは存在しなくても初回アクセスの際、自動的に作成されます。そのためデータベースファイルを置くディレクトリは初回のみCGIスクリプトが書き込みできるようアクセス権を設定して下さい。
wilikiのcgiに渡す引数(wiliki.cgi?この部分)について。
ページの種類 | 指定引数 | 例(PDB:1A1R) | ||
---|---|---|---|---|
URL引数全体 | キー:値 | URL引数全体 | キー:値 | |
通常表示ページ | ?ページ名 |
(p):ページ名 |
?PDB%3a1A1R |
(p):PDB%3a1A1R |
編集ページ | ?p=ページ名&c=e |
p:ページ名 |
?p=PDB%3a1W26&c=e |
p:PDB%3a1A1R |
編集履歴ページ | ?p=ページ名&c=h |
p:ページ名 |
?p=PDB%3a1W26&c=h |
p:PDB%3a1A1R |
編集プレビューページ | (POST) |
p:ページ名
|
(POST) |
p:PDB%3a1A1R
|
WiLiKiページを更新するにはcmd-commit-edit
コマンドを使う。
これを使うにはあらかじめwiliki/edit.scm
のロード((use wiliki.edit)
の実行)を行っておく必要がある。
【書式】 (use wiliki.edit) (cmd-commit-edit ページ名 ページ内容 更新時間 コメント 最新更新に載せるか ?)
(sys-time)
を指定しておくのが一般的と思われる。#t
を指定すれば最新の更新ページに記載、#f
なら記載しない。#t
を指定すれば手続き的に生成されたことを示す、とedit.scm
には記載されている。スクリプトなどで生成された編集の場合#t
にするのがいいのかな? ただ、editableがlimitedになっている時のみ有効とも書かれてあり、よく分からない。
※これだけでは、"WiLiKi database is not opened" というエラーになるよう。普通にdbm-open
でもだめみたいなので、WiLiKiの手続きを使う必要がありそう?
【例】ページ名「ほげ」、内容「ほげほげほげ」、コメント「ほげ3つ」 (use wiliki.edit) (cmd-commit-edit "ほげ" "ほげほげほげ" (sys-time) "ほげ3つ" #t #t)
編集ページの「Commit without preview」ボタンに関わるform要素情報。
<form method="post" action="(自分自身のスクリプト)"> <input type="hidden" name="c" value="c" /> ←処理内容 <input type="hidden" name="p" value="ページ名" /> <input type="hidden" name="l" value="言語名" /> ←言語名、"jp" または "en" <input type="hidden" name="mtime" value="編集時刻" /> ←UNIXタイム表記(1970年元旦からの積算秒数) <input type="checkbox" name="donttoutch" value="on" /> ←チェックOFFだと送信されない <input type="submit" name="commit" value="Commit without preview" /> <textarea name="content"> (ページ内容) </textarea> <textarea name="logmsg"> (コメント内容) </textarea> </form>
自動的に指定の情報と内容を置き換えて出力を行うもの。内容の書き込み(コミット)時にのみ置換されるWriterマクロと、表示時に毎回内容を置換するReaderマクロがある。
マクロ種別 | マクロ書式 | 内容 |
---|---|---|
Writer | [[$date]] | 書き込み時、サーバローカル時刻に置換されて書き込まれる。 |
Reader | [[$$include ページ名]] | 指定したページ名の内容に置換して表示される。指定したページが存在しない場合はマクロ展開は行われない。 |
[[$$index ページ名]] |
ページ名が指定したページ名で始まるページの一覧が箇条書きで出力される。完全一致するものも含まれる。
例:[[$$index VirusGroup]] → 「VirusGroup」および「VirusGroup:」で始まるページ名を持つページ一覧出力(実際はリンク付き)
|
|
[[$$cindex ページ名 区切り文字]] | [[$$index]]のコンパクト版(Compact index)。指定した区切り文字で区切って出力される。区切り文字を省略した場合は空白が用いられる。 | |
[[$$toc ページ名]] | ページ名で指定したページの見出しをリストにして出力する。ページ名を省略した場合はこのマクロを記したページ自身の見出し一覧が出力される。 | |
[[$$img URL 代替文字列]] | URLがwilikiメインスクリプトの「image-urls」で許可しているサイトである場合は、指定した画像を表示する。代替文字列(alt属性の属性値)には、代替文字列を指定している場合はその文字列が、省略した場合は「image」が用いられる。 URLが「image-urls」で許可しているサイト以外の場合は、代替文字列(指定がない場合は「image」)をアンカー文字列とするURLへのハイパーリンクとなる。 |
参考文献・サイト
【wilikiスクリプト】
#!/usr/local/bin/gosh
(use wiliki)
(define (main args)
(wiliki-main
(make <wiliki>
:db-path "/var/www/html/wikidata.dbm"
:top-page "Toppage"
...
)))
【変数定義】
(define top
(ref (wiliki) 'top-page))
→par には Toppage が代入される
かつてはクラス変数の参照?に「(top-page-op (wiliki))
」という書式が許されていたが、現在は使えない(Gauche バージョン0.9ではこの書式は動作しない(改めて定義すれば使えるのかもしれないが、少なくとも既定状態では使えない)。0.8.13では動作するよう)。参照:wiliki.scmのソース解読
/Library/Webserver/CGI-Executables/wiliki/wiliki.cgi
…WiLiKiの設定。
/usr/local/share/gauche/site/lib/wiliki.scm
…wilikiマクロなどの基本定義。
/usr/local/share/gauche/site/lib/wiliki/core.scm
…wilikiマクロなどの基本定義。
/usr/local/share/gauche/site/lib/wiliki/db.scm
/usr/local/share/gauche/site/lib/wiliki/edit.scm
/usr/local/share/gauche/site/lib/wiliki/format.scm
/usr/local/share/gauche/site/lib/wiliki/history.scm
/usr/local/share/gauche/site/lib/wiliki/log.scm
/usr/local/share/gauche/site/lib/wiliki/macro.scm
/usr/local/share/gauche/site/lib/wiliki/mcatalog.scm
/usr/local/share/gauche/site/lib/wiliki/msgs.scm
/usr/local/share/gauche/site/lib/wiliki/page.scm
/usr/local/share/gauche/site/lib/wiliki/pasttime.scm
/usr/local/share/gauche/site/lib/wiliki/rss.scm
/usr/local/share/gauche/site/lib/wiliki/rssmix.scm
/usr/local/share/gauche/site/lib/wiliki/scr-macros.scm
/usr/local/share/gauche/site/lib/wiliki/util.scm
/usr/local/share/gauche/site/lib/wiliki/version.scm
/usr/local/share/gauche/site/lib/wiliki/dbm/qdmb.scm
/usr/local/share/gauche/site/lib/wiliki/ggc/debug/trace.scm