User:Chieftain Alex/ATools.js

From Guild Wars 2 Wiki
Jump to navigationJump to search

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
/* <nowiki> */
/* ATools - Javascript tools for arseholes? No its AlexTools. Really? Yeah. Oh well too late I memorised the first one.
 * Written by [[User:Chieftain Alex]] with swathes of code from everywhere.
 * For use with the Vector skin.
 */
(function ATools (document) {

   /* Fetch mw variables */
   var conf = mw.config.get([
      'wgServer',
      'wgPageName',
      'wgRelevantPageName',
      'wgTitle',
      'wgNamespaceNumber',
      'wgCurRevisionId'
   ]);

   /* Provide the pretty buttons to start the legwork! */
   /** Last diff **/
   var caHistory = document.getElementById('ca-history');
   if (caHistory != undefined) {
      lastdiff = document.createElement('li');
      lastdiff.id = 'special-diff';
      lastdiff.innerHTML = '<span><a href="/index.php?title=' + encodeURIComponent(conf.wgPageName) + '&diff=' + conf.wgCurRevisionId + '" title="Show differences between last and actual revision">diff last</a></span>'
      document.getElementById('ca-history').parentNode.insertBefore(lastdiff, document.getElementById('ca-history').nextSibling)
   }

   /** Link to users' pages/images **/
   if (conf.wgNamespaceNumber == 2 || conf.wgNamespaceNumber == 3) // namespace: User, User talk
   {
      var pageRootName = conf.wgTitle.substring(0, ((conf.wgTitle.indexOf('/') > 0) ? conf.wgTitle.indexOf('/') : conf.wgTitle.length));

      var usertoolbox = document.createElement('div');
      usertoolbox.id = 'userlinks';
      usertoolbox.className = 'portal';
      document.getElementById('mw-panel').appendChild(usertoolbox);

      var usertoolboxheading = document.createElement('h3');
      usertoolboxheading.id = 'userlinks-heading';
      usertoolboxheading.innerHTML = 'Pages and files';
      document.getElementById('userlinks').appendChild(usertoolboxheading);

      var usertools = document.createElement('div');
      usertools.id = 'link-list-box';
      usertools.className = 'body';
      usertools.innerHTML = '<ul>' 
                           + '<li id="user-subpages"><a title="Show user pages of User:'  + pageRootName + '" href="/index.php?title=Special:Prefixindex&namespace=2&prefix=' + pageRootName.replace( ' ', '+' ) + '/">User\'s pages</a></li>'
                           + '<li id="user-images"  ><a title="Show user images of User:' + pageRootName + '" href="/index.php?title=Special:Prefixindex&namespace=6&prefix=User+' + pageRootName.replace( ' ', '+' ) + '">User\'s images</a></li>'
                          + '</ul>'
      document.getElementById('userlinks').appendChild(usertools);
   }

   /** Provide deletion and image tagging links **/
   if ( typeof( atoolsTagging ) === 'undefined' || atoolsTagging == false ) {
   } else {
     if (document.getElementById('ca-viewsource') != null) {
        return; // Protected, can't edit.
     } else {
        if (conf.wgNamespaceNumber !== -1) // not namespace: Special
        { // Deletion tags appear in every namespace.
           var deletediv = document.createElement('div');
           deletediv.id = 'deletetagger';
           deletediv.className = 'portal';
           document.getElementById('mw-panel').appendChild(deletediv);
     
           var deletedivheading = document.createElement('h3');
           deletedivheading.id = 'delete-tools-heading';
           deletedivheading.innerHTML = 'Deletion tools';
           document.getElementById('deletetagger').appendChild(deletedivheading);
     
           var deletesmalldiv = document.createElement('div');
           deletesmalldiv.id = 'delete-tools-list-box';
           deletesmalldiv.className = 'body';
           deletesmalldiv.innerHTML = '<ul>'
                          + '<li id="dt-DelspeedySpam"><a title="Add a speedy deletion tag (spam)." href="' + conf.wgServer + '/index.php?title=' + conf.wgRelevantPageName.replace(/\+/g, '%2B').replace(/&/g, '%26').replace(/\"/g, '%22') + '&action=edit&atools=delspeedyspam">Spam (speedy)</a></li>'
                          + '<li id="dt-DelspeedyRedirect"><a title="Add a speedy deletion tag (move remnant)." href="' + conf.wgServer + '/index.php?title=' + conf.wgRelevantPageName.replace(/\+/g, '%2B').replace(/&/g, '%26').replace(/\"/g, '%22') + '&action=edit&atools=delspeedyredirect">Redirect (speedy)</a></li>'
                          + '</ul>'
           document.getElementById('deletetagger').appendChild(deletesmalldiv);
        }
     
        if (conf.wgNamespaceNumber == 6) // namespace: File
        {
           var filediv = document.createElement('div');
           filediv.id = 'imagetagger';
           filediv.className = 'portal';
           document.getElementById('mw-panel').appendChild(filediv);
     
           var filedivheading = document.createElement('h3');
           filedivheading.id = 'image-tools-heading';
           filedivheading.innerHTML = 'Image tools';
           document.getElementById('imagetagger').appendChild(filedivheading);
     
           var filesmalldiv = document.createElement('div');
           filesmalldiv.id = 'image-tools-list-box';
           filesmalldiv.className = 'body';
           filesmalldiv.innerHTML = '<ul>'
                          + '<li id="it-Screenshot"><a title="Add a screenshot tag." href="' + conf.wgServer + '/index.php?title=' + conf.wgRelevantPageName.replace(/\+/g, '%2B').replace(/&/g, '%26').replace(/\"/g, '%22') + '&action=edit&atools=screenshot">Screenshot</a></li>'
                          + '<li id="it-Icon"     ><a title="Add an icon tag." href="' + conf.wgServer + '/index.php?title=' + conf.wgRelevantPageName.replace(/\+/g, '%2B').replace(/&/g, '%26').replace(/\"/g, '%22') + '&action=edit&atools=icon">Icon</a></li>'
                          + '</ul>'
           document.getElementById('imagetagger').appendChild(filesmalldiv);
        }
     
        /** The editing bit **/
        /* Check if its not supposed to be doing anything! */
        if (window.location.href.indexOf('action=edit') < 0 || window.location.href.indexOf('atools=') < 0)
           return;
     
        var txtTextbox = document.getElementById('wpTextbox1');
        var txtSummary = document.getElementById('wpSummary');
     
        if (window.location.href.indexOf('atools=screenshot') > -1) // Screenshot
        {
           txtTextbox.value = txtTextbox.value
              .replace(new RegExp("\\{\\{ArenaNet\\simage(\\|\\w+|)\\}\\}", "g"), "")
              .replace(new RegExp("\\n(\\n*)\\n", "g"), "\n\n");
           txtTextbox.value = '{{ArenaNet image|screenshot}}\n' + txtTextbox.value;
           txtSummary.value = ' +ArenaNet image [screenshot]';
        } else if (window.location.href.indexOf('atools=icon') != -1) // Icon
        {
           txtTextbox.value = txtTextbox.value
              .replace(new RegExp("\\{\\{ArenaNet\\simage(\\|\\w+|)\\}\\}", "g"), "")
              .replace(new RegExp("\\n(\\n*)\\n", "g"), "\n\n");
           txtTextbox.value = '{{ArenaNet image|icon}}\n' + txtTextbox.value;
           txtSummary.value = ' +ArenaNet image [icon]';
        } else if (window.location.href.indexOf('atools=delspeedyspam') != -1) // Delspeedyspam
        {
           txtTextbox.value = '<noinclude>{{Del' + 'ete|Spam|speedy}}</noinclude>\n' + txtTextbox.value;
           txtSummary.value = ' +Speedy deletion [spam]';
        } else if (window.location.href.indexOf('atools=delspeedyredirect') != -1) // Delspeedyredirect
        {
           txtTextbox.value = '<noinclude>{{Del' + 'ete|Move remnant|speedy}}</noinclude>\n' + txtTextbox.value;
           txtSummary.value = ' +Speedy deletion [move remnant]';
        } else {
           return // Exit the function if its not working
        }
        document.getElementById('wpMinoredit').checked = true;
        txtSummary.value += ' | [[User:Chieftain Alex/ATools.js|ATools]] ';
        document.getElementById('editform').submit();
     }
   }
})(document);
/* </nowiki> */