Ajout de page/career vision professeur correcteur sur ses modules et les notes données aux groupes s'il y en a (moyenne, note min, max, ..) et possibilité d'affinage et donc d'afficher les élèves d'un groupe pour un partiel particulier
This commit is contained in:
parent
6a2151caa1
commit
334272f0d1
|
@ -112,7 +112,6 @@ table.basic tr:hover td{ background-color: #fff; }
|
||||||
/* .transparentbg */
|
/* .transparentbg */
|
||||||
table.basic tr.transparentbg > td{ background-color: transparent; }
|
table.basic tr.transparentbg > td{ background-color: transparent; }
|
||||||
table.basic tr.transparentbg:hover > td{ background-color: transparent; }
|
table.basic tr.transparentbg:hover > td{ background-color: transparent; }
|
||||||
table.basic tr.transparentbg .link{ background-color: #fff; }
|
|
||||||
table.basic tr.transparentbg > td{ color: inherit; }
|
table.basic tr.transparentbg > td{ color: inherit; }
|
||||||
|
|
||||||
|
|
||||||
|
@ -150,7 +149,7 @@ span.link{
|
||||||
box-shadow: inset 0 0 1px #f5f5f5;
|
box-shadow: inset 0 0 1px #f5f5f5;
|
||||||
|
|
||||||
/* background */
|
/* background */
|
||||||
background: #eee;
|
background: #fff;
|
||||||
|
|
||||||
/* foreground */
|
/* foreground */
|
||||||
color: #333;
|
color: #333;
|
||||||
|
@ -158,7 +157,7 @@ span.link{
|
||||||
/* extra */
|
/* extra */
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
table.basic td > span.link{ background: #eee; }
|
||||||
span.link:hover{ color: #000; }
|
span.link:hover{ color: #000; }
|
||||||
|
|
||||||
/*********************/
|
/*********************/
|
||||||
|
|
|
@ -93,16 +93,20 @@ var connected = !( DOM.AUTH.children[0].innerHTML == 'Connexion' );
|
||||||
/* GESTION DES CATEGORIES (SECTIONS)
|
/* GESTION DES CATEGORIES (SECTIONS)
|
||||||
*
|
*
|
||||||
* @param section<Element> l'élément à activer
|
* @param section<Element> l'élément à activer
|
||||||
|
* @param clearParam<Boolean> VRAI si on doit supprimer les variables de l'URL
|
||||||
*
|
*
|
||||||
* [1] selectionne l'élément, l'affichage de la page associée est géré par pageManager.js
|
* [1] selectionne l'élément, l'affichage de la page associée est géré par pageManager.js
|
||||||
* [2] déselectionne l'élément précédemment selectioné
|
* [2] déselectionne l'élément précédemment selectioné
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
function selectSection(section){
|
function selectSection(section, clearParam){
|
||||||
|
|
||||||
// si @subSection est un <Element> de type <li> qui a la propriété "data-link" [ET] section pas déjà active
|
// si @subSection est un <Element> de type <li> qui a la propriété "data-link" [ET] section pas déjà active
|
||||||
if( section instanceof Element && section.tagName == 'SPAN' && section.dataset.hasOwnProperty('link') ){
|
if( section instanceof Element && section.tagName == 'SPAN' && section.dataset.hasOwnProperty('link') ){
|
||||||
|
|
||||||
|
if( clearParam === true ) // si clearParam est vrai
|
||||||
|
pageM.vars = new Array(pageM.vars[0]); // on efface les paramètres de l'URL
|
||||||
|
|
||||||
// on charge la page
|
// on charge la page
|
||||||
pageM.setPage( section.dataset.link );
|
pageM.setPage( section.dataset.link );
|
||||||
|
|
||||||
|
@ -146,13 +150,16 @@ var connected = !( DOM.AUTH.children[0].innerHTML == 'Connexion' );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// permet de recharger la page courante
|
||||||
|
function reload(){ selectSection( document.querySelector('#MENU span[data-link='+pageM.page+']') ); }
|
||||||
|
|
||||||
/* activation au chargement en fonction de la page courante de pageManager.js */
|
/* activation au chargement en fonction de la page courante de pageManager.js */
|
||||||
var lastSection = document.querySelector('#MENU span[data-link='+pageM.page+']');
|
var lastSection = document.querySelector('#MENU span[data-link='+pageM.page+']');
|
||||||
if( lastSection != null )
|
if( lastSection != null )
|
||||||
selectSection(lastSection); // on l'active
|
selectSection(lastSection); // on l'active
|
||||||
|
|
||||||
/* Gestion des liens du menu */
|
/* Gestion des liens du menu */
|
||||||
DOM.MENU.addEventListener('click', function(e){ selectSection( e.target ); }, false);
|
DOM.MENU.addEventListener('click', function(e){ selectSection( e.target, true); }, false);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -89,6 +89,39 @@ require_once __ROOT__.'/manager/database.php';
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
/************************************/
|
||||||
|
/* liste des notes pour un contrôle */
|
||||||
|
/************************************/
|
||||||
|
case 'getNotesEnseignant': if( permission('teacher') ){
|
||||||
|
|
||||||
|
$areSetParam = isset($request->enseignant) && isset($request->controle); // les arguments existent
|
||||||
|
$typeOkParam = $areSetParam && is_string($request->enseignant); // si c'est des strings
|
||||||
|
$nEmptyParam = $typeOkParam && strlen($request->enseignant) > 0 && is_numeric($request->controle); // des bon types
|
||||||
|
$enseignantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->enseignant); // nom bon format
|
||||||
|
|
||||||
|
// paramètre optionnel
|
||||||
|
$optionalGroupe = isset($request->groupe) && is_string($request->groupe) && strlen($request->groupe) > 1 && preg_match('/^[a-z0-9 -]{1,10}$/i', $request->groupe);
|
||||||
|
|
||||||
|
// définition (ou pas) du paramètre optionnel
|
||||||
|
if( $optionalGroupe ) $groupe = $request->groupe;
|
||||||
|
else $groupe = null;
|
||||||
|
|
||||||
|
if( $enseignantCheck ){ // si tout les paramètres sont bons
|
||||||
|
$controle = DataBase::getInstance()->getNotesEnseignant($request->enseignant, $request->controle, $groupe);
|
||||||
|
|
||||||
|
if( is_array($controle) ){ // si on a bien un tableau
|
||||||
|
$answer->controle = $controle; // on renvoie dans answer->controle
|
||||||
|
$answer->request = 'success'; // et on renvoie success
|
||||||
|
}else // sinon si c'est pas un tableau
|
||||||
|
$answer->request = $controle; // on retourne l'erreur
|
||||||
|
}else
|
||||||
|
$answer->request = 'param_error';
|
||||||
|
|
||||||
|
}else
|
||||||
|
$answer->request = 'permission_error';
|
||||||
|
break;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***********/
|
/***********/
|
||||||
|
|
|
@ -652,6 +652,31 @@ class DataBase{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/********************************************/
|
||||||
|
/*** retourne les notes pour un contrôle ***/
|
||||||
|
/********************************************/
|
||||||
|
public function getNotesEnseignant($enseignant, $controle, $groupe=null){ // [OPTIONNEL] $groupe
|
||||||
|
|
||||||
|
// on récupère l'UID du contrôle, s'il existe
|
||||||
|
if( $groupe != null )
|
||||||
|
if( !($groupeUID=groupRepo::UID($groupe)) ) return 'unknown_group'; else $groupeUID = (int) $groupeUID;
|
||||||
|
else
|
||||||
|
$groupeUID = null;
|
||||||
|
|
||||||
|
// on récupère les informations du contrôle
|
||||||
|
if( ! ($noteList=controleRepo::info($controle)) ) return 'unknown_controle';
|
||||||
|
|
||||||
|
$noteList['notes'] = noteRepo::forTeacher($controle, $groupeUID);
|
||||||
|
|
||||||
|
|
||||||
|
return $noteList;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**************************************/
|
/**************************************/
|
||||||
/*** retourne les notes d'un module ***/
|
/*** retourne les notes d'un module ***/
|
||||||
/**************************************/
|
/**************************************/
|
||||||
|
|
|
@ -19,7 +19,12 @@ class controleRepo extends DBAccess{
|
||||||
*/
|
*/
|
||||||
public static function info($controleUID){
|
public static function info($controleUID){
|
||||||
// on considère que le semestre existe
|
// on considère que le semestre existe
|
||||||
$getControleInfo = DataBase::getPDO()->prepare("SELECT id_controle as id, id_mcc_module, intitule, base, coefficient, date_publication FROM controle WHERE id_controle = :controleUID");
|
$getControleInfo = DataBase::getPDO()->prepare("SELECT ctrl.id_controle as id, ctrl.id_mcc_module, m.nom as module, m.libelle as modulelib, ctrl.intitule, ctrl.base, ctrl.coefficient, ctrl.date_publication ".
|
||||||
|
"FROM controle as ctrl, mcc_module as mcc_m, module as m ".
|
||||||
|
"WHERE ctrl.id_mcc_module = mcc_m.id_mcc_module ".
|
||||||
|
"AND mcc_m.id_module = m.id_module ".
|
||||||
|
|
||||||
|
"AND id_controle = :controleUID");
|
||||||
$getControleInfo->execute(array(
|
$getControleInfo->execute(array(
|
||||||
':controleUID' => $controleUID
|
':controleUID' => $controleUID
|
||||||
));
|
));
|
||||||
|
@ -71,9 +76,10 @@ class controleRepo extends DBAccess{
|
||||||
*/
|
*/
|
||||||
public static function forTeacher($enseignant, $module, $semestre){
|
public static function forTeacher($enseignant, $module, $semestre){
|
||||||
$getControleList = DataBase::getPDO()->prepare("SELECT DISTINCT ctrl.id_controle as id, ctrl.id_mcc_module, ctrl.intitule, ctrl.base, ctrl.coefficient, ctrl.date_publication ".
|
$getControleList = DataBase::getPDO()->prepare("SELECT DISTINCT ctrl.id_controle as id, ctrl.id_mcc_module, ctrl.intitule, ctrl.base, ctrl.coefficient, ctrl.date_publication ".
|
||||||
"FROM enseignement as ens, mcc_module as mcc_m, mcc_ue, controle as ctrl ".
|
"FROM enseignement as ens, module as m, mcc_module as mcc_m, mcc_ue, controle as ctrl ".
|
||||||
"WHERE ens.id_mcc_module = mcc_m.id_mcc_module ".
|
"WHERE ens.id_mcc_module = mcc_m.id_mcc_module ".
|
||||||
"AND mcc_m.id_mcc_module = ctrl.id_mcc_module ".
|
"AND mcc_m.id_mcc_module = ctrl.id_mcc_module ".
|
||||||
|
"AND mcc_m.id_module = m.id_module ".
|
||||||
"AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ".
|
"AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ".
|
||||||
|
|
||||||
"AND ens.id_enseignant = :enseignant ".
|
"AND ens.id_enseignant = :enseignant ".
|
||||||
|
|
|
@ -114,20 +114,27 @@ class noteRepo extends DBAccess{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/* RENVOIE LES NOTES POUR UN CONTROLE PARTICULIER
|
||||||
** PAS UTILISÉ POUR L'INSTANT
|
*
|
||||||
*/
|
* [1] Par groupe si aucun groupe spécifié (statistiques: moyenne, min, max, nb notes, ...)
|
||||||
|
* [2] Liste des élèves d'un groupe si aucun groupe spécifié
|
||||||
|
*
|
||||||
/* RENVOIE LES NOTES DES ETUDIANTS POUR UN CONTROLE PARTICULIER
|
|
||||||
*
|
*
|
||||||
* @controle<int> l'UID du controle concerné
|
* @controle<int> l'UID du controle concerné
|
||||||
*
|
*
|
||||||
* @return notes<Array> retourne les notes des étudiants pour un controle particulier
|
* @groupe<int> ***OPTIONNEL*** l'UID du groupe spécifique
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @return notes<Array> [1] retourne les stats des notes pour les groupes à ce contrôle
|
||||||
|
* [2] retourne les notes des étudiants du groupe spécifié pour ce contrôle
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public static function forTeacher($controle){
|
public static function forTeacher($controle, $groupe=null){
|
||||||
$getNoteList = DataBase::getPDO()->prepare("SELECT DISTINCT g.id_groupe, g.nom as groupe, n.id_note as id, n.id_appartenance, n.id_controle, AVG(n.valeur) as moyenne, min(n.valeur) as min, max(n.valeur) as max, COUNT(n.valeur) as nb_notes ".
|
/* [1] Statistiques des groupes
|
||||||
|
============================================================*/
|
||||||
|
if( !is_int($groupe) ){
|
||||||
|
|
||||||
|
$getNoteList = DataBase::getPDO()->prepare("SELECT DISTINCT g.id_groupe, g.nom as groupe, n.id_note as id, n.id_appartenance, n.id_controle, AVG(n.valeur) as valeur, min(n.valeur) as min, max(n.valeur) as max, COUNT(n.valeur) as nb_notes ".
|
||||||
"FROM note as n, appartenance as app, semestre as s, controle as ctrl, mcc_ue, mcc_module as mcc_m, groupe as g ".
|
"FROM note as n, appartenance as app, semestre as s, controle as ctrl, mcc_ue, mcc_module as mcc_m, groupe as g ".
|
||||||
"WHERE n.id_appartenance = app.id_appartenance ".
|
"WHERE n.id_appartenance = app.id_appartenance ".
|
||||||
"AND app.id_semestre = s.id_semestre ".
|
"AND app.id_semestre = s.id_semestre ".
|
||||||
|
@ -144,9 +151,31 @@ class noteRepo extends DBAccess{
|
||||||
"ORDER BY g.nom ASC");
|
"ORDER BY g.nom ASC");
|
||||||
$getNoteList->execute(array( ':controle' => $controle ));
|
$getNoteList->execute(array( ':controle' => $controle ));
|
||||||
|
|
||||||
|
|
||||||
|
/* [2] Notes des étudiants d'un groupe
|
||||||
|
============================================================*/
|
||||||
|
}else{
|
||||||
|
|
||||||
|
$getNoteList = DataBase::getPDO()->prepare("SELECT DISTINCT n.id_note as id, g.nom as groupe, app.id_etudiant as etudiant, n.id_appartenance, n.id_controle, n.valeur ".
|
||||||
|
"FROM note as n, appartenance as app, semestre as s, controle as ctrl, mcc_ue, mcc_module as mcc_m, groupe as g ".
|
||||||
|
"WHERE n.id_appartenance = app.id_appartenance ".
|
||||||
|
"AND app.id_semestre = s.id_semestre ".
|
||||||
|
"AND app.id_groupe = g.id_groupe ".
|
||||||
|
"AND s.id_semestre = mcc_ue.id_semestre ".
|
||||||
|
"AND mcc_ue.id_mcc_ue = mcc_m.id_mcc_ue ".
|
||||||
|
"AND mcc_m.id_mcc_module = ctrl.id_mcc_module ".
|
||||||
|
"AND n.id_controle = ctrl.id_controle ".
|
||||||
|
|
||||||
|
"AND ctrl.id_controle = :controle ".
|
||||||
|
"AND app.id_groupe = :groupe ".
|
||||||
|
|
||||||
|
"ORDER BY g.nom ASC");
|
||||||
|
$getNoteList->execute(array( ':controle' => $controle, ':groupe' => $groupe ));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
return DataBase::delNumeric( $getNoteList->fetchAll() );
|
return DataBase::delNumeric( $getNoteList->fetchAll() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
|
@ -5,17 +5,90 @@
|
||||||
/***********************************************/
|
/***********************************************/
|
||||||
if( document.querySelector('#CONTAINER section[name=controlesenseignants]') ){ // on traite uniquement si la section est définie
|
if( document.querySelector('#CONTAINER section[name=controlesenseignants]') ){ // on traite uniquement si la section est définie
|
||||||
// on récupère les liens
|
// on récupère les liens
|
||||||
var groupLinks = document.querySelectorAll('#CONTAINER section[name=controlesenseignants] table.basic table.basic tr td span.link.group');
|
|
||||||
|
|
||||||
for( var i = 0 ; i < groupLinks.length ; i++ ) // on active un évènement pour le clic sur les nom de groupes
|
// /**************************************************/
|
||||||
groupLinks[i].addEventListener('click', function(e){
|
// /* GESTION DES LIENS POUR LES CONTRÔLES & GROUPES */
|
||||||
|
// /**************************************************/
|
||||||
|
// var groupControlList = document.querySelectorAll('#CONTAINER section[name=controlesenseignants] table.basic table.basic tr td span.link.grp.ctrl');
|
||||||
|
|
||||||
|
// for( var i = 0 ; i < groupControlList.length ; i++ ) // on active un évènement pour le clic sur les nom de groupes
|
||||||
|
// groupControlList[i].addEventListener('click', function(e){
|
||||||
|
|
||||||
|
// if( e.target.className == 'link grp ctrl' && e.target.dataset.hasOwnProperty('grp') && e.target.dataset.hasOwnProperty('ctrl') ){ // s'il s'agit bien d'un nom de groupe
|
||||||
|
// pageM.vars[2] = e.target.dataset.grp; // le groupe en question
|
||||||
|
// pageM.vars[1] = e.target.dataset.ctrl; // le contrôle en question
|
||||||
|
// reload();
|
||||||
|
// }
|
||||||
|
// }, false);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// /****************************************/
|
||||||
|
// /* GESTION DES LIENS POUR LES CONTRÔLES */
|
||||||
|
// /****************************************/
|
||||||
|
// // on récupère les liens
|
||||||
|
// var controleLinks = document.querySelectorAll('#CONTAINER section[name=controlesenseignants] table.basic span.link.ctrl');
|
||||||
|
|
||||||
|
// for( var i = 0 ; i < controleLinks.length ; i++ ) // on active un évènement pour le clic sur les nom de groupes
|
||||||
|
// controleLinks[i].addEventListener('click', function(e){
|
||||||
|
|
||||||
|
// if( e.target.className == 'link ctrl' && e.target.dataset.hasOwnProperty('ctrl') ){ // s'il s'agit bien d'un nom de groupe
|
||||||
|
// if( pageM.vars.length > 2 ) // si le groupe est défini, on le dé-défini
|
||||||
|
// pageM.vars.pop();
|
||||||
|
|
||||||
|
// pageM.vars[1] = e.target.dataset.ctrl; // le contrôle en question
|
||||||
|
// reload();
|
||||||
|
// }
|
||||||
|
// }, false);
|
||||||
|
|
||||||
|
// /**************************************/
|
||||||
|
// /* GESTION DES LIENS POUR LES GROUPES */
|
||||||
|
// /**************************************/
|
||||||
|
// // on récupère les liens
|
||||||
|
// var groupList = document.querySelectorAll('#CONTAINER section[name=controlesenseignants] table.basic span.link.grp');
|
||||||
|
|
||||||
|
// for( var i = 0 ; i < groupList.length ; i++ ) // on active un évènement pour le clic sur les nom de groupes
|
||||||
|
// groupList[i].addEventListener('click', function(e){
|
||||||
|
|
||||||
|
// if( e.target.className == 'link grp' && e.target.dataset.hasOwnProperty('grp') ){ // s'il s'agit bien d'un nom de groupe
|
||||||
|
// pageM.vars[2] = e.target.dataset.grp; // le contrôle en question
|
||||||
|
// console.log( e.target.dataset.grp );
|
||||||
|
// reload();
|
||||||
|
// }
|
||||||
|
// }, false);
|
||||||
|
|
||||||
|
controlesenseignantSection = document.querySelector('#CONTAINER section[name=controlesenseignants]');
|
||||||
|
if( controlesenseignantSection != null ){ // si la section enseignant est présente sur la page
|
||||||
|
|
||||||
|
controlesenseignantSection.addEventListener('click', function(e){ // on créé l'évènement
|
||||||
|
|
||||||
|
/* LIENS POUR LES GROUPES ET CONTRÔLES */
|
||||||
|
if( e.target.className == 'link grp ctrl' && e.target.dataset.hasOwnProperty('grp') && e.target.dataset.hasOwnProperty('ctrl') ){
|
||||||
|
pageM.vars[1] = e.target.dataset.ctrl;
|
||||||
|
pageM.vars[2] = e.target.dataset.grp;
|
||||||
|
reload();
|
||||||
|
|
||||||
if( e.target.className == 'link group' && e.target.dataset.hasOwnProperty('grp') && e.target.dataset.hasOwnProperty('ctrl') ){ // s'il s'agit bien d'un nom de groupe
|
|
||||||
console.log('id_groupe: '+ e.target.dataset.grp +', id_controle: '+ e.target.dataset.ctrl );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* LIENS POUR LES GROUPES */
|
||||||
|
if( e.target.className == 'link grp' && e.target.dataset.hasOwnProperty('grp') ){
|
||||||
|
pageM.vars[2] = e.target.dataset.grp;
|
||||||
|
reload();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* LIENS POUR LES CONTRÔLES */
|
||||||
|
if( e.target.className == 'link ctrl' && e.target.dataset.hasOwnProperty('ctrl') ){
|
||||||
|
pageM.vars[1] = e.target.dataset.ctrl;
|
||||||
|
|
||||||
|
if( pageM.vars[2] != null )
|
||||||
|
pageM.vars.pop();
|
||||||
|
|
||||||
|
reload();
|
||||||
|
}
|
||||||
|
|
||||||
}, false);
|
}, false);
|
||||||
|
|
||||||
console.log(groupLinks);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -119,7 +119,7 @@ if( document.querySelector('#CONTAINER section[name=movestudents]') != null ){ /
|
||||||
};
|
};
|
||||||
|
|
||||||
API.send(request, function(response){ // on gère la réponse de API, si déplacement effectué, on recharge la page
|
API.send(request, function(response){ // on gère la réponse de API, si déplacement effectué, on recharge la page
|
||||||
if( response.request == 'success' ) selectSection( document.querySelector('#MENU > span[data-link='+pageM.page+']') );
|
if( response.request == 'success' ) reload();
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -147,7 +147,7 @@ DOM.CONTAINER.addEventListener('change', function(e){
|
||||||
pageM.vars[2] = e.target.value; // on active le groupe
|
pageM.vars[2] = e.target.value; // on active le groupe
|
||||||
}
|
}
|
||||||
|
|
||||||
selectSection( document.querySelector('#MENU > span[data-link='+pageM.page+']') );
|
reload();
|
||||||
// console.log(e.target.getAttribute('name')+' = '+e.target.value);
|
// console.log(e.target.getAttribute('name')+' = '+e.target.value);
|
||||||
}
|
}
|
||||||
}, false);
|
}, false);
|
||||||
|
|
119
page/career.php
119
page/career.php
|
@ -14,14 +14,19 @@ require_once __ROOT__.'/manager/career.php';
|
||||||
foreach($_POST as $k=>$v)
|
foreach($_POST as $k=>$v)
|
||||||
array_push($postVars, $k);
|
array_push($postVars, $k);
|
||||||
|
|
||||||
|
/* GESTION CONTRÔLE OPTIONNEL */
|
||||||
|
if( isset($postVars[1]) && is_int($postVars[1]) )
|
||||||
|
$controleOpt = (String) $postVars[1];
|
||||||
|
else
|
||||||
|
$controleOpt = null;
|
||||||
|
|
||||||
|
|
||||||
/* GESTION GROUPE OPTIONNEL */
|
/* GESTION GROUPE OPTIONNEL */
|
||||||
if( isset($postVars[1]) && is_string($postVars[1]) && strlen($postVars[1]) > 1 )
|
if( isset($postVars[2]) && is_string($postVars[2]) && strlen($postVars[2]) > 1 )
|
||||||
$groupeOpt = $postVars[1];
|
$groupeOpt = $postVars[2];
|
||||||
else
|
else
|
||||||
$groupeOpt = null;
|
$groupeOpt = null;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/****************************************
|
/****************************************
|
||||||
* *
|
* *
|
||||||
* SECTION "PARCOURS" *
|
* SECTION "PARCOURS" *
|
||||||
|
@ -112,13 +117,23 @@ if( permission('student') ){ // si l'utilisateur est connecté et que c'est un
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/***********************************/
|
/******************************************/
|
||||||
/*** LES UE (version enseignant) ***/
|
/*** LES CONTRÔLES (version enseignant) ***/
|
||||||
/***********************************/
|
/******************************************/
|
||||||
if( permission('teacher') ){ // si l'utilisateur est connecté et que c'est un élève
|
/*
|
||||||
|
*
|
||||||
|
* [1] Tous les contrôles
|
||||||
|
* [2] Un contrôle particulier( avec ou sans groupe particulier )
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/* [1] Tous les contrôles
|
||||||
|
==================================================================*/
|
||||||
|
if( permission('teacher') && $controleOpt == null ){ // si c'est un enseignant et qu'aucun contrôle n'est spécifié
|
||||||
|
|
||||||
|
|
||||||
$request = new stdClass(); $answer = new stdClass();
|
$request = new stdClass(); $answer = new stdClass();
|
||||||
debug();
|
|
||||||
|
|
||||||
$request->level_1 = 'getControlesEnseignant';
|
$request->level_1 = 'getControlesEnseignant';
|
||||||
$request->enseignant = $_SESSION['identifiant'];
|
$request->enseignant = $_SESSION['identifiant'];
|
||||||
|
@ -151,7 +166,7 @@ if( permission('teacher') ){ // si l'utilisateur est connecté et que c'est un
|
||||||
|
|
||||||
foreach($module['controles'] as $controle){ // pour chaque contrôle
|
foreach($module['controles'] as $controle){ // pour chaque contrôle
|
||||||
echo '<tr>';
|
echo '<tr>';
|
||||||
echo '<td><span class=link>'.$controle['intitule'].'</span></td>';
|
echo "<td><span class='link ctrl' data-ctrl='".$controle['id']."'>".$controle['intitule']."</span></td>";
|
||||||
|
|
||||||
echo "<td>".$module['nom']." - ".$module['libelle']."</td>";
|
echo "<td>".$module['nom']." - ".$module['libelle']."</td>";
|
||||||
|
|
||||||
|
@ -168,14 +183,14 @@ if( permission('teacher') ){ // si l'utilisateur est connecté et que c'est un
|
||||||
|
|
||||||
foreach($controle['notes'] as $note){ // on affiche la liste des élèves avec leurs notes
|
foreach($controle['notes'] as $note){ // on affiche la liste des élèves avec leurs notes
|
||||||
echo "<tr>";
|
echo "<tr>";
|
||||||
echo "<td><span class='link group' data-grp='".$note['id_groupe']."' data-ctrl='".$controle['id']."'>".$note['groupe']."</span></td>";
|
echo "<td><span class='link grp ctrl' data-grp='".$note['groupe']."' data-ctrl='".$controle['id']."'>".$note['groupe']."</span></td>";
|
||||||
if( $note['nb_notes'] == 1 )
|
if( $note['nb_notes'] == 1 )
|
||||||
echo "<td>".$note['nb_notes']." <span class=unstressed>note</span></td>";
|
echo "<td>".$note['nb_notes']." <span class=unstressed>note</span></td>";
|
||||||
else
|
else
|
||||||
echo "<td>".$note['nb_notes']." <span class=unstressed>notes</span></td>";
|
echo "<td>".$note['nb_notes']." <span class=unstressed>notes</span></td>";
|
||||||
|
|
||||||
echo "<td><span class=unstressed>Allant de</span> ".$note['min']." <span class=unstressed>à</span> ".$note['max']."</td>";
|
echo "<td><span class=unstressed>Allant de</span> ".$note['min']." <span class=unstressed>à</span> ".$note['max']."</td>";
|
||||||
echo "<td><span class=unstressed>Moyenne de </span>".number_format($note['moyenne'], 2)." <span class=unstressed>/</span> ".$controle['base']."</td>";
|
echo "<td><span class=unstressed>Moyenne de </span>".number_format($note['valeur'], 2)." <span class=unstressed>/</span> ".$controle['base']."</td>";
|
||||||
echo "</tr>";
|
echo "</tr>";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -198,8 +213,88 @@ if( permission('teacher') ){ // si l'utilisateur est connecté et que c'est un
|
||||||
}else
|
}else
|
||||||
echo "<section name='controlesenseignants' title='Contrôles' class='basic'><table class=basic><tbody><tr><td>Aucun contrôle trouvé</td></tr></tbody></table></section>";
|
echo "<section name='controlesenseignants' title='Contrôles' class='basic'><table class=basic><tbody><tr><td>Aucun contrôle trouvé</td></tr></tbody></table></section>";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* [2] Un contrôle particulier( avec ou sans groupe particulier )
|
||||||
|
==================================================================*/
|
||||||
|
elseif( permission('teacher') ){ // si enseignant et qu'un contrôle est spécifié
|
||||||
|
|
||||||
|
|
||||||
|
$request = new stdClass(); $answer = new stdClass();
|
||||||
|
|
||||||
|
$request->level_1 = 'getNotesEnseignant';
|
||||||
|
$request->enseignant = $_SESSION['identifiant'];
|
||||||
|
$request->controle = $controleOpt;
|
||||||
|
if( $groupeOpt != null ) $request->groupe = $groupeOpt; // on définit le groupe s'il est spécifié
|
||||||
|
|
||||||
|
|
||||||
|
career_switch_level_1($request, $answer);
|
||||||
|
|
||||||
|
if( $answer->request == 'success' ){
|
||||||
|
echo "<section name='controlesenseignants' title='Contrôles' class='basic'>";
|
||||||
|
|
||||||
|
|
||||||
|
// bouton retour
|
||||||
|
// echo "<table class='basic'><thead><tr><th><span class='link'>Retour</span></th></tr></thead></table>";
|
||||||
|
// echo "<table class='basic'><thead><tr><th></th></tr></thead></table>";
|
||||||
|
|
||||||
|
|
||||||
|
echo "<table class='basic col4'><thead>";
|
||||||
|
|
||||||
|
echo '<tr>';
|
||||||
|
echo "<th><span class='link ctrl' data-ctrl='".$answer->controle['id']."'>".$answer->controle['intitule']."</span></th>";
|
||||||
|
|
||||||
|
echo "<th>".$answer->controle['module']." - ".$answer->controle['modulelib']."</th>";
|
||||||
|
|
||||||
|
if( count($answer->controle['notes']) == 0 ) // si il y a au moins une note pour ce contrôle
|
||||||
|
echo '<th><span class=unstressed>Pas noté</span></th>';
|
||||||
|
else
|
||||||
|
echo '<th><span class=unstressed>Moyenne de</span> 10 <span class=unstressed>/</span> 20</th>';
|
||||||
|
// echo '<th>'.number_format($answer->controle['moyenne'], 2).'</th>';
|
||||||
|
|
||||||
|
echo '<th><span class=unstressed>Coefficient</span> '.number_format($answer->controle['coefficient'], 2).'</th>';
|
||||||
|
|
||||||
|
echo '</tr></thead>';
|
||||||
|
|
||||||
|
echo "<tbody>";
|
||||||
|
|
||||||
|
foreach($answer->controle['notes'] as $note){ // on affiche la liste des élèves avec leurs notes
|
||||||
|
echo "<tr>";
|
||||||
|
|
||||||
|
/* 1) s'il s'agit d'afficher par groupe */
|
||||||
|
if( isset($note['nb_notes']) ){
|
||||||
|
|
||||||
|
echo "<td><span class='link grp ctrl' data-grp='".$note['groupe']."' data-ctrl='".$answer->controle['id']."'>".$note['groupe']."</span></td>";
|
||||||
|
|
||||||
|
if( $note['nb_notes'] == 1 )
|
||||||
|
echo "<td>".$note['nb_notes']." <span class=unstressed>note</span></td>";
|
||||||
|
else
|
||||||
|
echo "<td>".$note['nb_notes']." <span class=unstressed>notes</span></td>";
|
||||||
|
|
||||||
|
echo "<td><span class=unstressed>Allant de</span> ".$note['min']." <span class=unstressed>à</span> ".$note['max']."</td>";
|
||||||
|
echo "<td><span class=unstressed>Moyenne de </span>".number_format($note['valeur'], 2)." <span class=unstressed>/</span> ".$answer->controle['base']."</td>";
|
||||||
|
|
||||||
|
/* 2) s'il s'agit d'afficher par élève */
|
||||||
|
}else{
|
||||||
|
|
||||||
|
echo "<td><span class='link etu' data-etu='".$note['etudiant']."' data-ctrl='".$answer->controle['id']."'>".$note['etudiant']."</span></td>";
|
||||||
|
echo "<td><span class='link grp' data-grp='".$note['groupe']."'>".$note['groupe']."</span></td>";
|
||||||
|
echo "<td>".number_format($note['valeur'], 2)." <span class=unstressed>/</span> ".$answer->controle['base']."</td>";
|
||||||
|
echo "<td></td>";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "</tr>";
|
||||||
|
}
|
||||||
|
|
||||||
|
echo '</tbody></table>';
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue