diff --git a/page/_JS/career.js b/page/_JS/career.js index d49ef0d..2903271 100755 --- a/page/_JS/career.js +++ b/page/_JS/career.js @@ -5,7 +5,11 @@ /********************************/ /* GESTION DE L'AFFINAGE PAR UE */ /********************************/ -var partList = document.querySelectorAll("#CONTAINER > section[name] > table.partlist[name=UE], #CONTAINER > section[name] > table.partlist[name=semestre], #CONTAINER > section[name] > table.partlist[name=formation]"); +var selectList = document.querySelectorAll("#CONTAINER > section[name] > .p > select[name=annee]"); +var partList = document.querySelectorAll("#CONTAINER > section[name] > table.partlist[name=UE], "+ + "#CONTAINER > section[name] > table.partlist[name=semestre], "+ + "#CONTAINER > section[name] > table.partlist[name=formation], "+ + "#CONTAINER > section[name] > .p > div.partlist[name=semestre] > span[data-stre]"); for( var i = 0 ; i < partList.length ; i++ ){ @@ -40,13 +44,44 @@ for( var i = 0 ; i < partList.length ; i++ ){ pageM.vars.pop(); reload(); + + // import/export affinage par semestre + }else if( e.target.parentNode.getAttribute('name') == 'semestre' && e.target.dataset.hasOwnProperty('stre') ){ + pageM.vars[2] = 's:'+e.target.dataset.stre; + reload(); } + }, false); } +// GESTION DE L'AFFINAGE PAR ANNEE // +for( var i = 0 ; i < selectList.length ; i++ ){ + + selectList[i].addEventListener('change', function(e){ + + if( e.target.tagName == 'SELECT' ){ + + if( e.target.getAttribute('name') == 'annee' ) + pageM.vars[1] = 'a:'+e.target.value; + + // si la formation n'est pas définie, on l'active + if( !/^[fa]:/.test(pageM.vars[1]) ) + if( document.querySelector('#CONTAINER > section[name] > table.partlist[name=formation] td[data-value].active') != null ) + pageM.vars[1] = 'f:'+document.querySelector('#CONTAINER > section[name] > table.partlist[name=formation] td[data-value].active').dataset.value; + + // si on a '*' comme valeur, on l'enlève + while( /\*$/.test(pageM.vars[pageM.vars.length-1]) ) + pageM.vars.pop(); + + reload(); + } + + }, false); + +} diff --git a/page/_JS/modules.js b/page/_JS/modules.js index d835600..6aed31e 100755 --- a/page/_JS/modules.js +++ b/page/_JS/modules.js @@ -34,10 +34,10 @@ for( var i = 0 ; i < partList.length ; i++ ){ /* SI c'est un affinage par UE */ if( tableauParent.getAttribute('name') == 'UE' ) pageM.vars[2] = 'u:'+e.target.dataset.value; - - }else if( e.target.parentNode.getAttribute('name') == 'semestre' && e.target.dataset.hasOwnProperty('stre') ){ + + // import/export affinage par semestre + }else if( e.target.parentNode.getAttribute('name') == 'semestre' && e.target.dataset.hasOwnProperty('stre') ) pageM.vars[2] = 's:'+e.target.dataset.stre; - } // si la formation n'est pas définie, on l'active if( !/^[fa]:/.test(pageM.vars[1]) ) diff --git a/page/career.php b/page/career.php index 6154c7f..fa6d601 100755 --- a/page/career.php +++ b/page/career.php @@ -14,6 +14,7 @@ require_once __ROOT__.'/manager/security.php'; $ueOpt = null; $semestreOpt = null; $formationOpt = null; + $anneeOpt = null; // on cherche dans toutes les variables _get si on trouve des paramètres foreach($_POST as $k=>$v){ @@ -36,6 +37,9 @@ require_once __ROOT__.'/manager/security.php'; if( preg_match('/^f:(.+)$/', $k, $m) ) // f:codeFormation $formationOpt = $m[1]; + if( preg_match('/^a:(.+)$/', $k, $m) ) // a:annee + $anneeOpt = $m[1]; + } $controleOpt = ($controleOpt == null || $controleOpt == '*') ? null : $controleOpt; @@ -44,6 +48,7 @@ require_once __ROOT__.'/manager/security.php'; $ueOpt = ($ueOpt == null || $ueOpt == '*') ? null : $ueOpt; $semestreOpt = ($semestreOpt == null || $semestreOpt == '*') ? null : $semestreOpt; $formationOpt = ($formationOpt == null || $formationOpt == '*') ? null : $formationOpt; + $anneeOpt = ($anneeOpt == null || $anneeOpt == '*') ? null : $anneeOpt; /**************************************** * * @@ -820,6 +825,212 @@ elseif( permission('master') || permission('admin') ){ // si enseignant et qu'un +/****************************************************************/ +/****************************************************************/ +/*** IMPORT/EXPORT APPRÉCIATIONS JURY ***/ +/* +* +* [1] Export modèle pour semestre +* [2] Import pour semestre +* +*/ + +if( permission('master') || permission('admin') ){ + + echo "
"; + + /* [1] Exportation + ==========================================*/ + + // si annéeOpt n'est pas définie, on le fait + if( $anneeOpt == null ) $anneeOpt = $_SESSION['annee']; + + /* ON RÉCUPÈRE LA LISTE DES SEMESTRES EN FONCTION DE L'ANNEE */ + $request = new stdClass(); $answer = new stdClass(); + $request->level_1 = 'getSemestres'; + groupsManager::switch_level_1($request, $answer); // on fait la requête pour les groupes en fonction des filtres si définis + + if( $answer->request == 'success' ){ // si pas d'erreur + echo "
"; + + $anneesListe = array(); + + /**********************/ + /* AFFINAGE PAR ANNEE */ + /**********************/ + echo "Exportation des MCC d'un semestre
"; + echo "(Format compatible Microsoft Office, Open Office et Libre Office)
"; + + /* AFFINAGE POUR LES 5 ANNEES SUIVANTES */ + echo "

"; + + + + /*************************/ + /* AFFINAGE PAR SEMESTRE */ + /*************************/ + $semestresListe = array(); + foreach($answer->yearList as $annee){ if( $annee['annee'] == $anneeOpt ){ // on récupère la liste des ids + foreach($annee['semestres'] as $semestre){ if( !in_array($semestre['id'], $semestresListe) ){ + array_push($semestresListe, $semestre['id']); + }} + }} + + // si semestreOpt n'est pas cohérent (pas pour cette année), on lui donne une valeur cohérente + if( !in_array($semestreOpt, $semestresListe) ) $semestreOpt = null; + if( $semestreOpt == null && count($semestresListe) > 0 ) $semestreOpt = $semestresListe[0]; + + + $count = 0; + echo "
"; + /* On récupère la liste des SEMESTRES en accord avec l'ANNEE sélectionnée */ + foreach($answer->yearList as $annee){ if( $anneeOpt == $annee['annee'] ){ + foreach($annee['semestres'] as $semestre){ if( in_array($semestre['id'], $semestresListe) ){ + $count++; + + + if( $semestre['id'] == $semestreOpt ) // si c'est le semestre séléctionné + echo "".$semestre['formation']." - ".$semestre['nom'].''; + else // sinon on affiche normalement + echo "".$semestre['formation']." - ".$semestre['nom'].''; + + }} + }} + echo "


"; + + + if( $count == 0 ) // si on a trouvé aucun semestre + echo "Aucun semestre pour cette année

"; + else{ + + // si on a selectionné un semestre + if( $semestreOpt != null ) + foreach($answer->yearList as $annee){ if( $anneeOpt == $annee['annee'] ){ foreach($annee['semestres'] as $semestre){ if( $semestreOpt == $semestre['id'] ){ + echo "".$semestre['nb_etudiants']." étudiants

"; + }}}} + else{ // si on a selectionné "Tous" + $nbTotal = 0; + foreach($answer->yearList as $annee){ if( $anneeOpt == $annee['annee'] ){ foreach($annee['semestres'] as $semestre){ + $nbTotal += $semestre['nb_etudiants']; + }}} + echo "".$nbTotal." étudiants

"; + } + + } + + + + echo "
Générer le fichier
"; + echo "
Télécharger le fichier
"; + + + echo "
"; + + + + + + + + // l'admin peut importer un MCC + if( permission('admin') ){ + /* [2] Importation + ==========================================*/ + + $currentYear = getCurrentYear(); + // si annéeOpt n'est pas définie, on le fait + if( $anneeOpt == null || $anneeOpt < $currentYear || $anneeOpt > $currentYear+5 ) $anneeOpt = $currentYear; + $anneeOpt = intval($anneeOpt); // on met l'année en (int) + + echo "
"; + echo "Importation des MCC d'un semestre
"; + echo "(Fichier .xlsx suivant le modèle : modèle de fichier)
"; + + + /**********************/ + /* AFFINAGE PAR ANNEE */ + /**********************/ + + /* AFFINAGE POUR LES 5 ANNEES SUIVANTES */ + echo "
"; + + + /*************************/ + /* AFFINAGE PAR SEMESTRE */ + /*************************/ + /* On récupère la liste des SEMESTRES en accord avec l'ANNEE sélectionnée */ + $semestresListe = array(); + foreach($answer->yearList as $annee){ if( $annee['annee'] == $anneeOpt ){ // on récupère la liste des ids + foreach($annee['semestres'] as $semestre){ if( !in_array($semestre['id'], $semestresListe) ){ + array_push($semestresListe, $semestre['id']); + }} + }} + + // si semestreOpt n'est pas cohérent (pas pour cette année) + if( !in_array($semestreOpt, $semestresListe) ) $semestreOpt = null; + if( $semestreOpt == null && count($semestresListe) > 0 ) $semestreOpt = $semestresListe[0]; + + + $count = 0; + + foreach($answer->yearList as $annee){ if( $anneeOpt == $annee['annee'] ){ + $count++; + + echo "
"; + foreach($annee['semestres'] as $semestre){ if( in_array($semestre['id'], $semestresListe) ){ + + if( $semestre['id'] == $semestreOpt ) // si c'est le semestre séléctionné + echo "".$semestre['formation']." - ".$semestre['nom'].''; + else // sinon on affiche normalement + echo "".$semestre['formation']." - ".$semestre['nom'].''; + + }} + echo "


"; + }} + + if( $count == 0 ) + echo "Créer un semestre

"; + + + + if( $semestreOpt != null ) + echo "
Importer les décisions du jury
"; + + echo "
"; + + }else + echo "