PukiWiki.orgの仕様(2004/08/20以前)†
PukiWiki.orgの設定及び仕様です。設定、カスタマイズの参考にしてください。
init.php†
- 出力文字コードをUTF-8に変更。
define('SOURCE_ENCODING','UTF-8');
dev:PukiWiki/1.4/UTF-8化参照。
- WWWC用更新時間の設定
define("RECENT_MOD",date("Y/m/d H:i:s", filemtime("./wiki/526563656E744368616E676573.txt")));
スキンで使用。
pukiwiki.ini.php†
- 複数のURLでのアクセスに対応させるため、$scriptは未設定
- TrackBack機能はOFF
$trackback = 0;
- Referer機能はOFF
$referer = 0;
- WikiNameは無効に
$nowikiname = 1;
- AutoLinkは8バイトから
$autolink = 8;
これにより、英数半角文字は8文字以上、日本語は3文字以上でAutoLinkされる。
- ページ一覧の日本語見出しはON。読みはKAKASIを使用。
$pagereading_enable = 1;
$pagereading_kanji2kana_converter = 'kakasi';
- 閲覧認証対象ページ
$read_auth_pages = array(
'/^:config.*$/' => 'PukiWiki',
);
- 編集認証対象ページ
$edit_auth_pages = array(
'/^:.*$/' => 'PukiWiki',
);
- Last-Modifiedヘッダ出力
$lastmod = 1;
- 一覧・更新一覧に含めないページ
$non_list = "^(\:)";
- 見出し行に固有のアンカーを自動挿入する
$fixed_heading_anchor = 1;
- <pre>の行頭スペースをひとつ取り除く
$preformat_ltrim = 1;
- 改行は反映しない(1.3系互換)
$line_break = 0;
default.ini.php†
- 雛形にするページ非表示
$load_template_func = 0;
- テキストエリアのカラム数を無効に
画面幅が固定ではないため、$colで指定せずに、スタイルシートで画面幅に応じて変動させるように、各スクリプトを改造。
- 関連するリンクを常に表示
$related_link = 1;
- フェイスマークを使用する
$usefacemark = 1;
- ユーザ定義ルール(コンバート時に置換)
$line_rules = array(
"%%%(?!%)((?:(?!%%%).)*)%%%" => '<ins>$1</ins>',
"%%(?!%)((?:(?!%%).)*)%%" => '<del>$1</del>',
"'''(?!')((?:(?!''').)*)'''" => '<em>$1</em>',
"''(?!')((?:(?!'').)*)''" => '<strong>$1</strong>',
"&heart;" => "<img src=\"./face/heart.png\" alt=\"♥\" />",
"&star;" => "<img src=\"./face/star.gif\" alt=\"★\" />",
"&" => "&",
"<" => "<",
">" => ">",
'&_now;' => format_date(UTIME),
'&_date;' => get_date($date_format),
'&_time;' => get_date($time_format),
);
rules.ini.php†
- ユーザ定義ルール(直接ソースを置換)
$str_rules = array(
'&now;' => format_date(UTIME),
'&date;' => get_date($date_format),
'&time;' => get_date($time_format),
'now\?' => format_date(UTIME),
'date\?' => get_date($date_format),
'time\?' => get_date($time_format),
'&page;' => array_pop(explode('/',$vars['page'])),
'&fpage;' => $vars['page'],
);
mbstringの設定†
Multibyte Support | enabled |
Japanese support | enabled |
HTTP input encoding translation | enabled |
Multibyte (japanese) regex support | enabled |
mbstring.detect_order | no value |
mbstring.encoding_translation | On |
mbstring.func_overload | 0 |
mbstring.http_input | pass |
mbstring.http_output | pass |
mbstring.internal_encoding | EUC-JP |
mbstring.language | Japanese |
mbstring.substitute_character | no value |
PukiWiki.orgのスキン†
- ご注意
PukiWiki.orgのスキンは、あくまで参考用です。デフォルトのスキンをPukiWiki.orgのスキンに置き換えても正常には表示されないでしょう。
文字コードはUTF-8です。
- <table>タグによるレイアウトを排除。メニューバーはfloatにより実現。
- ページ上のメニューを整理。凍結されたページでは編集メニューを表示しない。
- 関連ページはメニュー直下に表示。
- ページ更新日時はメニュー上に現在日時とあわせて右寄せで表示。
- ページの移動をスムースに行なえるようにパンくずリストプラグインを使用。
- ページ移動・ページ新規作成はメニューではなく、メニュー上のフォームからダイレクトに行なえるように。
- 単語検索もメニューではなく、メニュー上のフォームからダイレクトに行なえるように。
- 編集時にはページ上部のサイト名・ページ名・サイトロゴを非表示に。
- メニューの「再表示(Reload)」は、場面に応じて「戻る(return)」と表示するようにした。アイコンメニューについても同じ。
- USERAGENTによる細かな制御
- W3C準拠ブラウザとInternet Explorerとで異なるスタイルシートを読み込ませる。Internet Explorerではfloat時のCSSのwidthプロパティの継承が正常に行なわれないため、widthプロパティの値を親要素に対する%で指定するとメニューバーの表示がおかしくなることへの対処。Internet Explorerでは%ではなくpxで指定。このため、Internet Explorerでアクセスした場合は、表示幅が固定される。他のブラウザでは表示幅はブラウザの画面幅に応じて変化する。
- Internet ExplorerではDOCTYPEの前にXML宣言があると、W3C互換モードにならないバグがあるため、Internet Explorerの場合にはXML宣言を出力しない。
- Gecko(Mozillaなど)、Opera 7の場合は、サーバーから送られるheaderによるmime-typeを正しく判断するため、<meta>タグによるmime-typeの設定を出力しないようにし、headerでContent-Type: application/xhtml+xmlを出力するようにした。Another HTML-lintで怒られなくなる。
これによってGecko(Mozillaなど)やOpera 7ではXMLパーサーが動作するため、タグの不整合などのチェックが厳格に行なわれる*1。
なお、その他のブラウザに対しては、Content-Type: application/xhtml+xmlを理解できないブラウザ対策のため、headerではContent-Type: text/htmlが出力されるため、<meta>タグのmime-typeとは一致しない。
- スタイルシートは<?xml-stylesheet>ではなく従来からの<link>による指定を継承しているが、<meta>タグでスタイルシートのmime-typeを指定するとAnother HTML-lintに怒られるので、Another HTML-lintの場合には出力しないようにした。
しかし、<link>によるスタイルシートの指定をしていないと、style属性があるたびにAnother HTML-lintが怒る*2ので、Another HTML-lintに対しても<link>によるスタイルシート指定を出力する*3。
- 色指定については別のスタイルシートで指定。Internet Explorerの場合とその他のブラウザの場合で共用できるように。
- 基本的に表示されるフォントとその大きさについて、ユーザー側の設定が基準に。
- pukiwiki.orgにアクセスした場合とen.pukiwiki.orgへアクセスした場合で異なるメニューバーを表示。また、メニューバーを複数のページに分割した。これに伴い、メニューバーの表示は、menuプラグインを使用していない。
- サイト名を<h1>に、ページ名を<h2>に。メニューバーの見出しを<h1>に。Another HTML-lintにできるだけ怒られないように。
- 差分、書庫などのコマンド実行時にはメニューバーを非表示に。
- <link>の設定を増やす。
- <meta>タグでWWWCに対応。
- 整形済み行については、
- 画面からはみ出すのが嫌だという意見
- 逆にoverflow:scroll/autoによるスクロールバー表示が嫌だという意見
両方の意見を満たすため、下記のように*4。
- print.cssにまだ対応していない
スクリプトの改造†
- 英数文字は半角表示に統一(表示のみ)*5。
- 半角カナは全角に変換して表示(表示のみ)*6。
- 目次が参照する飛び先を固定IDに。
- 検索機能でページ名だけでなく該当部分のブロックも表示。
- ページ単位だけでなく、章・節・小節などを単位とした編集機能。
- 章・節などの末尾にメニュー及びアイコンメニューへのリンクを出力。
- 章・節などの階層を標準の3段階から5段階に拡張。
- リストの階層を標準の3段階から無制限に拡張。
- 整形済みブロック<pre>~</pre>の導入。
- UTF-8エンコードに対応していないLynxやw3mでのアクセスも可能に。
- 編集画面に「編集中止」ボタンを追加。
- 表組みの配置を左寄せ、右寄せも可能に。
- Safari対策。
- 画面幅が狭い場合に対応するため、calendar2の表示を一部変更
- aricleプラグインをblockquoteで出力しないように。
- 編集フォームなどの幅をスタイルシートで指定。cols属性がないとAnother HTML-lintが怒るので、Another HTML-lintにはcols属性を出力。
- includeプラグインに見出しを出力しないオプションを追加。見出しを出力する場合には更新日時も同時に出力。
- calendar_viewerプラグインの見出し出力部分に更新日時も同時に出力。
- 注釈への<a>タグ及び注釈の<a>タグにtitle属性を追加。Another HTML-lint対策。
- 画像を直貼りする荒らしへの暫定対策。画像へのURLを直書きしてもリンクが張られるだけで、画像表示しないように。
- <table>タグにダミーのsummaryを出力*7。dev:BugTrack/522が実現するまでの暫定措置。Another HTML-lint対策。
- プラグインなどのスクリプト内で使用している<table>タグに対してもsummaryを設定。
- その他、細かい部分で調整。
組み込み済みプラグイン(cmdを含む)†
標準添付のプラグインでもPukiWiki.orgには組み込まれていないものがあります。
- 組み込まれているプラグイン一覧
- aname.inc.php
- article.inc.php
- attach.inc.php
- backup.inc.php
- br.inc.php
- button.inc.php
- calendar2.inc.php
- calendar_viewer.inc.php
- clear.inc.php
- color.inc.php
- comment.inc.php
- counter.inc.php
- deleted.inc.php
- diff.inc.php
- edit.inc.php
- filelist.inc.php
- freeze.inc.php
- hr.inc.php
- include.inc.php
- interwiki.inc.php
- jumpmenu.inc.php
- lastmod.inc.php
- links.inc.php
- list.inc.php
- lookup.inc.php
- ls.inc.php
- ls2.inc.php
- md5.inc.php
- memo.inc.php
- new.inc.php
- newpage.inc.php
- norelated.inc.php
- online.inc.php
- pcomment.inc.php
- popular.inc.php
- q.inc.php
- radio.inc.php
- read.inc.php
- recent.inc.php
- ref.inc.php
- rename.inc.php
- rss.inc.php
- rss10.inc.php
- ruby.inc.php
- search.inc.php
- size.inc.php
- template.inc.php
- topicpath.inc.php
- tracker.inc.php
- tracker_list.inc.php
- unfreeze.inc.php
- vote.inc.php
- yetlist.inc.php
.htaccessによる直接アクセスの規制†
image、skinディレクトリを除く各サブディレクトリは、外部からの直接アクセスを.htaccessで規制。
Order allow,deny
Deny from all
Another HTML-lint†
どのページでも基本的にAnother HTML-lintで100点になるはずです。ただし、下記の場合には100点になりません。
- Another HTML-lintの不合理な要求
<textarea> には初期値となるテキストを指定しておきましょう。
articleプラグインやtrackerプラグインなどで発生します。初期値を指定したら、いちいちその初期値を消してから記述しなければならなくなります。不合理な要求と言わざるをえません。
熱狂的なW3C信者でない限り、こんな不合理な要求には従う必要はないでしょう。
なお、新規ページ作成やtemplateプラグインなどでは初期値が設定されているので発生しません。
- ページの記述が厳密に言えばおかしいもの*8
<a> のアンカー `ほげほげ` は xxx行目で異なるリンク先を指しています。
リンク先が異なる同じエイリアスがある。同じ文字列のエイリアスに対して異なるリンク先を指定した場合に発生します。WikiNameまたはBracketNameとエイリアスが同じ文字列である場合にも発生します。文脈の中で区別がつくのであれば、気にする必要はないでしょう。Another HTML-lintは文脈など理解しませんので仕方ありません*9。
また、目次を設置したページで、見出しの語句とBracketName、WikiNameまたはエイリアスの文字列が完全一致した場合にも発生します。避けようがありません(苦笑)*10
<h4> が xx行目の <h2> に続いていますが好ましくありません。
見出しのレベルが不正である場合に発生します。これもある程度は仕方ありません。includeプラグインやcalender_Viewプラグインでincludeされるページの先頭の見出しが***で始まることがあっても不思議ではないですし。
一般のページは見出しを*か**で始めるでしょうから、あまり気にしなくてもいいです。
減点になっても1~2点で収まるはずですので、よほどのことがないかぎり98点以上になるでしょう。