User:Fumple/common.js: Difference between revisions
From Inkipedia, the Splatoon wiki
m (Temporarly disabled code) |
m (Added my tabs) |
||
Line 52: | Line 52: | ||
$(".-context-menu-media-load-tab").click(function (e) { window.open("/wiki/" + e.target.previousSibling.previousSibling.innerHTML) }) | $(".-context-menu-media-load-tab").click(function (e) { window.open("/wiki/" + e.target.previousSibling.previousSibling.innerHTML) }) | ||
//Page-specific script | //Page-specific script | ||
//Define vars | //Define vars | ||
Line 66: | Line 65: | ||
pageTypes.userSkinCSS = 'User:' + mw.config.get("wgUserName") + '/' + mwSkin + '.css/' + mw.config.get("wgPageName"); | pageTypes.userSkinCSS = 'User:' + mw.config.get("wgUserName") + '/' + mwSkin + '.css/' + mw.config.get("wgPageName"); | ||
function | function userCheckPage(type, exist) { | ||
if (exist == null) { | if (exist == null) { | ||
new mw.Api().get({ | new mw.Api().get({ | ||
Line 73: | Line 72: | ||
prop: "" | prop: "" | ||
}).done(function (data) { | }).done(function (data) { | ||
userCheckPage(type, true) | |||
}).fail(function (data) { | }).fail(function (data) { | ||
userCheckPage(type, false) | |||
}); | }); | ||
} | } | ||
else if (exist) { | else if (exist) { | ||
$("#p-namespaces ul").append('<li><span><a href="/w/index.php?title=' + pageEnc(type) + '">' + getTypeByValue(type) + '</a></span></li>'); | $("#p-namespaces ul").append('<li><span><a href="/w/index.php?title=' + pageEnc(type) + '">' + getTypeByValue(type) + '</a></span></li>'); | ||
userCheckNextPage(type) | |||
} | } | ||
else if (!exist) { | else if (!exist) { | ||
$("#p-namespaces ul").append('<li class="new"><span><a href="/w/index.php?title=' + pageEnc(type) + '&action=edit&redlink=1">' + getTypeByValue(type) + '</a></span></li>'); | $("#p-namespaces ul").append('<li class="new"><span><a href="/w/index.php?title=' + pageEnc(type) + '&action=edit&redlink=1">' + getTypeByValue(type) + '</a></span></li>'); | ||
userCheckNextPage(type) | |||
} | } | ||
} | } | ||
function | function userCheckNextPage(type) { | ||
switch (type) { | switch (type) { | ||
case pageTypes.globalJS: | case pageTypes.globalJS: | ||
userCheckPage(pageTypes.globalCSS); | |||
break; | break; | ||
case pageTypes.globalCSS: | case pageTypes.globalCSS: | ||
userCheckPage(pageTypes.skinJS); | |||
break; | break; | ||
case pageTypes.skinJS: | case pageTypes.skinJS: | ||
userCheckPage(pageTypes.skinCSS); | |||
break; | break; | ||
case pageTypes.skinCSS: | case pageTypes.skinCSS: | ||
if (mw.config.get("wgUserName") != null) { | if (mw.config.get("wgUserName") != null) { | ||
userCheckPage(pageTypes.userJS); | |||
} | } | ||
break; | break; | ||
case pageTypes.userJS: | case pageTypes.userJS: | ||
if (mw.config.get("wgUserName") != null) { | if (mw.config.get("wgUserName") != null) { | ||
userCheckPage(pageTypes.userCSS); | |||
} | } | ||
break; | break; | ||
case pageTypes.userCSS: | case pageTypes.userCSS: | ||
if (mw.config.get("wgUserName") != null) { | if (mw.config.get("wgUserName") != null) { | ||
userCheckPage(pageTypes.userSkinJS); | |||
} | } | ||
break; | break; | ||
case pageTypes.userSkinJS: | case pageTypes.userSkinJS: | ||
if (mw.config.get("wgUserName") != null) { | if (mw.config.get("wgUserName") != null) { | ||
userCheckPage(pageTypes.userSkinCSS); | |||
} | } | ||
break; | break; | ||
Line 138: | Line 131: | ||
//Check page specific files | //Check page specific files | ||
onApiReady(function () { | onApiReady(function () { | ||
userCheckPage(pageTypes.globalJS); | |||
}); | }); | ||
Revision as of 15:23, 23 August 2019
function resolveID(id) { var replaced = id.replaceAll(".26", "&"); replaced = replaced.replaceAll(".21", "!"); replaced = replaced.replaceAll(".28", "("); replaced = replaced.replaceAll(".29", ")"); replaced = replaced.replaceAll(".CF.89", "ω"); replaced = replaced.replaceAll(".7E", "~"); replaced = replaced.replaceAll(".27", "'"); replaced = replaced.replaceAll(".40", "@"); replaced = replaced.replaceAll(".23", "#"); replaced = replaced.replaceAll(".24", "$"); replaced = replaced.replaceAll(".25", "%"); return replaced; } String.prototype.replaceAll = function (search, replacement) { var target = this; return target.split(search).join(replacement); }; //Had to do a one line string due to MediaWiki JS restrictions var contextmenu = "<div class='-context-menu-media-load -context-menu' style='display:none;position: absolute;' name='-context-menu'><div class='-context-menu-text -context-menu-media-load-file'>File not set</div><div class='-context-menu-item -context-menu-media-load-open noselect'>Open file page</div><div class='-context-menu-item -context-menu-media-load-tab noselect'>Open file page in new tab</div></div>"; //I know I could avoid some lines but I don't really want to change how it is var el = document.createElement("div"); el.innerHTML = contextmenu; document.body.append(el); $(".load-media").contextmenu(function (e) { if (e.target.tagName != "DIV") { return; } $(".-context-menu").css("display", "block") .css("top", e.pageY) .css("left", e.pageX); if (e.target.id == "") { $(".-context-menu-media-load-file").text(resolveID(e.target.parentElement.id.split("|")[0])); } else { $(".-context-menu-media-load-file").text(resolveID(e.target.id.split("|")[0])); } e.preventDefault(); return false; }); $(document).click(function (e) { var t = $(e.target); if (t.hasClass("-context-menu-text") || t.hasClass("-context-menu-item")) { return; } $(".-context-menu").css("display", "none") }) $(document).contextmenu(function (e) { $(".-context-menu").css("display", "none") }) $(".-context-menu-media-load-open").click(function (e) { window.location = "/wiki/" + e.target.previousSibling.innerHTML }) $(".-context-menu-media-load-tab").click(function (e) { window.open("/wiki/" + e.target.previousSibling.previousSibling.innerHTML) }) //Page-specific script //Define vars var mwSkin = mw.config.get("skin") var pageTypes = {}; pageTypes.globalJS = 'MediaWiki:Common.js/' + mw.config.get("wgPageName"); pageTypes.globalCSS = 'MediaWiki:Common.css/' + mw.config.get("wgPageName"); pageTypes.skinJS = 'MediaWiki:' + mwSkin + '.js/' + mw.config.get("wgPageName"); pageTypes.skinCSS = 'MediaWiki:' + mwSkin + '.css/' + mw.config.get("wgPageName"); pageTypes.userJS = 'User:' + mw.config.get("wgUserName") + '/common.js/' + mw.config.get("wgPageName"); pageTypes.userCSS = 'User:' + mw.config.get("wgUserName") + '/common.css/' + mw.config.get("wgPageName"); pageTypes.userSkinJS = 'User:' + mw.config.get("wgUserName") + '/' + mwSkin + '.js/' + mw.config.get("wgPageName"); pageTypes.userSkinCSS = 'User:' + mw.config.get("wgUserName") + '/' + mwSkin + '.css/' + mw.config.get("wgPageName"); function userCheckPage(type, exist) { if (exist == null) { new mw.Api().get({ action: 'parse', page: type, prop: "" }).done(function (data) { userCheckPage(type, true) }).fail(function (data) { userCheckPage(type, false) }); } else if (exist) { $("#p-namespaces ul").append('<li><span><a href="/w/index.php?title=' + pageEnc(type) + '">' + getTypeByValue(type) + '</a></span></li>'); userCheckNextPage(type) } else if (!exist) { $("#p-namespaces ul").append('<li class="new"><span><a href="/w/index.php?title=' + pageEnc(type) + '&action=edit&redlink=1">' + getTypeByValue(type) + '</a></span></li>'); userCheckNextPage(type) } } function userCheckNextPage(type) { switch (type) { case pageTypes.globalJS: userCheckPage(pageTypes.globalCSS); break; case pageTypes.globalCSS: userCheckPage(pageTypes.skinJS); break; case pageTypes.skinJS: userCheckPage(pageTypes.skinCSS); break; case pageTypes.skinCSS: if (mw.config.get("wgUserName") != null) { userCheckPage(pageTypes.userJS); } break; case pageTypes.userJS: if (mw.config.get("wgUserName") != null) { userCheckPage(pageTypes.userCSS); } break; case pageTypes.userCSS: if (mw.config.get("wgUserName") != null) { userCheckPage(pageTypes.userSkinJS); } break; case pageTypes.userSkinJS: if (mw.config.get("wgUserName") != null) { userCheckPage(pageTypes.userSkinCSS); } break; } } function pageEnc(string) { return encodeURIComponent(string); } function getTypeByValue(value) { return Object.keys(pageTypes).find(function (key) { return pageTypes[key] === value }); } //Check page specific files onApiReady(function () { userCheckPage(pageTypes.globalJS); }); function onApiReady(callback) { if (mw.Api != null) { setTimeout(callback, 0); } else { setTimeout(onApiReady.bind(null, callback), 0); } } /* Safety checklist: - XSS - Done - Only authorized people - Done */