மீடியாவிக்கி:Friendlyshared.js
// &lt;nowiki&gt;
 // If FriendlyConfig aint exist.
 if( typeof( FriendlyConfig ) == 'undefined' ) {
     FriendlyConfig = {};
 }
 
 /**
  FriendlyConfig.summaryAd ( string )
  If ad should be added or not to summary, default [[WP:FRIENDLY|Friendly]]
  */
 if( typeof( FriendlyConfig.summaryAd ) == 'undefined' ) {
     FriendlyConfig.summaryAd = &quot; using [[WP:FRIENDLY|Friendly]]&quot;;
 }
 
 /**
  FriendlyConfig.markSharedIPAsMinor ( boolean )
  */
 if( typeof( FriendlyConfig.markSharedIPAsMinor ) == 'undefined' ) {
     FriendlyConfig.markSharedIPAsMinor = true;
 }
 
 $.when( $.ready, mw.loader.using( 'mediawiki.util' ) ).then( friendlyshared );
 
 function friendlyshared() {
     if( mw.config.get('wgNamespaceNumber') == 3 &amp;&amp; isIPAddress( mw.config.get('wgTitle') ) ) {
         var username = mw.config.get('wgTitle').split( '/' )[0].replace( /\&quot;/, &quot;\\\&quot;&quot;); // only first part before any slashes
 
         mw.util.addPortletLink( 'p-cactions', &quot;javascript:friendlyshared.callback(\&quot;&quot; + username + &quot;\&quot;)&quot;, &quot;shared ip&quot;, &quot;friendly-shared&quot;, &quot;Shared IP tagging&quot;, &quot;&quot;);
     }
 }
 
 friendlyshared.callback = function friendlysharedCallback( uid ) {
     var Window = new SimpleWindow( 600, 400 );
     Window.setTitle( &quot;Choose a shared IP address template&quot; ); 
     var form = new QuickForm( friendlyshared.callback.evaluate );
 
     form.append( { type:'header', label:'Shared IP address templates' } );
     form.append( { type: 'radio', name: 'shared', list: friendlyshared.standardList,
         event: function( e ) {
             friendlyshared.callback.change_shared( e );
             e.stopPropagation();
         } } );
 
     var org = form.append( { type:'field', label:'Fill in IP address owner/operator (if applicable) and hit \&quot;Submit\&quot;' } );
     org.append( {
             type: 'input',
             name: 'organization',
             label: 'Organization name',
             disabled: true,
             tooltip: 'Some of these templates support an optional parameter for the organization name that owns/operates the IP address.  The organization name can be entered here for those templates, including wikimarkup (if applicable).'
         }
     );
     
     form.append( { type:'submit' } );
 
     var result = form.render();
     Window.setContent( result );
     Window.display();
 }
 
 friendlyshared.standardList = [
     {
         label: '{{sharedip}}: standard shared IP address template',
         value: 'sharedip',
         tooltip: 'IP user talk page template that shows helpful information to IP users and those wishing to warn or ban them' },
     { 
         label: '{{sharedipedu}}: shared IP address template modified for educational institutions',
         value: 'sharedipedu' },
     {
         label: '{{sharedippublic}}: shared IP address template modified for public terminals',
         value: 'sharedippublic' },
     {
         label: '{{dynamicip}}: shared IP address template modified for organizations with dynamic addressing',
         value: 'dynamicip' },
     { 
         label: '{{isp}}: shared IP address template modified for ISP organizations',
         value: 'isp' },
     { 
         label: '{{singnet}}: shared IP address template for SingNet addresses',
         value: 'singnet' },
     { 
         label: '{{aberwebcacheipaddress}}: shared IP address template for Aberystwyth University addresses',
         value: 'aberwebcacheipaddress' }
 ]
 
 friendlyshared.callback.change_shared = function friendlytagCallbackChangeShared(e) {
     if( e.target.value != 'singnet' &amp;&amp; e.target.value != 'aberwebcacheipaddress' ) {
         e.target.form.organization.disabled = false;
     } else {
         e.target.form.organization.disabled = true;
     }
 }
 
 friendlyshared.callbacks = {
     main: function( self ) {
         var form = self.responseXML.getElementById( 'editform' );
         var found = false;
         var text = '{{';
 
         for( var i=0; i &lt; friendlyshared.standardList.length; i++ ) {
             tagRe = new RegExp( '(\{\{' + friendlyshared.standardList[i].value + '(\||\}\}))', 'im' );
             if( tagRe.exec( form.wpTextbox1.value ) ) {
                 Status.info( 'Info', 'Found {{' + friendlyshared.standardList[i].value + '}} on the user\'s talk page already...aborting' );
                 found = true;
                 text = form.wpTextbox1.value;
             }
         }
         
         if( !found ) {
             Status.info( 'Info', 'Will add the shared IP address template to the top of the user\'s talk page.' );
             text += self.params.value;
             if( self.params.value != 'singnet' &amp;&amp; self.params.value != 'aberwebcacheipaddress' ) {
                 text += '|' + self.params.organization;
             }
             text += '}}\n\n' + form.wpTextbox1.value;
         }
         
         var postData = {
             'wpMinoredit': FriendlyConfig.markSharedIPAsMinor ? 1 : undefined,
             'wpWatchthis': form.wpWatchthis.checked ? 1 : undefined,
             'wpStarttime': form.wpStarttime.value,
             'wpEdittime': form.wpEdittime.value,
             'wpAutoSummary': form.wpAutoSummary.value,
             'wpEditToken': form.wpEditToken.value,
             'wpSummary': 'Added \{\{[[Template:' + self.params.value + '|' + self.params.value + ']]\}\} template to user talk page.' + FriendlyConfig.summaryAd,
             'wpTextbox1': text
         };
  
         self.post( postData );
     }
 }
 
 friendlyshared.callback.evaluate = function friendlysharedCallbackEvaluate(e) {
     if( getChecked( e.target.shared ).length != 1 ) {
         alert( 'You must select a shared IP address template to use!' );
         return;
     }
     
     var value = getChecked( e.target.shared )[0];
     
     if( value != 'singnet' &amp;&amp; value != 'aberwebcacheipaddress' &amp;&amp; e.target.organization.value == '') {
         alert( 'You must input an organization for the {{' + value + '}} template!' );
         return;
     }
     
     var params = {
         value: value,
         organization: e.target.organization.value
     };
 
     Status.init( e.target );
     
     var query = { 
         'title': mw.config.get('wgPageName'), 
         'action': 'submit'
     };
     Wikipedia.actionCompleted.redirect = mw.config.get('wgPageName');
     Wikipedia.actionCompleted.notice = &quot;Shared IP tagging complete, reloading talk page in some seconds&quot;;
     var wikipedia_wiki = new Wikipedia.wiki( 'User talk page modification', query, friendlyshared.callbacks.main );
     wikipedia_wiki.params = params;
     wikipedia_wiki.get();
 }