Jump to content

User:Booshie/chat.js

From SpongeBob Wiki

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
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('<span class="inline-quote" style="color: #3cd7fa !important;cursor:pointer;">&amp;nbsp;&amp;nbsp;Quote</span>');
 $(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);