利用者:Syunsyunminmin/Twinkle/friendlyshared.js
表示
お知らせ: 保存した後、ブラウザのキャッシュをクリアしてページを再読み込みする必要があります。
多くの Windows や Linux のブラウザ
- Ctrl を押しながら F5 を押す。
Mac における Safari
Mac における Chrome や Firefox
- ⌘ Cmd と ⇧ Shift を押しながら R を押す。
詳細についてはWikipedia:キャッシュを消すをご覧ください。
// <nowiki>
(function($) {
/*
****************************************
*** friendlyshared.js: Shared IP tagging module
****************************************
* Mode of invocation: Tab ("Shared")
* Active on: IP user talk pages
*/
Twinkle.shared = function friendlyshared() {
if (mw.config.get('wgNamespaceNumber') === 3 && mw.util.isIPAddress(mw.config.get('wgTitle'))) {
var username = mw.config.get('wgRelevantUserName');
Twinkle.addPortletLink(function() {
Twinkle.shared.callback(username);
}, 'Shared IP', 'friendly-shared', '共有IPタグ付けする');
}
};
Twinkle.shared.callback = function friendlysharedCallback() {
var Window = new Morebits.simpleWindow(600, 450);
Window.setTitle('共有IPアドレスのタグ付け');
Window.setScriptName('Twinkle');
Window.addFooterLink('設定', '利用者:Syunsyunminmin/Twinkle/Preferences');
Window.addFooterLink('Twinkle help', ':en:WP:TW/DOC#shared');
Window.addFooterLink('フィードバック', '利用者‐会話:Syunsyunminmin/Twinkle');
var form = new Morebits.quickForm(Twinkle.shared.callback.evaluate);
var div = form.append({
type: 'div',
id: 'sharedip-templatelist',
className: 'morebits-scrollbox'
}
);
div.append({ type: 'header', label: '共有IPアドレステンプレート' });
div.append({ type: 'radio', name: 'template', list: Twinkle.shared.standardList,
event: function(e) {
Twinkle.shared.callback.change_shared(e);
e.stopPropagation();
}
});
var org = form.append({ type: 'field', label: 'その他の詳細情報(オプション)を入力し、[送信] をクリックします。' });
org.append({
type: 'input',
name: 'organization',
label: 'IP アドレスの所有者/運用者',
disabled: true,
tooltip: 'IPアドレスを所有/運営する組織の名前を入力できます。必要に応じてウィキマークアップを使用できます。'
}
);
org.append({
type: 'input',
name: 'host',
label: 'Host名 (オプション)',
disabled: true,
tooltip: 'ホスト名 (たとえば、proxy.example.com) はオプションでここに入力でき、テンプレートによってリンクされます。'
}
);
org.append({
type: 'input',
name: 'contact',
label: '連絡先情報(要求された場合のみ)',
disabled: true,
tooltip: 'オプションで、組織の連絡先の詳細を入力できます。このパラメーターは、組織が追加を明確に要求した場合にのみ使用してください。必要に応じてウィキマークアップを使用できます.'
}
);
var previewlink = document.createElement('a');
$(previewlink).click(function() {
Twinkle.shared.preview(result);
});
previewlink.style.cursor = 'pointer';
previewlink.textContent = 'プレビュー';
form.append({ type: 'div', id: 'sharedpreview', label: [ previewlink ] });
form.append({ type: 'submit' });
var result = form.render();
Window.setContent(result);
Window.display();
};
Twinkle.shared.standardList = [
{
label: '{{SharedIP}}: 標準的な共有IPアドレスのテンプレート。共有PCなどにより複数の利用者から共有されていると思われるIPアドレス用',
value: 'SharedIP',
tooltip: 'IP利用者と、IP利用者に警告、ブロック、またはブロックしたい人に役立つ情報を表示するIP利用者会話ページのテンプレート'
},
{
label: '{{SharedIPEDU}}: 教育機関に割り当てられているIPアドレス用',
value: 'SharedIPEDU'
},
{
label: '{{SharedIP-AUTONOMY}}: 世界各国の国・都道府県・市町村などの自治体に割り当てられているIPアドレス用',
value: 'SharedIP-AUTONOMY'
},
{
label: '{{ISP}}: インターネットサービスプロバイダに割り当てられているIPアドレス用',
value: 'ISP'
}
];
Twinkle.shared.callback.change_shared = function friendlysharedCallbackChangeShared(e) {
e.target.form.contact.disabled = e.target.value !== 'SharedIPEDU'; // only supported by {{SharedIPEDU}}
e.target.form.contact.disabled = e.target.value !== 'SharedIP-AUTONOMY';
e.target.form.organization.disabled = false;
e.target.form.host.disabled = false;
};
Twinkle.shared.callbacks = {
main: function(pageobj) {
var params = pageobj.getCallbackParameters();
var pageText = pageobj.getPageText();
var found = false;
for (var i = 0; i < Twinkle.shared.standardList.length; i++) {
var tagRe = new RegExp('(\\{\\{' + Twinkle.shared.standardList[i].value + '(\\||\\}\\}))', 'im');
if (tagRe.exec(pageText)) {
Morebits.status.warn('Info', '{{' + Twinkle.shared.standardList[i].value + '}}が会話ページに見つかりました...中止します');
found = true;
}
}
if (found) {
return;
}
Morebits.status.info('Info', '共有IPアドレステンプレートをユーザーのトークページの上部に追加します。');
var text = Twinkle.shared.getTemplateWikitext(params);
var summaryText = '{{[[Template:' + params.template + '|' + params.template + ']]}}テンプレートを追加 ([[Help:Twinkle|Twinkle]]使用)';
pageobj.setPageText(text + pageText);
pageobj.setEditSummary(summaryText);
pageobj.setMinorEdit(Twinkle.getPref('markSharedIPAsMinor'));
pageobj.setCreateOption('recreate');
pageobj.save();
}
};
Twinkle.shared.preview = function(form) {
var input = Morebits.quickForm.getInputData(form);
if (input.template) {
var previewDialog = new Morebits.simpleWindow(700, 500);
previewDialog.setTitle('共有IPテンプレートのプレビュー');
previewDialog.setScriptName('共有IPテンプレートの追加');
previewDialog.setModality(true);
var previewdiv = document.createElement('div');
previewdiv.style.marginLeft = previewdiv.style.marginRight = '0.5em';
previewdiv.style.fontSize = 'small';
previewDialog.setContent(previewdiv);
var previewer = new Morebits.wiki.preview(previewdiv);
previewer.beginRender(Twinkle.shared.getTemplateWikitext(input), mw.config.get('wgPageName'));
var submit = document.createElement('input');
submit.setAttribute('type', 'submit');
submit.setAttribute('value', 'Close');
previewDialog.addContent(submit);
previewDialog.display();
$(submit).click(function() {
previewDialog.close();
});
}
};
Twinkle.shared.getTemplateWikitext = function(input) {
var text = '{{' + input.template + '|' + input.organization;
if (input.contact) {
text += '|' + input.contact;
}
if (input.host) {
text += '|host=' + input.host;
}
text += '}}\n';
return text;
};
Twinkle.shared.callback.evaluate = function friendlysharedCallbackEvaluate(e) {
var params = Morebits.quickForm.getInputData(e.target);
if (!params.template) {
alert('使用する共有IPアドレステンプレートを選択する必要があります!');
return;
}
if (!params.organization) {
alert('{{' + params.template + '}}テンプレートに組織名を入力してください!');
return;
}
Morebits.simpleWindow.setButtonsEnabled(false);
Morebits.status.init(e.target);
Morebits.wiki.actionCompleted.redirect = mw.config.get('wgPageName');
Morebits.wiki.actionCompleted.notice = 'タグ付け完了。会話ページをあと数秒でリロードします';
var wikipedia_page = new Morebits.wiki.page(mw.config.get('wgPageName'), '利用者会話ページの修正');
wikipedia_page.setFollowRedirect(true);
wikipedia_page.setCallbackParameters(params);
wikipedia_page.load(Twinkle.shared.callbacks.main);
};
Twinkle.addInitCallback(Twinkle.shared, 'shared');
})(jQuery);
// </nowiki>