MediaWiki:Gadget-friendlyshared.js: Difference between revisions
Content added Content deleted
imported>Amorymeltzer (Updates at a1b22de: Make use of wgRelevantUserName) |
imported>Amorymeltzer (Repo at d404881: Greatly expand style guidelines, enforce linting rules (#657)) |
||
Line 1: | Line 1: | ||
//<nowiki> |
// <nowiki> |
||
(function($){ // eslint-disable-line no-unused-vars |
(function($) { // eslint-disable-line no-unused-vars |
||
Line 15: | Line 15: | ||
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('Twinkle help', '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(); |
||
}; |
}; |
||
Line 121: | Line 123: | ||
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(); |
||
Line 133: | Line 135: | ||
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; |
||
} |
} |
||
Line 165: | Line 167: | ||
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; |
||
} |
} |
||
Line 173: | Line 175: | ||
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; |
||
} |
} |
||
Line 185: | Line 187: | ||
}; |
}; |
||
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); |
||
Line 199: | Line 201: | ||
//</nowiki> |
// </nowiki> |