User:Dr.Bryan/global.js

// Для скрытия уведомлений window.announcementsIgnore = { option: 'opt-in-all', exceptWikiIds: [ 77236 // CS Wiki ] };

// Избранные вики в глобале window.globalNavButtons = [ // Список {   text: 'Links', isMain: true, shortName: 'w' }, {   text: 'Zendesk', url: 'https://fandom.zendesk.com/hc/ru/requests/new?ticket_form_id=360000931354', isMain: false, whoIsMain: 'w' }, {   text: 'Dev', url: 'https://dev.fandom.com/Special:Random', isMain: false, whoIsMain: 'w' }, {   text: 'Watchlist', url: '/ru/Special:Watchlist', isMain: false, whoIsMain: 'w' }, {   text: 'Recent Changes', url: 'https://drbryan.fandom.com/ru/wiki/Участник:Dr.Bryan/Активность_вики-проектов', isMain: false, whoIsMain: 'w' }, {   text: 'Recent Changes 2', url: 'https://drbryan.fandom.com/ru/wiki/Участник:Dr.Bryan/Активность_вики-проектов_2', isMain: false, whoIsMain: 'w' }, {   text: 'Marvel Watchlist', url: 'https://marvel.fandom.com/wiki/Special:Watchlist', isMain: false, whoIsMain: 'w' }, // Остальные {   text: 'Wikis', isMain: true, shortName: 'w2' }, {    text: 'DS', url: 'https://dr-stone.fandom.com/ru/Special:Random', icon: '', whoIsMain: 'w2' }, {    text: 'Slime', url: 'https://ten-sura.fandom.com/ru/Special:Random', icon: '', whoIsMain: 'w2' }, {    text: 'Паук', url: 'https://kumodesugananika.fandom.com/ru/Special:Random', icon: '', whoIsMain: 'w2' }, {    text: 'Неуязвимый', url: 'https://invincible.fandom.com/ru/Special:Random', whoIsMain: 'w2' }, {    text: 'Kings Avatar', url: 'https://the-kings-avatar.fandom.com/ru/Special:Random', whoIsMain: 'w2' }, {    text: 'Gurren Lagann', url: 'https://gurrenlagann.fandom.com/ru/Special:Random', whoIsMain: 'w2' }, {    text: 'Bakuman.', url: 'https://bakuman.fandom.com/ru/Special:Random', whoIsMain: 'w2' }, {    text: 'Samurai Jack', url: 'https://bakusamuraijackman.fandom.com/ru/Special:Random', whoIsMain: 'w2' }, {    text: 'Sentai', url: 'https://sentai-daishikkaku.fandom.com/ru/Special:Random', whoIsMain: 'w2' }, {    text: 'World Above', url: 'https://world-above.fandom.com/ru/Special:Random', whoIsMain: 'w2' }, {    text: 'Dark Horse', url: 'https://darkhorse.fandom.com/ru/Special:Random', whoIsMain: 'w2' }, {    text: 'Image Comics', url: 'https://imagecomics.fandom.com/ru/Special:Random', whoIsMain: 'w2' }, // Основные {   text: 'CC', url: 'https://community.fandom.com/ru/Special:Random', isMain: false, whoIsMain: false, icon: '' }, {    text: 'Marvel', url: 'https://marvel.fandom.com/ru/Special:Random', isMain: false, whoIsMain: false, icon: '' }, {    text: 'OP', url: 'https://onepiece.fandom.com/ru/Special:Random', isMain: false, whoIsMain: false, icon: '' }, {    text: 'JoJo', url: 'https://jojo.fandom.com/ru/Special:Random', isMain: false, whoIsMain: false, icon: '' }, {    text: 'Edem', url: 'https://edenszero.fandom.com/ru/Special:Random', isMain: false, whoIsMain: false, icon: '' }, {    text: 'SAO', url: 'https://sword-art-online.fandom.com/ru/Special:Random', isMain: false, whoIsMain: false, icon: '' } ];

