利用者:Yuukin0248/summaryTemplateLink.js
表示
お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。
多くの Windows や Linux のブラウザ
- Ctrl を押しながら F5 を押す。
Mac における Safari
Mac における Chrome や Firefox
- ⌘ Cmd と ⇧ Shift を押しながら R を押す。
詳細についてはWikipedia:キャッシュを消すをご覧ください。
/**
* summaryTemplateLink.js
* 編集要約欄の "{{sample}}" という文字列から [[Template:Sample]] にリンク
*/
$.when($.ready, mw.loader.using('mediawiki.Title')).then(makeTemplateLink);
function makeTemplateLink() {
$('span.comment').each(function () {
const cmt = $(this);
let html = cmt.html();
const autoComments = cmt.find('.autocomment');
const replaceFieldName = 'tempReplaceField';
// 自動挿入される要約欄を一時除去
autoComments.each(function (index) {
html = html.replace(this.innerHTML, replaceFieldName + index);
});
html.match(/\{\{.+?(\||\}\})/g)?.forEach(function (template) {
// "#" はページ名には使えない文字 条件文専用なので処理しない
if (template.includes('#')) return;
// テンプレート名を解析
const insideBrackets = template.replace(/\{|\||\}|subst:/g, '').trim();
const title = insideBrackets.includes(':') ? new mw.Title(insideBrackets) : new mw.Title(insideBrackets, 10);
// 参照読み込みしているページのリンクを追加
const newString = template.replace(insideBrackets, `<a href="${title.getUrl()}">${insideBrackets}</a>`);
html = html.replace(template, newString);
});
// 自動挿入される要約欄を復帰
autoComments.each(function (index) {
html = html.replace(replaceFieldName + index, this.innerHTML);
});
cmt.html(html);
});
}