User:Fngplg/global.js

//redirect mw.log to debug window.fngconsole = window.fngconsole || window.console.log; window.console.log = function { var a = Array.prototype.slice.call(arguments); if (a[0] === '') { window.console.debug.apply(window.console, a); } else { window.fngconsole.apply(window.console, a); } }; -function { var scounter = '.wds-global-navigation__notifications-counter#onSiteNotificationsCount', mooptions = {characterData: !0, childList: !0}, mo = new MutationObserver(function(e) {           // basically, we don't care about records. mutation itself is a sign            var addedNodes = e.map(function(v) {return v.addedNodes.length ? [].slice.call(v.addedNodes) : null}).flat.filter(Boolean);           console.log('mo txt', $(scounter).text, e, addedNodes);            if (!$(scounter).text) return;// nothing to do here        }); mo.observe($(scounter).get(0), mooptions); // debug mo.observe($('.wds-global-navigation__notifications-counter:not(#onSiteNotificationsCount)').get(0), mooptions); }; /*!function { var onerror = window.onerror; function onerr (msg, url, line, col, error) { var a = [].slice.call(arguments); console.error.apply(this, a); // dispatch error if (onerror && typeof(onerror) === 'function') onerror.apply(window, a); return true; }   // is already set if (Object.is(onerror, onerr)) return; window.onerror = onerr; };*/ (function($) {   //importScriptPage('MediaWiki:View Source/code.js', 'dev');    //mw.hook('ppreview.ready').add(function(s){console.log('g', s)});    window.pPreview = window.pPreview || {};    //window.pPreview.debug = 1;    /*    window.pPreview = $.extend(true, window.pPreview, { tlen: 450, delay: 30, RegExp: {iparents: ['#IgnorePreview', 'div[data-ignore-me=1]', '.tabs'], onlyinclude : ['.LinkPreviewText', '[data-include-me=1]'],},});   */    var debug = $.getUrlVar('debug');    var scriptUrl = '//dev.wikia.com/load.php?mode=articles&only=scripts&articles=ViewRemoved/code.js|AjaxRC/code.js|CodeQuickLinks/code.js|View Source/code.js|Wikificator.js';    var sitename = (/\/{2}(.*)\.(wikia|fandom)\.com/.exec(window.wgServer)||[])[1];    if (sitename !== 'ru.borderlands') {        window.log = window.log ? window.log : function{return console.log.apply(this, arguments);};        window.nQuoteSettings = $.extend(true, window.nQuoteSettings, { //debug: false, useQuoteTemplate: false, quoteStyle: 'border-width:1px;border-style:ridge;', });       //mw.loader.load('//ru.borderlands.wikia.com/index.php?title=MediaWiki:Common.js/Quotes.js&action=raw&ctype=text/javascript');        //mw.loader.load('http://dev.wikia.com/index.php?title=MediaWiki:LinkPreview/code.js&action=raw&ctype=text/javascript');        scriptUrl = scriptUrl + '|LinkPreview/code.js|CommentPreview/code.js' +            '|Quotes.js';//'|w:c:ru.borderlands:mediawiki:Common.js/Quotes.js';        //mw.hook('wikipage.content').add(function($c){log('mwh.wp.c:',$c,$c.find('.DiscordIntegrator:not(.loaded)').length)});    }    mw.loader.load(scriptUrl + (debug ? '&debug=1' : ''));    $(function { //replace /message_wall: to /user: for avatars $('.speech-bubble-avatar a').each(function(i,v){v.href = v.href.replace(/(.*\/).*?:/, '$1User:')}); });   //remove lightbox keydown handler when lightbox is closed    /*    $(window).on('lightboxOpened', function { if (window.lightbox_keydown_fix_timer) clearInterval(window.lightbox_keydown_fix_timer); window.lightbox_keydown_fix_timer = setInterval(function {           if (!$('#LightboxModal').length) {                $(document).off('keydown.Lightbox');                clearInterval(window.lightbox_keydown_fix_timer);                delete(window.lightbox_keydown_fix_timer);            }        }, 1000); });*/   //отключение ссылок в recentchanges, иногда посылающих на #    if (wgCanonicalSpecialPageName === 'Recentchanges') {        $('body').on('click', '.mw-enhanced-rc .mw-collapsible-toggle a', function(e){e.preventDefault});    }    //add encode/decode button to diffs    $('.diff-ntitle').append($(' ', {class: 'wds-button wds-is-secondary wds-is-squished', text: 'euc', style: 'position:absolute;right:0;'}).on('click', function(e){$('.diffchange').each(function{var $this=$(this);$this.text($this.data('encoded')?decodeURIComponent($this.text):encodeURIComponent($this.text));$this.data('encoded', !$this.data('encoded'));});}));    //scriptUrl = scriptUrl + '|MediaWiki:VKLikeButton/code.js';    //window.vklikeapiid = 6265945;    //window.UserTagsJS = $.extend(true, window.UserTagsJS, {modules:{mwGroups: ['blocked', 'bot', 'bureaucrat', 'chatmoderator', 'checkuser', 'content-moderator', 'council', 'helper', 'rollback', 'staff', 'sysop', 'threadmoderator', 'vanguard', 'vstf', 'global-discussions-moderator']}}); //window.pPreview = window.pPreview || {}; //pPreview.RegExp = pPreview.RegExp || {}; //pPreview.RegExp.dtag = new RegExp('(.*)','gm'); //window.pPreview.debug = true; if (wgNamespaceNumber === 2000) $('.thread-left a').each(function(i,v) {v.title = v.innerText}); /*   window.importScriptPage = function (page, server) { var url = '/index.php?title=' + encodeURIComponent(page.replace(/ /g, '_')).replace('%2F', '/').replace('%3A', ':') + '&action=raw&ctype=text/javascript'; if (typeof server == "string") { if (server.indexOf('://') == -1 && server.indexOf('//') !== 0) url = 'http://' + server + '.wikia.com' + url; else url = server + url; }       return importScriptURI(url); };   (function  {    //https://stackoverflow.com/a/26596324        if ( typeof window.CustomEvent === "function" ) return false; //If not IE        function CustomEvent ( event, params ) {            params = params || { bubbles: false, cancelable: false, detail: undefined };            var evt = document.createEvent( 'CustomEvent' );            evt.initCustomEvent( event, params.bubbles, params.cancelable, params.detail );            return evt;        }        CustomEvent.prototype = window.Event.prototype;        window.CustomEvent = CustomEvent;    }); //*/   $.fn.filterByData = function(prop, val) { return this.filter(           function {                 if (!!val) {                    return $(this).data(prop) == val;                }                return !!$(this).data(prop);            }        ); };   /*,{        type: "script", articles:["u:dev:LinkPreview/code.js"] });*/   //$.getScript('http://ru.borderlands.wikia.com/index.php?title=MediaWiki:Common.js/pagePreview.js&action=raw&ctype=text/javascript');    //mw.loader.load('http://ru.borderlands.wikia.com/index.php?title=MediaWiki:Common.js/pagePreview.js&action=raw&ctype=text/javascript');    //mw.loader.load('http://ru.borderlands.wikia.com/index.php?title=MediaWiki:Common.js/emo.js&action=raw&ctype=text/javascript');    //mw.loader.load('https://en.wikipedia.org/w/index.php?title=MediaWiki:Gadget-popups.js&action=raw&ctype=text/javascript');    //mw.loader.load('https://en.wikipedia.org/w/index.php?title=MediaWiki:Gadget-navpop.css&action=raw&ctype=text/css', 'text/css');    /* importScriptPage('BackToTopButton/code.js', 'dev');    */    //console.log('global');    //switch code editor to classic mode    /*    importArticles({ type: 'script', articles: [ 'u:dev:MediaWiki:CodeEditorSwitch/code.js' ]   });    */    /*    (function{ //test mode everywhere var hs = '.wds-community-header__top-container .wds-community-header__wiki-buttons'; var btn = $('', {class: 'wds-button wds-is-squished wds-is-secondary', text: 'T', href: '#', id: 'nbtntestmode'}); if ($(hs).length) { //oasis $(hs).append(btn); } else { //monobook $('#p-personal .pBody ul').append(btn); }//append js button $('body').on('click', '.content-review-module-test-mode-enable, #nbtntestmode', function(e) {           e.preventDefault;            e.stopPropagation;            var data = {pageId: wgArticleId, wikiId: wgCityId, editToken: mw.user.tokens.get('editToken')};            $.nirvana.sendRequest({controller: 'ContentReviewApiController', method: 'enableTestMode', data: data, callback: function { var qs = new Wikia.Querystring; qs.addCb.goTo; },               onErrorCallback: function { console.error('test mode enabler error', arguments); }           });//sendrequest        });//onclick });//test mode everywhere   */    $(function  { //another jspad //https://stackoverflow.com/a/19961519 HTMLTextAreaElement.prototype.insertAtCaret = function (text) { text = text || ''; if (document.selection) { // IE           this.focus; var sel = document.selection.createRange; sel.text = text; } else if (this.selectionStart || this.selectionStart === 0) { // Others var startPos = this.selectionStart; var endPos = this.selectionEnd; this.value = this.value.substring(0, startPos) + text + this.value.substring(endPos, this.value.length); this.selectionStart = startPos + text.length; this.selectionEnd = startPos + text.length; } else { this.value += text; }       };//insertatcaret function btnClick (e) { if (e && e.preventDefault) e.preventDefault; gui.find('textarea').val(previousText); $('body').prepend(gui); gui.show.find('textarea').focus; }//btnclick function btnBClick (e) { $(' ', {type: 'text/javascript', text: gui.find('textarea').val}).prependTo($('head')); $(myname).remove; }//btnbclick var myname = '#ngui'; var previousText = ''; var hs = '.wds-community-header__top-container .wds-community-header__wiki-buttons'; var btn = $('', {class: 'wds-button wds-is-squished wds-is-secondary', text: 'JS', href: '#', id: 'nbtnshowgui'}); var gui = $(' ', {id: myname.slice(1), style: 'position:absolute;left:0;top:100px;width:100%;height:90%;z-index:10000;visibility:visible;'}); var guib = $(' ', {type: 'button', class: 'wikia-button', value: 'start', id: 'nbtnstart'}); var guit = $(' ', {id: 'ntxtscript', style: 'display:block;margin: 0 5%;width:80%;height:auto;min-height:100px;max-height:80%;'}); gui.append(guib).append(guit); if ($(hs).length) { //oasis $(hs).append(btn); } else { //monobook $('#p-personal .pBody ul').append(btn); }//append js button $('body').on('keydown', function (e) {           if (e.ctrlKey && e.keyCode === 8) { //ctrl+bckspc                btnClick;                return false;            }        });//body keydown $('body').on('click', '#nbtnshowgui', btnClick); $('body').on('click', myname + ' #nbtnstart', btnBClick); $('body').on('keydown', myname + ' #ntxtscript', function (e) {           if (e.keyCode >= 37 && e.keyCode <= 40) return true; //arrows            var $this = $(myname + ' #ntxtscript');            switch (e.keyCode) {                case 9:                    $this.focus;                    $this.get(0).insertAtCaret('    ');                    return false;                case 13:                    if (e.shiftKey || e.ctrlKey) {                        previousText = $this.val;                        btnBClick;                        return false;                    }                    break;                case 27:                    previousText = $this.val;                    $(myname).remove;                    return false;            }            if ($this.val && $this.val.length > 100) $this.height($this.get(0).scrollHeight);        });//txt keydown });//js pad   /*    (function ($) { //promise polyfill for ie       if (typeof Promise === 'function') return; function Promis (f) { var p = new $.Deferred; f(p.resolve, p.reject); return p;       }//promise window.Promise = Promis; }(jQuery));   */ })(jQuery); !function { // sorts namespaces in the ns dropdowns on the following pages if (window.nsSorter || ['Prefixindex', 'Allpages', 'Recentchanges'].indexOf(wgCanonicalSpecialPageName) === -1) return; function sorter ($content) { var $target, a, a1, $c = ($content instanceof jQuery) ? $content : $(document); switch (wgCanonicalSpecialPageName) { case 'Recentchanges': $target = $c.find('.mw-recentchanges-table .mw-input .dropdown-list').first; a = $target.find('li').toArray; a1 = a.sort(function(a, b) {return $(a).find('label').text.localeCompare($(b).find('label').text)}); break; case 'Prefixindex': case 'Allpages': $target = $c.find('select#namespace').first; a = $target.find('option').toArray; a1 = a.sort(function(a, b) {return a.label.localeCompare(b.label)}); break; }       if ($target && a1) { $target.empty.append(a1); ($target.find('[selected]:first').get(0) || {}).selected = true; }   }// sorter window.nsSorter = sorter; (window.ajaxCallAgain = (window.ajaxCallAgain || [])).push(sorter); sorter; }; (function ($) {   //add quick links to user    if ([2, 3, 500, 1200].indexOf(wgNamespaceNumber) === -1) return;    var $container = $(' links '),        $links = $(' '),        username = wgPageName.replace(/.*?\:/, ).replace(/\/.*/, ),        links = [            '//community.wikia.com/wiki/user:' + username + '/global.js',            '/wiki/user:' + username + '/common.js',            '/wiki/user:' + username + '/wikia.js',            '//community.wikia.com/wiki/user:' + username + '/global.css',            '/wiki/user:' + username + '/common.css',            '/wiki/user:' + username + '/wikia.css',        ];    links.forEach(function (link) { $links.append(           $('', { href: link, text: link.replace(/.*\//, '') })       );    });    $links.find('a').wrap('');    $container.append($links);    $('.page-header__title, .masthead-info [itemprop="name"]').after($container);    mw.util.addCSS('.userlinks-container{display:inline-block;vertical-align:top;background:inherit}\ .userlinks-links{display:none;position:absolute;z-index:1000;background:inherit}\ .userlinks-container:hover .userlinks-links{display:block}\ .userlinks-links li{list-style:none}'); })(jQuery); +function (config) { // adds go-to-line button to the tools menu @user:fngplg, 2018 if (config.loaded || ['edit', 'submit'].indexOf(window.wgAction) === -1) return; config.loaded = true; var $tools = $('#my-tools-menu'), $tool = $('', {class: 'overflow go-to-line'}), $a = $('', {href: '#', text: 'Go to line', title: 'Scrolls #wpTextbox1 to line x'}), lastLine = 0; $tool.append($a); $a.on('click', function(e) {       e.preventDefault;        //e.stopPropagation;        var $tbox = $('#wpTextbox1');        if (!$tbox.length) return;        var i, selStart,            alines = $tbox.text.split('\n'),            line = window.prompt('Enter line number, the', lastLine || alines.length - 1),            target = '';        lastLine = line === null ? lastLine : line;        line = (line && line > 0) ? line : 0;        line = line < alines.length ? line : (alines.length - 1);        target = alines[line];        if (!target) {            // empty line, go to next non-empty            for (i = line + 1; i < alines.length; i++) if (alines[i]) break;            target = alines[i];            if (!target) {                // line still empty, reverse                for (i = line - 1; i > -1; i--) if (alines[i]) break;                target = alines[i];            }        } selStart = $tbox.val.indexOf(target); if (selStart < 0) return;// should not be happened ever $tbox.focus; $tbox.get(0).setSelectionRange(selStart, selStart); $tbox.get(0).insertAtCaret(''); });   $tools.append($tool); }(window.goToLine = window.goToLine || {}); +function (config) {    // adds localization to new categories @user:fngplg, 2018    var mwc = mw.config.get(['wgAction', 'wgContentLanguage', 'wgNamespaceNumber']);    if (config.loaded || mwc.wgNamespaceNumber !== 14 || mwc.wgAction !== 'view' || mwc.wgContentLanguage === 'en') return;    config.loaded = true;    var langs = {        // language list - start        en: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',        ru: 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩБЫЪЭЮЯ',        // language list - stop    };    var alphabet = config.alphabet || langs[mwc.wgContentLanguage] || [],        $list = $('', {class: 'cat-local-list category-page__alphabet-shortcuts category-page__alphabet-shortcuts-' + mwc.wgContentLanguage}),        $target = $('.category-page__alphabet-shortcuts');    if (!$target.length) {        mw.log('newCatLocal: no target found'); return; }   if (!alphabet.length) { // gather all available characters and make an alphabet var syms; try { //some browsers are ie           syms = new Set($('#mw-content-text').text.toUpperCase                .replace(/[\d\s\w\.’'\[\]{}⟨⟩<>:,،、‒–—―…!.‹›«»‐\-?‘’“”'";/⁄·\&*@\•^†‡°”¡¿※#№÷×ºª%‰+−=‱¶′″‴§~_|‖¦©℗®℠™¤₳฿₵¢₡₢$₫₯֏₠€ƒ₣₲₴₭₺₾ℳ₥₦₧₱₰£៛₽₹₨₪৳₸₮₩¥]*/gm, )            );        } catch (ex) {            mw.log('newCatLocal: new Set is not supported');        }        if (!syms) return;        syms.forEach(function(v){alphabet.push(v)});// set is too weird to [].slice it        alphabet = alphabet.sort;    } else {        alphabet = alphabet.split();    }// if !alphabet.length (auto)    if (!alphabet || !alphabet.length) return;    alphabet.forEach(function(v) {        var $a = $('', {                href: '#',                text: v,            }),            $item = $('', {                class: 'cat-local-item category-page__alphabet-shortcut'            });        $item.append($a); $list.append($item); });   $target.append($list);    $('body').on('click', '.cat-local-item a', function(e) { e.preventDefault; window.location.search = 'from=' + this.innerText; }); }(window.newCatLocal = window.newCatLocal || {});