添付>[添付ファイル一覧] ページでタイトルのリンクがtopicpathにならず、普通のリンクになります。
参考:ここの該当ページ
https://pukiwiki.osdn.jp/dev/?plugin=attach&pcmd=list&refer=BugTrack%2F2593
簡単にまとめると、
の前提条件の上で、
のが原因っぽい感じです。
(1) pukiwiki.php L86らへん
$title = htmlsc(strip_bracket($base)); $page = make_search($base); if (isset($retvars['msg']) && $retvars['msg'] != '') { $title = str_replace('$1', $title, $retvars['msg']); $page = str_replace('$1', $page, $retvars['msg']); }
(2) main.js L571らへん
function makeTopicpathTitle () { // : // 略 // : var pageNameE = sitePropE.querySelector('.page-name') if (!pageNameE || !pageNameE.value) return
(3) html.php L261
// Page name $h_page_name = htmlsc($page); $page_name_data = <<<EOS <input type="hidden" class="page-name" value="$h_page_name" /> EOS;
(4) ja.lng.php L155
$_attach_messages = array( // : // 略 // : 'msg_upload' => '$1 への添付', // : );
(5-1) attach.inc.php > attach_form()
$navi = <<<EOD <span class="small"> [<a href="$script?plugin=attach&pcmd=list&refer=$r_page">{$_attach_messages['msg_list']}</a>] [<a href="$script?plugin=attach&pcmd=list">{$_attach_messages['msg_listall']}</a>] </span><br /> EOD;
(5-2) attach.inc.php > AttachFile::info()
$retval['body'] = <<< EOD <p class="small"> [<a href="$script?plugin=attach&pcmd=list&refer=$r_page">{$_attach_messages['msg_list']}</a>] [<a href="$script?plugin=attach&pcmd=list">{$_attach_messages['msg_listall']}</a>] </p>
① プラグインの動作を変えないシンプルな修正案
URLのパラメータにpageを追加することでちゃんとtopicpathになります。 ソースコード中で該当のURLを生成している場所は2ヶ所あります。(5-1, 5-2)
ここでもpage指定を追加することでちゃんとtopicpathになることを確認しました。
https://pukiwiki.osdn.jp/dev/?plugin=attach&pcmd=list&refer=BugTrack%2F2593&page=BugTrack%2F2593
処理に手を加えないので安心です。 長いページ名のときにURLが長くなるのでそこはちょっと微妙。
② プラグインの動作を変更して修正する案
attach.inc.php L82あたり
function plugin_attach_action() { global $vars, $_attach_messages; // : // 略 // : $pcmd = isset($vars['pcmd']) ? $vars['pcmd'] : ''; $refer = isset($vars['refer']) ? $vars['refer'] : ''; $pass = isset($vars['pass']) ? $vars['pass'] : NULL; $page = isset($vars['page']) ? $vars['page'] : ''; if ($refer === '' && $page !== '') { $refer = $page; + $vars['refer'] = $page; // ローカル変数だけでなくvarsにも反映 + } elseif ($page === '' && $refer !== '') { + // refer指定済でpage未指定の場合にも上と同様にパラメータをコピーする + $page = $refer; // 無くても良い(あるとURL手入力などした際に処理の分岐が変わることがある) + $vars['page'] = $refer; // ローカル変数だけでなくvarsにも反映 } // : // 略 // : }
自前のwikiで試しましたが問題なく動いていました。
referとpageに同時に値が入っていることは考慮していないようです。
関数の引数「$page」にpageを渡したりreferを渡したりしているくらいで、両方同じ値にしてしまっても問題は無いと思います。
var pageNameE = sitePropE.querySelector('.page-name') var pageName = pageNameE.value var a = titleH1.querySelector('a') if (a.textContent !== pageName) return簡単にまとめると「リンク名===ページ名 ならtopicpathに変換する」という処理だと思います。