您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds dark mode, search in tasks and other to MENDO.MK
当前为
- // ==UserScript==
- // @name MENDO.MK Enhancement
- // @version 18
- // @namespace mendo-mk-enhancement
- // @description Adds dark mode, search in tasks and other to MENDO.MK
- // @author EntityPlantt
- // @match *://mendo.mk/*
- // @noframes
- // @icon https://mendo.mk/img/favicon.ico
- // @grant none
- // @license CC-BY-ND
- // ==/UserScript==
- console.log("%cMENDO.MK Enhancement%c loaded", "color:magenta;text-decoration:underline", "");
- var loadingSuccess = 0;
- setTimeout(() => {
- if (loadingSuccess == 1) {
- console.log("Loading %csuccessful", "color:#0f0");
- }
- else if (loadingSuccess == 2) {
- console.log("Loading %cwith errors", "color:#ff0");
- }
- else {
- console.log("Loading %cunsuccessful", "color:red");
- }
- }, 1000);
- async function MendoMkEnhancement() {
- try {
- function logFinish(taskName) {
- console.log("%cFinished task:%c " + taskName, "color:#0f0", "");
- }
- console.groupCollapsed("Start log");
- var style = document.createElement("style");
- style.innerHTML = `
- ${ // Dark mode
- localStorage.getItem("mendo-mk-enhancement-theme") == "dark" ? `
- html, img, svg, #cboxOverlay, .copy-io-btn span {
- filter: invert(1) hue-rotate(180deg);
- }
- body, img, svg {
- background: white;
- }
- ::-webkit-scrollbar {
- width: initial;
- }
- ::-webkit-scrollbar-track {
- background: #eee;
- }
- body::-webkit-scrollbar-track {
- background: #111;
- }
- ::-webkit-scrollbar-thumb {
- background: #ddd;
- }
- body::-webkit-scrollbar-thumb {
- background: #222;
- }
- td.solved, td.correct {
- background: #bfb !important;
- }
- td.wrong {
- background: #fbb !important;
- }
- ` : ""}
- #search {
- font-family: consolas;
- }
- #search, #search-submit {
- border: solid 2px black;
- transition: box-shadow .5s;
- }
- #search-submit:hover {
- cursor: pointer;
- }
- #search:focus {
- background: #eee;
- }
- #search-submit:hover, #search:hover {
- background: #ddd;
- }
- .copy-io-btn {
- float: right;
- background: #ddd;
- padding: 5px;
- cursor: pointer;
- border-radius: 5px;
- user-select: none;
- }
- .copy-io-btn:hover {
- background: #e8e8e8;
- }
- #search:active, #search:focus, #search-submit:active, #search-submit:focus {
- box-shadow: 0 0 2.5px 2.5px black;
- }
- `;
- document.head.appendChild(style);
- logFinish("inject style sheet");
- if (document.URL.includes("Training.do") || document.URL.includes("User_Competition.do?id=")) {
- document.querySelectorAll("div.main-content > div:nth-child(3) > div > table > tbody > tr > td:nth-child(2) > a").forEach(e => {
- e.target = "_blank";
- });
- logFinish("make task links open in another window");
- var search = document.createElement("form");
- search.className = "content-search";
- search.action = "#";
- search.innerHTML = `
- <input type=text id=search autocomplete=off>
- <input type=submit id=search-submit value=Search>
- `;
- search.onsubmit = e => {
- e.preventDefault();
- location.hash = "#" + escape(search.querySelector("#search").value);
- hashChange();
- }
- function hashChange() {
- var kw = unescape(location.hash.substr(1));
- search.querySelector("#search").value = kw;
- kw = kw.toLowerCase();
- document.querySelectorAll("body > div.page-container > div.main > div.main-content > div:nth-child(4) > div > table > tbody > tr").forEach(elm => {
- if (!elm.querySelector("td:nth-child(2) > a")) {
- return;
- }
- if (elm.innerText.toLowerCase().includes(kw) || elm.querySelector("td:nth-child(2) > a").href.toLowerCase().includes(kw)) {
- elm.style.display = "";
- }
- else {
- elm.style.display = "none";
- }
- });
- }
- window.onhashcange = hashChange;
- setInterval(hashChange, 500);
- document.querySelector(".main-content").prepend(search);
- logFinish("add task search bar");
- document.querySelector("body > div.page-container > div.main > div.main-content > div:nth-child(3)").innerHTML += `<a href="./Training.do?cid=5">[ ${document.cookie.includes("mkjudge_language=en") ? "Other tasks" : "Други задачи"} ]</a> `;
- document.querySelector("body > div.page-container > div.main > div.main-content > div:last-child").innerHTML =
- document.querySelector("body > div.page-container > div.main > div.main-content > div:nth-child(3)").innerHTML;
- logFinish("add secret tasks");
- }
- if (document.querySelector("body > div.page-container > div.header > div.header-bottom > div")) {
- document.querySelector("body > div.page-container > div.header > div.header-bottom > div").innerHTML += `<ul><li><a style="
- background-image: url(https://evolveyoursuccess.com/wp-content/uploads/2019/12/lightbulb-icon-png-icon-transparent-light-bulb-png.png);
- background-size: 12.5px;
- " href='/algoritmi'>${document.cookie.includes("mkjudge_language=en") ? "II Algorithms" : "ИИ Алгоритми"}</a></li></ul>`;
- document.querySelector("body > div.page-container > div.header > div.header-bottom > div > ul:nth-child(1) > li > a").href = "/";
- document.querySelector("body > div.page-container > div.header > div.header-bottom > div > ul:nth-child(2) > li > a").href = "/Training.do";
- document.querySelector("body > div.page-container > div.header > div.header-bottom > div > ul:nth-child(2) > li > a").className = "";
- }
- logFinish("add ii algorithm button");
- if (document.querySelector("body > div.page-container > div.header > div.header-breadcrumbs > ul > li:last-child > a")) {
- window.name = document.querySelector("body > div.page-container > div.header > div.header-breadcrumbs > ul > li:last-child > a").innerText;
- }
- else if (document.querySelector(".pagetitle")) {
- window.name = document.querySelector(".pagetitle").innerText;
- }
- document.title = (document.querySelector("body > div.page-container > div.header > div.header-breadcrumbs > ul > li:last-child > a")
- ?? document.querySelector(".pagetitle")
- ?? document.querySelector(".pagename")
- ?? {innerText: document.URL.substr(document.URL.indexOf("/", 8))}
- ).innerText + " – МЕНДО";
- logFinish("document title set");
- if (document.URL.includes("Task.do?id=")) {
- document.querySelectorAll("body > div.page-container > div.main > div.main-content > div.column1-unit.taskContentView > table pre").forEach(pre => {
- var text = pre.innerText.substr(pre.innerText.indexOf("\n") + 1);
- var copyIoBtn = document.createElement("span");
- copyIoBtn.innerHTML = "<span>📃</span>";
- copyIoBtn.setAttribute("onclick", `navigator.clipboard.writeText(${JSON.stringify(text)})`);
- copyIoBtn.className = "copy-io-btn";
- pre.parentElement.appendChild(copyIoBtn);
- });
- logFinish("copy io buttons");
- }
- (document.querySelector(".footer") ?? {}).innerHTML += `<p class="credits">MENDO.MK Enhancement <a href="javascript:toggleTheme()">🎨</a></p>`;
- window.toggleTheme = () => {
- localStorage.setItem("mendo-mk-enhancement-theme", localStorage.getItem("mendo-mk-enhancement-theme") == "dark" ? "light" : "dark");
- location.reload();
- };
- logFinish("dark mode button");
- loadingSuccess = 1;
- if (/^https?:\/\/mendo\.mk\/.+\.do/.test(document.URL) && Math.random() < .01) {
- document.querySelector(".sitelogo").style.backgroundImage = "url(https://i1.sndcdn.com/artworks-TWCDacMc5lCrZIPb-2W7mgg-t500x500.jpg)";
- document.querySelector(".sitelogo").style.backgroundSize = "contain";
- document.querySelector(".sitename h1").innerText = "𝐎 𝐁 𝐀 𝐌 𝐈 𝐔 𝐌";
- document.querySelector(".sitename h2").innerText = "𝐋𝐞𝐭 𝐎𝐛𝐚𝐦𝐢𝐮𝐦 𝐛𝐥𝐞𝐬𝐬 𝐲𝐨𝐮";
- (document.querySelector(".footer") || {}).innerHTML = "<p>𝐋𝐞𝐭 𝐎𝐛𝐚𝐦𝐢𝐮𝐦 𝐛𝐥𝐞𝐬𝐬 𝐲𝐨𝐮</p>";
- document.querySelectorAll("img").forEach(elm => {
- elm.src = "https://i1.sndcdn.com/artworks-TWCDacMc5lCrZIPb-2W7mgg-t500x500.jpg";
- elm.width = elm.height ||= 50;
- });
- document.querySelector("link[rel*=icon]").href = "https://i1.sndcdn.com/artworks-TWCDacMc5lCrZIPb-2W7mgg-t500x500.jpg";
- document.querySelector("link[rel*=icon]").removeAttribute("type");
- document.title = "𝐎 𝐁 𝐀 𝐌 𝐈 𝐔 𝐌";
- logFinish("obamium");
- }
- }
- catch (_) {
- console.error(_);
- loadingSuccess = 2;
- }
- console.groupEnd();
- }
- window.MendoMkEnhancement = MendoMkEnhancement;
- MendoMkEnhancement();