PukiWikiのURLの整形(その4)

id:otn:20060604 の続き。
最後に、各ページURLの表示を変更する。EUC-JP のページ名は、rawurlencode() によって URL 中のページ名に変換される。そこで、lib/make_link.phpの先頭で、

function myurlencode($uri) {
        return str_replace('%2F','/',rawurlencode($uri)).'/';
}

と、%2F を / に戻してさらに最後に / を付けるように変更する。これを使い、

$script . '?' . rawurlencode($page)

のようになっている部分を、

$script . '/' . myurlencode($page)

のように変更するのだが、これだと、/CMD/?ページ名 が、/CMD//ページ名 になってしまう。そこで、

rtrim($script,'/') . '/' . myurlencode($page)

のように、スクリプト文字列の最後の / を取る必要がある。


こういった変更を、lib/make_link.php の他、lib/html.php 、lib/func.php や plugin の中も変更する。
ただし、refer= の後や、page= の後は、rawurlencode() のままである。


lib/func.php の中の function page_list() は、

    // Shrink URI for read
    if ($cmd == 'read') {
!       $href = rtrim($script,'/') . '/';
    } else {
        $href = $script . '?cmd=' . $cmd . '&page=';
    }

    foreach($pages as $file=>$page) {
!       if ($cmd == 'read') {
!           $r_page  = myurlencode($page);
!       } else {
!           $r_page  = rawurlencode($page);
!       }
        $s_page  = htmlspecialchars($page, ENT_QUOTES);
        $passage = get_pg_passage($page);

のようにするといいだろう。


plungin は、navi ls2 recent rss tb しか修正していない。まだ使っていないもので修正が必要なものがあるだろうが、“そのときはそのとき”という方針で、未修正。
おわり。