DokuWiki addnewpageプラグインの文字化け対応

DokuWiki 関連のブログ記事を色々見てたら Yozik さんの記事を発見。

IE + unicodeのバグ?

気になったので自分のサイトで試したところ、 IE で名前空間とページを新規に作成した場合に文字化けしました。
正確には、文字化けというよりも特定の文字1)を「e」に変換してるような動きです。

んでさらに調べたところ、どうやら DokuWiki や IE の問題というより、ページ作成に使用しているaddnewpage プラグインの動作が怪しい、ということ。このプラグインはデフォルトで新規ページ作成フォームを持たない DokuWiki にとっては必須プラグインなので、対策方法を紹介しておきます。

対策

今回の問題は、lib/plugins/addnewpage/script.js の中で、addnewpage プラグインのフォームで入力したページ名と選択した名前空間を連結した「完全ページ名」を、そのままの値でクエリ文字列を作成し、<form>タグの action 属性にURLとして設定していることが原因のようなので、
対策としては、クエリ文字列の代わりに hidden フィールドを追加し、そこの値に「完全ページ名」を設定するようにしてみました。

  • Step1: lib/plugins/addnewpage/syntax.php の 41行目にある <form> タグのaction属性の値を以下のように変更し、カレントパスへリクエストを POST することを明示します。
action="."
  • Step2: 同じく lib/plugins/addnewpage/syntax.php の 46行目に以下のコードを追加します。
$renderer->doc .= 
  '<input type="hidden" name="id" id="addnewpage_id" value="" />';
  • Step3: lib/plugins/addnewpage/script.js の 1行目にあるコードを削除し、かわりに以下のコードを追加します。
document.getElementById("addnewpage_id").value = 
  document.getElementById('np_cat').value + 
  ':' +
  document.getElementById('addnewpage_title').value;

IE6 で上記の修正で試したところ、問題なく動作できてました。
IE7 での動作が気になりますね。

1) 「ー」とか半角カナの濁点など
wordpress/blog/2007/id-00000035.txt · 最終更新: 2007/08/10 01:41 (外部編集)
chimeric.de = chi`s home Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0