**概要 [#ue2f21a7] Windows共有フォルダのパス \\fileserver.example.com\Sharedfolder を自動リンクします。 社内でPukiWikiを利用している場合に、Windows共有フォルダへのリンクがあると便利なことがあります。これを実現します。 - \\server.xxx\folder に対して file:// または smb:// リンクのA(anchor)要素を生成します。 -- \\server\folder は''リンクしません''。サーバー名には必ず '.' が含まれている必要があります。 - Webブラウザ側のJavaScriptで動作するのでサーバー負荷はかかりません。 - 2015年1月時点での各種最新ブラウザに対応。(IE11,Chrome 39,Firefox 34,Opera 12,Safari 5) -- (古いブラウザ向けの互換コードは入っていません) - Webブラウザから直接共有フォルダは開けない場合が多いです。ブラウザによっては「リンクアドレスをコピー」「リンクを新しいウィンドウで開く」などを利用してください。 - ブラウザがMacの場合は smb:// のリンクを生成します。 - **インストール方法 [#jb18572c] - 1. 後述の unclink.js を skin/unclink.js として保存する。 - 2. skin/pukiwiki.skin.php (オリジナルは 81 行目) に以下の「+」の行を追加する。 <title><?php echo $title ?> - <?php echo $page_title ?></title> + <script type="text/javascript" src="skin/unclink.js"></script> <link rel="SHORTCUT ICON" href="<?php echo $image['favicon'] ?>" /> **使い方 [#u70ca609] 本文に \\server.example.com\folder をそのまま書く。 ** ソースコード [#yb586759] *** Gist [#z2327275] - gist.github.com/umorigu/51abdeef484d18900c57 *** skin/unclink.js [#z0a0f38d] // unclink.js if (window.addEventListener && Array.prototype.indexOf && document.createDocumentFragment) { window.addEventListener('DOMContentLoaded', function() { function uncToUrl(unc) { var ua = navigator.userAgent; if (ua.indexOf('Macintosh') >= 0) { return unc.replace(/^\\\\/, 'smb://').replace(/\\/g, '/'); } else if (ua.indexOf('Firefox') >= 0) { return unc.replace(/^\\\\/, 'file://///').replace(/\\/g, '/'); } else { return unc.replace(/^\\\\/, 'file://').replace(/\\/g, '/'); } } function makeUncLink(element) { var re = /([\s\<\>]|^)(\\\\([a-zA-Z0-9\-]+)(\.[a-zA-Z0-9\-]+)+\\[^\\\/\:\*\?\"\>\<\|\;\s][^\/\:\*\?\"\>\<\|\;\s]*)/; var f, m, text = element.nodeValue; while (m = text.match(re)) { // m[1]: head, m[2]: UNC path f || (f = document.createDocumentFragment()); if (m.index > 0 || m[1].length > 0) { f.appendChild(document.createTextNode(text.substr(0, m.index) + m[1])); } var a = document.createElement('a'); a.textContent = m[2]; a.href = uncToUrl(a.textContent); f.appendChild(a); text = text.substr(m.index + m[0].length); } if (f) { text.length > 0 && f.appendChild(document.createTextNode(text)); element.parentNode.replaceChild(f, element) } } var ignoreTags = ['A', 'INPUT', 'TEXTAREA', 'BUTTON', 'SCRIPT', 'FRAME', 'IFRAME']; function walkElement(element) { var e = element.firstChild; while (e) { if (e.nodeType == 3 && e.nodeValue.length > 5 && /\S/.test(e.nodeValue)) { var next = e.nextSibling; makeUncLink(e); e = next; } else { if (e.nodeType == 1 && ignoreTags.indexOf(e.tagName) == -1) { walkElement(e); } e = e.nextSibling; } } } var target = document.getElementById('body'); walkElement(target); }); } ** 参考 [#ad499e55] - URL: http:// d.hatena.ne.jp/a-kuma3/20130101/url2link -- URLをリンク化するブックマークレット - それ、うまいのか? ** 関連 [#y9ec0f6f] - [[PukiWiki/1.3/ちょっと便利に/ローカルファイルへのリンクも張りたい]] ** コメント [#n2f590e9] #comment