Run start Better-Devinci

11/10/2023 18:50:40

目前為 2023-11-15 提交的版本,檢視 最新版本

// ==UserScript==
// @name        Run start Better-Devinci
// @namespace   Violentmonkey Scripts
// @match       https://www.leonard-de-vinci.net/*
// @match       https://learning.devinci.fr/*
// @grant       none
// @version     3.0.1
// @author      Better-Devinci
// @license     GNU GPLv3
// @run-at      document-start
// @grant GM_setValue
// @grant GM_getValue
// @description 11/10/2023 18:50:40
// ==/UserScript==

//beginning IIFE
(function () {
    'use strict';

let betterdevinciactualversion = "3.0.1";
if(localStorage.getItem("Version_Better_Devinci")!=undefined){
  localStorage.clear()
}

let CheckGM= function(Item,Base_value){
  if(GM_getValue(Item)===undefined){
    GM_setValue(Item,Base_value)
  }
}


CheckGM("Version_Better_Devinci",betterdevinciactualversion)
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("Finished_Sport_Inscription",false)
CheckGM("Dark_Mode",false)


if(betterdevinciactualversion!=GM_getValue("Version_Better_Devinci")){
  GM_setValue("Version_Better_Devinci",betterdevinciactualversion)
}
console.log("beginning run start")


let BasicStyle=document.createElement("style");
BasicStyle.innerText=`
:root{
 --main-bg-color: black;
 --main-color : red;
}

#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;
}

#Slider_Button:focus {
  box-shadow: 0 0 0 4px rgba(0, 149, 255, .15);
}
`;
document.head.appendChild(BasicStyle)





function Portal_Setup(){
  if(GM_getValue("Dark_Mode")){
  let DarkMode = document.createElement("style");

DarkMode.textContent = `

.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;
}
`;
  document.head.appendChild(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))
    console.log("number message read:"+GM_getValue("Number_Message_read"))
    document.querySelector('.UD_messages_new').remove()
    document.querySelector(".UD_messages_new"+".strong").innerText=0
    MessageRead_Button.remove()
  })

  if(GM_getValue("Notification")) {
    console.log("notif")
    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 {
        document.querySelector(".nav-messages-header").append(MessageRead_Button)
        parseInt(document.querySelector('.UD_messages_new'+'.badge').innerText)-=GM_getValue("Number_Message_read")
        parseInt(document.querySelector(".UD_messages_new"+".strong").innerText)-=GM_getValue("Number_Message_read")
      }
    }
  }
  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 ) {
            //console.log(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: "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")){
    console.log("inserted before observer")
    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")) {
                          //console.log("applying for element ", node)
                          node.onclick = (e) => {
                              //console.log("clicked on ", e.target);

                              let target = e.target;
                              while (target.classList != "dd-handle") {
                                  target = target.parentElement
                              }
                              console.log("acting on", target);
                              [...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(){
  console.log("beg")
  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){
      console.log("prepended without mutator")

      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'
              }
              node.parentElement.prepend(SliderButton);
            }
          }
        }
      }
    }
  });
  observer_Page.observe(document, { childList: true, subtree: true });
  console.log("end")
}

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 CheckPage(){
  if(location.href.includes("www.leonard-de-vinci.net/")){
    console.log("portal setup")
    Portal_Setup()
    if(location.href === "https://www.leonard-de-vinci.net/"){
      console.log("mainpage")
      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.includes("https://www.leonard-de-vinci.net/?my=msg")){
    //  Message()
    //}
    else if(location.href === "https://www.leonard-de-vinci.net/student/presences/"){
      console.log("presence")
      Presence()
    }
    //else if(location.href === "https://www.leonard-de-vinci.net/student/sport/"){
    //  Sports()
    //}
  }
  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 == "https://learning.devinci.fr/my/"){
      Learning_Main_Page()
    }
  }
}

CheckPage()

function Learning_Main_Page(){
  let BasicStyle=document.createElement("style");
BasicStyle.innerText=`
.card-body .p-3{
padding-top:0px!important;
}
#topofscroll{
margin:0px!important;
}
`;
document.head.appendChild(BasicStyle)
/*
  document.querySelector("#topofscroll").parentElement.appendChild(document.querySelector("#inst3124"))
  document.querySelector("#page-header").remove()
  document.querySelector("#inst174").remove()
  document.querySelector("#instance-2524-header").remove()

  document.querySelector(".mt-0").remove()
  //document.querySelector('[data-region="course-content"]').parentElement.style.gap='5px' // maybe important later
  /*let intervalLearning_Main_Page=setInterval(function(){

    if(document.querySelectorAll(".dashboard-card-footer").length!=0){
      document.querySelectorAll(".dashboard-card-footer").forEach(function(UwU){UwU.remove()})
      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'
      })
      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],"")
        }
      })
      document.getElementsByClassName(" block_courses_discover block  card mb-3")[0].remove()
      clearInterval(intervalLearning_Main_Page)
    }
  }, 20)*/

  let observer_LMP = new MutationObserver(function (mutationsList, observer) {
    //console.log("observer")
    for (let mutation of mutationsList) {
      if (mutation.type === 'childList' ) {
        //console.log("passed childlist")
        // Check if added nodes match the criteria
        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) {
                document.querySelectorAll(".dashboard-card-footer").forEach(function(UwU){UwU.remove()})
                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'
                })
                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") || node.matches("#inst174") || node.matches("#instance-2524-header") || node.matches(".mt-0")){
              node.remove()
            }
            else if(node.matches("#inst3124")){
              node.remove()
              //node.parentElement.appendChild(node)
              //console.log(document.querySelector("#topofscroll"))
            }
          }
        }
      }
    }
  });
  observer_LMP.observe(document, { childList: true, subtree: true });
}

function Courses(){
  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"]')){
              console.log("pdf here")
              let OpenPdf = document.createElement("button");
              OpenPdf.id = "OpenPdf"
              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)
              OpenPdf.addEventListener("click", function() {
                window.open(document.querySelector('#resourceobject'+'[type="application/pdf"]').data)
              })
            }
            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")){
              node.remove()
            }
            else if(node.innerHTML.includes("restrictions")){
                let HideLockedButton = document.createElement("button");
                HideLockedButton.id = "HideLockedButton";
                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;
                })
            }
            else if(node.href && node.href.includes('.pdf?forcedownload=1')){
              node.href=node.href.replace('?forcedownload=1',"")
              node.target='_blank'
            }
            else if(node.href && node.href.includes(".PNG?forcedownload=1")){
              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",`
                console.log("Button clicked");
                console.log("UwU");
                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)

              Hide_IMG.onclick = function () {
                console.log("Button clicked");
                console.log("UwU");
                if (img.style.display != "none") {
                  img.style.display = "none";
                  Hide_IMG.textContent = "Show Img";
                } else {
                  img.style.display = "block";
                  Hide_IMG.textContent = "Hide Img";
                }
              "UwU"};
            }
          }
        }
      }
    }
  });
  observer_Courses.observe(document, { childList: true, subtree: true });
}


//end IIFE
})();