MediaWiki:Gadget-friendlyshared.js: Perbedaan antara revisi
Konten dihapus Konten ditambahkan
Repo at d9666d4: Update Twinkle from upstream |
Repo at 5c1e7e3: Update from Github |
||
Baris 1: | Baris 1: | ||
//<nowiki> |
// <nowiki> |
||
(function($){ // eslint-disable-line no-unused-vars |
(function($) { // eslint-disable-line no-unused-vars |
||
Baris 11: | Baris 11: | ||
* Mode of invocation: Tab ("Shared") |
* Mode of invocation: Tab ("Shared") |
||
* Active on: Existing IP user talk pages |
* Active on: Existing IP user talk pages |
||
* Config directives in: FriendlyConfig |
|||
*/ |
*/ |
||
Twinkle.shared = function friendlyshared() { |
Twinkle.shared = function friendlyshared() { |
||
if |
if (mw.config.get('wgNamespaceNumber') === 3 && mw.util.isIPAddress(mw.config.get('wgTitle'))) { |
||
var username = mw.config.get('wgRelevantUserName'); |
var username = mw.config.get('wgRelevantUserName'); |
||
Twinkle.addPortletLink( |
Twinkle.addPortletLink(function() { |
||
Twinkle.shared.callback(username); |
|||
}, 'Shared IP', 'friendly-shared', 'Shared IP tagging'); |
|||
} |
} |
||
}; |
}; |
||
Twinkle.shared.callback = function friendlysharedCallback() { |
Twinkle.shared.callback = function friendlysharedCallback() { |
||
var Window = new Morebits.simpleWindow( |
var Window = new Morebits.simpleWindow(600, 420); |
||
Window.setTitle( |
Window.setTitle('Shared IP address tagging'); |
||
Window.setScriptName( |
Window.setScriptName('Twinkle'); |
||
Window.addFooterLink( |
Window.addFooterLink('Bantuan Twinkle', 'WP:TW/DOC#shared'); |
||
var form = new Morebits.quickForm( |
var form = new Morebits.quickForm(Twinkle.shared.callback.evaluate); |
||
var div = form.append( |
var div = form.append({ |
||
type: 'div', |
|||
id: 'sharedip-templatelist', |
|||
className: 'morebits-scrollbox' |
|||
} |
|||
); |
); |
||
div.append( |
div.append({ type: 'header', label: 'Shared IP address templates' }); |
||
div.append( |
div.append({ type: 'radio', name: 'shared', list: Twinkle.shared.standardList, |
||
event: function( |
event: function(e) { |
||
Twinkle.shared.callback.change_shared( |
Twinkle.shared.callback.change_shared(e); |
||
e.stopPropagation(); |
e.stopPropagation(); |
||
} |
} |
||
} |
}); |
||
var org = form.append( |
var org = form.append({ type: 'field', label: 'Fill in other details (optional) and click "Submit"' }); |
||
org.append( |
org.append({ |
||
type: 'input', |
|||
name: 'organization', |
|||
label: 'IP address owner/operator', |
|||
disabled: true, |
|||
tooltip: 'You can optionally enter the name of the organization that owns/operates the IP address. You can use wikimarkup if necessary.' |
|||
} |
|||
); |
); |
||
org.append( |
org.append({ |
||
type: 'input', |
|||
name: 'host', |
|||
label: 'Host name (optional)', |
|||
disabled: true, |
|||
tooltip: 'The host name (for example, proxy.example.com) can be optionally entered here and will be linked by the template.' |
|||
} |
|||
); |
); |
||
org.append( |
org.append({ |
||
type: 'input', |
|||
name: 'contact', |
|||
label: 'Contact information (only if requested)', |
|||
disabled: true, |
|||
tooltip: 'You can optionally enter some contact details for the organization. Use this parameter only if the organization has specifically requested that it be added. You can use wikimarkup if necessary.' |
|||
} |
|||
); |
); |
||
form.append( |
form.append({ type: 'submit' }); |
||
var result = form.render(); |
var result = form.render(); |
||
Window.setContent( |
Window.setContent(result); |
||
Window.display(); |
Window.display(); |
||
}; |
}; |
||
Baris 121: | Baris 122: | ||
Twinkle.shared.callback.change_shared = function friendlysharedCallbackChangeShared(e) { |
Twinkle.shared.callback.change_shared = function friendlysharedCallbackChangeShared(e) { |
||
e.target.form.contact.disabled = |
e.target.form.contact.disabled = e.target.value !== 'Shared IP edu'; // only supported by {{Shared IP edu}} |
||
e.target.form.organization.disabled = false; |
e.target.form.organization.disabled = false; |
||
e.target.form.host.disabled = |
e.target.form.host.disabled = e.target.value === 'Whois'; // host= not supported by {{Whois}} |
||
}; |
}; |
||
Twinkle.shared.callbacks = { |
Twinkle.shared.callbacks = { |
||
main: function( |
main: function(pageobj) { |
||
var params = pageobj.getCallbackParameters(); |
var params = pageobj.getCallbackParameters(); |
||
var pageText = pageobj.getPageText(); |
var pageText = pageobj.getPageText(); |
||
Baris 133: | Baris 134: | ||
var text = '{{'; |
var text = '{{'; |
||
for |
for (var i = 0; i < Twinkle.shared.standardList.length; i++) { |
||
var tagRe = new RegExp( |
var tagRe = new RegExp('(\\{\\{' + Twinkle.shared.standardList[i].value + '(\\||\\}\\}))', 'im'); |
||
if( |
if (tagRe.exec(pageText)) { |
||
Morebits.status.warn( |
Morebits.status.warn('Info', 'Found {{' + Twinkle.shared.standardList[i].value + '}} on the user\'s talk page already...aborting'); |
||
found = true; |
found = true; |
||
} |
} |
||
} |
} |
||
if( |
if (found) { |
||
return; |
return; |
||
} |
} |
||
Morebits.status.info( |
Morebits.status.info('Info', 'Will add the shared IP address template to the top of the user\'s talk page.'); |
||
text += params.value + '|' + params.organization; |
text += params.value + '|' + params.organization; |
||
if |
if (params.value === 'Shared IP edu' && params.contact !== '') { |
||
text += '|' + params.contact; |
text += '|' + params.contact; |
||
} |
} |
||
if |
if (params.value !== 'Whois' && params.host !== '') { |
||
text += '|host=' + params.host; |
text += '|host=' + params.host; |
||
} |
} |
||
Baris 158: | Baris 159: | ||
pageobj.setPageText(text + pageText); |
pageobj.setPageText(text + pageText); |
||
pageobj.setEditSummary(summaryText + Twinkle.getPref('summaryAd')); |
pageobj.setEditSummary(summaryText + Twinkle.getPref('summaryAd')); |
||
pageobj.setMinorEdit(Twinkle. |
pageobj.setMinorEdit(Twinkle.getPref('markSharedIPAsMinor')); |
||
pageobj.setCreateOption('recreate'); |
pageobj.setCreateOption('recreate'); |
||
pageobj.save(); |
pageobj.save(); |
||
Baris 165: | Baris 166: | ||
Twinkle.shared.callback.evaluate = function friendlysharedCallbackEvaluate(e) { |
Twinkle.shared.callback.evaluate = function friendlysharedCallbackEvaluate(e) { |
||
var shared = e.target.getChecked( |
var shared = e.target.getChecked('shared'); |
||
if( |
if (!shared || shared.length <= 0) { |
||
alert( |
alert('You must select a shared IP address template to use!'); |
||
return; |
return; |
||
} |
} |
||
Baris 173: | Baris 174: | ||
var value = shared[0]; |
var value = shared[0]; |
||
if |
if (e.target.organization.value === '') { |
||
alert( |
alert('You must input an organization for the {{' + value + '}} template!'); |
||
return; |
return; |
||
} |
} |
||
Baris 185: | Baris 186: | ||
}; |
}; |
||
Morebits.simpleWindow.setButtonsEnabled( |
Morebits.simpleWindow.setButtonsEnabled(false); |
||
Morebits.status.init( |
Morebits.status.init(e.target); |
||
Morebits.wiki.actionCompleted.redirect = mw.config.get('wgPageName'); |
Morebits.wiki.actionCompleted.redirect = mw.config.get('wgPageName'); |
||
Morebits.wiki.actionCompleted.notice = |
Morebits.wiki.actionCompleted.notice = 'Tagging complete, reloading talk page in a few seconds'; |
||
var wikipedia_page = new Morebits.wiki.page(mw.config.get('wgPageName'), |
var wikipedia_page = new Morebits.wiki.page(mw.config.get('wgPageName'), 'User talk page modification'); |
||
wikipedia_page.setFollowRedirect(true); |
wikipedia_page.setFollowRedirect(true); |
||
wikipedia_page.setCallbackParameters(params); |
wikipedia_page.setCallbackParameters(params); |
||
Baris 199: | Baris 200: | ||
//</nowiki> |
// </nowiki> |
Revisi terkini sejak 19 Juni 2020 14.14
// <nowiki>
(function($) { // eslint-disable-line no-unused-vars
/*
****************************************
*** friendlyshared.js: Shared IP tagging module
****************************************
* Mode of invocation: Tab ("Shared")
* Active on: Existing 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', 'Shared IP tagging');
}
};
Twinkle.shared.callback = function friendlysharedCallback() {
var Window = new Morebits.simpleWindow(600, 420);
Window.setTitle('Shared IP address tagging');
Window.setScriptName('Twinkle');
Window.addFooterLink('Bantuan Twinkle', 'WP:TW/DOC#shared');
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: 'Shared IP address templates' });
div.append({ type: 'radio', name: 'shared', list: Twinkle.shared.standardList,
event: function(e) {
Twinkle.shared.callback.change_shared(e);
e.stopPropagation();
}
});
var org = form.append({ type: 'field', label: 'Fill in other details (optional) and click "Submit"' });
org.append({
type: 'input',
name: 'organization',
label: 'IP address owner/operator',
disabled: true,
tooltip: 'You can optionally enter the name of the organization that owns/operates the IP address. You can use wikimarkup if necessary.'
}
);
org.append({
type: 'input',
name: 'host',
label: 'Host name (optional)',
disabled: true,
tooltip: 'The host name (for example, proxy.example.com) can be optionally entered here and will be linked by the template.'
}
);
org.append({
type: 'input',
name: 'contact',
label: 'Contact information (only if requested)',
disabled: true,
tooltip: 'You can optionally enter some contact details for the organization. Use this parameter only if the organization has specifically requested that it be added. You can use wikimarkup if necessary.'
}
);
form.append({ type: 'submit' });
var result = form.render();
Window.setContent(result);
Window.display();
};
Twinkle.shared.standardList = [
{
label: '{{Shared IP}}: standard shared IP address template',
value: 'Shared IP',
tooltip: 'IP user talk page template that shows helpful information to IP users and those wishing to warn, block or ban them'
},
{
label: '{{Shared IP edu}}: shared IP address template modified for educational institutions',
value: 'Shared IP edu'
},
{
label: '{{Shared IP corp}}: shared IP address template modified for businesses',
value: 'Shared IP corp'
},
{
label: '{{Shared IP public}}: shared IP address template modified for public terminals',
value: 'Shared IP public'
},
{
label: '{{Shared IP gov}}: shared IP address template modified for government agencies or facilities',
value: 'Shared IP gov'
},
{
label: '{{Dynamic IP}}: shared IP address template modified for organizations with dynamic addressing',
value: 'Dynamic IP'
},
{
label: '{{Static IP}}: shared IP address template modified for static IP addresses',
value: 'Static IP'
},
{
label: '{{ISP}}: shared IP address template modified for ISP organizations (specifically proxies)',
value: 'ISP'
},
{
label: '{{Mobile IP}}: shared IP address template modified for mobile phone companies and their customers',
value: 'Mobile IP'
},
{
label: '{{Whois}}: template for IP addresses in need of monitoring, but unknown whether static, dynamic or shared',
value: 'Whois'
}
];
Twinkle.shared.callback.change_shared = function friendlysharedCallbackChangeShared(e) {
e.target.form.contact.disabled = e.target.value !== 'Shared IP edu'; // only supported by {{Shared IP edu}}
e.target.form.organization.disabled = false;
e.target.form.host.disabled = e.target.value === 'Whois'; // host= not supported by {{Whois}}
};
Twinkle.shared.callbacks = {
main: function(pageobj) {
var params = pageobj.getCallbackParameters();
var pageText = pageobj.getPageText();
var found = false;
var text = '{{';
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', 'Found {{' + Twinkle.shared.standardList[i].value + '}} on the user\'s talk page already...aborting');
found = true;
}
}
if (found) {
return;
}
Morebits.status.info('Info', 'Will add the shared IP address template to the top of the user\'s talk page.');
text += params.value + '|' + params.organization;
if (params.value === 'Shared IP edu' && params.contact !== '') {
text += '|' + params.contact;
}
if (params.value !== 'Whois' && params.host !== '') {
text += '|host=' + params.host;
}
text += '}}\n\n';
var summaryText = 'Added {{[[Template:' + params.value + '|' + params.value + ']]}} template.';
pageobj.setPageText(text + pageText);
pageobj.setEditSummary(summaryText + Twinkle.getPref('summaryAd'));
pageobj.setMinorEdit(Twinkle.getPref('markSharedIPAsMinor'));
pageobj.setCreateOption('recreate');
pageobj.save();
}
};
Twinkle.shared.callback.evaluate = function friendlysharedCallbackEvaluate(e) {
var shared = e.target.getChecked('shared');
if (!shared || shared.length <= 0) {
alert('You must select a shared IP address template to use!');
return;
}
var value = shared[0];
if (e.target.organization.value === '') {
alert('You must input an organization for the {{' + value + '}} template!');
return;
}
var params = {
value: value,
organization: e.target.organization.value,
host: e.target.host.value,
contact: e.target.contact.value
};
Morebits.simpleWindow.setButtonsEnabled(false);
Morebits.status.init(e.target);
Morebits.wiki.actionCompleted.redirect = mw.config.get('wgPageName');
Morebits.wiki.actionCompleted.notice = 'Tagging complete, reloading talk page in a few seconds';
var wikipedia_page = new Morebits.wiki.page(mw.config.get('wgPageName'), 'User talk page modification');
wikipedia_page.setFollowRedirect(true);
wikipedia_page.setCallbackParameters(params);
wikipedia_page.load(Twinkle.shared.callbacks.main);
};
})(jQuery);
// </nowiki>