diff options
Diffstat (limited to 'app/planning')
-rw-r--r-- | app/planning/.gitlab-ci.yml | 15 | ||||
-rw-r--r-- | app/planning/LICENSE | 21 | ||||
-rw-r--r-- | app/planning/README.md | 8 | ||||
-rw-r--r-- | app/planning/SatteliteGiteaData.txt | 1 | ||||
-rw-r--r-- | app/planning/index.php | 163 |
5 files changed, 208 insertions, 0 deletions
diff --git a/app/planning/.gitlab-ci.yml b/app/planning/.gitlab-ci.yml new file mode 100644 index 0000000..4402674 --- /dev/null +++ b/app/planning/.gitlab-ci.yml @@ -0,0 +1,15 @@ +# Generic Minteck GitLab CI/CD Checks +# PHP applications +image: php:zts-buster + +cache: + paths: + - vendor/ + +before_script: + - apt-get update + - apt-get install -y git + +test: + script: + - bash -c '[[ $(find . -name \*.php -exec php -l {} \; | grep -v "No syntax errors") ]] && exit 2 || exit 0' diff --git a/app/planning/LICENSE b/app/planning/LICENSE new file mode 100644 index 0000000..318113a --- /dev/null +++ b/app/planning/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021- Minteck + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/app/planning/README.md b/app/planning/README.md new file mode 100644 index 0000000..75e1227 --- /dev/null +++ b/app/planning/README.md @@ -0,0 +1,8 @@ +# Familine Camera (wrapper)
+
+* Chemin d'installation attendu : `/mnt/familine/app/console`
+
+## Installation
+1. Copiez les fichiers dans le dossier `/mnt/familine/app/console`
+3. Configurez votre serveur Web pour pointer le sous-domaine `console.` vers Familine Camera (wrapper)
+4. C'est prêt !
\ No newline at end of file diff --git a/app/planning/SatteliteGiteaData.txt b/app/planning/SatteliteGiteaData.txt new file mode 100644 index 0000000..91e708c --- /dev/null +++ b/app/planning/SatteliteGiteaData.txt @@ -0,0 +1 @@ +Familine Camera Wrapper
\ No newline at end of file diff --git a/app/planning/index.php b/app/planning/index.php new file mode 100644 index 0000000..603bfdb --- /dev/null +++ b/app/planning/index.php @@ -0,0 +1,163 @@ +<?php
+
+require_once $_SERVER['DOCUMENT_ROOT'] . "/../session.php";
+
+/** @var string $_FULLNAME
+ * @var string $_USER
+ * @var string $_SUID
+ * @var array $_PROFILE
+ * @var boolean $_ADMIN
+ */
+
+if (!$_ADMIN) {
+
+}
+
+?>
+
+<!DOCTYPE html>
+<html lang="en">
+<head>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <title>Familine Planning</title>
+ <link rel="icon" href="https://familine.minteck.org/icns/familine-planning.svg">
+ <link rel="stylesheet" href="https://familine.minteck.org/styles.css">
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
+ <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
+ <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
+</head>
+<body style="background-color:#ffffff !important;">
+<iframe src="https://planning.<?= /** @var array $_CONFIG */
+$_CONFIG["Global"]["domain"] ?>/hp/etudiant" style="
+ border: none;
+ background-color: #ffffff;
+ position: fixed;
+ top: 32px;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ width: 100%;
+ height: calc(100vh - 32px);
+"></iframe>
+<script>
+ console.log("Injecting Familine header")
+ document.body.innerHTML = document.body.innerHTML + "<iframe style=\"position:fixed;left:0;right:0;top:0;border: none;width: 100%;height:32px;\" src=\"https://<?= /** @var array $_CONFIG */
+ $_CONFIG["Global"]["cdn"] ?>/statusbar.php\"></iframe>";
+ document.getElementsByTagName("html")[0].style.marginTop = "32px";
+ document.getElementsByTagName("html")[0].style.height = "calc(100vh - 32px)";
+
+function tt(orig, newt) {
+ document.getElementsByTagName('iframe')[0].contentDocument.querySelector("#breadcrumbBandeau.titre-onglet[aria-label=\"" + orig + "\"]").innerText = newt;
+ document.getElementsByTagName('iframe')[0].contentDocument.querySelector("h3.fil-ariane").style.display = "none";
+}
+
+function te(orig, newt) {
+ document.getElementsByTagName('iframe')[0].contentDocument.querySelector(".Texte10.Gras.AlignementMilieu").innerText = document.getElementsByTagName('iframe')[0].contentDocument.querySelector(".Texte10.Gras.AlignementMilieu").innerText.replaceAll(orig, newt);
+}
+
+function tmt(orig, newt) {
+ Array.from(document.getElementsByTagName("iframe")[0].contentDocument.querySelectorAll(".Texte12")).forEach((e) => { if (e.innerText === orig) { e.innerText = newt; } });
+ Array.from(document.getElementsByTagName("iframe")[0].contentDocument.querySelectorAll(".collection-item.with-action")).forEach((e) => { if (e.innerText === orig) { e.innerHTML = "<span>" + newt + "</span>"; } });
+ if (document.getElementsByTagName("iframe")[0].contentDocument.getElementById("GInterface.Instances[2]_Titre").children[1].innerText === orig) { document.getElementsByTagName("iframe")[0].contentDocument.getElementById("GInterface.Instances[2]_Titre").children[1].innerHTML = "<span>" + newt + "</span>"; };
+}
+
+function tme(orig, newt) {
+ if (document.getElementsByTagName("iframe")[0].contentDocument.querySelector(".card-content").innerText === orig) { document.getElementsByTagName("iframe")[0].contentDocument.querySelector(".card-content").innerText = newt; }
+}
+
+function tmh(orig, newt) {
+ document.getElementsByTagName("iframe")[0].contentDocument.querySelectorAll("span.as-header.collapsible-header").forEach((e) => { if (e.innerText === orig) { e.innerText = newt; } });
+}
+
+injectedVer = false;
+
+setInterval(() => {
+
+try {
+ ver = document.getElementsByTagName("iframe")[0].contentDocument.getElementsByClassName("ibe_logo")[0].children[0].title.split("-")[0].split(" ")[1].trim() + "." + document.getElementsByTagName("iframe")[0].contentDocument.getElementsByClassName("ibe_logo")[0].children[0].title.split("-")[1].trim();
+ document.getElementsByTagName("iframe")[0].contentDocument.getElementsByClassName("ibe_logo")[0].children[0].style.display = "none";
+ if (!injectedVer) document.getElementsByTagName("iframe")[0].contentDocument.getElementsByClassName("ibe_logo")[0].children[0].outerHTML = document.getElementsByTagName("iframe")[0].contentDocument.getElementsByClassName("ibe_logo")[0].children[0].outerHTML + "v" + ver + " ";
+ injectedVer = true;
+} catch (e) {}
+
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Combo0").innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Événements</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Liste_niveau0").children[0].children[2].innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Événements annulés</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Liste_niveau0").children[0].children[1].innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Récapitulatif des événements</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Combo2").innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Vie familiale</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Liste_niveau2").children[0].children[1].style.display = "none"; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Liste_niveau2").children[0].children[2].innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Statut familial</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Liste_niveau2").children[0].children[3].innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Calendrier familial</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Combo3").innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Progrès</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Liste_niveau3").children[0].children[0].innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Évaluation des progrès</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Liste_niveau3").children[0].children[2].innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Tâches à réaliser</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Liste_niveau3").children[0].children[3].innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Ressources familiales</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Liste_niveau3").children[0].children[4].innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Travaux surveillés</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Liste_niveau4").children[0].children[1].innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Récapitulatif des événements</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Combo4").innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Organisateurs</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Combo5").innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Groupes</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Combo6").innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Membres</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Liste_niveau5").children[0].children[2].innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Événements annulés</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Liste_niveau5").children[0].children[1].innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Récapitulatif des événements</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Liste_niveau6").children[0].children[2].innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Événements annulés</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[0].Instances[1]_Liste_niveau6").children[0].children[1].innerHTML = '<div class="label-menu-container"><span role="presentation" class="label-submenu">Récapitulatif des événements</span></div>'; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[1]").children[0].children[2].children[1].children[0].children[1].children[1].style.display = "none"; } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.getElementById("GInterface.Instances[1]").children[0].children[2].style.display = "none"; } catch (e) {}
+try { tt("Récapitulatif des cours", "Récapitulatif des événements"); } catch (e) {}
+try { tt("Cours annulés", "Événements annulés"); } catch (e) {}
+try { tt("Calendrier scolaire", "Calendrier familial") } catch (e) {}
+try { tt("Evaluation des cours", "Évaluation des progrès") } catch (e) {}
+try { tt("Travail à faire", "Tâches à réaliser") } catch (e) {}
+try { tt("Ressources pédagogiques", "Ressources familiales") } catch (e) {}
+try { tt("Devoirs surveillés", "Travaux surveillés") } catch (e) {}
+try { tt("Scolarité", "Statut familial") } catch (e) {}
+try { document.getElementsByTagName("iframe")[0].contentDocument.querySelector(".taf header h3 span").innerText = "Tâches à faire" } catch (e) {}
+try { document.getElementsByTagName("iframe")[0].contentDocument.querySelector(".ressourcespedagogiques header h3 span").innerText = "Dernières ressources familiales" } catch (e) {}
+try { document.getElementsByTagName("iframe")[0].contentDocument.querySelector(".no-events[aria-label=\"Aucun travail à faire dans les 7 prochains jours\"] p").innerText = "Aucune tâche à faire dans les 7 prochains jours"; } catch (e) {}
+try { document.getElementsByTagName("iframe")[0].contentDocument.querySelector(".no-events[aria-label=\"Aucune ressource pédagogique\"] p").innerText = "Aucune ressource familiale"; } catch (e) {}
+try { document.getElementsByTagName("iframe")[0].contentDocument.querySelector(".footer-wrapper").style.display = "none"; } catch (e) {}
+try { document.getElementsByTagName("iframe")[0].contentDocument.querySelector(".stopwith-footer").classList.remove("stopwith-footer"); } catch (e) {}
+try { document.getElementsByTagName("iframe")[0].contentDocument.querySelector(".coursannules header h3 span").innerText = "Prochains événements annulés" } catch (e) {}
+try { document.getElementsByTagName("iframe")[0].contentDocument.querySelector(".edt header h3 span").innerText = "3 prochains événements" } catch (e) {}
+try { document.getElementsByTagName("iframe")[0].contentDocument.querySelector(".no-events[aria-label=\"Aucun cours annulé dans les 7 prochains jours\"] p").innerText = "Aucun événement annulé dans les 7 prochains jours"; } catch (e) {}
+try { te("Il n'y a aucun cours", "Il n'y a aucun événement"); } catch (e) {}
+try { te("Aucun cours annulé sur la période", "Aucun événement annulé sur la période") } catch (e) {}
+try { te("Aucun travail à faire n'a été saisi", "Aucune tâche à faire n'a été saisie") } catch (e) {}
+try { te("Aucune ressource pédagogique", "Aucune ressource familiale") } catch (e) {}
+try { te("Sélectionnez une promotion", "Sélectionnez un groupe") } catch (e) {}
+try { te("Sélectionnez un enseignant", "Sélectionnez un organisateur") } catch (e) {}
+try { te("Sélectionnez un étudiant", "Sélectionnez un membre") } catch (e) {}
+try { Array.from(document.getElementsByClassName("iecb")).forEach((e) => {console.log(e.children[2].innerText = e.children[2].innerText.replaceAll("matière", "catégorie"));}) } catch (e) {}
+try { document.getElementsByTagName('iframe')[0].contentDocument.querySelectorAll("#GInterface\\.Instances\\[1\\] > .BorderBox.Table > div > div > div > .EspaceGauche.EspaceHaut.Gras")[1].innerText = "Détail par catégorie"; } catch (e) {}
+try { Array.from(document.getElementsByTagName('iframe')[0].contentDocument.querySelectorAll(".ie-ellipsis")).forEach((e) => { e.innerText = e.innerText.replaceAll("matière", "catégorie").replaceAll("Matière", "Catégorie").replaceAll("C. Manqués", "É. Manqués"); }); } catch (e) {}
+try { document.getElementsByTagName("iframe")[0].contentDocument.querySelector(".smartbanner-container.smartbanner-show").style.display = "none"; } catch (e) {}
+try { document.getElementsByTagName("iframe")[0].contentDocument.querySelector(".floating-btn-position.v-bottom").style.display = "none"; } catch (e) {}
+try { document.getElementsByTagName("iframe")[0].contentDocument.querySelector(".widget.retourespace").outerHTML = ""; } catch (e) {}
+try { tmt("Calendrier scolaire", "Calendrier familial") } catch (e) {}
+try { tmt("Contenu des cours", "Contenu des événements") } catch (e) {}
+try { tmt("Cours annulés", "Événements annulés") } catch (e) {}
+try { tmt("Emploi du temps", "Programme") } catch (e) {}
+try { tmt("Travail à faire", "Tâches à faire") } catch (e) {}
+try { tmt("Evaluation des cours", "Évaluation des événements") } catch (e) {}
+try { tmt("Devoirs surveillés", "Travaux surveillés") } catch (e) {}
+try { tmt("Récapitulatif des cours", "Récapitulatif des événements") } catch (e) {}
+try { tme("Aucun cours annulé", "Aucun événement annulé") } catch (e) {}
+try { tme("Aucun travail à faire saisi", "Aucune tâche à faire saisie") } catch (e) {}
+try { tme("Aucun devoir pour la période sélectionnée", "Aucun travail noté pour la période sélectionnée") } catch (e) {}
+try { tme("Aucune note n'a été saisie pour cet étudiant sur la période sélectionnée", "Aucune note n'a été saisie pour ce membre sur la période sélectionnée") } catch (e) {}
+try { tme("Aucun devoir surveillé", "Aucun travail surveillé") } catch (e) {}
+try { tmh("Cours", "Événements") } catch (e) {}
+try { tmh("Résultats", "Notes") } catch (e) {}
+try { tmh("Vie scolaire", "Vie familiale") } catch (e) {}
+try { tmh("Enseignements", "Contenus") } catch (e) {}
+try { if (document.getElementsByTagName("iframe")[0].contentDocument.getElementById("GInterface.Instances[0].Instances[0]").children[1].classList.contains("conteneur-options")) { document.getElementsByTagName("iframe")[0].contentDocument.getElementById("GInterface.Instances[0].Instances[0]").children[1].style.display = "none"; }; } catch (e) {}
+try { if (document.getElementsByTagName("iframe")[0].contentDocument.getElementById("GInterface.Instances[0].Instances[0]").children[0].classList.contains("conteneur-options")) { document.getElementsByTagName("iframe")[0].contentDocument.getElementById("GInterface.Instances[0].Instances[0]").children[0].style.display = "none"; }; } catch (e) {}
+try { document.getElementsByTagName("iframe")[0].contentDocument.getElementsByClassName("footer-mobile")[0].outerHTML = ""; } catch (e) {}
+
+}, 10)
+
+</script>
+</body>
+</html>
|