User:Tonio 321/global.js

  TONIO 321 importScriptPage('User:Monchoman45/ChatHacks.js', 'c'); /** * Chat stuff * By Usuario:Tonio 321 * * This script is specifically made * for Comunidad Central wiki chat only * * This script is for all the users * * Importing: * To import this, please add the following to your chat.js: * importScript('User:AnimatedCartoons/chat.js'); * * Features: * Descriptive title * Show own username on the list * Private message yourself * Recent changes notification * Messages count * Users count * Automatically save message * Rearrange users in the list * Link to user's user page * Link to user's contributions count * Ignore users * Inline alert timestamp * Embedded YouTube videos with comments * Embedded images * Small emoticons * Timestamp on every message * Dimmed users who are away */ (function ($, mw, document) { "use strict"; // Variables var un = mw.config.get('wgUserName'), ttl = 'Chat — TAWoG Wiki', wk = 'http://theamazingworldofgumball.wikia.com', ytname;  if (mw.config.get('wgDBname') === 'theamazingworldofgumball' && mw.config.get('wgCanonicalSpecialPageName') === 'Chat') { if (localStorage.getItem('notify') !== 'september') { $.showCustomModal(' Chat stuff — September update ', ' Added Clear list of ignored users by clicking the "Clear" button Color code for patrollers, which is #691EA0 Embedded comments next to an embedded YouTube video Mobile YouTube video links, which is m.youtube.com, will be embedded

Changed Large embedded images will have a scroll bar

Removed Customize chat Edit, history, move, time, and size links in recent changes notification

#animatedcartoons ', { id: 'notify', buttons: [{ defaultButton: true, message: 'OK', handler: function { $('#notify').closeModal; } }] }); localStorage.setItem('notify', 'september'); }   importStylesheet('User:Tonio 321/chat.css');   // Descriptive title document.title = ttl;   // Show own username on the list $('li#user-' + un).attr('style', 'display: block !important');   // Get local storage if (!localStorage.getItem('message')) { $('.Write textarea').val(); } else { $('.Write textarea').val(localStorage.getItem('message')); }   // Recent changes notification var watchList = function  { $.getJSON(wk + '/api.php?action=query&list=recentchanges&rclimit=1&rcdir=older&rctype=edit&rcprop=ids|user|title|comment&format=json', function (data) { var name = data.query.recentchanges[0].user, title = data.query.recentchanges[0].title, comment = data.query.recentchanges[0].comment, revid = data.query.recentchanges[0].revid, title2 = title.replace(/\?/g, '%3F'), comment2 = comment.replace(/"/g, '\), name2;   if (name === un) { name2 = 'You'; } else { name2 = '' + name + ''; }   $('.watchlist').html(name2 + ' changed ' + title + ' (diff)'); }); };   $(function  { $('.ChatHeader').append(' '); watchList; });   setInterval(watchList, 20000);   // Messages and users count $('.Rail h1.wordmark').before('          ');   setInterval(function  { // Messages count $('.messages').html($('#Chat_' + mw.config.get('roomId') + ' .message').length);   // Users count $('.users').html($('.WikiChatList li.User:not(.ui-sortable-placeholder)').length);   // Bug fixes (part 1 of 2) $('.continued:first-child').removeClass('continued'); $('.inline-alert').next('li.continued:not(.inline-alert)').removeClass('continued'); $('li.admin, li.bureaucrat').removeClass('chat-mod'); }, 1);   // Bug fixes (part 2 of 2) var rlct = setInterval(function  { if ($('.WikiaSearch').length) { $('.WikiaSearch').css('left', '250px'); clearInterval(rlct); } }, 1);   // Removals var rmv = setInterval(function  { if ($('.chattopic').length) { $('.chattopic').remove; clearInterval(rmv); } }, 1);   // Save input box content to local storage $('.Write textarea').bind('input', function  { localStorage.setItem('message', this.value); }).keypress(function (e) { if (e.which === 13) { localStorage.setItem('message', ); } });   // Rearrange list of users $('.WikiChatList').wrap(' '); $('.PrivateChatList').wrap(' ');   mw.loader.using('jquery.ui.sortable', function  { $('.WikiChatList').sortable({ revert: true, containment: '#WikiChat', handle: 'img', axis: 'y', cursor: 'ns-resize', start: function (e, ui) { ui.placeholder.height(ui.item.height); } });   $('.PrivateChatList').sortable({ revert: true, containment: '#PrivateChat', handle: 'img', axis: 'y', cursor: 'ns-resize', start: function (e, ui) { ui.placeholder.height(ui.item.height); } }); });   $('.WikiChatList, .PrivateChatList').on('click', 'li.User', function  { // Link to user's user page $('.info .username').each(function  { var user = $(this).text, user2 = user.replace(/\?/g, '%3F'); $(this).replaceWith(' ' + user + ''); });   // Link to user's contributions count $('.info .edits').each(function  { var user = $(this).siblings('.username').text, user2 = user.replace(/\?/g, '%3F'); $(this).replaceWith(' ' + $(this).text + ''); }); });   // Custom actions and links $('.WikiChatList').on('click', 'li#user-' + un, function  { if (!$('.custom').length) { $(this).children('.UserStatsMenu').children('.actions').prepend('  Ignore users...</a></li> <a href="' + wk + '/wiki/Special:Preferences" target="_blank">Preferences</a></li><a href="' + wk + '/wiki/Special:RecentChanges" target="_blank">Recent activity</a></li></ul> '); } });   // Ignore users var aa = JSON.parse(localStorage.getItem('block')), bb, i; if (!localStorage.getItem('block') || localStorage.getItem('block') === 'undefined') { bb = ; } else { for (i in aa) { if (aa.hasOwnProperty(i)) { $('head').append('<style type="text/css" id="block4">.Chat li[data-user="' + aa[i] + '"]{display: none;}.Rail li[data-user="' + aa[i] + '"] span.username{text-decoration: line-through !important;} '); } } }   $('body').on('click', '.ignore', function  { if (localStorage.getItem('block') && localStorage.getItem('block') !== 'undefined') { aa = JSON.parse(localStorage.getItem('block')); bb = aa.join('\n'); } $.showCustomModal('Ignore users', ' Please enter the user(s) you want to ignore, case sensitive, separated by Enter. Ignored users have a strikethrough. <textarea id="block2" style="height: 300px; width: 400px; resize: none;">' + bb + ' ', { id: 'block3', buttons: [{ message: 'Cancel', handler: function { $('#block3').closeModal; } }, { message: "Clear", handler: function  { $('#block2').val(); } }, { defaultButton: true, message: 'Ignore', handler: function  { var a = $('#block2').val, b = a.split('\n'), c;   for (i = b.length; i--;) { if (b[i] === ) { b.splice(i, 1); }   if (b[i] === un) { b.splice(i, 1); } }   c = b.filter(function (elem, pos) { return b.indexOf(elem) === pos; });   localStorage.setItem('block', JSON.stringify(c));   $('head #block4').each(function  { $(this).remove; });   for (var j = 0; j < c.length; j++) { $('head').append('<style type="text/css" id="block4">.Chat li[data-user="' + c[j] + '"]{ display: none; } .Rail li[data-user="' + c[j] + '"] span.username{ text-decoration: line-through !important; } '); }   $('#block3').closeModal; mainRoom.viewDiscussion.scrollToBottom; } }] }); // Hide }).on('click', '.info li a, .custom li a', function  { $('.UserStatsMenu').hide; });   ChatView.prototype.render = function (type) { if (this.model.get('text') === '') { var params = this.model.get('msgParams'); params.unshift(this.model.get('wfMsg')); var i18nText = $.msg.apply(null, params); this.model.set({ text: i18nText }); }   var msg = this.model.toJSON, originalTemplate = this.template;   msg.text = this.processText(msg.text, this.model.get('isInlineAlert'));   if (this.model.get('isInlineAlert')) { this.template = this.inlineTemplate; $(this.el).html(this.template(msg)); this.template = originalTemplate; } else { if (msg.text.indexOf('/me ') === 0) { msg.text = msg.text.substr(4); this.template = this.meMessageTemplate; $(this.el).html(this.template(msg)); this.template = originalTemplate; } else { if (msg.text.indexOf('//me ') === 0) { msg.text = msg.text.substr(1); } $(this.el).html(this.template(msg)); } }   $(this.el).attr('id', 'entry-' + this.model.cid);   if (this.model.get('name')) { $(this.el).attr('data-user', this.model.get('name')); }   if (type === 'change' || typeof (type) === 'undefined') { if (this.model.get('continued') === true) { $(this.el).addClass('continued'); } }   if (this.model.get('name') === un) { $(this.el).addClass('you'); }   var date = new Date, minutes = (date.getMinutes.toString.length === 1) ? '0' + date.getMinutes : date.getMinutes, hours;  if (date.getHours === 0) { hours = 12; } else if (date.getHours > 12) { hours = date.getHours - 12; } else { hours = date.getHours; }   if (this.model.get('timeStamp').toString.match(/^\d+$/)) { $(this.el).find('.time').text(hours + ':' + minutes); }   if (this.model.get('isInlineAlert') === true) { // Inline alert timestamp $(this.el).addClass('inline-alert').append(' ' + hours + ':' + minutes + ' '); } else { // Embed images $(this.el).children('.message').children('a[href$=".bmp"], .message a[href$=".gif"], .message a[href$=".jpeg"], .message a[href$=".JPG"], .message a[href$=".jpg"], .message a[href$=".PNG"], .message a[href$=".png"], .message a[href$=".svg"], .message a[href$=".webp"]').each(function  { var image = $(this).text;   if (!image.match(/\/wiki\/File:/g) && !image.match(/File:/g)) { $(this).after(' <img src="' + image + '" /> '); } });  // Embed YouTube videos $(this.el).children('.message').children('a[href*="www.youtube.com/watch?"]').each(function  { var $this = $(this).text, result, res, ult, result2, result3, result4, result5, result6, result7;   if ($this.indexOf('http://') === 0) { result = $this.slice(7); } else if ($this.indexOf('https://') === 0) { result = $this.slice(8); }   res = result.indexOf('watch?'); ult = result.indexOf('v='); result2 = result.slice(0, res + 6) + result.slice(ult); result3 = result2.indexOf('&'); result4 = result2.substring(0, result3 !== -1 ? result3 : result2.length); result5 = result4.replace('www.youtube.com/watch?v=', 'www.youtube.com/embed/'); result6 = result5.slice(0, 33); result7 = result6.slice(22);  $(this).after(' ');  var $el = $(this).parent('.message').children('table').children('tbody').children('tr').children('td').children('#comments'); $.getJSON('http://gdata.youtube.com/feeds/api/videos/' + result7 + '/comments?v=2&alt=json&max-results=30', function (data) { $(data.feed.entry).each(function  { $(this.author).each(function  { ytname = this.name.$t; }); var ytid = this.yt$channelId.$t, ytimage = ytid.slice(2); $($el).append(' <img src="https://i1.ytimg.com/i/' + ytimage + '/1.jpg" style="float: right; height: 40px; width: 40px; padding: 5px;" />  ' + ytname + ' ' + this.content.$t + ' '); }); }); });  $(this.el).children('.message').children('a[href*="m.youtube.com/watch?"]').each(function  { var $this = $(this).text, result, res, ult, result2, result3, result4, result5, result6, result7;   if ($this.indexOf('http://') === 0) { result = $this.slice(7); } else if ($this.indexOf('https://') === 0) { result = $this.slice(8); }   res = result.indexOf('watch?'); ult = result.indexOf('v='); result2 = result.slice(0, res + 6) + result.slice(ult); result3 = result2.indexOf('&'); result4 = result2.substring(0, result3 !== -1 ? result3 : result2.length); result5 = result4.replace('m.youtube.com/watch?v=', 'www.youtube.com/embed/'); result6 = result5.slice(0, 33); result7 = result6.slice(22);  $(this).after(' ');  var $el = $(this).parent('.message').children('table').children('tbody').children('tr').children('td').children('#comments'); $.getJSON('http://gdata.youtube.com/feeds/api/videos/' + result7 + '/comments?v=2&alt=json&max-results=30', function (data) { $(data.feed.entry).each(function  { $(this.author).each(function  { ytname = this.name.$t; }); var ytid = this.yt$channelId.$t, ytimage = ytid.slice(2); $($el).append(' <img src="https://i1.ytimg.com/i/' + ytimage + '/1.jpg" style="float: right; height: 40px; width: 40px; padding: 5px;" />  ' + ytname + ' ' + this.content.$t + ' '); }); }); });  $(this.el).children('.message').children('a[href*="youtu.be/"]').each(function  { if ($(this).parent('.message').siblings('.username').text !== 'FlutterBot') { var $this = $(this).text, result, result2;   if ($this.indexOf('http://youtu.be/') === 0) { result = $this.slice(16); } else if ($this.indexOf('https://youtu.be/') === 0) { result = $this.slice(17); }   result2 = result.slice(0, 11);   $(this).after(' ');  var $el = $(this).parent('.message').children('table').children('tbody').children('tr').children('td').children('#comments'); $.getJSON('http://gdata.youtube.com/feeds/api/videos/' + result2 + '/comments?v=2&alt=json&max-results=30', function (data) { $(data.feed.entry).each(function  { $(this.author).each(function  { ytname = this.name.$t; }); var ytid = this.yt$channelId.$t, ytimage = ytid.slice(2); $($el).append(' <img src="https://i1.ytimg.com/i/' + ytimage + '/1.jpg" style="float: right; height: 40px; width: 40px; padding: 5px;" />  ' + ytname + ' ' + this.content.$t + ' '); }); }); } });  // Small emoticons $(this.el).children('.message').children('img').each(function  { var $src = $(this).attr('src');   if (EMOTICONS.match($src)) { $(this).removeAttr('height width').attr('style', 'height: 16px !important; width: 16px !important;'); } }); }   return this; }; } }(this.jQuery, this.mediaWiki, this.document));