Loading CHANGELOG.md +1 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ Journal des modifications - Bandeau et pied de page de couleur rouge sur la version de test/démo et verte sur la version de dev. - Module Dépôt de thèse : diminution du temps d'affichage initial des pages (en supprimant le chargement asynchrone par bloc). - Module Admission : Ajout d'un privilège pour permettre de modifier un dossier lorsque le circuit de validations est commencé - Module HDR : uniquement des membres extérieurs à la COMUE pour les rapporteurs - Module Doctorant : - Recherche des doctorants, avec possibilité de filtrage par ED/UR/Étab (en fonction de l'utilisateur connecté) - Tableau de bord visible par le doctorant (dès la page d'accueil), ainsi que par la Maison du doctorat/Gestionnaire d'ED/UR/Responsable d'ED/UR Loading module/HDR/config/module.config.php +9 −0 Original line number Diff line number Diff line Loading @@ -393,4 +393,13 @@ return [ __DIR__ . '/../view', ], ], 'public_files' => [ 'inline_scripts' => [ ], 'stylesheets' => [ ], 'head_scripts' => [ '081_hdr' => "/js/hdr.js", ], ], ]; No newline at end of file module/Soutenance/view/soutenance/proposition/modifier-membre.phtml +20 −11 Original line number Diff line number Diff line <?php use Laminas\Form\Element; use Soutenance\Entity\Membre; use Soutenance\Entity\Proposition; use Soutenance\Form\Membre\MembreForm; use These\Entity\Db\These; Loading @@ -13,10 +14,7 @@ use These\Entity\Db\These; */ $object = $proposition->getObject(); ?> <?php if(isset($validationsDejaEffectuees) && $validationsDejaEffectuees): ?> <div class="alert alert-warning"> <span class="icon icon-attention"></span> Loading Loading @@ -46,21 +44,32 @@ if ($object->getEtablissement()->estComue()) { } echo $this->formControlGroup($form->get('exterieur')); echo $this->formControlGroup($form->get('visio')); echo $this->formControlGroup($form->get('role')); echo $this->formControlGroup($form->get('submit')); echo $this->form()->closeTag(); ?> echo $this->formControlGroup($form->get('visio')); ?> <div id="form-role-wrapper" data-hdr-roles-to-disable='<?= json_encode([ Membre::RAPPORTEUR_JURY, Membre::RAPPORTEUR_VISIO, Membre::RAPPORTEUR_ABSENT ]) ?>'> <?= $this->formControlGroup($form->get('role')); ?> </div> <div id="role-warning" class="mt-2" style="display: none;"> <div class="alert alert-warning"> <span class="icon icon-info"></span> Seuls des <strong>membres extérieurs à la COMUE</strong> peuvent être rapporteurs. </div> </div> <?php //echo $this->form($form); echo $this->formControlGroup($form->get('submit')); echo $this->form()->closeTag(); ?> <script> $('select').selectpicker(); document.addEventListener('DOMContentLoaded', initMembreForm); $(function () { $('select').selectpicker(); $('[data-bs-toggle="tooltip"]').tooltip({}); }); </script> public/js/hdr.js 0 → 100644 +59 −0 Original line number Diff line number Diff line //Préparation de la soutenance //MembreForm HDR function initMembreForm() { const pathname = window.location.pathname; const regex1 = /^\/soutenance\/hdr\/[^\/]+\/proposition\/modifier-membre\/?$/; const regex2 = /^\/soutenance\/hdr\/[^\/]+\/proposition\/?$/; if (!regex1.test(pathname) && !regex2.test(pathname)) { return; } const exterieurRadios = document.querySelectorAll('input[name="exterieur"]'); const roleRadios = document.querySelectorAll('input[name="role"]'); const warningBox = document.getElementById('role-warning'); const wrapper = document.getElementById('form-role-wrapper'); //Lecture de l'attribut data-hdr-roles-to-disable let rolesToDisable = []; try { const data = wrapper.getAttribute('data-hdr-roles-to-disable'); rolesToDisable = JSON.parse(data); } catch (e) { console.error('Impossible de lire data-hdr-roles-to-disable :', e); } function toggleRoleOptions() { const selected = document.querySelector('input[name="exterieur"]:checked'); const isExterieurOui = selected && selected.value === 'non'; roleRadios.forEach(function (radio) { if (rolesToDisable.includes(radio.value)) { // Décocher la case si elle doit être désactivée et qu'elle était déjà cochée if (radio.checked) { radio.checked = false; } radio.disabled = isExterieurOui; if (isExterieurOui) { radio.closest('label').classList.add('text-muted'); } else { radio.closest('label').classList.remove('text-muted'); } } }); if (warningBox) { warningBox.style.display = isExterieurOui ? 'block' : 'none'; } } toggleRoleOptions(); exterieurRadios.forEach(function (radio) { radio.addEventListener('change', toggleRoleOptions); }); } document.addEventListener('DOMContentLoaded', function () { }); No newline at end of file Loading
CHANGELOG.md +1 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ Journal des modifications - Bandeau et pied de page de couleur rouge sur la version de test/démo et verte sur la version de dev. - Module Dépôt de thèse : diminution du temps d'affichage initial des pages (en supprimant le chargement asynchrone par bloc). - Module Admission : Ajout d'un privilège pour permettre de modifier un dossier lorsque le circuit de validations est commencé - Module HDR : uniquement des membres extérieurs à la COMUE pour les rapporteurs - Module Doctorant : - Recherche des doctorants, avec possibilité de filtrage par ED/UR/Étab (en fonction de l'utilisateur connecté) - Tableau de bord visible par le doctorant (dès la page d'accueil), ainsi que par la Maison du doctorat/Gestionnaire d'ED/UR/Responsable d'ED/UR Loading
module/HDR/config/module.config.php +9 −0 Original line number Diff line number Diff line Loading @@ -393,4 +393,13 @@ return [ __DIR__ . '/../view', ], ], 'public_files' => [ 'inline_scripts' => [ ], 'stylesheets' => [ ], 'head_scripts' => [ '081_hdr' => "/js/hdr.js", ], ], ]; No newline at end of file
module/Soutenance/view/soutenance/proposition/modifier-membre.phtml +20 −11 Original line number Diff line number Diff line <?php use Laminas\Form\Element; use Soutenance\Entity\Membre; use Soutenance\Entity\Proposition; use Soutenance\Form\Membre\MembreForm; use These\Entity\Db\These; Loading @@ -13,10 +14,7 @@ use These\Entity\Db\These; */ $object = $proposition->getObject(); ?> <?php if(isset($validationsDejaEffectuees) && $validationsDejaEffectuees): ?> <div class="alert alert-warning"> <span class="icon icon-attention"></span> Loading Loading @@ -46,21 +44,32 @@ if ($object->getEtablissement()->estComue()) { } echo $this->formControlGroup($form->get('exterieur')); echo $this->formControlGroup($form->get('visio')); echo $this->formControlGroup($form->get('role')); echo $this->formControlGroup($form->get('submit')); echo $this->form()->closeTag(); ?> echo $this->formControlGroup($form->get('visio')); ?> <div id="form-role-wrapper" data-hdr-roles-to-disable='<?= json_encode([ Membre::RAPPORTEUR_JURY, Membre::RAPPORTEUR_VISIO, Membre::RAPPORTEUR_ABSENT ]) ?>'> <?= $this->formControlGroup($form->get('role')); ?> </div> <div id="role-warning" class="mt-2" style="display: none;"> <div class="alert alert-warning"> <span class="icon icon-info"></span> Seuls des <strong>membres extérieurs à la COMUE</strong> peuvent être rapporteurs. </div> </div> <?php //echo $this->form($form); echo $this->formControlGroup($form->get('submit')); echo $this->form()->closeTag(); ?> <script> $('select').selectpicker(); document.addEventListener('DOMContentLoaded', initMembreForm); $(function () { $('select').selectpicker(); $('[data-bs-toggle="tooltip"]').tooltip({}); }); </script>
public/js/hdr.js 0 → 100644 +59 −0 Original line number Diff line number Diff line //Préparation de la soutenance //MembreForm HDR function initMembreForm() { const pathname = window.location.pathname; const regex1 = /^\/soutenance\/hdr\/[^\/]+\/proposition\/modifier-membre\/?$/; const regex2 = /^\/soutenance\/hdr\/[^\/]+\/proposition\/?$/; if (!regex1.test(pathname) && !regex2.test(pathname)) { return; } const exterieurRadios = document.querySelectorAll('input[name="exterieur"]'); const roleRadios = document.querySelectorAll('input[name="role"]'); const warningBox = document.getElementById('role-warning'); const wrapper = document.getElementById('form-role-wrapper'); //Lecture de l'attribut data-hdr-roles-to-disable let rolesToDisable = []; try { const data = wrapper.getAttribute('data-hdr-roles-to-disable'); rolesToDisable = JSON.parse(data); } catch (e) { console.error('Impossible de lire data-hdr-roles-to-disable :', e); } function toggleRoleOptions() { const selected = document.querySelector('input[name="exterieur"]:checked'); const isExterieurOui = selected && selected.value === 'non'; roleRadios.forEach(function (radio) { if (rolesToDisable.includes(radio.value)) { // Décocher la case si elle doit être désactivée et qu'elle était déjà cochée if (radio.checked) { radio.checked = false; } radio.disabled = isExterieurOui; if (isExterieurOui) { radio.closest('label').classList.add('text-muted'); } else { radio.closest('label').classList.remove('text-muted'); } } }); if (warningBox) { warningBox.style.display = isExterieurOui ? 'block' : 'none'; } } toggleRoleOptions(); exterieurRadios.forEach(function (radio) { radio.addEventListener('change', toggleRoleOptions); }); } document.addEventListener('DOMContentLoaded', function () { }); No newline at end of file