2008年01月23日

ローカルファイルにリンクを貼る

PukiWikiでローカルリンクを貼るための手法として「lib/make_link.php」の363行目の
(?:(?:https?|ftp|news):\/\/|mailto:)[\w\/\@\$()!?&%#:;.,~'=*+-]+
を編集して
(?:(?:https?|ftp|news|file):\/\/|mailto:)[\w\/\@\$()!?&%#:;.,~'=*+-]+
にする方法が一般的ですが、リンクの貼り方を熟知してないとのような事になることが良くあります。

また、上記の方法で日本語ファイル名のローカルファイルに対してリンクを張るとFireFoxなどではセキュリティの設定を変えて使えるようにしても文字コードの問題で見れなかったりするので汎用性も低いです。

で、何とかならないかと考えたのがInterWikiNameを利用する方法です。

なお、この方法でも「lib/make_link.php」の修正が必要なので、本体修正が不要な方法をお探しの方は残念でした。

で、やり方ですが、「lib/make_link.php」に以下の修正と追加を行います。

405行の

(?:(?:https?|ftp|news):\/\/|\.\.?\/)[!~*'();\/?:\@&=+\$,%#\w.-]*
にちょっと文字を足して以下のようにしてください
(?:(?:https?|ftp|news|file):\/\/|\.\.?\/)[!~*'();\/?:\@&=+\$,%#\w.-]*
続いて、803行の
if (preg_match('/\[(' . '(?:(?:https?|ftp|news):\/\/|\.\.?\/)' .
も同じように
if (preg_match('/\[(' . '(?:(?:https?|ftp|news|file):\/\/|\.\.?\/)' .
に変更してください。

次に820行目辺りに以下の太字部分を追加してください

	case 'asis': /* FALLTHROUGH */
	case 'raw' : // Truly as-is
		break;

	case 'file': // Local File Link
		if (LANG == 'ja') {
			switch(UA_NAME . '/' . UA_PROFILE){
			case 'Firefox/default':
				$param = rawurlencode(mb_convert_encoding($param, 'UTF-8', SOURCE_ENCODING));
				break;
			default:
				break;
			}
		}
		break;

	case 'yw': // YukiWiki
		if (! preg_match('/' . $WikiName . '/', $param))
(追加行最後のbreak;のあとに「}」をつけたくなりますが、つけると動かなくなるので、必ず上記の通りにしてください。)

これで、「lib/make_link.php」の修正は完了なので、ローカルで修正していた方はサーバにアップロードしてください。

続いて、自分のPukiWikiのページ一覧から「InterWikiName」と言うページを探し出して「編集」でページの最後に

-[file:///$1 LocalLink] file
と言う1行を追加してください。

うまく追加できるとPukiWiki上では以下のように表示されると思います。
20080123.gif

ここまで出来たら、あとは任意のページで以下のようにしてリンクを張ってください。

[[LocalLink:ファイルの場所]]
たとえば、「C:\hoge\回覧.doc」にリンクを張りたい場合は以下のようになります。
[[LocalLink:C:\hoge\回覧.doc]]
また、ファイルへのリンクを別の名前で表示したい場合はPukiWikiの内部リンク名を書き換える要領で置き換える名前+「>」で出来ます。
[[表示したい名前>LocalLink:ファイルの場所]]
例)
[[このファイルを開いて確認してください>LocalLink:\\server\folder\資料.doc]]
そんなに難しい変更じゃないので、閉じた環境でPukiWikiをご利用の方はやってみてはいかがでしょうか?

Posted by Takuchan at 2008年01月23日 02:07 | トラックバック(1)

始めてコメントします。
この記事のおかげで、
問題解決することができました!!!
本当に有難う御座いました。


(涙出そうなくらい嬉しかったです・・・。)

Posted by: もみー at 2008年02月11日 23:43

やっぱり、みんな困っていたんですね(^^;

お役に立てて幸いです♪

Posted by: Takuchan at 2008年02月12日 22:18

こんにちわ♪
同じようなことを調べてたら行き当たりました。

私もコレ、便利に使わせてもらっています><
貴重な情報ありがとうございましたv

Posted by: 白夜 at 2008年02月13日 13:45

おぉ、レスが多い!

PukiWikiは使いやすいので、組織内利用が多いみたいですね。
(ただ、PukiWikiなサイトを公開するとその使いやすさの大半が裏目に出たりしますが・・・)

Posted by: Takuchan at 2008年02月13日 21:59

ありがとうございます

まさにコレをやりたかったんです

おかげさまで普通にwikiからファイルサーバへリンクが
できました

Posted by: brick at 2008年04月11日 12:21

利用させて頂きました。大変助かりました。

Posted by: anaga at 2008年04月11日 16:07

すごいです。日本語が入っていようが、半角カナが入っていようが、リンクが張れます。
早速イントラ内wikiで活用させて戴いています。
公開して下さったTakuchanさんに感謝です。
ありがとうございました。

Posted by: ken at 2009年02月24日 12:50

どういたしまして〜(^^

Posted by: Takuchan at 2009年02月25日 00:09