User:Hypercane/global.js

/*Chat Options*/ importScriptPage('ChatOptions/code.js', 'dev'); /*Chat Hacks*/ importScriptPage('User:Monchoman45/ChatHacks.js', 'c'); /*Recent changes addition*/ /* Add Recent Changes menu item link to On the Wiki menu */ $(function {	$('ul.nav > li.nav-item:first-child > ul.subnav-2 li.subnav-2-item:first-child').before('Recent Changes'); }); $(function {	$('ul.nav > li.nav-item:first-child > ul.subnav-2 li.subnav-2-item:first-child').before('Admin Dashboard'); }); $(function {	$('ul.nav > li.nav-item:first-child > ul.subnav-2 li.subnav-2-item:first-child').before('Chat'); }); /*Group PM*/ if(wgCanonicalSpecialPageName == 'Chat') { function createGroupPM { var users = prompt('Enter comma seperated list of users to start a PM with',''); var users = users.split(','); mainRoom.openPrivateChat(users); } $('form#Write').append('PM'); } /******************************************************/ /* Multikick w/tab insert                            */ /* Idea by Madnessfan34537 and Phillycj              */ /* Code by Madnessfan34537, Joeytje50 and Callofduty4 */ /******************************************************/ //Multikicker //Written by Madnessfan34537 and Callofduty4 function showPopup { $('body').append('<img src="http://slot2.images.wikia.nocookie.net/__cb57523/common/skins/oasis/images/icon_close.png"> Mass-kick <section class="modalContent"> <form method="" name="" class="WikiaForm "> Enter usernames here, separated by a comma and a space. Tab insert works. <input type="text" name="multikickinput" id="multikickinput" /> <a onclick="kickUsers" class="wikia-button">Kick!</a> <a onclick="cancelKick" id="cancel" class="wikia-button secondary">Cancel</a>  '); $('body').append('<div style="height: 100%; width: 100%; z-index: 2000000001; opacity: 0.65; display: block;" data-opacity="0.65" class="blackout"> '); } function kickUsers { var multikick = $('#multikickinput').val if (multikick.length != 0) { var usersToKick = multikick.split(", "); var i = 0; for (i; i<usersToKick.length; i++) { mainRoom.kick({name:usersToKick[i]}); }		$('#masskicker').remove; $('.blackout').remove; } } function cancelKick { $('#masskicker').remove; $('.blackout').remove; } $('<a id= "multiKickerButton" class="wikia-button" href="javascript:showPopup" style="position:absolute; right:55px; top:22px;">Multikick</a>').appendTo('.Write'); //Tab insert for usernames //Written by Joeytje50 of Runescape wiki function getCaretPos(ctrl) { var CaretPos = 0;   // IE Support if (document.selection) { ctrl.focus ; var Sel = document.selection.createRange ; Sel.moveStart ('character', -ctrl.value.length); CaretPos = Sel.text.length; }   // Firefox support else if (ctrl.selectionStart || ctrl.selectionStart == '0') CaretPos = ctrl.selectionStart; return (CaretPos); } function setCaretPos(ctrl, pos){ if(ctrl.setSelectionRange) {       ctrl.focus; ctrl.setSelectionRange(pos,pos); }   else if (ctrl.createTextRange) { var range = ctrl.createTextRange; range.collapse(true); range.moveEnd('character', pos); range.moveStart('character', pos); range.select; } } $('#multikickinput').after(' [0,"","",0,null] '); $('#multikickinput').keydown(function(e) {	if (e.keyCode == 9) {		e.preventDefault;		var curval = this.value;		var afData = eval(document.getElementById('autofilldata').innerHTML);		var curpos = afData[3]==0?getCaretPos(this):afData[3];		var carpos = getCaretPos(this)		if ((!curval.charAt(carpos)||curval.charAt(carpos).match(/\s/))&&!curval.charAt(carpos-1).match(/\s/)&&this.value.length) {			var unamestart = ;			if (afData[1].length==0) {				for (i=curpos-1;i>=0&&!curval.charAt(i).match(/\s/);i--) {					unamestart = curval.charAt(i) + unamestart;				}			} else {				unamestart = afData[1];			}			var afterTComplete = ;			for (i=curpos;i<curval.length;i++) {				afterTComplete += curval.charAt(i);			}			//generate list of users			var userList = '';			var userlistelems = document.getElementsByClassName('User');			for (i=0;i<userlistelems.length;i++) {				userList += userlistelems[i].getElementsByClassName('username')[0].innerHTML+','; }			userList = userList.replace(new RegExp('('+wgUserName+'|RSChatBot),|,$','g'),'') userList = userList.split(',').sort var matchedNames = []; for (i=0;i<userList.length;i++) { if (userList[i].match(new RegExp('^'+unamestart, 'i'))) { matchedNames.push(userList[i]); }			}			var newval = curval.split(''); for (i=carpos-1;i>=0&&i>=carpos-(!(afData[4]===null)?(matchedNames[afData[4]]?matchedNames[afData[4]].length:0) : unamestart.length)&&matchedNames.length>0;i--) { newval[i] = ''; }			matchedNames = !matchedNames[0]?['']:matchedNames; newval[curpos-unamestart.length] += matchedNames[afData[0]]?matchedNames[afData[0]]:''; newval = newval.join(''); this.value = newval; setCaretPos(this, curpos+(matchedNames[afData[0]].length?matchedNames[afData[0]].length:0)) var iter = afData[0]>=matchedNames.length-1?0:afData[0]+1; document.getElementById('autofilldata').innerHTML = '['+iter+',"'+unamestart+'","'+matchedNames[afData[0]]+'",'+curpos+','+afData[0]+']' }		return false; } else if (e.which != 16) { document.getElementById('autofilldata').innerHTML = '[0,"","",0,null]'; } }).click(function { document.getElementById('autofilldata').innerHTML = '[0,"","",0,null]'; }).blur(function { document.getElementById('autofilldata').innerHTML = '[0,"","",0,null]'; }) importArticles( { type: 'script', articles: [ // ...       'u:dev:ChatBlockButton/code.js', // ...   ] } ); /** * disableCodeEditor.js *  * Disables code editor on css/js pages introduced with the new syntax highlighting for source editor * The editor is overall buggy, slow and annoying * This script is the ajax equivalent of the editor that was used before the code editor * Looks Monobook-ish *  * @author: w:user:Fubuki風吹 */ if (/\.(css|js)/g.test(mw.config.get('wgPageName')) || mw.config.get('wgCanonicalNamespace') == 'Module') {    var html = $('#mw-content-text').html;    $('#ca-edit').on('click', function(e) { e.preventDefault; $('#mw-content-text').html(' <img src="' + mw.config.get('stylepath') + '/common/images/ajax.gif"/> Loading editor... '); $.get('/wiki/' + mw.config.get('wgPageName') + '?action=raw', function(data) {           $('#mw-content-text').html('<textarea id="wpTextbox" rows="40" style="font-family: monospace; overflow-y: auto; width: 99.2%; font-size: 13px; resize: none;"> Edit summary: <input type="text" id="wpEditSummary" style="width: 50%;"> <input type="checkbox" id="wpMinorEdit" checked> Minor edit  <button id="wpSubmit" class="wikia-button">Publish <button id="wpCancel" class="wikia-button secondary">Cancel ');            $('#wpTextbox').val(data)            $('#wpSubmit').on('click', function { $('#status').css('display', 'inline').html('<img src="' + mw.config.get('stylepath') + '/common/images/ajax.gif"> Publishing edit...'); var data = { action: 'edit', title: mw.config.get('wgPageName'), text: $('#wpTextbox').val, token: mw.user.tokens.values.editToken, format: 'json' };               if ($('#wpEditSummary').val.length) data.summary = $('#wpEditSummary').val; if ($('#wpMinorEdit:checked').length) data.minor = ''; $.post(mw.util.wikiScript('api'), data, function(data) {                   if (!data.error) {                        $('#status').css('color', 'green').html('Edit successfully made!');                        window.location.reload;                    } else {                        $('#status').css('color', 'red').html('Failed to edit page. Try again.');                   }                }); });           $('#wpCancel').on('click', function { $('#mw-content-text').html(html); });       });    }); } importArticles( { type: 'script', articles: [ // ...       'u:dev:ChatBlockButton/code.2.js', // ...   ] } );