addnewpageプラグインの日本語対応方法

addnewpage プラグインを IE6 で使用した場合、日本語の namespaces (名前空間)とページ名が文字化けするので、以下の修正によって日本語に対応させます。

なおこの修正は、2007-02-22時点での最新ソースにあわせて記述してます。

文字化けの原因

今回の問題は、lib/plugins/addnewpage/script.js の中で、addnewpage プラグインのフォームで入力したページ名と選択した名前空間を連結した「完全ページ名」を、そのままの値でクエリ文字列を作成し、<form>タグの action 属性にURLとして設定していることが問題っぽい。

対応方法

クエリ文字列の代わりに hidden フィールドを追加し、そこの値に「完全ページ名」を設定するように修正します。

  • Step1: lib/plugins/addnewpage/syntax.php の 48行目にある <form> タグのaction属性の値を以下のように変更し、カレントパスへリクエストを POST することを明示します。

lib/plugins/addnewpage/syntax.php

action="'.wl().'"
  • Step2: 同じく lib/plugins/addnewpage/syntax.php の 52行目に以下のコードを追加します。

lib/plugins/addnewpage/syntax.php

$renderer->doc .= 
  '<input type="hidden" name="id" id="addnewpage_id" value="" />';
  • Step3: lib/plugins/addnewpage/script.js の 1行目にあるコードを削除し、かわりに以下のコードを追加します。

lib/plugins/addnewpage/script.js

document.getElementById("addnewpage_id").value = 
  document.getElementById('np_cat').value + 
  ':' +
  document.getElementById('addnewpage_title').value;

syntax.php の 48行目にあるaction属性に指定する値を wl関数1) から取得するようにしました。 この方法のだと、DokuWikiの「サイト設定」→「高度な設定」で「URLの書き換え」設定を変更しても、設定にあわせた URL が取得できるので良いです。

1) inc/common.phpに定義されており、Wikiページのリンクを生成する関数
dokuwiki/scratch/addnewpage-japanese.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