利用者:ワーナー成増/DecodeSectionLinks.js
表示
お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。
多くの Windows や Linux のブラウザ
- Ctrl を押しながら F5 を押す。
Mac における Safari
Mac における Chrome や Firefox
- ⌘ Cmd と ⇧ Shift を押しながら R を押す。
詳細についてはWikipedia:キャッシュを消すをご覧ください。
/* 節リンクをデコードするスクリプト。
* 不具合が含まれている可能性があります。
* 問題が発生した場合は、スクリプトの作成者にご連絡ください。
*
* 使用方法:
* このスクリプトを利用するには、このスクリプトページを読み込む必要があります。
* common.js などのユーザースクリプトページに、以下の1行スクリプトを追加してください。
* mw.loader.load('//ja-two.iwiki.icu/w/index.php?title=User:Frozen-mikan/DecodeSectionLinks.js&action=raw&ctype=text/javascript');
*
* 全てのページで読み込まれます。
* 編集画面であれば、アクションメニューに「節リンクをデコード」のメニューが追加されます。
* 編集画面において、「節リンクをデコード」を選択すると、デコードすべきテキストが有る場合にデコードされます。
* 要約欄に「スクリプトによる編集: 節リンクをデコード。」と表示されたら、
*
* 必ず差分を確認し、
*
* 問題が無ければ、投稿ボタンをクリックしてください。
*
* 参考リンク:
* [[Wikipedia:利用案内#セクション名がURLエンコードで書かれている内部リンクの修正について]]
*/
/* global mediaWiki, jQuery */
/* jshint devel:true */
(function($, mw) {
// 節リンクを取得する正規表現パターン。グローバルマッチ付き。
var reSectionLinks = /#(\.[0-9A-F]{2}|[a-zA-Z0-9_\.\@\- ])+(\]\]|\|)/g;
// 上記パターンに対応する節リンクのデコード処理
function decodeSectionLinks(p0) {
//alert(p0);
return decodeURIComponent(p0.replace(/\.(?=[0-9A-F]{2})/g, '%'));
}
// 編集テキストを上書き
function setEditText(text) {
$('#wpTextbox1').val(text);
}
// 編集テキストを取得
function getEditText() {
return $('#wpTextbox1').val();
}
// 要約欄にスクリプトによる編集であることを明記
function setSummaryText() {
var scriptPageLink = 'User:Frozen-mikan/DecodeSectionLinks.js';
$('#wpSummary').val('[[' +
scriptPageLink + '|スクリプト]]による編集: 節リンクをデコード。');
}
// 導入部分
function main() {
var preText = getEditText() || '';
if (preText !== '') {
var postText = preText.replace(reSectionLinks, decodeSectionLinks);
alert(postText);
if (preText != postText) {
setEditText(postText);
setSummaryText();
}
}
}
// メニューに追加
function addPortletLink() {
// テキストが取得できない場合には何もしない
if (getEditText() === undefined) {
return;
}
$(
mw.util.addPortletLink('p-cactions', '#', '節リンクをデコード')
).on('click', main);
}
// 実行部
mw.loader.using('mediawiki.util').then(addPortletLink);
// main();
})(jQuery, mediaWiki);