MediaWiki:Gadget-CollapsibleSidebar.js:修订间差异

imported>=海豚=
无编辑摘要
top:​bad link repair, replaced: hmoegirl.com → hmoegirl.info
 
(未显示1个用户的10个中间版本)
第1行: 第1行:
(function($, mw) {
/**
$(function() {
* 侧边栏隐藏工具
var sidebarCookieName = 'sidebarHidden';
* 本工具参考自维百的同功能小工具——https://zh.wikipedia.org/wiki/MediaWiki:Gadget-CollapsibleSidebar.js
var commonImgUrl = 'https://upload.wikimedia.org/wikipedia/commons/thumb';
* [[User:AnnAngela]]/[[User:850710247liu]]做了一点改进
var localImgUrl = 'https://zh.wikipedia.org/static/images/mobile/copyright/wikipedia-wordmark-';
* 此处代码已转化为可通过mw检测的格式,源码可在 https://zh.moegirl.org.cn/User:AnnAngela/js/sidebarHidden.js 找到
var imgLogoLang = ['ca', 'cs', 'cy', 'el', 'en', 'et', 'hi', 'hy', 'ja', 'ka', 'la', 'ru', 'szl', 'th', 'uk', 'uz', 'zh'].indexOf(mw.config.get('wgContentLanguage')) > -1 ? mw.config.get('wgContentLanguage') : 'en';
*/
var img = {
/* eslint-disable prefer-arrow-callback */
logo: localImgUrl + imgLogoLang + '.svg',
/* eslint-disable prefer-template */
logo_zh_hans: localImgUrl + 'zh-hans.svg',
/* eslint-disable comma-dangle */
next: commonImgUrl + '/9/95/Icons8_flat_next.svg/15px-Icons8_flat_next.svg.png',
/* eslint-disable no-var */
prev: commonImgUrl + '/b/bd/Icons8_flat_previous.svg/15px-Icons8_flat_previous.svg.png'
/* global $, mw, localforage*/
};
"use strict";
var isMobile = /(Android|iPad|iPhone|Mobile)/i.test(navigator.userAgent);
$(function () {
var cookieExpires = 365;
    if (mw.config.get("skin") !== "vector" || mw.config.get("wgCanonicalSpecialPageName") === "Blankpage" || getComputedStyle(document.body).direction !== "ltr") {
var sidebarHidden = false;
        return;
var sidebarGadgetLoaded = false;
    }
 
    mw.loader.using(["ext.gadget.localforage"]).then(function () {
function hideSidebar() {
        var test = localforage.createInstance({
sidebarHidden = true;
            name: "AnnTools",
$('#sidebarCollapse').attr('src', img.next);
            storeName: "IndexedDB-test",
updatePos();
            driver: [localforage.INDEXEDDB]
$('#content').css('margin-left', '1em');
        });
$('#footer').css('margin-left', '1em');
        return new Promise(function (res) {
$('#mw-panel').hide();
            var random = Math.random().toString().substring(2);
$('#sliderCollapseLogo').show();
            var fired = false;
$.cookie(sidebarCookieName, 'true', {
            test.setItem("test", random).then(function () {
expires: cookieExpires,
                return test.getItem("test");
path: '/'
            }).then(function (result) {
})
                if (!fired) {
}
                    fired = true;
 
                    res(result === random);
function showSidebar() {
                }
sidebarHidden = false;
            });
$('#sidebarCollapse').attr('src', img.prev);
            setTimeout(function () {
updatePos();
                if (!fired) {
$('#content').css('margin-left', '');
                    fired = true;
$('#footer').css('margin-left', '');
                    res(false);
$('#mw-panel').show();
                }
$('#sliderCollapseLogo').hide();
            }, 137);
$.cookie(sidebarCookieName, 'false', {
        });
expires: cookieExpires,
    }).then(function (indexedDBCanRun) {
path: '/'
        var store = localforage.createInstance({
})
            name: "AnnTools",
}
            storeName: "SidebarHidden",
 
            driver: indexedDBCanRun ? [localforage.INDEXEDDB] : [localforage.LOCALSTORAGE]
function updatePosHelper(arr) {
        });
var divList = ['#sidebarCollapse', '#sliderCollapseLogo'];
        store.getItem("hidden").then(function (_hidden) {
for (var i = 0; i < arr.length; i++) {
            var hidden = _hidden;
if (arr[i] === null) continue;
            var saving = false;
var bDiv = divList[i];
            var generateImageObject = function (svg) {
var bSize = arr[i];
                return URL.createObjectURL(new Blob([svg], {
}
                    type: "image/svg+xml"
}
                }));
 
            };
function updatePos() {
            var logoPic = "https://www.hmoegirl.info/images/b/bc/Hmoegirl_logo.png";
var bWidth = 0;
            var arrowRightSvg = generateImageObject('<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"><polygon fill="#2196F3" points="17.1,5 14,8.1 29.9,24 14,39.9 17.1,43 36,24"/></svg>');
if (isMobile) {
            var arrowLeftSvg = generateImageObject('<svg version="1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" enable-background="new 0 0 48 48"><polygon fill="#2196F3" points="30.9,43 34,39.9 18.1,24 34,8.1 30.9,5 12,24"/></svg>');
bWidth = window.outerWidth > 0 ? window.outerWidth : $('body').width
            var $body = $(document.body);
} else {
            var $mwNavigation = $("#mw-navigation");
bWidth = window.innerWidth > 0 ? window.innerWidth : $('body').width
            var $mwWikiLogo = $(".mw-wiki-logo");
}
            var $logoLink = $mwWikiLogo.clone(false);
if (bWidth >= 982) {
            var $logo = $("<img>").attr({
updatePosHelper(sidebarHidden ? ['0.3em', '3em'] : ['10.3em', null])
                id: "sidebarHidden-logo",
} else {
                src: logoPic
updatePosHelper(sidebarHidden ? ['0.3em', '2.5em'] : ['9.3em', null])
            });
}
            var $arrow = $("<img>").attr({
}
                id: "sidebarHidden-arrow",
 
                src: arrowLeftSvg
function sidebarHiddenProc() {
            });
sidebarGadgetLoaded = true;
            $logoLink.empty().removeAttr("class").attr("id", "sidebarHidden-logo-link").append($logo);
 
            var hide = function () {
var sidebarCollapse = $('<img>').attr({
            if ($(".toc-custom").length > 0){
'id': 'sidebarCollapse',
            document.querySelector(".toc-custom").style.transform="translate(-100%, 0)";
'src': img.prev
            }
}).css({
                if (saving) {
'position': 'fixed',
                    return;
'float': 'right',
                }
'z-index': '10',
                hidden = true;
'width': '0.8em',
                saving = true;
'height': '0.8em',
                $body.addClass("sidebarHidden");
'top': '7.5em',
                $arrow.attr("src", arrowRightSvg);
'left': '11.6em',
                store.setItem("hidden", hidden).then(function () {
'cursor': 'pointer',
                    saving = false;
'padding': '0.3em',
                });
'-webkit-border-radius': '50px',
            };
'-moz-border-radius': '50px',
            var show = function () {
'border-radius': '50px',
                        if ($(".toc-custom").length > 0){
'text-align': 'center',
            document.querySelector(".toc-custom").style.transform="translate(0, 0)";
'border': '1px solid #a7d7f9',
                        }
'background': '#fff'
                if (saving) {
});
                    return;
 
                }
var newLink = $('<a>').attr({
                saving = true;
'id': 'newLink',
                hidden = false;
'href': '/wiki',
                $body.removeClass("sidebarHidden");
'title': $('.mw-wiki-logo').attr('title')
                $arrow.attr("src", arrowLeftSvg);
});
                store.setItem("hidden", hidden).then(function () {
 
                    saving = false;
if (mw.config.get('wgNoticeProject') === 'wikipedia') {
                });
$('<img>').attr({
            };
'id': 'sliderCollapseLogo',
            $mwNavigation.append($arrow).append($logoLink);
'src': 'https://zh.wikipedia.org/static/images/mobile/copyright/wikipedia-wordmark-zh.svg'
            if (hidden) {
}).css({
                hide();
'display': 'none',
            }
'position': 'absolute',
            $arrow.on("click", function () {
'top': '3.375em',
                (hidden ? show : hide)();
'cursor': 'pointer',
            });
'float': 'none',
        });
'width': '6em'
    });
}).appendTo(newLink);
});
}
 
sidebarCollapse.appendTo('#mw-navigation');
newLink.appendTo('#mw-navigation');
 
if ($.cookie(sidebarCookieName) === 'true') hideSidebar();
updatePos();
 
$(window).resize(function() {
updatePos()
});
 
$('#sidebarCollapse').mouseover(function() {
$(this).css('background', 'rgb(223, 245, 255)')
}).mouseout(function() {
$(this).css('background', 'white')
}).click(function() {
sidebarHidden ? showSidebar() : hideSidebar()
})
}
 
function sidebarHiddenInit() {
if (mw.config.get('skin') !== 'vector' || $('.mw-special-Blankpage').length !== 0 || $('#mw-sidebar-button').length > 0) return;
if (['ar', 'arc', 'arz', 'bo', 'ckb', 'dv', 'dz', 'glk', 'ks', 'mzn', 'pnb', 'ps', 'sd', 'ug', 'ur', 'yi'].indexOf(mw.config.get('wgContentLanguage')) > -1) return;
if ($('#mw-navigation').length === 0) {
var obs = new MutationObserver(function (mutations, observer) {
if (sidebarGadgetLoaded) return;
for (var i = 0; i < mutations.length; ++i) {
for (var j = 0; j < mutations[i].addedNodes.length; ++j) {
if (mutations[i].addedNodes[j].id === 'mw-navigation') {
sidebarHiddenProc();
break;
}
}
}
});
obs.observe(document.body, {
childList: true
});
return
}
sidebarHiddenProc()
}
sidebarHiddenInit()
})
})(jQuery, mw);