From 7a4c2e7f87b1b0586e63cbc517c2e5a94510fecd Mon Sep 17 00:00:00 2001 From: xdrm-brackets Date: Sun, 6 Dec 2015 15:05:22 +0100 Subject: [PATCH] =?UTF-8?q?D=C3=A9placement=20d'=C3=A9tudiants=20multiple?= =?UTF-8?q?=20+=20affichage=20des=20noms=20de=20groupes=20par=20taille=20p?= =?UTF-8?q?uis=20alpha?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- css/layout.css | 7 ++-- js/action-script.js | 3 -- js/lib/API.js | 2 +- js/lib/adjust.js | 0 manager/database.php | 17 ++++---- manager/groups.php | 21 +++++----- manager/repo/group.php | 6 +-- page/_JS/groups.js | 91 +++++++++++++++++++---------------------- page/career.php | 2 +- page/groups.php | 29 +++++++------ src/loader.gif | Bin 847 -> 0 bytes src/loader.svg | 1 + test.php | 3 ++ 13 files changed, 91 insertions(+), 91 deletions(-) mode change 100644 => 100755 js/lib/adjust.js delete mode 100755 src/loader.gif create mode 100755 src/loader.svg diff --git a/css/layout.css b/css/layout.css index ef8cc85..58fcd16 100755 --- a/css/layout.css +++ b/css/layout.css @@ -40,9 +40,6 @@ body{ /* background */ background: #ecf0f1; - background: url(../src/wallpaper.jpg) top left no-repeat; - background-size: cover; - background-attachment: fixed; /* scroll */ overflow: auto; @@ -74,7 +71,9 @@ body{ box-shadow: 0 0 5px #555; /* background */ - background-color: #ecf0f1; + background: #ecf0f1 url(../src/loader.svg) center center no-repeat; + background-size: 5em auto; + background-attachment: fixed; /* scroll */ overflow: hidden; diff --git a/js/action-script.js b/js/action-script.js index 01cb6c3..89ea6e6 100755 --- a/js/action-script.js +++ b/js/action-script.js @@ -130,9 +130,6 @@ var connected = !( DOM.AUTH.children[0].innerHTML == 'Connexion' ); pageM.setPage( section.dataset.link ); /* on active les sous-parties */ - pageM.container.innerHTML = ''; - pageM.container.style.background= 'url(../src/loader.gif) center center no-repeat'; - pageM.container.style.backgroundSize= '2em auto'; pageM.xhr[pageM.xhr.length-1].addEventListener('load', function(){ // on récupère les sections du document diff --git a/js/lib/API.js b/js/lib/API.js index 4111cce..a272c54 100755 --- a/js/lib/API.js +++ b/js/lib/API.js @@ -51,7 +51,7 @@ APIClass.prototype = { if( ptrAPI.xhr[i].readyState == 4 ){ // si la requête est terminée /* DEBUG : affiche la réponse BRUTE de API.php */ - // console.log('API.php => '+ptrAPI.xhr[i].responseText); + console.log('API.php => '+ptrAPI.xhr[i].responseText); console.log( JSON.parse(ptrAPI.xhr[i].responseText) ); /* si success de requête */ diff --git a/js/lib/adjust.js b/js/lib/adjust.js old mode 100644 new mode 100755 diff --git a/manager/database.php b/manager/database.php index efca747..697ef81 100755 --- a/manager/database.php +++ b/manager/database.php @@ -546,21 +546,20 @@ class DataBase{ } - - /******************************************************/ - /***** déplace un étudiant d'un groupe à un autre *****/ - /******************************************************/ - public function deplacerEtudiant($etudiant, $groupe, $semestre){ + /****************************************************************/ + /***** déplace une liste d'étudiants d'un groupe à un autre *****/ + /****************************************************************/ + public function deplacerEtudiantMultiple($etudiants, $groupe, $semestre){ // on vérifie que le semestre et que le groupe de destination existent if( !($semestreInfo=semestreRepo::info($semestre)) ) return 'unknown_semestre'; if( !($destGroupeInfo=groupRepo::info($groupe)) ) return 'unknown_newgroup'; - if( groupRepo::ajouterMembre($etudiant, $destGroupeInfo['id'], $semestreInfo['id']) ) - return 'success'; - else - return 'error'; + foreach($etudiants as $etu) + if( !(groupRepo::ajouterMembre($etu, $destGroupeInfo['id'], $semestreInfo['id'])) ) + return 'error'; + return 'success'; } diff --git a/manager/groups.php b/manager/groups.php index 9af2a13..1c34379 100755 --- a/manager/groups.php +++ b/manager/groups.php @@ -225,18 +225,19 @@ require_once __ROOT__.'/manager/database.php'; $answer->request = 'permission_error'; break; - /************************************************/ - /* déplace un étudiant de son groupe à un autre */ - /************************************************/ - case 'move': if( permission('admin') && $_SESSION['annee'] >= getCurrentYear() ){ - $areSetParam = isset($request->etudiant) && isset($request->groupe) && isset($request->semestre); // les arguments existent - $typeOkParam = $areSetParam && is_string($request->etudiant) && is_numeric($request->groupe); // si c'est des strings - $nEmptyParam = $typeOkParam && strlen($request->etudiant) > 0 && is_numeric($request->semestre); // d'au moins 1 caractère - $etudiantCheck = $nEmptyParam && preg_match('/^[\w -]{3,50}$/i', $request->etudiant); // etudiant (username) bon format + /************************************************************/ + /* déplace une liste d'étudiants de leurs groupe à un autre */ + /************************************************************/ + case 'move_multiple': if( permission('admin') && $_SESSION['annee'] >= getCurrentYear() ){ - if( $etudiantCheck ){ // si param ok - $answer->request = DataBase::getInstance()->deplacerEtudiant($request->etudiant, $request->groupe, $request->semestre); + $areSetParam = isset($request->etudiants) && isset($request->groupe) && isset($request->semestre); // les arguments existent + $typeOkParam = $areSetParam && is_array($request->etudiants) && is_numeric($request->groupe); // si c'est des strings + $nEmptyParam = $typeOkParam && count($request->etudiants) > 0 && is_numeric($request->semestre); // d'au moins 1 caractère + + + if( $nEmptyParam ){ // si param ok + $answer->request = DataBase::getInstance()->deplacerEtudiantMultiple($request->etudiants, $request->groupe, $request->semestre); }else $answer->request = 'param_error'; diff --git a/manager/repo/group.php b/manager/repo/group.php index 9885135..90c9b27 100755 --- a/manager/repo/group.php +++ b/manager/repo/group.php @@ -91,8 +91,8 @@ class groupRepo extends DBAccess{ public static function creer($nom){ /* [1] On vérifie l'existence d'un groupe avec ce nom ======================================================*/ - if( groupRepo::UID($nom) ) // si le groupe existe déjà - return false; // on retourne FAUX + if( $groupeUID=groupRepo::UID($nom) ) // si le groupe existe déjà + return $groupeUID; // on retourne FAUX /* [2] On créé le groupe =========================*/ @@ -337,7 +337,7 @@ class groupRepo extends DBAccess{ * */ public static function getAllGroups(){ - $getGroupList = DataBase::getPDO()->query("SELECT DISTINCT id_groupe as id, nom FROM groupe ORDER BY nom ASC"); + $getGroupList = DataBase::getPDO()->query("SELECT DISTINCT id_groupe as id, nom FROM groupe ORDER BY LENGTH(nom), nom ASC"); // $getGroupList = DataBase::getPDO()->query("SELECT id_groupe as id, nom FROM groupe WHERE length(nom) <= 6 ORDER BY nom ASC"); return DataBase::delNumeric( $getGroupList->fetchAll() ); diff --git a/page/_JS/groups.js b/page/_JS/groups.js index e13b67d..2034b9e 100755 --- a/page/_JS/groups.js +++ b/page/_JS/groups.js @@ -27,63 +27,58 @@ if( canSeeStudent ){ /* GESTION DU DEPLACEMENT D'ELEVES */ if( document.querySelector('#CONTAINER section[name=movestudents]') != null ){ // si c'set l'admin - /* DEPLACEMENT A L'AIDE DES dans la liste - - deplacementObj[i] = { - select: deplacementElements[i], // le - button: deplacementElements[i].parentNode.children[1], // le bouton de validation pour ce - }; - - // on créé l'évènement qui affiche le validateur dès le changement de valeur - deplacementObj[i].select.addEventListener('change', function(e){ - // on récupère le rang dans la liste et qu'il s'agit du même élément - if( e.target.dataset.hasOwnProperty('i') && deplacementObj[e.target.dataset.i].select == e.target ){ - var obj = deplacementObj[e.target.dataset.i]; - - if( obj.initval != obj.select.value ) // si c'est une nouvelle valeur (nouveau groupe), on active le validateur (bouton) - addClass( obj.select, 'active' ); - else - remClass( obj.select, 'active' ); + /* LORSQU'ON "CHECK" UN ETUDIANT ON LE RAJOUTE A LA LISTE */ + for( var i = 0 ; i < deplacementEtudiants.length ; i++ ) + deplacementEtudiants[i].addEventListener('click', function(e){ + var index = etudiantsADeplacer.indexOf(e.target.dataset.usr); + if( e.target.checked ) // si on active + etudiantsADeplacer.push( e.target.dataset.usr ); - } + else if( index > -1 ) // sinon on enlève (si dans la liste) + etudiantsADeplacer = etudiantsADeplacer.slice(0, index).concat( etudiantsADeplacer.slice(index+1) ); + }, false); + + /* ON SYNCHRONISE TOUS LES SELECT */ + for( var g = 0 ; g < choixGroupeDestination.length ; g++ ) + choixGroupeDestination[g].addEventListener('change', function(e){ + destGroupe = e.target.value; + destSemestre = e.target.dataset.stre; + + for( var i = 0 ; i < choixGroupeDestination.length ; i++ ) + choixGroupeDestination[i].value = e.target.value; + }, false); - // on créé l'évènement de confirmation du déplacement - deplacementObj[i].button.addEventListener('click', function(e){ - // s'il s'agit bien d'un bouton de validation, que le "; - // on affiche le groupe courant - echo ""; - - foreach($answerAllGroups->grouplist as $groupemodif) // pour tous les groupes - if( $groupemodif['rang'] == $group['rang'] && $groupemodif['id'] != $group['id'] ) // si c'est un groupe du même rang et pas le groupe actuel - echo ""; - - echo ''; - echo "
déplacer
"; + echo " déplacer"; } echo ''; echo ''; } + /* après chaque groupe on propose de déplacer les élèves cochés */ + echo ""; + echo "Déplacer les élèves selectionnés vers: "; + echo ""; + echo "'; + echo "
déplacer les étudiants
"; + echo ""; + echo ""; + // echo ''; echo ''; diff --git a/src/loader.gif b/src/loader.gif deleted file mode 100755 index 85d7ea3dcc2cca67fd729739336be01a9c48afc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 847 zcmZ?wbhEHb6krfw_`<;O|Nnp8GX+2Y{EEKbKlABM!?VRcms{_Cd%pecS^En$eUCRb zJXrbS$NN<;kDUK>FXPsX;yVi%NCArfx&2&2f}I@$T#fV$m>Ge375_;&7o{eaq^2m8 zXO?6rBxWU6otbEINafjWLRY2!70|NW6iz~gEtaOk8&Zmh)doe~~B7us%UunTmtm@p|k*U*tz=BAkF!4MHVgQGFmbjeo6 zBo~h@Yz(V*CMM}{^{F-#7>gwzQQn~bgZGURyNQ{3fSOi>euG9&uL@R6z+soy%IayL(jn0+=WV`;*F%T>V5e?LvsP2HtCWbqlEbVA#nav0=JHKcBOC28X^OOB!p8W_OR8B7-$3d4d4|xhxJ; diff --git a/src/loader.svg b/src/loader.svg new file mode 100755 index 0000000..569cab4 --- /dev/null +++ b/src/loader.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/test.php b/test.php index 6e3b493..88c7b9a 100755 --- a/test.php +++ b/test.php @@ -46,6 +46,9 @@ require_once __ROOT__.'/manager/security.php'; debug(); var_dump( $_SESSION ); + + + // $_SESSION['annee'] = 2015; // require_once __ROOT__.'/manager/phpExcel.php';