importArticles({   type: 'script',    articles: [        'u:dev:MediaWiki:AjaxBatchDelete.js',			// Списочное удаление страниц        'u:dev:MediaWiki:Name Sequencer/code.js',		// Создание шаблонного списка страниц (в основном для нумерации)        'u:dev:MediaWiki:QuickDiff/code.js',			// Ajax разница правок        'u:dev:MediaWiki:CodeQuickLinks/code.js',		// Необходимые ссылки        'u:dev:MediaWiki:PurgeButton/code.js',  		// Сброс кэша        'u:dev:MediaWiki:PortableCSSPad/code.js',		// CSS блокнот        'u:dev:MediaWiki:View_Source/code.js',  		// Показать исходный код без редактирования        'u:dev:MediaWiki:MultiUpload.js',  		// Мультизагрузка        'u:dev:MediaWiki:MassCategorization/code.js',	// Массовая (де)категоризация        'u:dev:MediaWiki:MassEdit/code.js',        'u:dev:MediaWiki:PageEditInfo/code.js',        'u:dev:MediaWiki:UserAccountAge/code2.js',        'u:dev:MediaWiki:SyntaxHighlight.js', 'u:dev:MediaWiki:CodeLinksDropdown.js',			// Быстрые ссылки в дропдауне в профиле // 'u:dev:MediaWiki:CatNav/code.js', 'u:dev:MediaWiki:Wikificator.js', 'u:dev:MediaWiki:ThemeToggler.js', 'u:dev:MediaWiki:AnnouncementsIgnore.js',		// Игнорирование уведомлений 'u:dev:MediaWiki:GlobalNavButtons.js',			// Кнопки для глоьальной навигации (значки с вики) // 'u:dev:MediaWiki:AjaxRename/code.js', // 'u:dev:MediaWiki:QuickTitle/code.js', // 'u:dev:MediaWiki:SandboxTab/code.js', // 'u:dev:MediaWiki:MorePageActions/code.js', // 'u:dev:MediaWiki:DisableCode/code.js', 'u:dev:MediaWiki:RandomPageShortcut/code.js', 'u:dev:MediaWiki:ImportJSPage/code.js', 'u:dev:MediaWiki:ImportJS-Plus.js', 'u:nkch:MediaWiki:NkchCSS.js' ] });

/* Замена ссылок для dev:CodeQuickLinks */ window.customCodeQuickLinks= { replaceAllDefaultLinks: true, showIcon: true, linkSet: { siteFiles: [{ name: 'JSPages', href: mw.util.getUrl('Special:JSPages') }, {			name: "ImportJS", href: mw.util.getUrl('MediaWiki:ImportJS') }, {			name: "Common.css", href: mw.util.getUrl('MediaWiki:Common.css') }, {			name: "Common.js", href: mw.util.getUrl('MediaWiki:Common.js') }, {			name: 'FandomDesktop.js', href: mw.util.getUrl('MediaWiki:Fandomdesktop.js') }, {			name: 'FandomDesktop.css', href: mw.util.getUrl('MediaWiki:Fandomdesktop.css') }, {			name: "Edittools", href: mw.util.getUrl('MediaWiki:Edittools') }, {			name: "WikiaNotifications", href: mw.util.getUrl('MediaWiki:Custom-WikiaNotifications') }, {			name: "ProfileTags", href: mw.util.getUrl('MediaWiki:ProfileTags') }, {			name: "--", href: "" }, {			name: "Сокращение img", href: "//siegenax.fandom.com/ru/wiki/Участник:Kopcap94/IP" }],       userFiles: [{ name: "Common.css", href: mw.util.getUrl('Special:MyPage/common.css') }, {			name: "Common.js", href: mw.util.getUrl('Special:MyPage/common.js') }, {			name: "Global.css", href: "//community.fandom.com/wiki/Special:MyPage/global.css" }, {			name: "Global.js", href: "//community.fandom.com/wiki/Special:MyPage/global.js" }, {			name: "--", href: "" }, {			name: "UserActivity", href: "//community.fandom.com/ru/wiki/Служебная:UserActivity" }, {			name: "Функции парсера", href: "//drbryan.fandom.com/ru/wiki/Функции_парсера" }		]	} };

// Добавляет в "Мои инструменты" кнопки для сейфмода (только для рувики / русская версия англ скрипта) // $(function { //    'use strict'; //     const pageName = mw.config.get("wgPageName"); //     mw.hook('dev.placement').add(function(placement) { //        window.dev.placement.loader.util({ //             script: 'DisableCode', //             element: 'tools', //             type: 'prepend', //             content: $('').append( //                $('', { //                     id: 't-dc', //                     text: 'Вырубить всё', //                     href: "/ru/wiki/" + pageName + getLinks[0] //                 }), //                $('', { //                     id: 't-djs', //                     text: 'Вырубить свой JS', //                     href: "/ru/wiki/" + pageName + getLinks[1] //                 }), //                $('', { //                     id: 't-dcss', //                     text: 'Вырубить свой CSS', //                     href: "/ru/wiki/" + pageName + getLinks[2] //                 }) //            ) //         }); //     }); //     function getLinks { // 	    if (window.location.search.length > 0) { // 	    	return [window.location.search + "&safemode=true", window.location.search + "&useuserjs=0", window.location.search + "&useusercss=0"]; // 	    } else { // 	    	return ["?safemode=true", "?useuserjs=0", "?useusercss=0"]; // 	    } //     }

//    importArticle({ //         type: 'script', //         articles: [ //         	'u:dev:MediaWiki:Placement.js', //         	'u:dev:MediaWiki:I18n-js/code.js' //         ] //     }); // });

// =========================== // mw.loader.using(["mediawiki.api", "mediawiki.util"]).then( //    function  { //         const api = new mw.Api;

//        mw.hook("dev.wds").add( //             function (wds) { //                 var currentTheme = mw.user.options.get("theme");

//                const themeTogglerWrapper = document.createElement("div");

//                themeTogglerWrapper.classList.add("nkch-theme-toggler__wrapper");

//                mw.util.addCSS(".nkch-theme-toggler__wrapper { background: var(--theme-body-background-color); border: 1px solid var(--theme-body-text-color); border-radius: 15px; display: flex; height: 30px; justify-content: center; margin-right: 6px; position: relative; }");

//                const themeToggler = document.createElement("div");

//                themeToggler.classList.add("nkch-theme-toggler");

//                mw.util.addCSS(".nkch-theme-toggler { border-radius: 15px; display: flex; overflow: hidden; position: relative; z-index: 2; }");

//                const themeTogglerButton__dark = document.createElement("button"); //                themeTogglerButton__dark.classList.add("nkch-theme-toggler__button", "nkch-theme-toggler__button-dark");

//                const themeTogglerButtonIcon__dark = document.createElement("div"); //                themeTogglerButtonIcon__dark.classList.add("nkch-theme-toggler__button-icon", "nkch-theme-toggler__button-icon-dark");

//                mw.util.addCSS(".nkch-theme-toggler__button-dark { animation: anim-theme-toggler-slide-in--dark .5s ease; }"); //                mw.util.addCSS("@keyframes anim-theme-toggler-slide-in--dark { 0% { opacity: 0; transform: translateY(20px); } 60% { transform: translateY(-5px); } 100% { opacity: 1;  transform: translateY(0); } }");

//                mw.util.addCSS(".nkch-theme-toggler__button-icon-dark { margin-left: -2px; }");

//                themeTogglerButtonIcon__dark.appendChild(wds.icon("moon-small"));

//                const themeTogglerButton__default = document.createElement("button"); //                themeTogglerButton__default.classList.add("nkch-theme-toggler__button", "nkch-theme-toggler__button-default");

//                mw.util.addCSS(".nkch-theme-toggler__button-default { animation: anim-theme-toggler-slide-in--default .5s ease; }"); //                mw.util.addCSS("@keyframes anim-theme-toggler-slide-in--default { 0% { opacity: 0; transform: translateY(20px); } 65% { transform: translateY(-5px); } 100% { opacity: 1;  transform: translateY(0); } }");

//                const themeTogglerButtonIcon__default = document.createElement("div"); //                themeTogglerButtonIcon__default.classList.add("nkch-theme-toggler__button-icon", "nkch-theme-toggler__button-icon-default");

//                themeTogglerButtonIcon__default.appendChild(wds.icon("radio-empty-small"));

//                const themeTogglerButton__light = document.createElement("button"); //                themeTogglerButton__light.classList.add("nkch-theme-toggler__button", "nkch-theme-toggler__button-light");

//                const themeTogglerButtonIcon__light = document.createElement("div"); //                themeTogglerButtonIcon__light.classList.add("nkch-theme-toggler__button-icon", "nkch-theme-toggler__button-icon-light");

//                mw.util.addCSS(".nkch-theme-toggler__button-light { animation: anim-theme-toggler-slide-in--light .5s ease; }"); //                mw.util.addCSS("@keyframes anim-theme-toggler-slide-in--light { 0% { opacity: 0; transform: translateY(20px); } 70% { transform: translateY(-5px); } 100% { opacity: 1;  transform: translateY(0); } }");

//                mw.util.addCSS(".nkch-theme-toggler__button-icon-light { margin-right: -2px; }");

//                themeTogglerButtonIcon__light.appendChild(wds.icon("sun-small"));

//                switch (currentTheme) { //                    case "light": //                        themeTogglerButton__light.classList.add("is-active"); //                        break; //                    case "dark": //                        themeTogglerButton__dark.classList.add("is-active"); //                        break; //                    case "wiki": //                        themeTogglerButton__default.classList.add("is-active"); //                        break; //                }

//                function switchButton(button) { //                    document.querySelectorAll(".nkch-theme-toggler > .nkch-theme-toggler__button").forEach( //                         function (e) { //                             e.classList.remove("is-active"); //                         } //                     );

//                    button.classList.add("is-active"); //                }

//                function changeTheme(theme) { //                    if (theme === "light" && document.body.classList.contains("theme-fandomdesktop-dark")) { //                        document.body.classList.remove("theme-fandomdesktop-dark"); //                        document.body.classList.add("theme-fandomdesktop-light"); //                    } else if (theme === "dark" && document.body.classList.contains("theme-fandomdesktop-light")) { //                        document.body.classList.remove("theme-fandomdesktop-light"); //                        document.body.classList.add("theme-fandomdesktop-dark"); //                    }

//                    if (theme !== "wiki" && (theme === "light" || theme === "dark")) { //                        $.ajax({ //                             method: "GET", //                             url: mw.util.wikiScript("wikia"), //                             data: { //                                 controller: "ThemeApi", //                                 method: "themeVariables", //                                 variant: theme //                             } //                         }).done( //                             function (data) { //                                 mw.util.addCSS(data);

//                                api.postWithToken('csrf', { //                                     action: "options", //                                     optionname: "theme", //                                     optionvalue: theme //                                 }); //                            } //                         ); //                     } else { //                         api.postWithToken('csrf', { //                            action: "options", //                            optionname: "theme", //                            optionvalue: theme //                        }); //                     } //                 }

//                themeTogglerButton__dark.addEventListener("click", function  { //                     switchButton(themeTogglerButton__dark); //                     changeTheme("dark"); //                 });

//                themeTogglerButton__default.addEventListener("click", function  { //                     switchButton(themeTogglerButton__default); //                     changeTheme("wiki"); //                 });

//                themeTogglerButton__light.addEventListener("click", function  { //                     switchButton(themeTogglerButton__light); //                     changeTheme("light"); //                 });

//                const themeTogglerPointerWrapper = document.createElement("div"); //                themeTogglerPointerWrapper.classList.add("nkch-theme-toggler__pointer-wrapper");

//                if (themeTogglerButton__dark.classList.contains("is-active")) { //                    themeTogglerPointerWrapper.style.marginLeft = "-61px"; //                }

//                if (themeTogglerButton__light.classList.contains("is-active")) { //                    themeTogglerPointerWrapper.style.marginRight = "-61px"; //                }

//                mw.util.addCSS(".nkch-theme-toggler__pointer-wrapper { align-items: center; animation: anim-theme-toggler-jump-in .5s ease; display: flex; height: 28px; justify-content: center; position: absolute; top: 0; transition: .3s; width: 30px; z-index: 1; will-change: transform, z-index ;}"); //                mw.util.addCSS("@keyframes anim-theme-toggler-jump-in { 0% { transform: translateY(0); z-index: -1; } 40% { transform: translateY(-30px); z-index: -1; } 50% { transform: translateY(-30px); z-index: 1; } 90% { transform: translateY(2px); z-index: 1; } 100% { transform: translateY(0); z-index: 1; } }");

//                const themeTogglerPointer = document.createElement("div"); //                themeTogglerPointer.classList.add("nkch-theme-toggler__pointer");

//                mw.util.addCSS(".nkch-theme-toggler__pointer { background: var(--theme-body-text-color); border-radius: 15px; height: 26px; margin: 1px; width: 26px; }");

//                mw.util.addCSS(".nkch-theme-toggler__button { align-items: center; background: none; border: none; cursor: pointer; display: flex; height: 28px; justify-content: center; width: 30px; z-index: 2; }"); //                mw.util.addCSS(".nkch-theme-toggler__button-icon { color: currentColor; height: 18px; width: 18px; }"); //                mw.util.addCSS(".nkch-theme-toggler__button-icon .wds-icon-small { fill: var(--theme-body-text-color); transition: .5s; }"); //                mw.util.addCSS(".nkch-theme-toggler__button.is-active .wds-icon-small { fill: var(--theme-body-background-color); transition: .7s; }");

//                function checkIfActive { //                    if (themeTogglerButton__default.classList.contains("is-active")) { //                        themeTogglerPointerWrapper.style.marginLeft = null; //                        themeTogglerPointerWrapper.style.marginRight = null; //                    } else if (themeTogglerButton__dark.classList.contains("is-active")) { //                        themeTogglerPointerWrapper.style.marginLeft = "-61px"; //                        themeTogglerPointerWrapper.style.marginRight = null; //                    } else if (themeTogglerButton__light.classList.contains("is-active")) { //                        themeTogglerPointerWrapper.style.marginLeft = null; //                        themeTogglerPointerWrapper.style.marginRight = "-61px"; //                    } //                 }

//                setInterval(checkIfActive, 100);

//                document.querySelector(".page-counter").after(themeTogglerWrapper);

//                themeTogglerWrapper.appendChild(themeToggler);

//                themeToggler.appendChild(themeTogglerButton__dark); //                themeTogglerButton__dark.appendChild(themeTogglerButtonIcon__dark); //                themeToggler.appendChild(themeTogglerButton__default); //                themeTogglerButton__default.appendChild(themeTogglerButtonIcon__default); //                themeToggler.appendChild(themeTogglerButton__light); //                themeTogglerButton__light.appendChild(themeTogglerButtonIcon__light);

//                themeTogglerWrapper.appendChild(themeTogglerPointerWrapper); //                themeTogglerPointerWrapper.appendChild(themeTogglerPointer); //            } //         )

//        importArticle({ //             type: "script", //             article: "u:dev:MediaWiki:WDSIcons/code.js" //         }); //    } // );

// Сворачивание фильтра в Свежих файлах // mw.loader.using("mediawiki.cookie").then( //    function  { //         var isHidden = JSON.parse(mw.cookie.get("image-filter-is-hidden", "nkch-", false));

//        mw.hook("dev.wds").add( //             function (wds) { //                 const filterLayout = document.querySelector(".oo-ui-panelLayout");

//                const filterFieldsetLayoutGroup = document.querySelector(".oo-ui-fieldsetLayout-group");

//                mw.util.addCSS(".oo-ui-fieldsetLayout-group.is-hidden { display: none }");

//                const switcher = document.createElement("button");

//                switcher.classList.add("wds-button", "wds-is-text");

//                Object.assign(switcher.style, { //                     position: "absolute", //                     right: 0, //                     zIndex: 1 //                 });

//                switcher.appendChild(wds.icon("menu-control"));

//                const switcherIcon = switcher.querySelector("svg"); //                switcherIcon.style.transition = ".3s";

//                switch (isHidden) { //                    case true: //                        switcherIcon.style.transform = "rotate(0deg)"; //                        filterFieldsetLayoutGroup.classList.add("is-hidden"); //                        break; //                    case false: //                        switcherIcon.style.transform = "rotate(180deg)"; //                        filterFieldsetLayoutGroup.classList.remove("is-hidden"); //                        break; //                };

//                switcher.addEventListener("click", function  { //                     filterFieldsetLayoutGroup.classList.toggle("is-hidden"); //                     isHidden = !isHidden;

//                    mw.cookie.set("image-filter-is-hidden", isHidden.toString, { //                         prefix: "nkch-", //                         expires: 31557600000, //                     });

//                    console.log(isHidden)

//                    switch (isHidden) { //                        case true: //                            switcherIcon.style.transform = "rotate(0deg)"; //                            break; //                        case false: //                            switcherIcon.style.transform = "rotate(180deg)"; //                            break; //                    }; //                 });

//                filterLayout.prepend(switcher); //            } //         );

//        importArticle({ //             type: "script", //             article: "u:dev:MediaWiki:WDSIcons/code.js" //         }); //    } // );

// "Используется в:" if (mw.config.get("wgCanonicalSpecialPageName") === "Newimages") { mw.loader.using(["mediawiki.api", "mediawiki.util"]).then(       function  {            const api = new mw.Api;

const files = document.querySelectorAll(".wikia-gallery-item .lightbox"); const fileCaptions = document.querySelectorAll(".wikia-gallery-item .lightbox-caption");

var fileNames = [];

for (var f = 0; i < usage.length; i++) { fileNames.push(usage[f].href.split("/wiki/")[1]); }

for (var i = 0; i < fileCaptions.length; i++) { api.get({                   action: "query",                    titles: decodeURI(fileNames[i]),                    prop: "fileusage",                    format: "json"                }).done(                    function (data) {                        var fileUsage = document.createElement("div");                        var usage = data.query.pagesObject.keys(data.query.pages)[0].fileusage;

if (typeof usage !== "undefined") { var usageText = document.createElement("span"); usageText.innerHTML = "Используется в: ";

usageText.style.fontSize = "14px";

for (var p = 0; i < usage.length; i++) { var usageLinkWrapper = document.createElement("span");

usageLinkWrapper.classList.add("file-used-in");

mw.util.addCSS(".file-used-in:not(:first-child):before { content: ', ' }");

var usageLink = document.createElement("a");

usageLink.href = mw.util.getUrl(usage[p].title); usageLink.innerHTML = usage[p].title;

usageText.appendChild(usageLinkWrapper);

usageLinkWrapper.appendChild(usageLink); }

fileUsage.appendChild(usageText);

fileCaptions[i].after(fileUsage); }                   }                );            }        }    ); }