// ==UserScript==
// @name Better-Devinci
// @namespace Violentmonkey Scripts
// @match https://www.leonard-de-vinci.net/*
// @match https://learning.devinci.fr/*
// @match https://adfs.devinci.fr/*
// @version 3.3.1
// @author Better-Devinci
// @license GNU GPLv3
// @run-at document-start
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_addStyle
// @description 11/10/2023 18:50:40
// ==/UserScript==
//ajout section "Annonces du site remplaçant sur la page principale le panneau"
//beginning IIFE
(function () {
'use strict';
let betterdevinciactualversion = "3.3.1";
let CheckGM= function(Item,Base_value){
if(GM_getValue(Item)===undefined){
GM_setValue(Item,Base_value)
}
}
CheckGM("Version_Better_Devinci",betterdevinciactualversion)
CheckGM("ADFS_autologin",true)
CheckGM("Hide_Slider",false)
CheckGM("Number_Message_read",0)
CheckGM("Footer&Scrollbar",true)
CheckGM("Notification",true)
CheckGM("SideBar_Diminish",false)
CheckGM("Hide_news",true)
CheckGM("Better_Marks",true)
CheckGM("Dark_Mode",false)
//for LMP still not fully implemented
CheckGM("Better_Courses",true)
CheckGM("Better_Courses_type",true)
CheckGM("Better_Courses_completion",true)
CheckGM("Better_Courses_name",true)
CheckGM("LMP_News",true)
CheckGM("LMP_Page_Header",true)
CheckGM("LMP_Annonces",true)
CheckGM("No_AutoDL",true)
CheckGM("View_Images",true)
CheckGM("Open_PDF",true)
CheckGM("Hide_Locked",true)
if(betterdevinciactualversion!=GM_getValue("Version_Better_Devinci")){
GM_setValue("Finished_Sport_Inscription",)
GM_setValue("Version_Better_Devinci",betterdevinciactualversion)
}
let BasicStyle=`
:root{
--main-bg-color: black;
--main-color : red;
}
.p-3{
padding-top: 0px!important;
}
#page:not(.drawers.show-drawer-left) #topofscroll, #page:not(.drawers.show-drawer-right) #topofscroll{
max-width: 100%!important;
}
#main {
padding-bottom: 0px!important;
}
#Slider_Button:active {
background-color: #a0c7e4;
box-shadow: none;
color: #2c5777;
}
#Slider_Button {
background-color: #e1ecf4;
border-radius: 3px;
border: 1px solid #7aa7c7;
box-shadow: rgba(255, 255, 255, .7) 0 1px 0 0 inset;
box-sizing: border-box;
color: #39739d;
cursor: pointer;
display: inline-block;
font-family: -apple-system,system-ui,"Segoe UI","Liberation Sans",sans-serif;
font-size: 13px;
font-weight: 400;
line-height: 1.15385;
margin: 0;
outline: none;
position: relative;
text-align: center;
text-decoration: none;
user-select: none;
-webkit-user-select: none;
touch-action: manipulation;
vertical-align: baseline;
white-space: nowrap;
}
#Slider_Button:hover{
background-color: #b3d3ea;
color: #2c5777;
}
`;
GM_addStyle(BasicStyle)
function Portal_Setup(){
if(GM_getValue("Dark_Mode")){
let DarkMode = `
.dd-module > .dd-handle{
color:white!important;
}
.dd-unite-student> .dd-handle{
color:blue!important;
}
.dd-unite-student> .dd-handle{
color:blue!important;
}
.dd-unite-student {
background-color: #54545566;
}
.dd-handle {
color:var(--main-color)!important;
background: var(--main-bg-color)!important;
}
.b-dayview-day-container .b-calendar-cell.b-nonworking-day {
background-color: #54545566!important;
}
.dropdown-menu>li>a {
color:var(--main-color)!important
}
.nav-indicators .nav-messages .dropdown-menu li {
border-top: 0px!important;
}
.nav-indicators .nav-messages .dropdown-menu .nav-messages-footer {
background-color: var(--main-bg-color)!important;
}
.nav-indicators .nav-messages .dropdown-menu .nav-messages-header>a, .nav-indicators .nav-messages .dropdown-menu .nav-messages-header>a:hover, .nav-indicators .nav-messages .dropdown-menu .nav-messages-header>a:focus {
color: var(--main-color)!important;
}
.nav-indicators .nav-messages .dropdown-menu .nav-messages-header {background-color: var(--main-bg-color)!important;}
.panel {
background-color: var(--main-bg-color)!important;
}
.site-menu-title{
color:var(--main-color)!important;
}
.site-menu{
background-color:var(--main-bg-color)!important;
}
.dropdown-menu{
background-color:var(--main-bg-color)!important;
}
.breadcrumb{
color:var(--main-color)!important;
background-color:var(--main-bg-color)!important;
}
.breadcrumb.no_margin{
border:0px;
}
.site-menu-icon{
color:var(--main-color)!important;
}
.navbar-fixed-top{
margin:0px;
}
.b-toolbar {
background-color:var(--main-bg-color)!important;
}
.b-daycellcollecter .b-dayview-content {
background-color:var(--main-bg-color)!important;
}
.b-dayview-day-container .b-calendar-cell:not(.b-last-cell) {
border-right: 0px!important;
}
.b-dayview-day-container {
border-left: 0px!important;
background-image:none!important;
}
.b-calendarrow .b-cal-cell-header {
background-color: var(--main-bg-color)!important;
}
.social-box {
background-color: var(--main-bg-color)!important;
}
body{
background-color:var(--main-bg-color)!important;
color:var(--main-color)!important;
}
.b-panel>.b-panel-body-wrap{
background-color:var(--main-bg-color)!important;
}
`;
GM_addStyle(DarkMode);
}
if(GM_getValue("SideBar_Diminish")){
if(document.querySelector(".social-sidebar"+".sidebar-full")){
document.querySelector(".wraper"+".page-content"+".sidebar-full").className="wraper page-content"
document.querySelector("body").style.overflowX='auto'
document.querySelector("body").querySelector(".wraper"+".page-content").className = 'wraper page-content'
document.querySelector(".social-sidebar").className = 'social-sidebar'
}
}
if(GM_getValue("Footer&Scrollbar")){
document.querySelector('html').style.height="0px" //remove the scrollbar when not necessary
if(document.querySelector('#footer')){
document.querySelector('#footer').remove()
}
}
let MessageRead_Button = document.createElement("button");
MessageRead_Button.id = "Message_Read_Button";
MessageRead_Button.textContent = "Show Messages as read";
MessageRead_Button.style.color= 'red'
MessageRead_Button.addEventListener("click", function() {
GM_setValue("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()
})
if(GM_getValue("Notification")) {
console.log("notif 1")
if(document.querySelector('.UD_messages_new'+'.badge')){
if(parseInt(document.querySelector('.UD_messages_new'+'.badge').innerText)==GM_getValue("Number_Message_read")){
document.querySelector('.UD_messages_new'+'.badge').remove()
document.querySelector(".UD_messages_new"+".strong").innerText=0
}
else{
if(document.querySelector('.UD_messages_new'+'.badge')){
document.querySelector(".nav-messages-header").append(MessageRead_Button)
}
}
}
}
const BetterDevinci_link = document.createElement("a");
BetterDevinci_link.id = "BetterDevinci_link"
BetterDevinci_link.setAttribute("href", "/?my=msg&Better-Devinci");
BetterDevinci_link.textContent = "+";
BetterDevinci_link.style.color = 'red'
BetterDevinci_link.style.fontWeight='bold'
BetterDevinci_link.style.fontSize='20px'
if(document.querySelector(".navbar-inner-title")){
document.querySelector(".navbar-inner-title").append(BetterDevinci_link)
}
if(document.querySelector(".social-sidebar"+".sidebar-full")!=null && GM_getValue("SideBar_Diminish")){
document.querySelector(".switch-sidebar-icon"+".icon-align-justify").click()
}
let observer_Page = new MutationObserver(function (mutationsList, observer) {
for (var mutation of mutationsList) {
if (mutation.type === 'childList') {
for (var node of mutation.addedNodes) {
if (node.nodeType === Node.ELEMENT_NODE ) {
if(node.matches('#footer') && GM_getValue("Footer&Scrollbar")){
node.remove()
}
else if(node.matches('.UD_messages_new'+'.badge') && node.innerText==GM_getValue("Number_Message_read") && GM_getValue("Notification")){
node.remove()
}
else if(node.matches(".nav-messages-header") && GM_getValue("Notification")){
if(document.querySelector('.UD_messages_new'+'.badge')!=undefined){
node.append(MessageRead_Button)
}
}
else if(node.matches(".UD_messages_new"+".strong")&& node.innerText==GM_getValue("Number_Message_read") && GM_getValue("Notification")){
node.innerText=0
}
else if(node.matches(".navbar-inner-title")){
node.append(BetterDevinci_link)
}
else if(node.innerText.includes("let posting = $.ajax({\n")){
node.innerHTML=node.innerHTML.replace('let posting = $.ajax({\n ',"var posting = $.ajax({\n ")
}
else if(GM_getValue("SideBar_Diminish")){
if(node.matches(".wraper"+".page-content"+".sidebar-full")){
node.classname='wraper page-content'
document.querySelector("body").querySelector(".wraper"+".page-content").className = 'wraper page-content'
}
else if(node.matches(".social-sidebar"+".sidebar-full")){
node.className = 'social-sidebar'
document.querySelector("body").querySelector(".wraper"+".page-content").className = 'wraper page-content'
}
else if(node.matches("body")){
node.style.overflowX='auto'
document.querySelector("body").querySelector(".wraper"+".page-content").className = 'wraper page-content'
}
}
}
}
}
}
});
observer_Page.observe(document, { childList: true, subtree: true });
}
function BetterDevinci_Page(){
let Rewrite_Container = document.createElement("div");
Rewrite_Container.id = "OwO";
Rewrite_Container.style.margin='10px'
Rewrite_Container.style.paddingLeft='10px'
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' },
{ name : "ADFS_autologin",description : "Adds the baility to autologin (email and password can only be accessed by the extension and nothing else)"},
{ name: "Dark_Mode",description: 'Enables the dark mode for the portal (refresh to apply changes)'},
]
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 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.className='better-devinci-checkbox'
checkbox.type = 'checkbox';
checkboxCell.appendChild(checkbox);
row.appendChild(checkboxCell);
if(GM_getValue(item.name)) {
checkbox.checked = true;
}
checkbox.addEventListener('change', function() {
if (GM_getValue(item.name)) {
GM_setValue(item.name,false)
}
else{
GM_setValue(item.name,true)
}
});
table.appendChild(row);
});
Rewrite_Container.append(table);
if(document.querySelector("#main") && document.querySelector("#main").querySelectorAll(".container-fluid")){
document.querySelector("#main").querySelectorAll(".container-fluid")[1].remove()
}
if(document.querySelector("#main")){
document.querySelector("#main").append(Rewrite_Container)
}
//document.querySelector("#main").querySelectorAll(".container-fluid")[1].remove()
let observer_Page = new MutationObserver(function (mutationsList, observer) {
for (var mutation of mutationsList) {
if (mutation.type === 'childList') {
for (var node of mutation.addedNodes) {
if (node.nodeType === Node.ELEMENT_NODE ) {
if(node.matches(".container-fluid") && node.parentElement.matches("#main")){
if(node.parentElement.childElementCount==2){
document.querySelector("#main").append(Rewrite_Container)
}
node.remove()
}
}
}
}
}
});
observer_Page.observe(document, { childList: true, subtree: true });
}
function Marks(){
let observer_Page = new MutationObserver(function (mutationsList, observer) {
for (var mutation of mutationsList) {
if (mutation.type === 'childList') {
for (var node of mutation.addedNodes) {
if (node.nodeType === Node.ELEMENT_NODE) {
if (node.classList.toString().includes("dd-handle") && !node.parentElement.classList.toString().includes("dd-module") && !node.parentElement.classList.toString().includes("entry_elements")) {
node.onclick = (e) => {
let target = e.target;
while (target.classList != "dd-handle") {
target = target.parentElement
}
[...target.parentElement.children].forEach((child) => {
if (child.classList.toString().includes("dd-list")) {
if (!child.classList.toString().includes("hide")) {
child.classList.add("hide")
} else child.classList.remove("hide")
}
})
}
}
}
}
}
}
});
observer_Page.observe(document, { childList: true, subtree: true });
}
function MainPage(){
let SliderButton = document.createElement("button");
SliderButton.id = "Slider_Button";
SliderButton.textContent = "Hide News";
SliderButton.addEventListener("click", function() {
if(GM_getValue("Hide_Slider")==false){
SliderButton.innerHTML="Show News"
SliderButton.nextElementSibling.className+=' hide'
GM_setValue("Hide_Slider",true)
}
else{
SliderButton.innerHTML="Hide News"
SliderButton.nextElementSibling.className=SliderButton.nextElementSibling.className.replace(" hide","")
GM_setValue("Hide_Slider",false)
}
})
if(GM_getValue("Hide_news")){
const Body = document.querySelector(".body")
if(Body && Body.parentElement && Body.parentElement.parentElement){
if(GM_getValue("Hide_Slider")){
SliderButton.innerHTML="Show News"
Body.parentElement.className+=' hide'
}
Body.parentElement.parentElement.prepend(SliderButton);
}
}
let observer_Page = new MutationObserver(function (mutationsList, observer) {
for (var mutation of mutationsList) {
if (mutation.type === 'childList') {
for (var node of mutation.addedNodes) {
if (node.nodeType === Node.ELEMENT_NODE ) {
if(node.matches(".alert"+".alert-success") && node.innerText.includes("Vous êtes maintenant réinscrit(e)")){
node.parentElement.parentElement.parentElement.remove()
}
else if(node.matches('.social-box') && node.className==='social-box'){
if(GM_getValue("Hide_Slider")){
SliderButton.innerHTML="Show News"
node.className+=' hide'
}
if(GM_getValue("Hide_news")){
node.parentElement.prepend(SliderButton);
}
}
}
}
}
}
});
observer_Page.observe(document, { childList: true, subtree: true });
}
function Presence(){
if(document.querySelector(".icon-question-sign") && document.querySelector(".icon-question-sign")){
document.querySelector(".icon-question-sign").parentElement.remove()
}
let observer_Page = new MutationObserver(function (mutationsList, observer) {
for (var mutation of mutationsList) {
if (mutation.type === 'childList') {
for (var node of mutation.addedNodes) {
if (node.nodeType === Node.ELEMENT_NODE ) {
if(node.matches('.alert'+'.alert-info') && node.innerText===' Pour accéder aux détails de la séance et à la validation de présence, cliquez sur le bouton "Relevé de présence".'){
node.remove()
}
}
}
}
}
});
observer_Page.observe(document, { childList: true, subtree: true });
}
function Evaluations(){
let interval_login=setInterval(function(){
if(document.querySelectorAll("[id*='Tout à fait']")){
document.querySelectorAll("[id*='Tout à fait']").forEach(function(UwU){UwU.click()})
clearInterval(interval_login)
}
}, 20)
}
function ADFS(){
let username = document.createElement("input")
username.id = "Better-devinci-username"
username.className = "text fullWidth"
username.placeholder = "Autologin email"
username.spellcheck = false
let password = document.createElement("input")
password.id = "Better-devinci-password"
password.className = "text fullWidth"
password.placeholder = "Autologin password"
password.spellcheck = false
password.type= "password"
let Save_ID = document.createElement("button")
Save_ID.id = "Better-devinci-Save_ID-button"
Save_ID.innerText = "Autologin save"
Save_ID.addEventListener("click", function() {
GM_setValue("Autologin email",username.value)
GM_setValue("Autologin password",password.value)
if(GM_getValue("Autologin email") && GM_getValue("Autologin password")){
document.querySelector("#userNameInput").value = GM_getValue("Autologin email")
document.querySelector("#passwordInput").value = GM_getValue("Autologin password")
if(GM_getValue("Autologin email") && GM_getValue("Autologin password")){
document.querySelector("#submitButton").click()
}
}
})
if(document.querySelector("#footerPlaceholder")){
document.querySelector("#footerPlaceholder").append(username)
document.querySelector("#footerPlaceholder").append(password)
document.querySelector("#footerPlaceholder").append(Save_ID)
if(GM_getValue("Autologin email") && GM_getValue("Autologin password")){
document.querySelector("#userNameInput").value = GM_getValue("Autologin email")
document.querySelector("#passwordInput").value = GM_getValue("Autologin password")
}
}
if(document.querySelector("#submitButton") && GM_getValue("Autologin email") && GM_getValue("Autologin password")&& document.querySelector("#errorText").innerText=='' ){
document.querySelector("#submitButton").click()
}
let observer_ADFS = new MutationObserver(function (mutationsList, observer) {
for (let mutation of mutationsList) {
if (mutation.type === 'childList' ) {
for (let node of mutation.addedNodes) {
if(node.nodeType === Node.ELEMENT_NODE){
if(node.matches("#footerPlaceholder")){
document.querySelector("#footerPlaceholder").append(username)
document.querySelector("#footerPlaceholder").append(password)
document.querySelector("#footerPlaceholder").append(Save_ID)
if(GM_getValue("Autologin email") && GM_getValue("Autologin password") && document.querySelector("#userNameInput") && document.querySelector("#passwordInput")){
username.value = GM_getValue("Autologin email")
password.value = GM_getValue("Autologin password")
}
if(GM_getValue("Autologin email") && GM_getValue("Autologin password")){
let interval_login=setInterval(function(){
if(document.querySelector("#submitButton") && document.querySelector("#errorText").innerText==''){
document.querySelector("#userNameInput").value = GM_getValue("Autologin email")
document.querySelector("#passwordInput").value = GM_getValue("Autologin password")
document.querySelector("#submitButton").click()
clearInterval(interval_login)
}
}, 20)
}
}
}
}
}
}
});
observer_ADFS.observe(document, { childList: true, subtree: true });
}
function Learning_Main_Page(){
let BasicStyle=`
.card-body .p-3{
padding-top:0px!important;
}
#topofscroll{
margin:0px!important;
}
#page #region-main {
padding-bottom: 0px!important;
}
.pb-3{
padding-bottom: 0px!important;
}
`;
GM_addStyle(BasicStyle)
let observer_LMP = new MutationObserver(function (mutationsList, observer) {
for (let mutation of mutationsList) {
if (mutation.type === 'childList' ) {
for (let node of mutation.addedNodes) {
if(node.nodeType === Node.ELEMENT_NODE){
if(node.matches('[data-region="paged-content-page"]') && document.querySelectorAll(".dashboard-card-footer").length!=0 && GM_getValue("Better_Courses")) {
if(GM_getValue("Better_Courses_completion")){
document.querySelectorAll(".dashboard-card-footer").forEach(function(UwU){UwU.remove()})
}
if(GM_getValue("Better_Courses_type")){
document.querySelectorAll(".muted").forEach(function(UwU){UwU.remove()})
}
document.querySelectorAll('[data-region="course-content"]').forEach(function(UwU){
UwU.style.margin='0px'
UwU.style.paddingBottom='0px'
})
if(GM_getValue("Better_Courses_name")){
document.querySelectorAll(".multiline").forEach(function(UwU){
if(UwU.innerText.match(/\s\([a-zA-Z0-9-]+\)/g)){
UwU.innerText=UwU.innerText.replace(UwU.innerText.match(/\s\([a-zA-Z0-9-]+\)/g)[0],"")
}
})
}
if(document.getElementsByClassName(" block_courses_discover block card mb-3") && document.getElementsByClassName(" block_courses_discover block card mb-3")[0]){
document.getElementsByClassName(" block_courses_discover block card mb-3")[0].remove()
}
}
else if( (node.matches("#page-header") && GM_getValue("LMP_Page_Header")) || (node.matches("#inst174") && GM_getValue("LMP_News")) || (GM_getValue("Better_Courses") && (node.matches("#instance-2524-header")|| node.matches(".mt-0"))) ){
node.remove()
}
else if(node.matches("#inst3124") && GM_getValue("LMP_Annonces")){
node.remove()
//node.parentElement.appendChild(node)
}
}
}
}
}
});
observer_LMP.observe(document, { childList: true, subtree: true });
}
function Courses(){
if(document.querySelector('#resourceobject'+'[type="application/pdf"]') && GM_getValue("Open_PDF")){
let OpenPdf = document.createElement("a");
OpenPdf.id = "OpenPdf"
OpenPdf.href= document.querySelector('#resourceobject'+'[type="application/pdf"]').data
OpenPdf.target = "_blank"
OpenPdf.textContent = "Open Pdf";
OpenPdf.className="btn"
OpenPdf.style.color='red'
let interval_Pdf=setInterval(function(){
if(document.querySelector("#focus-navigation-buttons-start")){
document.querySelector("#focus-navigation-buttons-start").prepend(OpenPdf)
clearInterval(interval_Pdf)
}
}, 20)
}
let HideLockedButton = document.createElement("button");
HideLockedButton.id = "HideLockedButton";
HideLockedButton.textContent = "Hide Locked";
let observer_Courses = new MutationObserver(function (mutationsList, observer) {
for (let mutation of mutationsList) {
if (mutation.type === 'childList' ) {
for (let node of mutation.addedNodes) {
if(node.nodeType === Node.ELEMENT_NODE){
if(node.matches('#resourceobject'+'[type="application/pdf"]') && GM_getValue("Open_PDF")){
console.log("found pdf")
let OpenPdf = document.createElement("a");
OpenPdf.id = "OpenPdf"
OpenPdf.href= document.querySelector('#resourceobject'+'[type="application/pdf"]').data
OpenPdf.target = "_blank"
OpenPdf.textContent = "Open Pdf";
OpenPdf.className="btn"
OpenPdf.style.color='red'
let interval_Pdf=setInterval(function(){
console.log("trying to find buttons")
if(document.querySelector("#focus-navigation-buttons-start")){
document.querySelector("#focus-navigation-buttons-start").prepend(OpenPdf)
clearInterval(interval_Pdf)
}
}, 20)
}
else if(node.matches(".no-announces")){
if(node.innerText==="Vous n'avez pas d'annonce disponible"){
node.parentElement.previousElementSibling.remove()
node.remove()
}
}
else if(node.matches(".container"+ ".focus-completion") && GM_getValue("Better_Courses_completion")){
node.remove()
}
else if(node.innerHTML.includes("restrictions") && GM_getValue("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;
})
}
else if(node.href && node.href.includes('.pdf?forcedownload=1') && GM_getValue("No_AutoDL")){
node.href=node.href.replace('?forcedownload=1',"")
node.target='_blank'
}
else if(node.href && node.href.includes(".PNG?forcedownload=1") && GM_getValue("View_Images")){
let img = document.createElement("img")
img.classList+="resourceimage"
img.loading="lazy"
img.src = node.href
img.style.display = "none";
let Hide_IMG = document.createElement("button");
Hide_IMG.setAttribute("onclick",`
var img = this.nextElementSibling;
if (img.style.display != "none") {
img.style.display = "none";
this.textContent = "Show Img";
} else {
img.style.display = "block";
this.textContent = "Hide Img";
}
`)
Hide_IMG.style.border = "none"
Hide_IMG.style.borderRadius = "5px"
if(img.style.display != "none"){
Hide_IMG.textContent = "Hide Img";
}
else{
Hide_IMG.textContent = "Show Img";
}
node.parentElement.appendChild(Hide_IMG)
node.parentElement.appendChild(img)
}
else if(node.matches("iframe") && node.src.includes(".pptx") && GM_getValue("No_AutoDL")){
let noforcedllink = document.createElement("a")
noforcedllink.href = node.src
noforcedllink.innerText=node.title +".pptx"
node.parentElement.append(noforcedllink)
node.remove()
GM_addStyle(".btn-fullscreen{scale:0!important}")
}
else if(node.matches("iframe") && node.src.includes(".csv") && GM_getValue("No_AutoDL")){
let noforcedllink = document.createElement("a")
noforcedllink.href = node.src
noforcedllink.innerText=node.title +".csv"
node.parentElement.append(noforcedllink)
node.remove()
GM_addStyle(".btn-fullscreen{scale:0!important}")
}
else if(node.href && node.href.includes("https://learning.devinci.fr/course/view.php?id=") && node.parentElement.matches(".breadcrumb-item") && node.title.match(/\s\([a-zA-Z0-9-]+\)/g)!=null){
node.innerText=node.title.replace(node.title.match(/\s\([a-zA-Z0-9-]+\)/g)[0],'')
}
}
}
}
}
});
observer_Courses.observe(document, { childList: true, subtree: true });
}
function Page_learning_devinci(){
console.log("betterdevinci")
let observer_Learning = new MutationObserver(function (mutationsList, observer) {
for (let mutation of mutationsList) {
if (mutation.type === 'childList' ) {
for (let node of mutation.addedNodes) {
if(node.nodeType === Node.ELEMENT_NODE){
if(node.href && node.href=="https://learning.devinci.fr/mod/page/view.php?id=43675" && node.role=="menuitem"){
node.parentElement.parentElement//cible
let handler = document.createElement("li")
handler.className="nav-item"
handler.role="none"
node.parentElement.parentElement.append(handler)
let link = document.createElement("a")
link.role='menuitem'
link.classList='nav-link'
link.href="https://learning.devinci.fr/mod/forum/view.php?id=2018"
link.innerText='Annonces du site'
link.previewlistener="true"
handler.append(link)
}
}
}
}
}
});
observer_Learning.observe(document, { childList: true, subtree: true });
}
function CheckPage(){
if(location.href.includes("www.leonard-de-vinci.net/")){
Portal_Setup()
if(location.href === "https://www.leonard-de-vinci.net/"){
MainPage()
}
else if(location.href === "https://www.leonard-de-vinci.net/?my=msg&Better-Devinci"){
BetterDevinci_Page()
}
else if(location.href === "https://www.leonard-de-vinci.net/?my=marks"){
Marks()
}
else if(location.href === "https://www.leonard-de-vinci.net/student/presences/"){
Presence()
}
else if(location.href.includes("https://www.leonard-de-vinci.net/student/cours/evaluations/")){
Evaluations()
}
}
else if(location.href.includes("https://learning.devinci.fr")){
Page_learning_devinci()
if(location.href.includes("https://learning.devinci.fr/course/view.php?id=")||location.href.includes("https://learning.devinci.fr/mod") && !location.href.includes("https://learning.devinci.fr/mod/forum")){
Courses()
}
else if(location.href.includes("https://learning.devinci.fr/my/")){
Learning_Main_Page()
}
}
else if(location.href.includes("https://adfs.devinci.fr/adfs/ls/") && GM_getValue("ADFS_autologin")){
ADFS()
}
}
CheckPage()
//end IIFE
})();