User:Robyn Grayson/chat.js

/* ChatPlugins */ var ChatPlugins = { release: { version: 1.1, branch: "Stable" },	models: { feature: function(id, name, access, script) { this.enabled = false; this.id = id; this.name = name; this.access = access; this.script = script; },		alert: function(text) { newInlineAlert = new models.InlineAlert; newInlineAlert.attributes.text = text; mainRoom.model.chats.add(newInlineAlert); },		command: function(command, script) { this.command = command; this.script = script; }	},	features: {}, settings: { release: { version: 1.0, branch: "Stable" },		icons: { staffIcon: "http://img1.wikia.nocookie.net/__cb20140626173406/gamedezyner/images/6/60/StaffIcon.png", modIcon: "http://img1.wikia.nocookie.net/__cb20140626173343/gamedezyner/images/8/89/ModIcon.png" },		sounds: { pingSound: "https://notificationsounds.com/soundfiles/9461cce28ebe3e76fb4b931c35a169b0/file-sounds-1044-inquisitiveness.mp3" },		features: { pings: true }	},	save: function { ChatPlugins.settings.features.pings = ChatPlugins.features.pings.enabled; api.functions.editPage("User:" + wgUserName + "/ChatPlugins.js", JSON.stringify(ChatPlugins.settings)); },	load: function { new ChatPlugins.models.alert("Welcome to Chat Plugins 1.0!"); pagecontents = api.functions.getPageContents("User:" + wgUserName + "/ChatPlugins.js"); if (pagecontents == "error") { new ChatPlugins.models.alert("There seems to be something wrong with your settings file, or it doesn't exist yet. Default settings have been saved."); ChatPlugins.save; } else { ChatPlugins.settings = JSON.parse(pagecontents); ChatPlugins.features.pings.enabled = ChatPlugins.settings.features.pings; ChatPlugins.features.pings.words = ChatPlugins.settings.pings; }		pagecontents = api.functions.getPageContents("MediaWiki:ChatPluginsSettings.js"); if (pagecontents != "error") { wikicustom = JSON.parse(pagecontents); if (typeof(wikicustom.settings) != "object") { new ChatPlugins.models.alert("This wiki has a custom settings page, but it is broken."); } else { ChatPlugins.settings.icons = wikicustom.settings.icons; //Load Wiki-specific icons ChatPlugins.settings.sounds = wikicustom.settings.sounds; //Load Wiki-specific sounds new ChatPlugins.models.alert("This wiki has custom settings and they have been applied."); }		}	} }; // Call API function callAPI(data, method, callback) { data.format = 'json'; $.ajax({		data: data,		dataType: 'json',		url: wgScriptPath + '/api.php',		type: method,		success: function(response) {			if (response.error) showError('API error: ' + response.error.info);			else callback(response);		},		error: function(xhr, error) {			showError('AJAX error: ' + error);		}	}); } //Inline-mod tools function scrollToBottom { var chat = document.getElementById('Chat_' + mainRoom.roomId); chat.scrollTop = chat.scrollHeight; } ChatPlugins.features.modIcons = new ChatPlugins.models.feature(null, "Mod Icons", 0, function(chat) {	var time = new Date;	var hours = time.getHours;	var minutes = time.getMinutes;	var seconds = time.getSeconds;	if (hours < 10) hours = '0' + hours;	if (minutes < 10) minutes = "0" + minutes;	if (seconds < 10) seconds = "0" + seconds;	mainRoom.viewDiscussion.chatUL.children.last.children(".message").attr('msg-source', chat.attributes.text);	mainRoom.viewDiscussion.chatUL.children.last.children(".message").attr('msg-time', hours + ':' + minutes + ':' + seconds);	var icon = ;		mainRoom.viewDiscussion.chatUL.children.last.children('.message').hover(function { thistarget = this; username = $(thistarget).parent.attr("data-user"); timestamp = $(thistarget).attr('msg-time'); message = $(thistarget).attr('msg-source'); $(thistarget).append(' Quote '); $(thistarget).children('.inline-quote').click(function(e) {			if (e.shiftKey) {				$('.message textarea').val($('.message textarea').val + '[' + timestamp + '] ' + username + ": " + message.replace(/^\/me/, "* " + username) + '\n');			} else {				$('.message textarea').val('[' + timestamp + '] ' + username + ": " + message.replace(/^\/me/, "* " + username) + '\n');				scrollToBottom;			}			$(".message textarea").focus;		}); }, function { $(this).children('.inline-quote').remove; }); }); //Bind function to chat updates setTimeout(function {	mainRoom.model.chats.bind('afteradd', ChatPlugins.features.modIcons.script, mainRoom.viewDiscussion); }, 15000);

importScriptPage('User:Robyn Grayson/chat.js', 'clockwork-planet'); importScriptPage('ChatNotifications/code.js', 'dev'); importScriptPage('ChatScript', 'gmods-hideout'); importScriptPage('ChatButtonsCollectionDeluxe.js', 'dev'); importScriptPage('MediaWiki:ChatEditTools/code2.js', 'dev'); importScriptPage('MediaWiki:CustomChatPings/code.js', 'dev'); importScriptPage('MediaWiki:CapsFirst/code.js', 'dev'); importScriptPage('MessageBlocker/code.js', 'dev'); importScriptPage('LightBlock/code.js', 'dev'); importScriptPage('MediaWiki:FaviconNotifier/code.js', 'dev'); $('[name="message"]').keypress(function (e) {   if (e.which == 32 || e.which == 13) {        switch (this.value) {        case '/greet':            this.value = 'Hiya, welcome to the ' + wgSiteName + ' chat!';            break;        case '/logs':            this.value = 'You can view the chat logs here.';            break;            case '/emotes':            this.value = 'You can view the emoticons here.';            break;        case '/tou':            this.value = 'Wikia\'s Terms of Use can be found here.';            break;         case '/shrug':            this.value = '¯\\_(ツ)_/¯';            break;                    }        var test = "/google";        if (this.value.indexOf(test) > -1 && this.value.indexOf(test) < 8) {            var query = this.value.replace('/google ', '');            query = query.replace(/ /g, "+"); this.value = "http://www.lmgtfy.com/?q=" + query; }   } });