Senior9324 (토론 | 기여) 편집 요약 없음 |
Senior9324 (토론 | 기여) 편집 요약 없음 |
||
67번째 줄: | 67번째 줄: | ||
function nodeListConcat() { | function nodeListConcat() { | ||
var args = Array.prototype.slice.call(arguments, 1); | var args = Array.prototype.slice.call(arguments, 1); | ||
var | var result = Array.prototype.slice.call(args[0], 1); | ||
for (var i = 1; i < args.length; i++) { | for (var i = 1; i < args.length; i++) { | ||
result = result.concat(Array.prototype.slice.call(args[i], 1)); | |||
} | } | ||
return result; | |||
} | } | ||
2015년 11월 27일 (금) 23:55 판
importScript("User:Senior9324/Gadget-ReferenceDrawerDev.js");
importStylesheet("User:Senior9324/Gadget-ReferenceDrawerDev.css");
/*
* written By. LiteHell
* Warning : This script uses localStorage of your browser so BREADCUMB WILL BE DELETED IF YOU CLEAR STORAGE DATA FROM YOUR BROWSER.
*/
if (mw.config.exists("wgIsArticle") && mw.config.exists("wgPageName") && mw.config.exists("wgArticlePath") && mw.config.exists("wgNamespaceNumber")) {
var conf = mw.config.get(["wgIsArticle", "wgPageName", "wgArticlePath", "wgNamespaceNumber"]);
if (conf.wgIsArticle) {
var itemName = "pageBreadcumbs";
function initStorageIfRequired() {
if (localStorage.getItem(itemName) == null)
localStorage.setItem(itemName, "[]");
}
function setStorage(value) {
initStorageIfRequired();
localStorage.setItem(itemName, JSON.stringify(value.slice(-20)));
}
function getStorage() {
initStorageIfRequired();
return JSON.parse(localStorage.getItem(itemName));
}
function makeBreadBar(arr, active) {
var ol = document.createElement("ol");
ol.className = "breadcrumb";
ol.innerHTML = '<li id="cleanBreads"><a href="javascript:(function(){})();" style="color: red;"><span class="glyphicon glyphicon-trash"></span></a></li>';
ol.querySelector('li#cleanBreads > a').addEventListener("click", function() {
if (confirm("진짜로 빵가루를 전부다 청소할까요?")) {
localStorage.setItem(itemName, "[]");
alert('강제 새로고침하면 지워져 있을겁니다. :)');
}
});
for (var i = 0; i < arr.length; i++) {
var now = arr[i];
var li = document.createElement("li");
if (now == active) {
li.className = "active";
li.textContent = now;
} else {
var anchor = document.createElement("a");
anchor.href = conf.wgArticlePath.replace('$1', now);
anchor.title = now;
anchor.textContent = now;
li.appendChild(anchor);
}
ol.appendChild(li);
}
return ol;
}
var articles = getStorage(), discuss = (conf.wgNamespaceNumber % 2) || (conf.wgNamespaceNumber == 2600);
if(!(articles.length == 0) || !discuss) {
if((articles.length == 0 || (articles.length != 0 && articles[articles.length - 1] != conf.wgPageName)) && !discuss) articles.push(conf.wgPageName);
setStorage(articles, conf.wgPageName);
var breadbar = makeBreadBar(articles, conf.wgPageName);
var contentButtons = document.querySelector(".libre_content_tools");
contentButtons.parentNode.insertBefore(breadbar, contentButtons);
}
}
}
function nodeListConcat() {
var args = Array.prototype.slice.call(arguments, 1);
var result = Array.prototype.slice.call(args[0], 1);
for (var i = 1; i < args.length; i++) {
result = result.concat(Array.prototype.slice.call(args[i], 1));
}
return result;
}
if (mw.config.get("wgIsArticle")) {
var parent = document.querySelector("#mw-content-text");
var links = nodeListConcat(
parent.querySelectorAll("p a[title]"),
parent.querySelectorAll("dl a[title]"),
parent.querySelectorAll(".wikitable a[title]"),
parent.querySelectorAll(".mw-headline a[title]"),
parent.querySelectorAll("ul a[title]")
);
for (var i = 0; i < links.length; i++) {
if (links[i].title !== links[i].textContent) {
var sup = document.createElement("sup");
sup.textContent = links[i].title;
sup.style.color = "gray";
links[i].parentNode.insertBefore(sup, links[i].nextElementSibling);
}
}
}