#author("2022-12-29T23:04:05+09:00","","")
* attach.inc.php: 添付>[添付ファイル一覧] ページでタイトルがtopicpathにならない [#j51f84f8]

- ページ: [[BugTrack]]
- 投稿者: [[ぬぺぺ]]
- 優先順位: 低
- 状態: 提案
- カテゴリー: 本体バグ
- 投稿日: 2022-12-29 (木) 20:40:21
- バージョン: 1.5.4

** メッセージ [#b893088d]
添付>[添付ファイル一覧] ページでタイトルのリンクがtopicpathにならず、普通のリンクになります。

参考:ここの該当ページ~
https://pukiwiki.osdn.jp/dev/?plugin=attach&pcmd=list&refer=BugTrack%2F2593

***原因 [#rd836b13]
簡単にまとめると、
+ plugin_attach_action()で返されたページタイトル($retvar['msg'])が"$1"を含んでいると、pukiwiki.php中で"$1"はBacklinkページへのリンクに変換される (1)
+ ページ受信後、DOMに .page-name なエレメントが存在しないとmain.jsによるBacklinkへの変換がされない (2)
+ GETで page=** が渡されるとその値がそのまま input.page-name に設定される (3)

の前提条件の上で、
+$_attach_messages['msg_listpage'] がページタイトルに"$1"を含んでいる (4)
+添付ファイル一覧ページへのリンクのURLが''page=**を含んでいない'' (5-1, 5-2)

のが原因っぽい感じです。

***該当コード [#d5bedf4d]
(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 への添付',
 	// :
 );

***修正案 [#n27fc88c]

(5-1) attach.inc.php > attach_form(): 修正前
 	$navi = <<<EOD
   <span class="small">
    [<a href="$script?plugin=attach&amp;pcmd=list&amp;refer=$r_page">{$_attach_messages['msg_list']}</a>]
    [<a href="$script?plugin=attach&amp;pcmd=list">{$_attach_messages['msg_listall']}</a>]
   </span><br />
 EOD;

(5-1) 修正後(GETでpageも渡すように)
 	$navi = <<<EOD
   <span class="small">
    [<a href="$script?plugin=attach&amp;pcmd=list&amp;refer=$r_page&amp;page=$r_page">{$_attach_messages['msg_list']}</a>]
    [<a href="$script?plugin=attach&amp;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&amp;pcmd=list&amp;refer=$r_page">{$_attach_messages['msg_list']}</a>]
  [<a href="$script?plugin=attach&amp;pcmd=list">{$_attach_messages['msg_listall']}</a>]
 </p>

(5-2) 修正後(同上)
 		$retval['body'] = <<< EOD
 <p class="small">
  [<a href="$script?plugin=attach&amp;pcmd=list&amp;refer=$r_page&amp;page=$r_page">{$_attach_messages['msg_list']}</a>]
  [<a href="$script?plugin=attach&amp;pcmd=list">{$_attach_messages['msg_listall']}</a>]
 </p>

----

URLでpageを指定することでちゃんとtopicpathになることを確認しました。~
https&#58;//pukiwiki.osdn.jp/dev/?plugin=attach&pcmd=list&refer=BugTrack%2F2593&page=BugTrack%2F2593

page=**の追加によって編集や差分等のリンクも増えますが、特に問題ないと思います。

長いページ名のときに長さが倍になりますが、人間の目に触れやすいだったりURLをコピーされるようなページでもないですし、QUERY_STRING_MAXほどは行かないのでそっちも問題ないんじゃないでしょうか。

referも外しちゃって
 [<a href="$script?plugin=attach&amp;pcmd=list&amp;page=$r_page">{$_attach_messages['msg_list']}</a>]
とやりたいですが、その場合はソースコードの修正箇所が増えます。

--------
- というか、pageとreferの違いが全然わかりません…。 -- [[ぬぺぺ]] &new{2022-12-29 (木) 21:16:23};
- pcommentのpageとreferはわかるのですが、attachやrefでpageではなくreferになっている意味がナゾです。どこかに書いてあったりするんでしょうか。 -- [[ぬぺぺ]] &new{2022-12-29 (木) 23:04:05};

#comment

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.045 sec.

SourceForge