User:ThaumicTom/global.js

/* Disable 5 second edit save delay */ GlobalTriggers.bind('WikiaEditorReady', function (point) {   if (point.controls) {        point.controls.editform.off('submit').on('submit', function { point.setState(3); });   } });

// http://dev.wikia.com/wiki/MediaWiki:LastEdited/code.js?oldid=59536 ;(function {    var lastEdited = {         extend: function(obj) {             obj = obj || {};             for (var i = 1; i < arguments.length; i++) {                 if (!arguments[i]) {                     continue;                 }                 for (var key in arguments[i]) {                     if (arguments[i].hasOwnProperty(key)) {                         obj[key] = arguments[i][key];                     }                 }             }             return obj;         },         title: mw.config.get('wgPageName'),         id: mw.config.get('wgArticleId'),         i18n: {             de: {                 lastEdited: '$1 $2',                 loading: 'Letzte Details ansehen',                 changes: 'changes',                 link: 'link',                 undo: 'undo',                 cancel: 'cancel'             }         },         canRollback: /(bureaucrat|sysop|helper|vstf|staff|content-moderator|rollback)/.test(mw.config.get('wgUserGroups').join(' ')), get: function(options) { var serialized = []; for (var i in options) { serialized.push(mw.util.wikiUrlencode(i) + '=' + mw.util.wikiUrlencode(options[i])); }            serialized = '?' + serialized.join('&'); var xhr = new XMLHttpRequest; xhr.open('GET', mw.util.wikiScript('api') + serialized, true); xhr.onload = function { if (xhr.status == 200) { var response = JSON.parse(xhr.responseText); if (response.query.pages['-1']) { return; }                    lastEdited.add(response.query.pages[lastEdited.id].revisions); }            };             xhr.send; },        add: function(data) { if (!data[1]) return; var prev = data[1]; data = data[0]; var html = '  '; switch (mw.config.get('skin')) { case 'oasis': case 'wikia': if (lastEdited.options.position.element && lastEdited.options.position.method) { if (lastEdited.options.position.method == 'append') { var div = document.createElement('div'); div.innerHTML = html; html = div.firstChild; lastEdited.options.position.element.appendChild(html); } else if (lastEdited.options.position.method == 'prepend') { lastEdited.options.position.element.children[0].insertAdjacentHTML('beforeBegin', html); }                    } else { if (document.querySelector('#PageHeader .page-header__title')) { var div = document.createElement('div'); div.innerHTML = html; html = div.firstChild; document.querySelector('#PageHeader .page-header__title').appendChild(html); mw.util.addCSS('#lastEdited { line-height: normal; font-size: 12.5px; font-weight: normal; margin-top: 6px; }'); } else { document.getElementsByClassName('UserProfileActionButton')[0].insertAdjacentHTML('afterEnd', html); }                    }                     break; case 'monobook': case 'wowwiki': case 'uncyclopedia': document.getElementById('bodyContent').children[0].insertAdjacentHTML('beforeBegin', html); break; } var time = ' '; if (lastEdited.options.time == 'timestamp') { var date = new Date(data.timestamp).toString; if (lastEdited.options.timezone && lastEdited.options.timezone == 'UTC') { date = new Date(data.timestamp).toUTCString; }                time = date.slice(0, 3) + ', ' + date.slice(4, 15) + ', ' + date.slice(16, 24); }            var user = mw.util.wikiUrlencode(data.user); user = '' + data.user + ''; html = lastEdited.i18n.lastEdited.replace(/\$1/g, '' + user).replace(/\$2/g, ' | ' + time +''); if (lastEdited.options.size) { var bytes = data.size - prev.size, span = document.createElement('span'); if (Math.abs(bytes) > 500) { span.style.fontWeight = 'bold'; }                span.style.color = bytes > 0 ? '#006500' : '#8b0000'; if (bytes === 0) { span.style.color = '#aaaaaa'; }                span.innerHTML = '(' + (bytes > 0 ? '+' : ) + bytes.toString.replace(/\B(?=(\d{3})+(?!\d))/g, ',') + ')'; html += ' | ' + data.size + ' Bytes ' + span.outerHTML; }            if (data.minor === ) { html += ' K '; }            if (lastEdited.options.comment && data.parsedcomment) { if (data.parsedcomment.indexOf('Created page with') > -1) { html += ' Seite erstellt'; } else { html += ' ' + data.parsedcomment; }            }             document.getElementById('lastEdited').innerHTML = html; if (lastEdited.options.avatar) { var xhr = new XMLHttpRequest; xhr.open('GET', '/api/v1/User/Details?ids=' + data.userid + '&size=' + lastEdited.options.avatarsize, true); xhr.onload = function { if (xhr.status == 200) { var avatar = document.getElementById('lastEdited-avatar'); avatar.setAttribute('src', JSON.parse(xhr.responseText).items[0].avatar); avatar.setAttribute('height', lastEdited.options.avatarsize); avatar.setAttribute('width', lastEdited.options.avatarsize); avatar.insertAdjacentHTML('afterEnd', '&amp;nbsp;'); }                };                 xhr.send; }            jQuery('.timeago').timeago; if (document.getElementById('lastEdited-diff-link')) { document.getElementById('lastEdited-diff-link').addEventListener('click', function {                    require(['wikia.ui.factory'], function(ui) { ui.init(['modal']).then(function(modal) {                            var config = {                                 vars: {                                     id: 'lastEdited-diff',                                     size: 'large',                                     title: lastEdited.i18n.changes + ': ' + lastEdited.title.replace(/_/g, ' '),                                     content: ' ' + data.diff['*'] + '  ',                                     buttons: [{                                         vars: {                                             value: lastEdited.i18n.cancel,                                             data: [{                                                 key: 'event',                                                 value: 'close'                                             }]                                         }                                     }, { vars: { value: lastEdited.i18n.link, classes: ['normal', 'primary'], data: [{ key: 'event', value: 'link' }]                                        }                                     }, {                                         vars: { value: lastEdited.i18n.undo, classes: ['normal', 'primary'], data: [{ key: 'event', value: 'undo' }]                                        }                                     }]                                 }                             };                             if (lastEdited.canRollback && mw.config.get('wgUserName') !== data.user) { config.vars.buttons.push({                                    vars: {                                         value: 'Rollback',                                         classes: ['normal', 'primary'],                                         data: [{                                             key: 'event',                                             value: 'rollback'                                         }]                                     }                                 }); }                            modal.createComponent(config, function(diffModal) {                                 diffModal.bind('link', function { diffModal.trigger('close'); window.open('/?diff=' + data.diff.to, '_blank'); });                                diffModal.bind('undo', function { diffModal.trigger('close'); window.open('/wiki/' + mw.util.wikiUrlencode(lastEdited.title) + '?action=edit&undoafter=' + data.diff.from + '&undo=' + data.diff.to, '_blank'); });                                diffModal.bind('rollback', function { var xhr = new XMLHttpRequest; xhr.open('POST', mw.util.wikiScript('api') + '?action=rollback&title=' + mw.util.wikiUrlencode(lastEdited.title) + '&user=' + mw.util.wikiUrlencode(data.user) + '&token=' + mw.util.wikiUrlencode(data.rollbacktoken) + '&format=json', true); xhr.onload = function { if (xhr.status == 200) { var response = JSON.parse(xhr.responseText); if (!response.error) { window.location.reload; }                                        }                                     };                                     xhr.send; });                                mw.loader.using(['mediawiki.action.history.diff'], function { diffModal.show; });                            });                         });                     });                 });             }         },         init: function {             lastEdited.options = lastEdited.extend({ avatar: false, avatarsize: 15, size: true, diff: true, comment: true, time: 'timeago', position: { element: , method:   },                namespaces: { include: [], exclude: [] },                pages: [] }, window.lastEdited);            var allowed = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 110, 111, 118, 828, 829, 1202];             if (lastEdited.options.namespaces.include && lastEdited.options.namespaces.include.constructor == Array) {                 for (var i in lastEdited.options.namespaces.include) {                     allowed.push(lastEdited.options.namespaces.include[i]);                 }             }             if (lastEdited.options.namespaces.exclude && lastEdited.options.namespaces.exclude.constructor == Array) {                 allowed = allowed.filter(function(elem) { return lastEdited.options.namespaces.exclude.indexOf(elem) < 0; });            }             lastEdited.allowed = allowed;             lastEdited.i18n = (lastEdited.options.lang && typeof lastEdited.options.lang == 'string') ? lastEdited.extend(lastEdited.i18n.en, lastEdited.i18n[lastEdited.options.lang]) : lastEdited.extend(lastEdited.i18n.en, lastEdited.i18n[mw.config.get('wgUserLanguage')]);             if ( !mw.util.getParamValue('diff') && !mw.util.getParamValue('oldid') && lastEdited.allowed.indexOf(mw.config.get('wgNamespaceNumber')) > -1 && !(lastEdited.options.pages.indexOf(lastEdited.title) > -1) && !mw.config.get('wgIsMainPage') && !window.lastEditedLoaded ) {                window.lastEditedLoaded = true;                 var query = {                     action: 'query',                     titles: lastEdited.title,                     prop: 'revisions',                     rvprop: 'timestamp|user|userid|size|parsedcomment|flags',                     rvlimit: 2,                     rvdiffto: 'prev',                     format: 'json'                 };                 if (lastEdited.canRollback) {                     query.rvtoken = 'rollback';                 }                 mw.util.addCSS( '#lastEdited-diff-changes .diff-marker {' + 'width: auto;' + '}' +                    '#lastEdited-diff-changes td {' + 'width: 50%;' + 'padding: 5px;' + '}'                );                 lastEdited.get(query);             }         }     };     lastEdited.init; });