User:Telinc1/global.js

importScriptURI('http://c.wikia.com/index.php?title=User:Monchoman45/ChatHacks.js&action=raw&ctype=text/javascript');

/**** Custom edit buttons ****/ if (mwCustomEditButtons) { mwCustomEditButtons[mwCustomEditButtons.length] = { "imageFile": "http://images2.wikia.nocookie.net/central/images/c/c8/Button_redirect.png", "speedTip": "Redirect", "tagOpen": "#REDIRECT ",    "tagClose": "", "sampleText": "Insert text"}; } if (mwCustomEditButtons) { mwCustomEditButtons[mwCustomEditButtons.length] = { "imageFile": "http://images1.wikia.nocookie.net/telincs/images/6/6a/Div-tag-edit-button.png", "speedTip": Div Container",    "tagOpen": " ",     "tagClose": " ",     "sampleText": "Container text goes here"}; } if (mwCustomEditButtons) {   mwCustomEditButtons[mwCustomEditButtons.length] = {     "imageFile": "http://images2.wikia.nocookie.net/telincs/images/f/f8/Template-Editor-Button.png",     "speedTip": "Add a template",     "tagOpen": "",     "sampleText": "Template Name"}; } if (mwCustomEditButtons) {   mwCustomEditButtons[mwCustomEditButtons.length] = {     "imageFile": "http://images3.wikia.nocookie.net/telincs/images/9/99/Category.png",     "speedTip": "Sort into a category",     "tagOpen": "[[Category:",     "tagClose": "|{{FULLPAGENAME]]",     "sampleText": "Category Name"}; } /**** Custom edit buttons end ****/ /* ######################################################################## */ /* ### DISABLE ARCHIVE EDIT                                             ### */ /* ### ### */ /* ### Description: Remove section edit links and gray out main edit    ### */ /* ###             button on archived talk pages                       ### */ /* ### Credit:     User:Porter21                                       ### */ /* ######################################################################## */ function disableArchiveEdit { // Configuration var userconfig = (window.DisableArchiveEditConfig) ? window.DisableArchiveEditConfig : {}; var config = $.extend(true, {     archiveSubpage: 'Archive',      disableCompletely: false,      textColor: '#D9D9D9',      userLang: true,   }, userconfig); // Function for multi-language support (by Daniel Friesen aka User:Dantman) function msg(name) { if ( config.userLang && wgUserLanguage in config && name in config[wgUserLanguage] ) return config[wgUserLanguage][name]; if ( wgContentLanguage in config && name in config[wgContentLanguage] ) return config[wgContentLanguage][name]; return config.en[name]; }  // Check whether page is an archive if ((new RegExp('\\/\[' + config.archiveSubpage.substr(0,1).toUpperCase     + config.archiveSubpage.substr(0,1).toLowerCase + '\]' + config.archiveSubpage.substr(1)      + '\\s\*\\d\*')).test(wgTitle)) { // Remove "add new section" links and prepare altering "edit" page control switch (skin) { case 'monaco': $('#control_addsection').remove; $('#fe_newsection').remove; editlink = $('#ca-edit'); break; case 'monobook': $('#ca-addsection').remove; editlink = $('#ca-edit > a'); break; case 'oasis': case 'wikia': var oasisButton = $(($('#WikiaUserPagesHeader').length ? '.UserProfileActionButton' : '#WikiaPageHeader') + ' > .wikia-menu-button'); oasisButton.children("a:first").prependTo($('ul:first', oasisButton)).wrap(' ').children('img').remove; oasisButton.prepend(''); $('a[data-id="addtopic"]', oasisButton).parent.remove; editlink = $('a:first', oasisButton); break; }     // Remove "edit section" links $('span.editsection').remove; // Alter "edit" page control if (config.disableCompletely) { editlink.remove; } else { editlink.attr('title', msg('archivedTooltip')).css('color', config.textColor).text(msg('archived')); }  } } /* ######################################################################## */ /* ### ARCHIVE TOOL                                                     ### */ /* ### ### */ /* ### Description: AJAX-archiving of talk pages via GUI                ### */ /* ### Credit:     User:Dantman (original)                             ### */ /* ###             User:Porter21 (Oasis & Monobook support)            ### */ /* ### Disclaimer: See http://dev.wikia.com/wiki/ArchiveTool/code.js   ### */ /* ######################################################################## */ function archiveTool { // Configuration var userconfig = (window.ArchiveToolConfig) ? window.ArchiveToolConfig : {}; var config = $.extend(true, {     archiveListTemplate: 'Archives',      archivePageTemplate: 'Archivepage',      archiveSubpage: 'Archive',      userLang: false,      // English      en: {         buttonArchiveTool: "Archive",         buttonArchiveToolTooltip: "Archive this page",         buttonSelectAll: "Select all",         buttonDeselectAll: "Deselect all",         buttonSaveArchive: "Save archive",         buttonAbort: "Abort",         labelLines: "Lines",         labelSections: "Sections",         summaryArchiveFrom: "ArchiveTool: Archiving from",         summaryArchiveTo: "ArchiveTool: Archiving to"      }   }, userconfig); // Function for multi-language support function msg(name) { if ( config.userLang && wgUserLanguage in config && name in config[wgUserLanguage] ) return config[wgUserLanguage][name]; if ( wgContentLanguage in config && name in config[wgContentLanguage] ) return config[wgContentLanguage][name]; return config.en[name]; }  if (skin != "monaco" && skin != 'monobook' && skin != 'oasis' && skin != 'wikia') { return; }  if ((wgNamespaceNumber%2 != 0 && wgNamespaceNumber != 501) && (wgAction == "view" || wgAction == "purge")) { var skinConfig = { textCont: , pageControls: , controlsMarkup: '', buttonOpenPri: , buttonOpenSec: , buttonClose: '' };     switch(skin) { case 'monaco': skinConfig.textCont = '#bodyContent'; skinConfig.pageControls = '#page_controls'; skinConfig.controlsMarkup = '' + msg('buttonArchiveTool') + ''; skinConfig.buttonOpenPri = ''; skinConfig.buttonOpenSec = ''; skinConfig.buttonClose = ''; break; case 'monobook': skinConfig.textCont = '#bodyContent'; skinConfig.pageControls = '#p-cactions > div > ul'; skinConfig.controlsMarkup = '' + msg('buttonArchiveTool') + ''; skinConfig.buttonOpenPri = '';           break;         case 'oasis':         case 'wikia':            skinConfig.textCont = '#WikiaArticle';            skinConfig.pageControls = ($('#WikiaUserPagesHeader').length ? '.UserProfileActionButton' : '#WikiaPageHeader') + ' > .wikia-menu-button > ul';            skinConfig.controlsMarkup = '' + msg('buttonArchiveTool') + '</a></li>';            skinConfig.buttonOpenPri = '<a class="wikia-button">';            skinConfig.buttonOpenSec = '<a class="wikia-button secondary">';            skinConfig.buttonClose = '</a>';            break;      }      $(function {         function api(q, fn) {            q.format = 'json';            return $.post(wgScriptPath + '/api.php', q, fn, "json");         }         function token(page, fn) {            api({               action: 'query', query: 'prop', prop: 'info', titles: page, intoken: 'edit' }, function(q) { for ( var k in q.query.pages ) return fn(q.query.pages[k]); });        }         function startArchiving {            var c = config.archiveListTemplate.substr(0,1);            var archiveListRegex = '['+c.toUpperCase+c.toLowerCase+']'+config.archiveListTemplate.substr(1);            var bc = $(skinConfig.textCont).addClass('va-archiving').empty;            $('<img class="ajax" alt="Loading..." />')              .attr({src: stylepath+'/common/progress-wheel.gif'}).appendTo(bc);            api({ action: 'query', prop: 'revisions', titles: wgPageName, rvprop: 'timestamp|content' }, function(q) { bc.empty; var rev = q.query.pages[wgArticleId].revisions[0]; var time = rev.timestamp; var talkToken, tokenTime; var content = rev['*']; token(wgPageName, function(p) {                 talkToken = p.edittoken;                  tokenTime = p.starttimestamp;               }); var lines = content.split('\n'); var table = $(' ').appendTo(bc); var ul = $(' ').appendTo(table); for ( var l = 0; l < lines.length; l++ ) { var line = lines[l]; $(' ').toggleClass('noarchive', (new RegExp('^\\{\\{'+archiveListRegex+'\}\}')).test(line)) .attr({line:line}) .append( $(' ').text(line).append(' ') ).appendTo(ul); }              var sections = []; var sectionEnd = lines.length-1; for ( var l = lines.length-1; l >= 0; l-- ) { var line = lines[l]; if ( /^=.+?=/.test(line) || l === 0 ) { var section = { start: l, end: sectionEnd }; section.length = section.end - section.start + 1; sections.unshift(section); sectionEnd = l-1; }              }               var section; while( section = sections.shift ) { var tr = ul.children.eq(section.start); $(' ').attr({rowspan: section.length}).appendTo(tr); }              $(' ').append(                  $(skinConfig.buttonOpenSec + msg('buttonSelectAll') + skinConfig.buttonClose).click(function(e) { e.preventDefault; ul.children('tr').addClass('archive'); }), ' ',                 $(skinConfig.buttonOpenSec + msg('buttonDeselectAll') + skinConfig.buttonClose).click(function(e) { e.preventDefault; ul.children('tr').removeClass('archive'); }), ' ',                 $(skinConfig.buttonOpenPri + msg('buttonSaveArchive') + skinConfig.buttonClose).click(function(e) { archive; }), ' ',                 $(skinConfig.buttonOpenPri + msg('buttonAbort') + skinConfig.buttonClose).click(function(e) { bc.find('.ajax').remove; location = wgServer+wgScript+'?title='+encodeURI(wgPageName)+'&action=purge'; })              ).prependTo(bc).clone(true).appendTo(bc); var click = false; var add; table.mousedown(function(e) {                 e.preventDefault;                  var $li = $(e.target).closest('tr');                  if(!$li.length) return;                  var $section = $(e.target).closest('.section');                  if ( $section.length ) {                     var slist = $li.nextAll(':lt('+(parseInt($section.attr('rowspan'),10)-1)+')').andSelf;                     var sadd = slist.filter(function { return !$(this).hasClass('archive') }).length;                     slist.toggleClass('archive', !!sadd);                     return;                  }                  click = true;                  add = !$li.hasClass('archive');                  $li.toggleClass('archive', !!add);               }); table.mouseover(function(e) {                 if (!click) return;                  var $li = $(e.target).closest('tr');                  if(!$li.length) return;                  $li.toggleClass('archive', !!add);               }); $('body').mouseup(function(e) {                 click = false;               }); function archive { var talkLines = []; var archiveLines = []; ul.children.each(function {                    var arr = $(this).hasClass('noarchive') || !$(this).hasClass('archive')                        ? talkLines : archiveLines;                     arr.push( $(this).attr('line') );                  }); if ( !(new RegExp('^\\{\\{'+archiveListRegex+'\}\}')).test(talkLines[0]) ) talkLines = [, ].concat(talkLines); archiveLines = [, ].concat(archiveLines); bc.empty; $('<img class="ajax" alt="Loading..." />') .attr({src: stylepath+'/common/progress-wheel.gif'}).appendTo(bc); runArchive(talkLines.join('\n'), archiveLines.join('\n')); }              var archiveTitle; function runArchive(talkContent, archiveContent) { var archiveNo; function findArchives { var m = $(' Finding archive id: ').appendTo(bc); api({                       action: 'query',                        list: 'allpages',                        apnamespace: wgNamespaceNumber,                        apprefix: wgTitle+'/'+config.archiveSubpage,                        aplimit: 1,                        apdir: 'descending'                     }, function(q) {                        archiveNo = q.query.allpages.length ?                           parseInt(q.query.allpages[0].title.substr(wgPageName.length+("/"+config.archiveSubpage).length),10)+1 :                           1;                        archiveTitle = wgPageName+'/'+config.archiveSubpage+' '+archiveNo;                        m.append('done... (using '+archiveNo+')');                       saveArchive;                     }); }                 function saveArchive { var m = $(' Finding token for '+archiveTitle+': ').appendTo(bc); token(archiveTitle, function(p) {                       m.append('done...');                        m = $(' Saving archive page: ').appendTo(bc);                        api({ action: 'edit', title: archiveTitle, text: archiveContent, token: p.edittoken, summary: msg('summaryArchiveFrom') + " " + wgPageName + ".", minor: true, createonly: true }, function(q) { if ( q.error && q.error.code === "articleexists" ) { m.append('failed...'); bc.append(" The archive page we tried to create already exists. "); return abort; }                          m.append('done...'); saveTalk; });                    });                  }                  function saveTalk { var m = $(' Finding token for '+wgPageName+': ').appendTo(bc); m.append('done...'); m = $(' Updating talk page: ').appendTo(bc); api({                       action: 'edit',                        title: wgPageName,                        text: talkContent,                        token: talkToken,                        summary: msg('summaryArchiveTo') + " " + archiveTitle + ".",                        minor: true,                        basetimestamp: time,                        starttimestamp: tokenTime                     }, function(q) {                        if ( q.edit.result === "Success" ) {                           m.append('done...');                           bc.find('.ajax').remove;                           location = wgServer+wgScript+'?title='+encodeURI(wgPageName)+'&action=purge';                        } else {                           m.append('failed...');                           bc.append(" Failed to update talkpage, you may wish to have the archive subpage we just created deleted. ");                          return abort;                        }                     });                  }                  function abort {                     bc.find('.ajax').remove;                     bc.append(" Aborting... ");                     $(" You may want to ")                        .append( $('refresh</a>').attr({href: wgServer+wgArticlePath.replace('$1', encodeURI(wgPageName))}) )                        .append(' and try again.')                        .appendTo(bc);                  }                  // start                  findArchives;               }            });         }         $(skinConfig.controlsMarkup)            .click(startArchiving)            .appendTo(skinConfig.pageControls);      });   } }