MediaWiki:Gadget-friendlyshared.js: Difference between revisions

Repo at d404881: Greatly expand style guidelines, enforce linting rules (#657)
imported>AzaToth
m (v2.0-556-g0beacc0: use .utc() for timestamps and format them the sme way as the wiki does)
imported>Amorymeltzer
(Repo at d404881: Greatly expand style guidelines, enforce linting rules (#657))
 
(5 intermediate revisions by 3 users not shown)
Line 1:
// <nowiki>
 
 
(function($) { // eslint-disable-line no-unused-vars
 
 
Line 15:
 
Twinkle.shared = function friendlyshared() {
if( (mw.config.get('wgNamespaceNumber') === 3 && Morebitsmw.util.isIPAddress(mw.config.get('wgTitle')) ) {
var username = mw.config.get('wgTitlewgRelevantUserName').split( '/' )[0].replace( /\"/, "\\\""); // only first part before any slashes
Twinkle.addPortletLink( function() { Twinkle.shared.callback(username); }, "Shared IP", "friendly-shared", "Shared IP tagging" );
Twinkle.shared.callback.change_shared( e username);
}, 'Shared IP', 'friendly-shared', 'Shared IP tagging');
}
};
 
Twinkle.shared.callback = function friendlysharedCallback( uid ) {
var Window = new Morebits.simpleWindow( 600, 400 420);
Window.setTitle( "'Shared IP address tagging" ');
Window.setScriptName( "'Twinkle" ');
Window.addFooterLink( "'Twinkle help"', "'WP:TW/DOC#shared" ');
 
var form = new Morebits.quickForm( Twinkle.shared.callback.evaluate );
 
var div = form.append( { type: 'div', id: 'sharedip-templatelist' } );
type: 'div',
div.append( { type: 'header', label: 'Shared IP address templates' } );
id: 'sharedip-templatelist',
div.append( { type: 'radio', name: 'shared', list: Twinkle.shared.standardList,
className: 'morebits-scrollbox'
event: function( e ) {
}
Twinkle.shared.callback.change_shared( e );
);
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();
 
$(result).find('div#sharedip-templatelist').addClass('quickform-scrollbox');
};
 
Line 79 ⟶ 84:
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'
Line 118 ⟶ 123:
 
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();
Line 130 ⟶ 135:
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;
}
Line 162 ⟶ 167:
 
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;
}
Line 170 ⟶ 175:
var value = shared[0];
 
if( (e.target.organization.value === '') {
alert( 'You must input an organization for the {{' + value + '}} template!' );
return;
}
Line 182 ⟶ 187:
};
 
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);
Line 196 ⟶ 201:
 
 
// </nowiki>
Anonymous user