PyukiWiki仕様書(仮)
"PyukiWiki" ver 0.2.1-beta2 $$
Copyright (C) 2005-2012 PukiWiki Developers Team
Copyright (C) 2004-2012 Nekyo (Based on PukiWiki, YukiWiki)
License: GPL version 3 or (at your option) any later version
and/or Artistic version 1 or later version.
Based on YukiWiki http://www.hyuki.com/yukiwiki/
and PukiWiki http://pukiwiki.sfjp.jp/
URL:
http://pyukiwiki.info/
MAIL:
ななみ <nanami (at) daiba (dot) cx> (注:バーチャル女の子です)
$Id: specification.html,v 1.3 2012/09/11 00:43:23 papu Exp $
This text file written UTF-8 Codeset
目次
注意
突然、何らかの理由で、仕様変更を行なうことがあります。
この説明書は、参考までで、内容を保障するものではありません。CGI起動
CGIは、通常の index.cgi形式、及び、nph-index.cgi形式で起動されます。mod_perl環境で動作はしますが、あくまで互換環境での動作となります。多くの環境変数が Apacheに依存していますが、一部のみIISで動作確認は行なわれています。
urlhack.inc.cgi Explugin は、PATH_INFO、または、404 ステータスの戻り値の、REDIRECT_URL を参照して、ページ名を決定します。PATH_INFOのが汎用性が高い分、制限がありますが、REDIRECT_URLのが、自由度が高く設定できます。
ディレクトリ構成
- attach
添付ファイル(添付画像も直接参照します) - backup
バックアップ - cache
システムキャッシュ - counter
アクセスカウンター - diff
差分 - image
画像 - info
情報ディレクトリ - lib
本体、perlモジュール、Explugin - logs
アクセスログ保存用(拡張) - plugin
プラグイン - resource
リソース - session
予約 - skin
スキンファイル、JavaScript、CSSファイル - trackback
トラックバック保存用(拡張) - user
予約 - wiki
Wiki文書 - wikidb
内部のURL短縮用(拡張)
主な本体ファイル構成
- index.cgi
wrapper - lib/wiki.cgi
本体起動 - lib/wiki_init.cgi
初期化用 - lib/wiki_auth.cgi
認証モジュール - lib/wiki_db.cgi
データベース - lib/wiki_func.cgi
汎用関数 - lib/wiki_html.cgi
HTML生成 - lib/wiki_http.cgi
HTTPモジュール - lib/wiki_link.cgi
リンク用モジュール - lib/wiki_plugin.cgi
プラグイン用モジュール - lib/wiki_spam.cgi
スパムフィルターモジュール - lib/wiki_skin.cgi
スキンモジュール - lib/wiki_sub.cgi
自動生成される内部サブルーチン定義スクリプト - lib/wiki_wiki.cgi
その他のモジュール - lib/wiki_write.cgi
書き込み用モジュール
主なperlモジュール構成
- lib/Algorithm/Diff.pm
差分生成用 - lib/AWS 以下
アクセスログ、ユーザーエイジェント振り分け用 - lib/Digest/Perl/MD5.pm
Pure Perl MD5モジュール - lib/File 以下
ファイル判定用モジュール - lib/HTTP/Lite.pm
簡易HTTPクライアント(未使用) - lib/IDNA/Punycode.pm
国際化ドメイン用モジュール(URLでも使用) - lib/Jcode.pm、lib/Jocde 以下
Jcode.pm - lib/Time/Local.pm
Time::Local - lib/Nana/Cache.pm
キャッシュ管理モジュール - lib/Nana/Cookie.pm
クッキー管理モジュール - lib/Nana/Enc.pm
簡易暗号化モジュール - lib/Nana/File.pm
ファイルアクセスモジュール - lib/Nana/GZIP.pm
gzip圧縮、解凍モジュール - lib/Nana/HTMLOpt.pm
HTML最適化モジュール - lib/Nana/HTTP.pm
HTTPアクセスモジュール - lib/Nana/HTTPCompress.pm
HTTP gzip圧縮出力モジュール - lib/Nana/Lock.pm
ファイルロックモジュール - lib/Nana/Logs.pm
アクセスログ解析モジュール - lib/Nana/Mail.pm
メール送信モジュール - lib/Nana/MD5.pm
互換MD5生成wrapperモジュール - lib/Nana/Pod2Wiki.pm
perl pod 簡易変換モジュール - lib/Nana/RemoteHost.pm
リモートホスト取得モジュール - lib/Nana/Search.pm
あいまい検索モジュール - lib/Nana/ServerInfo.pm
サーバー情報取得モジュール - lib/Nana/YukiWikiDB.pm
ロック対策済 YukiWikiDBモジュール - lib/Nana/YukiWikiDB_GZIP.pm
↑のgzip圧縮対応版 - lib/Yuki/DiffText.pm
Diff.pm を共用した差分生成モジュール - lib/Yuki/RSS.pm
RSS1.0モジュール - lib/Yuki/YukiWikiDB.pm
YukiWikiDB.pm のオリジナル
主なExplugin構成
- lib/aguse.inc.pl
リンク先チェッカー - lib/antispam.inc.pl
メールアドレス簡易暗号化 - lib/antispamwiki.inc.pl
簡易アンチスパム - lib/authadmin_cookie.inc.pl
管理者パスワードのcookie簡易保存 - lib/autometarobot.inc.pl
自動ロボット向けキーワード抽出 - lib/canonical.inc.pl
重複URL防止 - lib/captcha.inc.pl
CAPTCHAスパム対策 - lib/debug.inc.pl
デバッグ(develのみ) - lib/iecompatiblehack.inc.pl
IEの互換表示ボタンをなくす - lib/lang.inc.pl
国際化対応モジュール - lib/linktrack.inc.pl
外部リンク簡易トラッキングモジュール - lib/logs.inc.pl
アクセスログ取得モジュール - lib/ogp.inc.pl
Open Graph Protocol モジュール - lib/pathmenu.inc.pl
階層下に MenuBar等を作れるモジュール - lib/ping.inc.pl
Weblog ping - lib/punyurl.inc.pl
国際化ドメインURLに対応する - lib/setting.inc.pl
閲覧者設定機能 - lib/slashpage.inc.pl
階層下のページ名を容易にリンクする - lib/trackback.inc.pl
トラックバック - lib/urlhack.inc.pl
URL改造 - lib/xframe.inc.pl
frame、iframe等でページを表示できないようにする
主なプラグイン構成
執筆中
explugin仕様情報
初期化
- plugin_NAME_init メソッドを起動する
- expluginが有効になっていると、必ず起動されます。
- 引数はありませんので、$::form から読み出す必要があります。
- グローバルに変数以外の記述を行なわないで下さい。
有効になっているexpluginの強制読み込み
依存関係で、先に読み込む必要があるexpluginは、以下のようにして読み出すことができる。
&exec_explugin_sub("explugin name") ;
リソースの読み込み
&read_resource で読み込まれます。プラグインと同じ名前のファイルであれば、指定しなくても自動読み込みをします。
JavaScript、CSSの読み込み
&jscss_include で読み込まれます。
プラグインと同じ名前のファイルであれば、指定しなくても自動読み込みをします。
初期化時の返り値(ハッシュ)
- init
1を指定することで、正常終了したことを通知する。 - func
上書きする関数 - value
上書きする変数名 - msg
タイトル - body
文書本体 - header
<head>〜</head>の内容 - http_header
HTTPヘッダー - cssheader
生のCSS - jsheader
JavaScriptファイル読み込み後に実行するJavaScript文 - jsheadervalue
ページ表示後すぐに実行するJavaScript文 - bodytag
<body> の中の文 - last_func
ページを表示後に実行する関数 - 返り値サンプル
return('init'=>1, func=>'override1,override2',
'jsheader'=>$javascript, 'lastfunc'=>'&lastcallback;');
プラグイン仕様情報
初期化
メソッドを用いて初期化することはできません。
グローバルに記述することで、初期化することが可能です。
リソースの読み込み
&read_resource で読み込まれます。
プラグインと同じ名前のファイルであれば、指定しなくても自動読み込みをします。
JavaScript、CSSの読み込み
&jscss_include で読み込まれます。
プラグインと同じ名前のファイルであれば、指定しなくても自動読み込みをします。
inlineメソッド
&plugin(...) ; で呼び出されます。
引数は、上記の ... の中身のテキストが入ります。
sub plugin_NAME_inline {
my @arg=split(/,/,shift);
戻り値は、文字列で、HTMLを返すことにより表示されます。
return $html;
convertメソッド
#plugin (...) で呼び出されます。引数は、上記の ... の中身のテキストが入ります。
sub plugin_NAME_convert {
my @arg=split(/,/,shift);
戻り値は、文字列で、HTMLを返すことにより表示されます。
return $html;
actionメソッド
URLの cmd=pluginname で呼び出されます。
引数はありませんので、$::form から読み出す必要があります。
actionメソッドの返り値(ハッシュ)
- msg
タイトル - body
文書本体 - header
<head>〜</head>の内容 - http_header
HTTPヘッダー - cssheader
生のCSS - jsheader
JavaScriptファイル読み込み後に実行するJavaScript文 - jsheadervalue
ページ表示後すぐに実行するJavaScript文 - bodytag
<body> の中の文 - ispage
ページであることを返す - notviewmenu
予約
内部変数仕様情報
- $::HTTP_HEADER
HTTPヘッダー - $::IN_HEAD
<head>〜</head> - $::IN_JSHEADVALUE
最初に実行されるJavaScript - $::IN_JSHEAD
JavaScriptファイル読み込み後に実行されるJavaScript - $::IN_CSSHEAD
生のCSS - $::IN_CSSFILES
CSSファイル一覧 - $::IN_JSFILES
JavaScriptファイル一覧 - $::IN_JSLOADER
JavaScriptローダーのHTMLが入る - $::IN_BODY
<body>の中に入る - $::IN_TITLE
タイトルタグ - $::IN_META_ROBOTS
ロボット制御 - %::functions
グローバル関数の一覧 - %::database
wiki/ - %::infobase
info/ - %::diffbase
diff/ - %::backupbase
backup/ - %::resource
リソース - %::form
フォーム (GET/POST共用) - $::is_xhtml
XHTMLであれば1 - $::version
バージョン - $::version_number
バージョン数値(Majer×10000+Miner×100+Sub)
JavaScript関数仕様一覧
common.???.jsにある関数一覧です。ua
- 入力
- (ブラウザー名)
- 出力
- true、false
使用中のブラウザーの種類を返します。
以下のオプションが選択できます。
MSIE、FIREFOX、GECKO、CHROME、SAFARI、WINDOWS、MACOS、VERSION、MAGERVERSION
ln
- 入力
- (langname),(string),(langname),(string)...
- 出力
- string
言語セレクターです。
langnameは、en、ja、stringは、対応する言語の出力する文字列です。
sins
- 入力
- エレメントオブジェクト, HTML
- 出力
- なし
エレメントオブジェクトにinnerhtmlをします。
sinss
- 入力
- エレメントオブジェクトの文字列, HTML
- 出力
- なし
エレメントオブジェクトの文字列にinnerhtmlをします。
gid
- 入力
- エレメントオブジェクトの文字列
- 出力
- エレメントオブジェクト
エレメントオブジェクトを返します。(getElementById)
ou
- 入力
- URL,target
- 出力
- なし
window.openをします。targetの文字列を"b"とすると、"_blank" に入れ替わります。
keyCode
- 入力
- イベント
- 出力
- キーコード
入力されたキーボードのコードを返します。
getClientWidth
- 入力
- なし
- 出力
- ウィンドウの幅
ブラウザーの幅を返します。
getClientHeight
- 入力
- なし
- 出力
- ウィンドウの高さ
ブラウザーの高さを返します。
getDocHeight
- 入力
- なし
- 出力
- ドキュメントの高さ
表示されているページの高さを返します。
getScrollY
- 入力
- なし
- 出力
- 現在位置
表示されている位置を返します。
ar
- 入力
- なし
- 出力
- new Arrayの返り値
new Array を行ないます。
defined
- 入力
- オブジェクト、変数
- 出力
- true, false
指定したオブジェクト、または変数が存在するか確認します。
replaceAll
- 入力
- 文字変数、置換前文字、置換後文字
- 出力
- 文字
replaceの全文字対象です。
http
- 入力
- メソッド, URL, POSTするデータ, 正常時のコールバック関数, 異常時のコールバック関数
- 出力
- なし
http非同期クライアントです。コールバック関数は、以下の通りの引数です。
okfunc
- 入力
- HTTPステータス, レスポンステキスト
- 出力
- なし
errfunc
- 入力
- HTTPステータス, レスポンステキスト
- 出力
- なし
httpreq
- 入力
- なし
- 出力
- http object
ブラウザーのhttpクライアントオブジェクトを返します
ev.add
- 入力
- イベント名, 実行する関数(文字列), 実行する関数のパラメータ
- 出力
- なし
イベントハンドラーです。対応しているイベントは以下の通り
- onload
- onkeypress
- onkeydown
- onkeyup
- onclick
- onbeforeunload
- oncontextmenu
ev.del
- 入力
- イベント名, 実行する関数(文字列)
- 出力
- なし
イベントを削除します
ev.ex
- 入力
- イベント名
- 出力
- なし
イベントを強制実行します。
debug
- 入力
- メッセージ
- 出力
- なし
デバッグログをtextareaフォーム、及び、console.logに出力します。