您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
A better leonard-de-vinci portal
当前为
// ==UserScript== // @name Better-Devinci // @namespace Violentmonkey Scripts // @match https://www.leonard-de-vinci.net/* // @match https://learning.devinci.fr/course/* // @match https://learning.devinci.fr/mod/* // @license GNU GPLv3 // @version 2.0 // @author loliprane // @description A better leonard-de-vinci portal // ==/UserScript== //localstorage setup let CheckLocalStorage= function(Item,Base_value){ if(localStorage.getItem(Item)==null){ localStorage.setItem(Item,Base_value) } } let IsLocalStorageTrue= function(Item){ return localStorage.getItem(Item)=='True' } CheckLocalStorage("Version_Better_Devinci","1.1") CheckLocalStorage("Hide_Slider","False") CheckLocalStorage("Number_Message_read",0) CheckLocalStorage("Footer&Scrollbar","True") CheckLocalStorage("Notification","True") CheckLocalStorage("SideBar_Diminish","False") CheckLocalStorage("Hide_news","True") CheckLocalStorage("Better_Marks","True") CheckLocalStorage("Finished_Sport_Inscription","False") //end of localstorage setup //every page setup let StudentLanguageFR let Page_Setup_Portal= function(){ StudentLanguageFR = document.querySelector('img[src*="/images/flags/"]').currentSrc.includes("fr.png") if(IsLocalStorageTrue("Footer&Scrollbar")){ document.querySelector('html').style.height="0px" //remove the scrollbar when not necessary document.querySelector('#footer').remove() // remove the unecessary footer } if (IsLocalStorageTrue("Notification")) { if(document.querySelector('.UD_messages_new'+'.badge').innerText==localStorage.getItem("Number_Message_read")){ document.querySelector('.UD_messages_new'+'.badge').remove() document.querySelector(".UD_messages_new"+".strong").innerText=0 } else { let MessageRead_Button = document.createElement("button"); MessageRead_Button.id = "Message_Read_Button"; MessageRead_Button.textContent = "Show Messages as read"; MessageRead_Button.style.color= 'red' document.querySelector(".nav-messages-header").append(MessageRead_Button) document.querySelector('.UD_messages_new'+'.badge').innerText-=localStorage.getItem("Number_Message_read") document.querySelector(".UD_messages_new"+".strong").innerText-=localStorage.getItem("Number_Message_read") MessageRead_Button.addEventListener("click", function() { localStorage.setItem("Number_Message_read",parseInt(localStorage.getItem("Number_Message_read"))+parseInt(document.querySelector('.UD_messages_new').innerText)) document.querySelector('.UD_messages_new').remove() document.querySelector(".UD_messages_new"+".strong").innerText=0 MessageRead_Button.remove() }) } } const BetterDevinci_link = document.createElement("a"); BetterDevinci_link.id = "BetterDevinci_link" BetterDevinci_link.setAttribute("href", "/?Better-Devinci"); BetterDevinci_link.textContent = "+"; BetterDevinci_link.style.color = 'red' BetterDevinci_link.style.fontWeight='bold' BetterDevinci_link.style.fontSize='20px' document.querySelector(".navbar-inner-title").append(BetterDevinci_link) if(document.querySelector(".social-sidebar"+".sidebar-full")!=null && IsLocalStorageTrue("SideBar_Diminish")){ document.querySelector(".switch-sidebar-icon"+".icon-align-justify").click() } } //end of every page setup let Sports= function(){ if(document.querySelector(".text-center"+".alert"+".alert-success") !=null){ localStorage.setItem("Finished_Sport_Inscription","True") } } let BetterDevinci_Page = function(){ document.querySelector("#main").querySelectorAll(".container-fluid")[1].remove() let Rewrite_Container = document.createElement("div"); Rewrite_Container.id = "OwO"; Rewrite_Container.style.margin='10px' Rewrite_Container.style.paddingLeft='10px' document.querySelector("#main").append(Rewrite_Container) const TextPresentation=document.createElement("div"); TextPresentation.textContent = "This page is still in beta, it lists everything Better-Devinci does and you can activate or deactivate it"; TextPresentation.style.color= 'red' TextPresentation.style.marginBottom='20px' Rewrite_Container.append(TextPresentation) const data = [ { name: 'Footer&Scrollbar', description: 'Removes the footer. The scrollbar when useful' }, { name: 'Notification', description: "Adds a button to mark all messages as read since it's bugged..."}, { name: 'Hide_news', description: 'Adds the ability to hide & unhide the news panel with a button' }, { name: 'Better_Marks', description: 'Adds the ability to diminish by semester and module the marks' }, { name: 'SideBar_Diminish', description: 'Diminish the sidebar when useful to have more place on the page' }, ] const table = document.createElement('table'); const headerRow = document.createElement('tr'); const nameHeaderCell = document.createElement('th'); nameHeaderCell.textContent = 'Name'; nameHeaderCell.style.height='50px' nameHeaderCell.style.width='200px' headerRow.appendChild(nameHeaderCell); const descriptionHeaderCell = document.createElement('th'); descriptionHeaderCell.textContent = 'Description'; headerRow.appendChild(descriptionHeaderCell); const checkboxHeaderCell = document.createElement('th'); checkboxHeaderCell.textContent = 'Checkbox'; headerRow.appendChild(checkboxHeaderCell); table.appendChild(headerRow); data.forEach(item => { const row = document.createElement('tr'); const nameCell = document.createElement('td'); nameCell.textContent = item.name; nameCell.style.textAlign = 'center'; //nameCell.style.paddingRight='70px' row.appendChild(nameCell); const descriptionCell = document.createElement('td'); descriptionCell.textContent = item.description; descriptionCell.style.textAlign = 'center'; row.appendChild(descriptionCell); const checkboxCell = document.createElement('td'); checkboxCell.style.display = 'flex' checkboxCell.style.justifyContent = 'center'; const checkbox = document.createElement('input'); checkbox.type = 'checkbox'; checkboxCell.appendChild(checkbox); row.appendChild(checkboxCell); if(localStorage.getItem(item.name) === 'True') { checkbox.checked = true; } checkbox.addEventListener('change', function() { if (localStorage.getItem(item.name) === 'True') { localStorage.setItem(item.name,"False") } else{ localStorage.setItem(item.name,"True") } }); table.appendChild(row); }); Rewrite_Container.append(table); } let Marks= function() { if(IsLocalStorageTrue("Better_Marks")){ const Semestre = document.querySelectorAll(".dd-item"); const SemestreFiltered = Array.from(Semestre).filter(element => { return element.classList.contains("dd-item") && element.classList.length === 1; }); SemestreFiltered.forEach((Parent) =>{ let Pullright_class=Parent.children[0].children[0] Pullright_class.style.fontSize='20px' Pullright_class.style.color='red' Pullright_class.innerText= "-" Pullright_class.style.fontWeight='bold' Pullright_class.style.marginRight='3px' Parent.children[0].addEventListener("click", function() { if(Pullright_class.innerText== "-"){ Pullright_class.innerText= "+" Pullright_class.style.marginRight='0px' } else{ Pullright_class.innerText= "-" Pullright_class.style.marginRight='3px' } Array.from(Parent.children).forEach((Child) => { if(Child.classList.value.includes('dd-list hide')){ Child.classList.value = 'dd-list' } else if (Child.classList.value=='dd-list'){ Child.classList.value = 'dd-list hide' } }) }) }) const Module = document.querySelectorAll(".dd-unite-student"); Module.forEach((Parent) =>{ let span = document.createElement("span"); span.className = "UwU"; span.textContent = "ㅤㅤㅤㅤ-"; span.style.fontSize='20px' span.style.color='purple' span.style.fontWeight='bold' span.style.paddingRight='3px' Parent.children[0].querySelector(".pull-right").appendChild(span) Parent.children[0].addEventListener("click", function() { let Span_Selector=Parent.children[0].querySelector(".UwU") if(Span_Selector.innerText== "ㅤㅤㅤㅤ-"){ Span_Selector.innerText= "ㅤㅤㅤㅤ+" Span_Selector.style.paddingRight='0px' } else{ Span_Selector.innerText= "ㅤㅤㅤㅤ-" Span_Selector.style.paddingRight='3px' } Array.from(Parent.children).forEach((Child) => { if(Child.classList.value.includes('dd-list hide')){ Child.classList.value = 'dd-list' } else if (Child.classList.value=='dd-list'){ Child.classList.value = 'dd-list hide' } }) }) }) } } let Message= function(){ const MessageContainer = document.querySelector("#main").children[2] if(MessageContainer.children.length==0){ if(StudentLanguageFR){ MessageContainer.innerHTML += "<div>Toujours pas réparé... (Regardez vos mail pour les infos ici)</div>" } else{ MessageContainer.innerHTML += "<div>They still didn't fix this... (Check your mail for info here)</div>" } } } let MainPage= function(){ if(IsLocalStorageTrue("Hide_news")){ const Body = document.querySelector(".body") let SliderButton = document.createElement("button"); SliderButton.id = "Slider_Button"; SliderButton.textContent = "Hide News"; Body.parentElement.parentElement.prepend(SliderButton); let SliderContainer=Body.parentElement if(localStorage.getItem("Hide_Slider")=="True"){ SliderButton.innerHTML="Show News" SliderContainer.className+=' hide' } SliderButton.addEventListener("click", function() { if(localStorage.getItem("Hide_Slider")=="False"){ SliderButton.innerHTML="Show News" SliderContainer.className+=' hide' localStorage.setItem("Hide_Slider","True") } else{ SliderButton.innerHTML="Hide News" SliderContainer.className=SliderContainer.className.replace(" hide","") localStorage.setItem("Hide_Slider","False") } }) } if(document.querySelector(".social-box"+".social-blue").childNodes[1].innerText == "Réinscription"){ if(document.querySelector(".social-box"+".social-blue").childNodes[3].innerText.includes("Vous êtes maintenant réinscrit(e)")){ document.querySelector(".social-box"+".social-blue").className+=' hide' } } if(document.querySelector(".alert"+".alert-info").childNodes[1].innerText == 'Inscription Sports 2023-2024'){ if(IsLocalStorageTrue("Finished_Sport_Inscription")){ document.querySelector(".alert"+".alert-info").className+=' hide' } } } let CheckPage= function(){ if(location.href.includes("www.leonard-de-vinci.net/")){ Page_Setup_Portal() if(location.href == "https://www.leonard-de-vinci.net/"){ MainPage() } else if(location.href == "https://www.leonard-de-vinci.net/?Better-Devinci"){ BetterDevinci_Page() } else if(location.href == "https://www.leonard-de-vinci.net/?my=marks"){ Marks() } else if(location.href.includes("https://www.leonard-de-vinci.net/?my=msg")){ Message() } else if(location.href == "https://www.leonard-de-vinci.net/student/sport/"){ Sports() } } else{ if(location.href.includes("https://learning.devinci.fr/course/view.php?id=")||location.href.includes("https://learning.devinci.fr/mod")){ Courses() } } } window.addEventListener('load', function() { CheckPage() }); let Courses= function(){ let HideLockedButton = document.createElement("button"); HideLockedButton.id = "Slider_Button"; HideLockedButton.textContent = "Hide Locked"; document.querySelector("#theme_boost-drawers-courseindex").childNodes[1].append(HideLockedButton); HideLockedButton.addEventListener("click", function() { let all_Locked = document.querySelector("#theme_boost-drawers-courseindex").querySelectorAll(".restrictions") all_Locked.forEach((Locked_Module)=>{ Locked_Module.style.setProperty("display", "none", "important"); }) HideLockedButton.textContent = "Locked are hidden"; HideLockedButton.disabled = true; }) }