User:Pirr/global.js

require([   'jquery',    'mw',    'wikia.window',    'wikia.browserDetect' ], function( $, mw, window, browserDetect ) {    var conf = mw.config.get([ 'wgTrackID', 'wgUserName', 'wgUserGroups', 'wgUserLanguage', 'wgContentLanguage', 'wgMainPageTitle' ]);   if ( window.GlobalJSLoaded || conf.wgTrackID !== 33612736 ) return;    window = $.extend(window, { GlobalJSLoaded: true, ajaxSpecialPages: [ 'Recentchanges', 'Images', 'Videos', 'Watchlist', 'Newwikis', 'Log', 'NewPages', 'Wikiactivity' ],       announcementsIgnore: { option: 'opt-out-all', exceptWikiIds: [ 177,               7931,                1686,                2280,                65099,                1937910,                1230494            ]        },        ajaxRefresh: 15000, MultiUploadoption: { max: 75 }, lastEdited: { avatar: false }, qtUserPageTemplate: '' });   // Imports    if ( browserDetect.isMobile ) { // Mobile-only        $('head').append('');        importArticles({ type: 'script', articles: [ 'u:dev:MediaWiki:MobileEditor.js', 'u:dev:MediaWiki:ChromeToolbarColor.js' ]       });    }    importArticles({ type: 'script', articles: [ 'u:dev:MediaWiki:AjaxUndo/code.js', 'u:dev:MediaWiki:AjaxRC/code.js', 'u:dev:MediaWiki:ConsistentNotifications.js', 'u:dev:MediaWiki:NullEditButton/code.js', 'u:dev:MediaWiki:MultiUpload/code.js', 'u:dev:MediaWiki:RevealAnonIP/usercode.js', 'u:dev:MediaWiki:UnhideUserMasthead/code.js', 'u:dev:MediaWiki:View Source/code.js', 'u:dev:MediaWiki:LastEdited/code.js', 'u:dev:MediaWiki:QuickCreateUserPage/code.js', 'u:dev:MediaWiki:UnsafeScripts/code.js', 'u:dev:MediaWiki:SearchSuggest/code.js', 'u:dev:MediaWiki:DiscussionsViewer/code.js', 'u:dev:MediaWiki:FixPolishMonths.js', 'u:dev:MediaWiki:AnnouncementsIgnore.js', 'u:kocka:MediaWiki:ReportFormatter.js', 'u:rail-sandbox:MediaWiki:StalkerScript.js' ]   });    var summary;    // Some admin-only stuff to avoid unnecessary HTTP requests on most wikis    if ( /sysop|bureaucrat|content-moderator/.test( conf.wgUserGroups.join ) ) {        summary = {            en: {                del: 'Housekeeping',                block: 'Vandalism',                comment: 'Harmful comment',                file_update: 'Auto-update of file names'            },            pl: {                del: 'Porządki',                block: 'Wandalizm',                comment: 'Nieodpowiedni komentarz',                file_update: 'Automatyczna aktualizacja nazw plików'            }        };        summary = $.extend( summary.en, summary[conf.wgContentLanguage] );       // It really works lmao        window = $.extend(window, { WHAMDeleteReason: summary.del, WHAMBlockReason: summary.block, AjaxCommentDeleteConfig: summary.comment });       LIRoptions = { editSummary: summary.file_update }; // REEEEEEEE!        importArticles({ type: 'script', articles: [ 'u:dev:MediaWiki:WHAM/code.2.js', 'u:dev:MediaWiki:AjaxBatchDelete.js', 'u:dev:MediaWiki:AjaxPatrol/code.js', 'u:dev:MediaWiki:Discussions Delete All/code.js', 'u:dev:MediaWiki:AjaxCommentDelete/code.js', 'u:dev:MediaWiki:ViewRemoved/code.js', 'u:dev:MediaWiki:MassRename/code.js', 'u:dev:MediaWiki:FileUsageAuto-update/code.js', 'u:dev:MediaWiki:CategoryRenameAuto-update/code.js' ]       });    }    // Custom codes! Yeah!!!!    // But this "i18n system" is a disaster    var i18n = {        en: {            contribs: 'Contribs',            recentchanges: 'Recent changes'        },        pl: {            contribs: 'Wkład',            recentchanges: 'Ostatnie zmiany'        }    };    i18n = $.extend( i18n.en, i18n[conf.wgUserLanguage] );   // Add contribs link to global navigation    $( '' ).append( $('', {           href: mw.util.getUrl( 'Special:Contributions/' + conf.wgUserName ),            text: i18n.contribs        }) ).insertAfter( '.wds-global-navigation__user-menu ul.wds-list li:nth-of-type(2)' );   // Link replacement by Nanaki    $(' .wds-community-header__wiki-buttons a[data-tracking="wiki-activity"]' ).attr({ href: mw.util.getUrl( 'Special:Recentchanges' ), title: i18n.recentchanges });   // Minor snippets    $( 'a.external' ).attr( 'target', '_blank' );    $( '#wpLeaveRedirect' ).attr( 'checked', false );    $( '#mw-delete-table #wpReason' ).val( summary.del );    $( '.wds-community-header__wordmark a, .wds-community-header__sitename a' ).attr( 'href', mw.util.getUrl( conf.wgMainPageTitle ) );    /**     * @name        Migration message preloader     * @author      Rail01     * @description Adds button on user's message walls that preloads infobox migration message     */    $(function { // Load only on walls and Polish wikis; double run prevention if (mw.config.get('wgNamespaceNumber') !== 1200 || mw.config.get('wgPageContentLanguage') !== 'pl' || window.MessagePreloaderLoaded) { return; } window.MessagePreloaderLoaded = true; // Add button $('#wall-new-message .toolbar').append(           $(' ', { class: 'wds-button wds-is-squished', style: 'padding: 2px 7px; cursor: pointer', id: 'migration_msg', title: 'Preload migration message', text: 'Preload' })       );        // Preload message $('#migration_msg').click(function {           // Return if script completed it's mission            if (window.MessagePreloaded) { return; }            // Content            var title = 'Infoboksy',                content = 'Cześć! Piszę do ciebie, ponieważ zauważyłem że infoboksy na  nie są „przenośne”, to znaczy że zostały zbudowane w oparciu o tabelki, a to nie sprzyja ich poprawnemu wyświetlaniu się na [ urządzeniach mobilnych].\n\nChciałbym zaoferować ci pomoc w przystosowaniu ich do nowego standardu przenośncyh infoboksów, co przyniesie za sobą korzyści takie jak przyjazność mobilnym urządzeniom, łatwość edytowania oraz rozwijania takich infoboksów, czy czysty i semantycznie poprawny kod HTML który jest o wiele prostszy do dostosowywania przy użyciu CSS-u niż klasyczne odpowiedniki na tabelach.\n\nPozdrawiam! 🙃'; // Append content to textareas $('textarea#WallMessageTitle').val(title); $('textarea#WallMessageBody').val(content); // Mission complete, officer! window.MessagePreloaded = true; $('#migration_msg').addClass('wds-is-disabled'); });   }); });