Modifications et rectifications mineures + création page career@jury (export/import) + affinage career@jury

This commit is contained in:
xdrm-brackets 2016-01-02 17:16:14 +01:00
parent e25aa52d96
commit 9e9356d95f
4 changed files with 251 additions and 5 deletions

View File

@ -5,7 +5,11 @@
/********************************/ /********************************/
/* GESTION DE L'AFFINAGE PAR UE */ /* 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++ ){ for( var i = 0 ; i < partList.length ; i++ ){
@ -40,13 +44,44 @@ for( var i = 0 ; i < partList.length ; i++ ){
pageM.vars.pop(); pageM.vars.pop();
reload(); 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); }, 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);
}

View File

@ -35,9 +35,9 @@ for( var i = 0 ; i < partList.length ; i++ ){
if( tableauParent.getAttribute('name') == 'UE' ) if( tableauParent.getAttribute('name') == 'UE' )
pageM.vars[2] = 'u:'+e.target.dataset.value; 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; pageM.vars[2] = 's:'+e.target.dataset.stre;
}
// si la formation n'est pas définie, on l'active // si la formation n'est pas définie, on l'active
if( !/^[fa]:/.test(pageM.vars[1]) ) if( !/^[fa]:/.test(pageM.vars[1]) )

View File

@ -14,6 +14,7 @@ require_once __ROOT__.'/manager/security.php';
$ueOpt = null; $ueOpt = null;
$semestreOpt = null; $semestreOpt = null;
$formationOpt = null; $formationOpt = null;
$anneeOpt = null;
// on cherche dans toutes les variables _get si on trouve des paramètres // on cherche dans toutes les variables _get si on trouve des paramètres
foreach($_POST as $k=>$v){ foreach($_POST as $k=>$v){
@ -36,6 +37,9 @@ require_once __ROOT__.'/manager/security.php';
if( preg_match('/^f:(.+)$/', $k, $m) ) // f:codeFormation if( preg_match('/^f:(.+)$/', $k, $m) ) // f:codeFormation
$formationOpt = $m[1]; $formationOpt = $m[1];
if( preg_match('/^a:(.+)$/', $k, $m) ) // a:annee
$anneeOpt = $m[1];
} }
$controleOpt = ($controleOpt == null || $controleOpt == '*') ? null : $controleOpt; $controleOpt = ($controleOpt == null || $controleOpt == '*') ? null : $controleOpt;
@ -44,6 +48,7 @@ require_once __ROOT__.'/manager/security.php';
$ueOpt = ($ueOpt == null || $ueOpt == '*') ? null : $ueOpt; $ueOpt = ($ueOpt == null || $ueOpt == '*') ? null : $ueOpt;
$semestreOpt = ($semestreOpt == null || $semestreOpt == '*') ? null : $semestreOpt; $semestreOpt = ($semestreOpt == null || $semestreOpt == '*') ? null : $semestreOpt;
$formationOpt = ($formationOpt == null || $formationOpt == '*') ? null : $formationOpt; $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 "<section name='importjury' data-title='Jury' class='basic'>";
/* [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 "<div class='p center'>";
$anneesListe = array();
/**********************/
/* AFFINAGE PAR ANNEE */
/**********************/
echo "Exportation des MCC d'un semestre<br>";
echo "<span style='font-size:.8em;'>(Format compatible Microsoft Office, Open Office et Libre Office)</span><br>";
/* AFFINAGE POUR LES 5 ANNEES SUIVANTES */
echo "<select name='annee'>";
foreach($answer->yearList as $annee){ if( !in_array($annee['annee'], $anneesListe) ){ // pour éviter les doublons
if( $anneeOpt == $annee['annee'] ) // on préselectionne l'année selectionnée
echo "<option value='".$annee['annee']."' selected>".anneeScolaire($annee['annee'])."</option>";
else
echo "<option value='".$annee['annee']."'>".anneeScolaire($annee['annee'])."</option>";
array_push($anneesListe, $annee['annee']);
}}
echo "</select><br><br>";
/*************************/
/* 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 "<div class='partlist' name='semestre'>";
/* 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 "<span data-year='".$annee['annee']."' data-frm='".$semestre['id_formation']."' data-stre='".$semestre['id']."' class='active'>".$semestre['formation']." - ".$semestre['nom'].'</span>';
else // sinon on affiche normalement
echo "<span data-year='".$annee['annee']."' data-frm='".$semestre['id_formation']."' data-stre='".$semestre['id']."'>".$semestre['formation']." - ".$semestre['nom'].'</span>';
}}
}}
echo "</div><br><br>";
if( $count == 0 ) // si on a trouvé aucun semestre
echo "<span class='unstressed'>Aucun semestre pour cette année</span><br><br>";
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 "<span class='unstressed'>".$semestre['nb_etudiants']." étudiants</span><br><br>";
}}}}
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 "<span class='unstressed'>".$nbTotal." étudiants</span><br><br>";
}
}
echo "<div data-year='".$anneeOpt."' data-stre='".$semestreOpt."' class='confirm active center'>Générer le fichier</div>";
echo "<div data-year='".$anneeOpt."' data-stre='".$semestreOpt."' class='confirm active center'>Télécharger le fichier</div>";
echo "</div>";
// 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 "<div class='p center'>";
echo "Importation des MCC d'un semestre<br>";
echo "<span style='font-size:.8em;'>(Fichier .xlsx suivant le modèle : <a href='/src/files/modele_import_mcc.xlsx'>modèle de fichier</a>)</span><br>";
/**********************/
/* AFFINAGE PAR ANNEE */
/**********************/
/* AFFINAGE POUR LES 5 ANNEES SUIVANTES */
echo "<select name='annee'>";
for($i = 0 ; $i < 5 ; $i++){
if( $anneeOpt == $currentYear+$i ) // on préselectionne l'année selectionnée
echo "<option value='".($currentYear+$i)."' selected>".anneeScolaire($currentYear+$i)."</option>";
else
echo "<option value='".($currentYear+$i)."'>".anneeScolaire($currentYear+$i)."</option>";
}
echo "</select><br>";
/*************************/
/* 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 "<div class='partlist' name='semestre'>";
foreach($annee['semestres'] as $semestre){ if( in_array($semestre['id'], $semestresListe) ){
if( $semestre['id'] == $semestreOpt ) // si c'est le semestre séléctionné
echo "<span data-frm='".$semestre['id_formation']."' data-stre='".$semestre['id']."' class='active'>".$semestre['formation']." - ".$semestre['nom'].'</span>';
else // sinon on affiche normalement
echo "<span data-frm='".$semestre['id_formation']."' data-stre='".$semestre['id']."'>".$semestre['formation']." - ".$semestre['nom'].'</span>';
}}
echo "</div><br><br>";
}}
if( $count == 0 )
echo "<span class='link' id='link_semestre'>Créer un semestre</span><br><br>";
if( $semestreOpt != null )
echo "<div data-stre='".$semestreOpt."' class='confirm active center'>Importer les décisions du jury<input type='file' id='import_jury'></div>";
echo "</div>";
}else
echo "<div class='p center>Erreur interne...</div>";
}
echo "</section>";
}