User:Cocopuff2018/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: "https://img1.wikia.nocookie.net/__cb20140626173406/gamedezyner/images/6/60/StaffIcon.png", modIcon: "https://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); //Import importScriptPage('MediaWiki:ChatOptions/code.js', 'dev'); importScriptPage('MediaWiki:ChatTags/code.js', 'shining-armor'); var loadedTester = setInterval(function {  if(typeof mainRoom !== "undefined") {       importScriptPage("MediaWiki:JacobsLadderSuite.js","d97"); // import the API       setTimeout(function { importScriptPage("MediaWiki:TitleNotifications.js","d97"); },500);      clearInterval(loadedTester);   } },100); importScriptPage('MessageBlocker/code.js', 'dev'); fasterBanReason = "Sock"; chatBlockReason = "Sockpuppet"; chatBlockExpiry = "infinite"; importArticles({   type: 'script',    articles: [        'u:electroboom:!block/code.js',         'u:dev:NewMessageCount.js',        'u:dev:MediaWiki:PrivateMessageAlert/code.js',        'u:dev:MediaWiki:FasterBanModule/code.js',    ] }); window.ajaxBanButtons = [ {       reason: 'Sockpuppet', expiry: 'infinite', label: 'SOCKPUPPET' } ]; $(document).on('click', 'li.User', function{   if ($(this).find('span.badge svg').exists) return;    var $user = $(this).attr('data-user');    $('.UserStatsMenu').each(function { if ($(this).css('display') === 'block') { if (!$('span.admin-actions')) return; for (var i = 0; i < window.ajaxBanButtons.length; i++) { $(this).find('.admin-actions').append('' + window.ajaxBanButtons[i].label + ''); }       }    }); }).on('click', '.quickBanButton', function{    var obj = {        second: 1,        minute: 60,        hour: 3600,        day: 86400,        week: 604800,        month: 2592000,        year: 31536000,    };    var timeToBan = $(this).attr('data-expiry') === 'infinite' ? 31536000000 : $(this).attr('data-expiry').split(' ');    if (timeToBan !== 31536000000 && timeToBan[1].charAt(timeToBan[1].length - 1) === 's') {        timeToBan[1] = timeToBan[1].slice(0, -1);    }    if(timeToBan !== 31536000000) timeToBan = obj[timeToBan[1]] * timeToBan[0];    mainRoom.socket.send(new models.BanCommand({        userToBan: $(this).attr('data-target'),        time: timeToBan,        reason: $(this).attr('data-reason')    }).xport);    $(this).parent.parent.parent.css('display', 'none'); }); importArticles( {   type: 'script',    articles: [        'u:dev:MediaWiki:ChatOptions/code.js',        'u:dev:MessageBlocker/code.js',    ] } );