Jump to content

User:Shirik/spm.js

From Wikipedia, the free encyclopedia
Note: After saving, you have to bypass your browser's cache to see the changes. Google Chrome, Firefox, Microsoft Edge and Safari: Hold down the ⇧ Shift key and click the Reload toolbar button. For details and instructions about other browsers, see Wikipedia:Bypass your cache.
// <nowiki>
// Note: Requires [[WP:TW]] to work
// Special thanks to the Twinkle project on which this project is based
// This code is released under the GNU General Public License v2

importScript("User:Shirik/spm_whitelist.js");

// Load hook
function spm() 
{
   if (wgNamespaceNumber == 2 || wgNamespaceNumber == 3) 
   {
     mw.util.addPortletLink("p-cactions", "javascript:spm.ltaCallback()", "LTA", "spm-lta", "Report user for long-term abuse", "");
   }
}

var spmWhitelistedUsers = ["Daedalus969", "Shirik", "Bsadowski1"];

// Callback from the WP API
spm.callbacks = 
{
   tagUser: function(self) 
   {
      // Tag as suspected sockpuppet
      form = this.responseXML.getElementById( 'editform' );
      var text = "{{" + (self.params.link != '' ? "blocked" : '') + "sockpuppet|" + self.params.name + (self.params.link != '' ? "|evidence=[[" + self.params.link + "]]" : '') + "}}";
      var postData = {
         'wpStarttime': form.wpStarttime.value,
         'wpEdittime': form.wpEdittime.value,
         'wpAutoSummary': form.wpAutoSummary.value,
         'wpEditToken': form.wpEditToken.value,
         'wpSection': '',
         'wpSummary': 'Tagging as a sockpuppet of ' + self.params.name + (self.params.link == '' ? '' : ' per [[' + self.params.link + ']]') + ' ([[User:Shirik/spm.js|SPM]])',
         'wpTextbox1' : text
      };  
      self.post(postData);

      // Now report to AIV
      var query = {
         'action': 'submit',
         'title': 'Wikipedia:Administrator intervention against vandalism',
         'section': 1
      };
   
      var wikipedia_wiki = new Wikipedia.wiki('Reporting to AIV', query, spm.callbacks.aiv);
      wikipedia_wiki.params = self.params; 
      wikipedia_wiki.followRedirect = false;
      wikipedia_wiki.get(); 
   },
   aiv: function(self) 
   {
      var form = self.responseXML.getElementById('editform');
      var text = form.wpTextbox1.value;

      // check to ensure the user is not yet reported
      var re = new RegExp( "\\{\\{\\s*(?:(?:[Ii][Pp])?[Vv]andal|[Uu]serlinks)\\s*\\|\\s*(?:1=)?\\s*" + RegExp.escape( self.params.user, true ) + "\\s*\\}\\}" );
      if (re.exec(text)) 
      {
         self.statelem.error("The user has already been reported to AIV; will not add another report");
      }
      else 
      {
         self.statelem.info("Adding new report...");
         var postData = {
            'wpStarttime': form.wpStarttime.value,
            'wpEdittime': form.wpEdittime.value,
            'wpAutoSummary': form.wpAutoSummary.value,
            'wpEditToken': form.wpEditToken.value,
            'wpSection': form.wpSection.value,
            'wpSummary': "Reporting [[WP:LTA|LTA]] sock " + (self.params.link == '' ? "[[Special:Contributions/" : "[[" + self.params.link) + "|" + self.params.user + "]] ([[User:Shirik/spm.js|SPM]])",
            'wpTextbox1': text + '*\{\{vandal|1=' + self.params.user + '\}\} - [[WP:LTA|Long-term abuse]] [[WP:SOCK|sockpuppet]] of [[User:' + self.params.name + ']] ' + (self.params.link == '' ? '' : '(see [[' + self.params.link + ']]) ') + '~~' + '~~'
         }  
         self.post(postData);
      }
     
      
   }
}

if (spmWhitelistedUsers.indexOf(wgUserName) != -1) {
   addOnloadHook(spm);
}

// Callback for the form
spm.ltaExecute = function spmLtaExecute(e)
{
   var value = e.target.value;
   var split = value.split("|");
   var name = split[0];
   var link = (split.length == 1) ? '' : split[1];
   
   var params = {
     'name': name,
     'link': link,
     'user': wgPageName.substring(5)
   };

   Status.init(e.target.form);
   Wikipedia.actionCompleted.redirect = "WP:AIV";
   Wikipedia.actionCompleted.notice = "Report complete";
   
   var query = {
      'action': 'submit',
      'title': wgPageName
   };

   var wikipedia_wiki = new Wikipedia.wiki('Tagging user page', query, spm.callbacks.tagUser);
   wikipedia_wiki.params = params; 
   wikipedia_wiki.followRedirect = false;
   wikipedia_wiki.get();   
}

// Callback for clicking the option
spm.ltaCallback = function spmLtaCallback()
{
   var Window = new SimpleWindow( TwinkleConfig.speedyWindowWidth, TwinkleConfig.speedyWindowHeight );
   Window.setTitle("Choose sockpuppet information");
   var form = new QuickForm(spm.ltaExecute, 'change');
   form.append({type: 'header', label: 'Sockmaster'});   

   // Fill in the options
   form.append({
     type: 'radio',
     name: 'lta',
     list: [
         {
            label: 'Wallflowers98',
            value: 'Wallflowers98|WP:LTA/WF98',
            tooltip: 'Prolific vandal engaging in repetitive bad faith copyright violations, primarily 4shared.com'
         },
         {
            label: 'JI Hawkins',
            value: 'JI Hawkins|WP:LTA#Sanders_conspiracy_vandal',
            tooltip: 'Prolific sockmaster inserting content regarding government conspiracies into articles, especially regarding Adam Sandler, Colonel Sanders, and the Men in Black'
         },
         {
            label: 'Andreisme',
            value: 'Andreisme',
            tooltip: 'Prolific sockmaster asking disruptive questions pertaining to Nikola Tesla and areas around Southern California'
         }
     ]
   });

   var result = form.render();
   Window.setContent(result);
   Window.display();
}
// </nowiki>