diff --git a/page/_JS/career.js b/page/_JS/career.js
index 76d90c3..209699d 100755
--- a/page/_JS/career.js
+++ b/page/_JS/career.js
@@ -52,9 +52,9 @@ for( var i = 0 ; i < partList.length ; i++ ){
-/********************************************/
-/* GESTION DU FILTRAGE POUR LES ENSEIGNANTS */
-/********************************************/
+/**************************************************/
+/* GESTION DU FILTRAGE POUR LES ENSEIGNANTS/ADMIN */
+/**************************************************/
if( document.querySelectorAll('#CONTAINER section[data-controles]').length > 0 ){ // on traite uniquement si la section est définie
allControleSections = document.querySelectorAll('#CONTAINER section[data-controles]');
@@ -108,40 +108,42 @@ if( document.querySelectorAll('#CONTAINER section[data-controles]').length > 0 )
-/* GESTION DE LA SAISIE DE NOTES */
-var nombreModification = 0; // contiendra le nombre de notes saisies
-
-if( document.querySelector('#CONTAINER section[data-controles]').length > 0 ){ // si c'est l'admin
+/*******************************************************/
+/* GESTION DE LA SAISIE DE NOTES (version enseignants) */
+/*******************************************************/
+if( document.querySelector('#CONTAINER section[name=controlesenseignants]') != null ){ // si c'est un enseignant
+ var nombreModificationEnseignant = 0; // contiendra le nombre de notes saisies
/* SAISIE A L'AIDE DES */
- var saisieInput = document.querySelectorAll('#CONTAINER section[data-controles] table tr td input[type=number][data-ctrl].saisie_note');
- var saisieObj = [];
+ var saisieInputEnseignant = document.querySelectorAll('#CONTAINER section[name=controlesenseignants] table tr td input[type=number][data-ctrl].saisie_note');
+
+ var saisieObjEnseignant = [];
/* BOUTON "TOUT ENREGISTRER" */
- var toutEnregistrerBtn = document.querySelector("#CONTAINER section[data-controles] table tr td:last-child .confirm.all");
+ var toutEnregistrerBtnEnseignant = document.querySelector("#CONTAINER section[name=controlesenseignants] table tr td:last-child .confirm.all");
- if( toutEnregistrerBtn != null ){
+ if( toutEnregistrerBtnEnseignant != null ){
// on référencie tous les input dans un objet
- for( var i = 0 ; i < saisieInput.length ; i++ ){
+ for( var i = 0 ; i < saisieInputEnseignant.length ; i++ ){
- saisieInput[i].dataset.i = i; // le rang du dans la liste
+ saisieInputEnseignant[i].dataset.i = i; // le rang du dans la liste
- saisieObj[i] = {
- inputEl: saisieInput[i], // le en question
- initval: parseFloat( saisieInput[i].value.replace(',', '.') ), // la valeur initiale du
- button: saisieInput[i].parentNode.children[1], // le bouton de validation pour ce
- ctrlid: saisieInput[i].dataset.ctrl, // on récupère l'id du contrôle
- userid: saisieInput[i].parentNode.parentNode.children[0].children[0].innerHTML // l'identifiant de l'utilisateur associé à ce
+ saisieObjEnseignant[i] = {
+ inputEl: saisieInputEnseignant[i], // le en question
+ initval: parseFloat( saisieInputEnseignant[i].value.replace(',', '.') ), // la valeur initiale du
+ button: saisieInputEnseignant[i].parentNode.children[1], // le bouton de validation pour ce
+ ctrlid: saisieInputEnseignant[i].dataset.ctrl, // on récupère l'id du contrôle
+ userid: saisieInputEnseignant[i].parentNode.parentNode.children[0].children[0].innerHTML // l'identifiant de l'utilisateur associé à ce
};
// on créé l'évènement qui affiche le validateur dès le changement de valeur
- saisieObj[i].inputEl.addEventListener('change', function(e){
+ saisieObjEnseignant[i].inputEl.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') && saisieObj[e.target.dataset.i].inputEl == e.target){
- var obj = saisieObj[e.target.dataset.i];
+ if( e.target.dataset.hasOwnProperty('i') && saisieObjEnseignant[e.target.dataset.i].inputEl == e.target){
+ var obj = saisieObjEnseignant[e.target.dataset.i];
var isActive = /active/.test(obj.inputEl.className); // VRAI si l'élément est actif
@@ -155,25 +157,25 @@ if( document.querySelector('#CONTAINER section[data-controles]').length > 0 ){ /
// si changement du caractère "actif", et plus particulièrement
if( /active/.test(obj.inputEl.className) != isActive )
if( !isActive ) // si activation
- nombreModification += 1;
+ nombreModificationEnseignant += 1;
else
- nombreModification -= 1;
+ nombreModificationEnseignant -= 1;
// si plus d'une modification, on affiche le bouton 'tout enregistrer'
- if( nombreModification > 1 )
- addClass( toutEnregistrerBtn, 'active' );
+ if( nombreModificationEnseignant > 1 )
+ addClass( toutEnregistrerBtnEnseignant, 'active' );
else
- remClass( toutEnregistrerBtn, 'active' );
+ remClass( toutEnregistrerBtnEnseignant, 'active' );
}
}, false);
// on créé l'évènement de confirmation de la saisie
- saisieObj[i].button.addEventListener('click', function(e){
+ saisieObjEnseignant[i].button.addEventListener('click', function(e){
// s'il s'agit bien d'un bouton de validation, que le associé a data-i existante et que ça match correctement
- if( /confirm/.test(e.target.className) && e.target.parentNode.children[0].dataset.hasOwnProperty('i') && saisieObj[e.target.parentNode.children[0].dataset.i].button == e.target ){
- var obj = saisieObj[e.target.parentNode.children[0].dataset.i];
+ if( /confirm/.test(e.target.className) && e.target.parentNode.children[0].dataset.hasOwnProperty('i') && saisieObjEnseignant[e.target.parentNode.children[0].dataset.i].button == e.target ){
+ var obj = saisieObjEnseignant[e.target.parentNode.children[0].dataset.i];
var request = { // on définit la requête pour API
level_0: 'career',
@@ -199,22 +201,165 @@ if( document.querySelector('#CONTAINER section[data-controles]').length > 0 ){ /
// on créé l'évènement de confirmation de la saisie de TOUTES les notes saisies ou modifiées
- toutEnregistrerBtn.addEventListener('click', function(e){
+ toutEnregistrerBtnEnseignant.addEventListener('click', function(e){
- addClass( toutEnregistrerBtn, 'loading' );
+ addClass( toutEnregistrerBtnEnseignant, 'loading' );
var toutesNotes = [];
var controleUID = null;
// on sélectionne toutes les valeurs contenues dans les lignes actives
- for( var i = 0 ; i < saisieObj.length ; i++ ){ if( /active/.test(saisieObj[i].inputEl.className) ){
+ for( var i = 0 ; i < saisieObjEnseignant.length ; i++ ){ if( /active/.test(saisieObjEnseignant[i].inputEl.className) ){
- if( controleUID == null ) controleUID = saisieObj[i].ctrlid;
+ if( controleUID == null ) controleUID = saisieObjEnseignant[i].ctrlid;
toutesNotes.push({
- etudiant: saisieObj[i].userid,
- valeur: saisieObj[i].inputEl.value.replace(',', '.') // par précaution, on replace les virgules par des points pour le php (is_numeric)
+ etudiant: saisieObjEnseignant[i].userid,
+ valeur: saisieObjEnseignant[i].inputEl.value.replace(',', '.') // par précaution, on replace les virgules par des points pour le php (is_numeric)
+ });
+
+ }}
+
+
+ var request = { // on définit la requête pour API
+ level_0: 'career',
+ level_1: 'saisieNoteMultiple',
+ controle: controleUID,
+ notes: toutesNotes // on donne toutes les notes
+ };
+
+
+ API.send(request, function(response){ // on gère la réponse de API
+ if( response.request == 'success' ) // si on a une réponse positive, on incrémente le nombre de succès
+ reload();
+ });
+
+ }, false);
+
+
+ }
+
+}
+
+
+
+
+
+
+
+
+
+
+/*************************************************/
+/* GESTION DE LA SAISIE DE NOTES (version admin) */
+/*************************************************/
+if( document.querySelector('#CONTAINER section[name=allcontroles]') != null ){ // si c'est un enseignant
+ var nombreModificationAdmin = 0; // contiendra le nombre de notes saisies
+
+ /* SAISIE A L'AIDE DES */
+ var saisieInputAdmin = document.querySelectorAll('#CONTAINER section[name=allcontroles] table tr td input[type=number][data-ctrl].saisie_note');
+
+ var saisieObjAdmin = [];
+
+ /* BOUTON "TOUT ENREGISTRER" */
+ var toutEnregistrerBtnAdmin = document.querySelector("#CONTAINER section[name=allcontroles] table tr td:last-child .confirm.all");
+
+
+ if( toutEnregistrerBtnAdmin != null ){
+
+
+ // on référencie tous les input dans un objet
+ for( var i = 0 ; i < saisieInputAdmin.length ; i++ ){
+
+ saisieInputAdmin[i].dataset.i = i; // le rang du dans la liste
+
+ saisieObjAdmin[i] = {
+ inputEl: saisieInputAdmin[i], // le en question
+ initval: parseFloat( saisieInputAdmin[i].value.replace(',', '.') ), // la valeur initiale du
+ button: saisieInputAdmin[i].parentNode.children[1], // le bouton de validation pour ce
+ ctrlid: saisieInputAdmin[i].dataset.ctrl, // on récupère l'id du contrôle
+ userid: saisieInputAdmin[i].parentNode.parentNode.children[0].children[0].innerHTML // l'identifiant de l'utilisateur associé à ce
+ };
+
+ // on créé l'évènement qui affiche le validateur dès le changement de valeur
+ saisieObjAdmin[i].inputEl.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') && saisieObjAdmin[e.target.dataset.i].inputEl == e.target){
+ var obj = saisieObjAdmin[e.target.dataset.i];
+ var isActive = /active/.test(obj.inputEl.className); // VRAI si l'élément est actif
+
+
+ // si c'est une nouvelle valeur (nouvelle note), on active le validateur (bouton)
+ if( obj.initval != parseFloat(obj.inputEl.value.replace(',', '.')) )
+ addClass( obj.inputEl, 'active' );
+ else
+ remClass( obj.inputEl, 'active' );
+
+
+ // si changement du caractère "actif", et plus particulièrement
+ if( /active/.test(obj.inputEl.className) != isActive )
+ if( !isActive ) // si activation
+ nombreModificationAdmin += 1;
+ else
+ nombreModificationAdmin -= 1;
+
+ // si plus d'une modification, on affiche le bouton 'tout enregistrer'
+ if( nombreModificationAdmin > 1 )
+ addClass( toutEnregistrerBtnAdmin, 'active' );
+ else
+ remClass( toutEnregistrerBtnAdmin, 'active' );
+
+ }
+ }, false);
+
+
+ // on créé l'évènement de confirmation de la saisie
+ saisieObjAdmin[i].button.addEventListener('click', function(e){
+ // s'il s'agit bien d'un bouton de validation, que le associé a data-i existante et que ça match correctement
+ if( /confirm/.test(e.target.className) && e.target.parentNode.children[0].dataset.hasOwnProperty('i') && saisieObjAdmin[e.target.parentNode.children[0].dataset.i].button == e.target ){
+ var obj = saisieObjAdmin[e.target.parentNode.children[0].dataset.i];
+
+ var request = { // on définit la requête pour API
+ level_0: 'career',
+ level_1: 'saisieNote',
+ etudiant: obj.userid,
+ controle: obj.ctrlid,
+ note: obj.inputEl.value.replace(',', '.'), // par précaution, on replace les virgules par des points pour le php (is_numeric)
+ };
+
+ addClass( obj.button, 'loading' );
+
+ 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' ) reload();
+ });
+
+ }
+
+ }, false);
+
+
+ }
+
+
+
+ // on créé l'évènement de confirmation de la saisie de TOUTES les notes saisies ou modifiées
+ toutEnregistrerBtnAdmin.addEventListener('click', function(e){
+
+ addClass( toutEnregistrerBtnAdmin, 'loading' );
+
+ var toutesNotes = [];
+
+ var controleUID = null;
+
+ // on sélectionne toutes les valeurs contenues dans les lignes actives
+ for( var i = 0 ; i < saisieObjAdmin.length ; i++ ){ if( /active/.test(saisieObjAdmin[i].inputEl.className) ){
+
+ if( controleUID == null ) controleUID = saisieObjAdmin[i].ctrlid;
+
+ toutesNotes.push({
+ etudiant: saisieObjAdmin[i].userid,
+ valeur: saisieObjAdmin[i].inputEl.value.replace(',', '.') // par précaution, on replace les virgules par des points pour le php (is_numeric)
});
}}
diff --git a/page/career.php b/page/career.php
index 860c349..701bece 100755
--- a/page/career.php
+++ b/page/career.php
@@ -662,8 +662,6 @@ if( (permission('master') || permission('admin')) && $controleOpt == null ){ //
}else
echo "
Aucun contrôle trouvé
";
-
-
}
/* [2] Un contrôle particulier( avec ou sans groupe particulier )