MediaWiki:Chat.js

//Switch to night button var night_button = 'Default chat theme'; //Switch to day button var day_button = 'Rainbow chat theme'; // //Color scheme for DAY Chat // //Link color var linkColorDay = 'pink'; //All text Color var textColorDay = '#FFFFFF'; //Self text background color var selfTextColorDay = '#f5f5f5'; //Chat background color var backgroundColorDay = 'webkit-radial-gradient(Red, Orange, Yellow, Green, Blue, Indigo, Violet'; //END DAY Chat color scheme // //Color scheme for NIGHT Chat // //Link color    var linkColor = '#0000CC';  //All text Color    var textColor = '#000000';  //Chat background color    var backgroundColor = 'White)'; //END NIGHT Chat color scheme // Change mod icons depending on the time // Written by Foodbandlt function nighttime_moon{ var night = new Date; var nighthour=night.getHours; if (nighthour >= 19 || nighthour <= 7){ if ($('.User.chat-mod .username').hasClass("modday")){ $(".User.chat-mod .username").removeClass("modday"); $(".User.chat-mod .username").addClass("modnight"); }else{ $(".User.chat-mod .username").addClass("modnight"); } }else{ if ($('.User.chat-mod .username').hasClass("modnight")){ $(".User.chat-mod .username").removeClass("modnight"); $(".User.chat-mod .username").addClass("modday"); }else{ $(".User.chat-mod .username").addClass("modday"); } } setTimeout("nighttime_moon", 10*60*1000); } nighttime_moon; //Day and night color schemes //Written by Foodbandlt function addDayStyle{ var styleElementDay = document.createElement('style'); styleElementDay.setAttribute("id", "day"); styleElementDay.innerHTML='body{background: '+backgroundColorDay+';}.username, .message, div.chattopic, .info .edits, .UserStatsMenu .info .since, #ChatHeader h1.private, .Write [name="message"]{color: '+textColorDay+';}.WikiaPage, .UserStatsMenu, .ChatHeader, .Write [name="message"]{background: '+foregroundColorDay+';}.Chat .you{background: '+selfTextColorDay+';}a{color: '+linkColorDay+';}.UserStatsMenu .info{background:'+userStatsColorDay+';}'; $('head').append(styleElementDay); } function addNightStyle{ var styleElement = document.createElement('style'); styleElement.setAttribute("id", "night"); styleElement.innerHTML='body{background: '+backgroundColor+';}.username, .message, div.chattopic, .info .edits, .UserStatsMenu .info .since, #ChatHeader h1.private, .Write [name="message"]{color: '+textColor+';}.WikiaPage, .UserStatsMenu, .ChatHeader, .Write [name="message"]{background: '+foregroundColor+';}.Chat .you{background: '+selfTextColor+';}a{color: '+linkColor+';}.UserStatsMenu .info{background:'+userStatsColor+';}'; $('head').append(styleElement); } function addDayNightButton{ if ($('.day-night-div').size == 0){ $(''+night_button+' ').prependTo('.Rail'); } if ($('style#night').size == 0 && $('style#nightUser').size == 0){ addDayStyle; } } function day_night(which){ if (which == "night"){ $('style#day').remove; $('.Rail .day-night-div .day-night-button').text(day_button); addNightStyle; }else{ $('style#night').remove; $('.Rail .day-night-div .day-night-button').text(night_button); addDayStyle; } } function switch_view{ if ($('.Rail .day-night-div .day-night-button').text == night_button){ day_night("night"); }else{ day_night("day"); } } if ($('.Rail .day-night-div').size == 0){ addDayNightButton; } //Chat's topic. Remember to escape single quotes in the topic using \' to prevent this from breaking. var chatTopic = ' Welcome to the café. Enjoy your stay! Please be sure to follow all of our  rules  ' $(function {	$('#ChatHeader .public.wordmark').prepend(''+chatTopic+' ')	.find('a').attr('style','position:relative;text-decoration:underline;') }) $('#ChatHeader .public.wordmark div:not(:first-child)').remove /* Creating /me command */ document.getElementsByName('message')[0].onkeypress = function(e) { if (e.which == 32) { if (this.value == '/me' || this.value == '/ME') { this.value = '* '+wgUserName; }	} } /* Batch delete */ importScriptPage('AjaxBatchDelete/code.js', 'dev'); /* Block Chat Messages */ importScriptPage('MessageBlocker/code.js', 'dev'); /* Allow Chat Mods and admins to kick users using /kick */ if (wgUserGroups.indexOf('chatmoderator')!=-1 || wgUserGroups.indexOf('sysop')!=-1) { $(function {	$('[name="message"]').keypress(function(e) { if (e.which == 13) { if (this.value.split(' ')[0] == '/kick') { e.preventDefault; var toKick = this.value.replace(/^\/kick /,'') if (!$('#WikiChatList [data-user="'+toKick+'"]').length) { confirm(toKick + ' is not in this chat. Still try to kick him?')?mainRoom.kick({name: toKick}):undefined; } else { mainRoom.kick({name: toKick}) }				this.value = ''; return true; }		}	}); }); } /* Chat options */ var chatOptionsLoaded; if (chatOptionsLoaded != 1){ chatOptionsLoaded = 1; importScriptPage('MediaWiki:Chat.js/options.js','cod'); } /* END chat options */ /* Clear chat button */ function addClearChatText{ if ($('.clearChatText').length <= 0) { var clearChatText = document.createElement('span'); $('Clear chat ').prependTo('.Rail'); } } function clearChat{ chatSize = $('div.Chat:first ul li').size-1; $('.Chat:first li:lt('+chatSize+')').remove; } window.onload=addClearChatText; /* END Clear chat button */

/* Spam protection */

// Credit to Joeytje50, script modified slightly for more leniency/easier changing

// Change these variables to modify the leniency of the script

var maxLimit = 6; // limit for sent lines var maxLength = 1250; // limit for how long a line can be (in chars) var limitTimeout = 2000; // timeout for the sent lines limiter

var rate = 0; function ratelimit(e) { if (rate > maxLimit) { this.disabled = true;//disabling input in case they press ESC before the redirect is complete e.preventDefault; mainRoom.sendMessage({which : 13, shiftKey : false, preventDefault : function {} }) document.location.href = wgServer+"/wiki/Project:Chat/Ratelimit_triggered"; return false; }	if (this.value.length>=maxLength || this.value.split('\n').length>=6) { var val = this.value.substring(0,maxLength).split('\n'); val = val[0]+'\n'+val[1]+'\n'+val[2]+'\n'+val[3]+'\n'+val[4];//remove all lines after the 5th line. this.value = val; if (e.type == 'keypress') { e.preventDefault; return false; }	}	if (e.type == 'keypress' && e.which == 13 && !e.shiftKey && this.value != '') { rate += 1; setTimeout(function {			if (rate > 0) { rate -= 1 }		},limitTimeout); } } $('[name="message"]').keyup(ratelimit).keypress(ratelimit).keydown(ratelimit);

/* END Spam protection */

importScriptPage('MediaWiki:ChatEditRestriction.js');