User:SpongeBobFan2003/chat.js

var blinkInterval = 1000; // Custom blink delay, 1000ms is default

importScriptPage('MediaWiki:PrivateMessageAlert/code.js', 'dev');

importScriptPage('User:Monchoman45/ChatHacks.js', 'community');

importScriptPage('User:Madnessfan34537/multikick.js', 'callofduty');

importArticles( {

type: 'script',

articles: [

"u:dev:ChatOptions/code.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);