MediaWiki:Gadget-CollapsibleSidebar.js:修订间差异
跳到导航
跳到搜索
![]() ![]() 无编辑摘要 |
小 (→top:bad link repair, replaced: hmoegirl.com → hmoegirl.info) |
||
第53行: | 第53行: | ||
})); | })); | ||
}; | }; | ||
var logoPic = "https://www.hmoegirl. | var logoPic = "https://www.hmoegirl.info/images/b/bc/Hmoegirl_logo.png"; | ||
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>'); | 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>'); | ||
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>'); | 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>'); |
2022年12月20日 (二) 16:16的最新版本
/**
* 侧边栏隐藏工具
* 本工具参考自维百的同功能小工具——https://zh.wikipedia.org/wiki/MediaWiki:Gadget-CollapsibleSidebar.js
* [[User:AnnAngela]]/[[User:850710247liu]]做了一点改进
* 此处代码已转化为可通过mw检测的格式,源码可在 https://zh.moegirl.org.cn/User:AnnAngela/js/sidebarHidden.js 找到
*/
/* eslint-disable prefer-arrow-callback */
/* eslint-disable prefer-template */
/* eslint-disable comma-dangle */
/* eslint-disable no-var */
/* global $, mw, localforage*/
"use strict";
$(function () {
if (mw.config.get("skin") !== "vector" || mw.config.get("wgCanonicalSpecialPageName") === "Blankpage" || getComputedStyle(document.body).direction !== "ltr") {
return;
}
mw.loader.using(["ext.gadget.localforage"]).then(function () {
var test = localforage.createInstance({
name: "AnnTools",
storeName: "IndexedDB-test",
driver: [localforage.INDEXEDDB]
});
return new Promise(function (res) {
var random = Math.random().toString().substring(2);
var fired = false;
test.setItem("test", random).then(function () {
return test.getItem("test");
}).then(function (result) {
if (!fired) {
fired = true;
res(result === random);
}
});
setTimeout(function () {
if (!fired) {
fired = true;
res(false);
}
}, 137);
});
}).then(function (indexedDBCanRun) {
var store = localforage.createInstance({
name: "AnnTools",
storeName: "SidebarHidden",
driver: indexedDBCanRun ? [localforage.INDEXEDDB] : [localforage.LOCALSTORAGE]
});
store.getItem("hidden").then(function (_hidden) {
var hidden = _hidden;
var saving = false;
var generateImageObject = function (svg) {
return URL.createObjectURL(new Blob([svg], {
type: "image/svg+xml"
}));
};
var logoPic = "https://www.hmoegirl.info/images/b/bc/Hmoegirl_logo.png";
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>');
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>');
var $body = $(document.body);
var $mwNavigation = $("#mw-navigation");
var $mwWikiLogo = $(".mw-wiki-logo");
var $logoLink = $mwWikiLogo.clone(false);
var $logo = $("<img>").attr({
id: "sidebarHidden-logo",
src: logoPic
});
var $arrow = $("<img>").attr({
id: "sidebarHidden-arrow",
src: arrowLeftSvg
});
$logoLink.empty().removeAttr("class").attr("id", "sidebarHidden-logo-link").append($logo);
var hide = function () {
if ($(".toc-custom").length > 0){
document.querySelector(".toc-custom").style.transform="translate(-100%, 0)";
}
if (saving) {
return;
}
hidden = true;
saving = true;
$body.addClass("sidebarHidden");
$arrow.attr("src", arrowRightSvg);
store.setItem("hidden", hidden).then(function () {
saving = false;
});
};
var show = function () {
if ($(".toc-custom").length > 0){
document.querySelector(".toc-custom").style.transform="translate(0, 0)";
}
if (saving) {
return;
}
saving = true;
hidden = false;
$body.removeClass("sidebarHidden");
$arrow.attr("src", arrowLeftSvg);
store.setItem("hidden", hidden).then(function () {
saving = false;
});
};
$mwNavigation.append($arrow).append($logoLink);
if (hidden) {
hide();
}
$arrow.on("click", function () {
(hidden ? show : hide)();
});
});
});
});