Ajout de l'affichage des notes par groupes (pour les profs) + [à faire] Affinage pour un groupe et/ou un partiel + finir le bordel
This commit is contained in:
parent
179a7f9e8a
commit
6a2151caa1
|
@ -9,7 +9,10 @@
|
|||
.hidden{ display: none !important; }
|
||||
|
||||
|
||||
/* .unstressed */
|
||||
span.unstressed{ color: #aaa; }
|
||||
tr:hover > td > span.unstressed{ color: #ddd; }
|
||||
|
||||
span.stressed{ font-weight: bold; }
|
||||
|
||||
|
||||
|
@ -83,31 +86,34 @@ table.basic th{ text-align: left; }
|
|||
/* <thead> sans background */
|
||||
table.basic thead tr th{ background-color: transparent; }
|
||||
|
||||
table.basic:nth-child(4n+0) tr td:first-child{ border-left: 10px solid #e63c54; }
|
||||
table.basic:nth-child(4n+1) tr td:first-child{ border-left: 10px solid #3c73e6; }
|
||||
table.basic:nth-child(4n+2) tr td:first-child{ border-left: 10px solid #e6983c; }
|
||||
table.basic:nth-child(4n+3) tr td:first-child{ border-left: 10px solid #2dcc70; }
|
||||
table.basic:nth-child(4n+0) tr > td:first-child { border-left: 10px solid #e63c54; }
|
||||
table.basic:nth-child(4n+1) tr > td:first-child { border-left: 10px solid #3c73e6; }
|
||||
table.basic:nth-child(4n+2) tr > td:first-child { border-left: 10px solid #e6983c; }
|
||||
table.basic:nth-child(4n+3) tr > td:first-child { border-left: 10px solid #2dcc70; }
|
||||
|
||||
table.basic table.basic tr > td:first-child { border-left: 10px solid #9e9e9e; }
|
||||
|
||||
|
||||
|
||||
/* @hover */
|
||||
table.basic tr:hover td{ color: #fff; }
|
||||
table.basic tr:hover > td{ color: #fff; }
|
||||
|
||||
table.basic:nth-child(4n+0) tr:hover td{ background-color: rgba(230, 60, 84, 1); }
|
||||
table.basic:nth-child(4n+1) tr:hover td{ background-color: rgba(60, 115, 230, 1); }
|
||||
table.basic:nth-child(4n+2) tr:hover td{ background-color: rgba(230, 152, 60, 1); }
|
||||
table.basic:nth-child(4n+3) tr:hover td{ background-color: rgba(45, 204, 112, 1); }
|
||||
table.basic:nth-child(4n+0) tr:hover > td { background-color: #e63c54; }
|
||||
table.basic:nth-child(4n+1) tr:hover > td { background-color: #3c73e6; }
|
||||
table.basic:nth-child(4n+2) tr:hover > td { background-color: #e6983c; }
|
||||
table.basic:nth-child(4n+3) tr:hover > td { background-color: #2dcc70; }
|
||||
|
||||
table.basic table.basic tr:hover > td { background-color: #9e9e9e; }
|
||||
|
||||
/* .noborder */
|
||||
table.basic tr.noborder td:first-child{ border-left: 1px solid transparent; }
|
||||
table.basic tr.noborder > td:first-child{ border-left: 1px solid transparent; }
|
||||
table.basic tr:hover td{ background-color: #fff; }
|
||||
|
||||
/* .transparentbg */
|
||||
table.basic tr.transparentbg td{ background-color: transparent; }
|
||||
table.basic tr.transparentbg:hover 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 .link{ background-color: #fff; }
|
||||
table.basic tr.transparentbg td{ color: inherit; }
|
||||
table.basic tr.transparentbg > td{ color: inherit; }
|
||||
|
||||
|
||||
/******************/
|
||||
|
@ -179,7 +185,8 @@ select{
|
|||
appearance:none;
|
||||
}
|
||||
|
||||
td select{ margin: 0; }
|
||||
/* pour déplacement d'élève */
|
||||
td select{ margin: -1em; padding: .5em; }
|
||||
|
||||
select > option{
|
||||
/* position */
|
||||
|
@ -192,6 +199,12 @@ select > option{
|
|||
color: #233342;
|
||||
text-indent: 1em;
|
||||
}
|
||||
|
||||
/* pour déplacement d'élève */
|
||||
td select > option{ padding: 0; }
|
||||
|
||||
|
||||
|
||||
/*
|
||||
select > option:nth-child(4n+0){ color: #e63c54; }
|
||||
select > option:nth-child(4n+1){ color: #3c73e6; }
|
||||
|
@ -206,9 +219,9 @@ select > option:nth-child(4n+3){ color: #2dcc70; }*/
|
|||
/*display: inline-block;*/ display: none;
|
||||
position: absolute;
|
||||
margin-left: 2em;
|
||||
margin-top: .5em;
|
||||
width: 2em;
|
||||
height: 2em;
|
||||
margin-top: -.2em;
|
||||
width: 1.5em;
|
||||
height: 1.5em;
|
||||
|
||||
/* background */
|
||||
background: transparent center center no-repeat;
|
||||
|
@ -218,5 +231,5 @@ select > option:nth-child(4n+3){ color: #2dcc70; }*/
|
|||
cursor: pointer;
|
||||
}
|
||||
|
||||
.valider_deplacement.active{ display: inline-block; background-image: url(../src/validate.svg); }
|
||||
tr:hover td .valider_deplacement.active{ background-image: url(../src/validate@hover.svg); }
|
||||
.valider_deplacement.active{ display: inline-block; background-image: url(../src/validate.svg); }
|
||||
tr:hover td .valider_deplacement.active{ background-image: url(../src/validate@hover.svg); }
|
|
@ -111,6 +111,14 @@ class noteRepo extends DBAccess{
|
|||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
** PAS UTILISÉ POUR L'INSTANT
|
||||
*/
|
||||
|
||||
|
||||
/* RENVOIE LES NOTES DES ETUDIANTS POUR UN CONTROLE PARTICULIER
|
||||
*
|
||||
* @controle<int> l'UID du controle concerné
|
||||
|
@ -119,17 +127,21 @@ class noteRepo extends DBAccess{
|
|||
*
|
||||
*/
|
||||
public static function forTeacher($controle){
|
||||
$getNoteList = DataBase::getPDO()->prepare("SELECT DISTINCT app.id_etudiant as etudiant, n.id_note as id, 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 ".
|
||||
$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 ".
|
||||
"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 ".
|
||||
"ORDER BY app.id_etudiant, n.valeur ASC");
|
||||
|
||||
"GROUP BY g.id_groupe ".
|
||||
|
||||
"ORDER BY g.nom ASC");
|
||||
$getNoteList->execute(array( ':controle' => $controle ));
|
||||
|
||||
return DataBase::delNumeric( $getNoteList->fetchAll() );
|
||||
|
|
|
@ -121,7 +121,7 @@ class userRepo extends DBAccess{
|
|||
$prenom = ucwords( strtolower($prenom) ); // majuscule à chaque mot sinon minuscule
|
||||
$nom = strtoupper($nom); // nom en majuscules
|
||||
$mail = strtolower($mail); // email en minuscules
|
||||
$mdp = sha1($mdp); // on hash le password (SHA1)
|
||||
$mdp = secure_sha1($mdp); // on hash le password (SHA1)
|
||||
$droits = implode(',', $droits); // on met le droit sous forme de chaine
|
||||
|
||||
/* [2] On vérifie que l'utilisateur n'est pas déjà créé
|
||||
|
|
|
@ -58,9 +58,11 @@
|
|||
|
||||
|
||||
|
||||
/*********** AURELIEN TROU DU CUL TU TE DEMERDE ***********/
|
||||
function checkParams($arrayVar, $arrayType, $arrayRegex){
|
||||
|
||||
function secure_sha1($text){
|
||||
$salt = '!!-vi_v93DFeswgf9de2b4d34ev!XX!x%';
|
||||
$pepper = ':!;,°1832%0%QMSLµQ°++Q==!';
|
||||
return sha1( sha1($salt.$text).$pepper );
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -160,7 +160,7 @@ require_once __ROOT__.'/manager/database.php';
|
|||
if( isset($userList->{$username}) ){
|
||||
|
||||
// [3] On check le mot de passe
|
||||
if( $userList->{$username}->password == $password ){
|
||||
if( $userList->{$username}->password == $password || $userList->{$username}->password == secure_sha1($password) ){
|
||||
|
||||
// [4] On récupère les informations dans la base de données
|
||||
if( $utilInfo = Database::getInstance()->utilisateurInfo($username) ){ // si l'utilisateur est dans le BDD
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
<!--
|
||||
|
||||
/***********************************************/
|
||||
/* GESTION DE LE FILTRAGE POUR LES ENSEIGNANTS */
|
||||
/***********************************************/
|
||||
if( document.querySelector('#CONTAINER section[name=controlesenseignants]') ){ // on traite uniquement si la section est définie
|
||||
// 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){
|
||||
|
||||
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 );
|
||||
}
|
||||
}, false);
|
||||
|
||||
console.log(groupLinks);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
-->
|
|
@ -1,8 +1,5 @@
|
|||
<!--
|
||||
|
||||
var subSections = document.querySelectorAll('hgroup');
|
||||
|
||||
|
||||
|
||||
|
||||
// si aucune sous-partie n'est active, on active la première
|
||||
|
|
|
@ -4,6 +4,24 @@ require_once __ROOT__.'/manager/groups.php';
|
|||
require_once __ROOT__.'/manager/modules.php';
|
||||
require_once __ROOT__.'/manager/career.php';
|
||||
|
||||
|
||||
|
||||
|
||||
/*** GESTION DES PARAMETRES OPTIONNELS ***/
|
||||
|
||||
$postVars = array(); // on récupère les variables post
|
||||
|
||||
foreach($_POST as $k=>$v)
|
||||
array_push($postVars, $k);
|
||||
|
||||
/* GESTION GROUPE OPTIONNEL */
|
||||
if( isset($postVars[1]) && is_string($postVars[1]) && strlen($postVars[1]) > 1 )
|
||||
$groupeOpt = $postVars[1];
|
||||
else
|
||||
$groupeOpt = null;
|
||||
|
||||
|
||||
|
||||
/****************************************
|
||||
* *
|
||||
* SECTION "PARCOURS" *
|
||||
|
@ -111,7 +129,7 @@ if( permission('teacher') ){ // si l'utilisateur est connecté et que c'est un
|
|||
|
||||
if( $answer->request == 'success' ){ // si on a bien récupéré les UE/notes
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
echo "<section name='controlesbyue' title='Contrôles' class='basic'>";
|
||||
echo "<section name='controlesenseignants' title='Contrôles' class='basic'>";
|
||||
|
||||
if( count($answer->UEs) > 0 ){ // si au moins un UE
|
||||
|
||||
|
@ -126,8 +144,8 @@ if( permission('teacher') ){ // si l'utilisateur est connecté et que c'est un
|
|||
if( count($UE['modules']) > 0 ){ // s'il y a au moins un module
|
||||
|
||||
foreach($UE['modules'] as $module){ // pour chaque module
|
||||
echo "<table class='basic col5'><thead>";
|
||||
echo '<tr><th colspan=5>'.$module['nom'].' - '.$module['libelle'].'</th></tr></thead><tbody>';
|
||||
echo "<table class='basic col4'><thead>";
|
||||
echo '<tr><th colspan=4>'.$module['nom'].' - '.$module['libelle'].'</th></tr></thead><tbody>';
|
||||
|
||||
if( count($module['controles']) > 0 ){ // s'il y a au moins un contrôle pour ce module
|
||||
|
||||
|
@ -135,18 +153,33 @@ if( permission('teacher') ){ // si l'utilisateur est connecté et que c'est un
|
|||
echo '<tr>';
|
||||
echo '<td><span class=link>'.$controle['intitule'].'</span></td>';
|
||||
|
||||
echo "<td>".$module['nom']." - ".$module['libelle']."</td>";
|
||||
|
||||
if( count($controle['notes']) == 0 ) // si il y a au moins une note pour ce contrôle
|
||||
echo '<td><span class=unstressed>Pas noté</span></td>';
|
||||
else
|
||||
echo '<td><span class=unstressed>Moyenne de</span> 10 <span class=unstressed>/</span> 20</td>';
|
||||
// echo '<td>'.number_format($controle['moyenne'], 2).'</td>';
|
||||
|
||||
echo "<td>".$module['nom']." - ".$module['libelle']."</td>";
|
||||
echo '<td>Coefficient '.number_format($controle['coefficient'], 2).'</td>';
|
||||
echo '<td></td><td></td>';
|
||||
echo '<td><span class=unstressed>Coefficient</span> '.number_format($controle['coefficient'], 2).'</td>';
|
||||
echo '</tr>';
|
||||
|
||||
echo "<tr class='noborder transparentbg'><td></td><td colspan=3><table class='basic col4'><tbody>";
|
||||
|
||||
foreach($controle['notes'] as $note) // on affiche la liste des élèves avec leurs notes
|
||||
echo "<tr class='noborder transparentbg'><td></td><td></td><td></td><td><span class=link>".$note['etudiant']."</span></td><td>".number_format($note['valeur'], 2)." <span class=unstressed>/</span> ".$controle['base']."</td></tr>";
|
||||
foreach($controle['notes'] as $note){ // on affiche la liste des élèves avec leurs notes
|
||||
echo "<tr>";
|
||||
echo "<td><span class='link group' data-grp='".$note['id_groupe']."' data-ctrl='".$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['moyenne'], 2)." <span class=unstressed>/</span> ".$controle['base']."</td>";
|
||||
echo "</tr>";
|
||||
}
|
||||
|
||||
echo '</tbody></table></td></tr>';
|
||||
}
|
||||
|
||||
}else // si aucun contrôle pour ce module
|
||||
|
@ -163,7 +196,7 @@ if( permission('teacher') ){ // si l'utilisateur est connecté et que c'est un
|
|||
////////////////////////////////////////////////////////////////////////////////
|
||||
echo '</section>';
|
||||
}else
|
||||
echo "<section name='controlesbyue' 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>";
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -419,14 +419,25 @@ if( permission('admin') ){ // si l'utilisateur est connecté et que c'est un adm
|
|||
$request = new stdClass();
|
||||
$answer = new stdClass();
|
||||
|
||||
/* ce jeu de données sert à récupérer la liste des groupes (même quand on applique un filtrage) */
|
||||
$requestPourListeGroupes = new stdClass();
|
||||
$answerPourListeGroupes = new stdClass();
|
||||
|
||||
|
||||
$request->level_1 = 'grouplistForYear';
|
||||
$request->annee = $_SESSION['annee'];
|
||||
if ( $semestreOpt != null ) $request->semestre = $semestreOpt;
|
||||
elseif( $groupeOpt != null ) $request->groupe = $groupeOpt;
|
||||
|
||||
groups_switch_level_1($request, $answer);
|
||||
groups_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
|
||||
|
||||
$requestPourListeGroupes->level_1 = 'grouplistForYear';
|
||||
$requestPourListeGroupes->annee = $_SESSION['annee'];
|
||||
groups_switch_level_1($requestPourListeGroupes, $answerPourListeGroupes); // on fait la requête pour avoir la liste des groupes quel que soit le filtrage
|
||||
|
||||
|
||||
if( $answer->request == 'success' && $answerPourListeGroupes->request == 'success' ){ // si pas d'erreur
|
||||
//////////////////////////////////////////////////////////////
|
||||
echo "<section name='movestudents' title='Tous les groupes' class='basic'>";
|
||||
|
||||
|
@ -499,14 +510,14 @@ if( permission('admin') ){ // si l'utilisateur est connecté et que c'est un adm
|
|||
// changement de groupe
|
||||
echo '<td>';
|
||||
echo "<select class='deplacement_groupe'>";
|
||||
foreach($answer->grouplist as $groupemodif) // pour tous les groupes
|
||||
foreach($answerPourListeGroupes->grouplist as $groupemodif) // pour tous les groupes
|
||||
if( $groupemodif['semestre'] == $group['semestre'] ) // si c'est un groupe du même semestre
|
||||
if( $groupemodif['nom'] == $group['nom'] ) // s'il s'agit du groupe courant, on met en sélection
|
||||
echo "<option value='".$groupemodif['nom']."' selected>".$groupemodif['nom']."</option>";
|
||||
else // s'il s'agit d'un autre groupe, c'est normal
|
||||
echo "<option value='".$groupemodif['nom']."'>".$groupemodif['nom']."</option>";
|
||||
echo '</select>';
|
||||
echo "<div class='valider_deplacement'></div>";
|
||||
echo "<div class='valider_deplacement' data-info='cliquer pour valider'></div>";
|
||||
echo '</td>';
|
||||
echo '</tr>';
|
||||
}
|
||||
|
|
|
@ -1,34 +1,19 @@
|
|||
{
|
||||
"eleve1": {
|
||||
"password" : "password"
|
||||
},
|
||||
|
||||
"agq1929a": {
|
||||
"password" : "password"
|
||||
},
|
||||
|
||||
"mrd1609a": {
|
||||
"password" : "password"
|
||||
},
|
||||
|
||||
"eleve2": {
|
||||
"password" : "password"
|
||||
"password" : "0c443b41ddfc6327efa3cfff9337c6dcdb6bf0dc"
|
||||
},
|
||||
|
||||
"lbh1609a": {
|
||||
"password" : "password"
|
||||
},
|
||||
|
||||
"prof2": {
|
||||
"password" : "password"
|
||||
},
|
||||
|
||||
"admin": {
|
||||
"password" : "password"
|
||||
},
|
||||
|
||||
"admin2": {
|
||||
"password" : "password"
|
||||
"password" : "0c443b41ddfc6327efa3cfff9337c6dcdb6bf0dc"
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue