var isPrevisionnelle = absenceSurAppelEnCours == "" && absenceSurPlageEnCours != "" && absenceSurPlageEnCours.previsionnel == true;
var isSurAppelTemporaire = absenceSurAppelEnCours == "" && absenceSurPlageEnCours != "" && !absenceSurPlageEnCours.appelId && idAppel == "appelAPPEL_TEMP";
if (isPrevisionnelle || isSurAppelTemporaire || absenceSurAppelEnCours != "" || isVide) {
+ // est-ce l'élève pour lequel on saisit l'absence fait partie de la structure de l'appel affiché?
+ var isEleveDansStructureAppel =
+ this.isEleveDansStructureAppel(
+ dataLigneAppel.get("eleveStructureIds"),
+ this.storeAppel.getById(idAppel.substring(5, idAppel.length)));
this.fireEvent(
this.Constantes.eventId.actionEditeAbsence,
- dataLigneAppel,idAppel,columnIndexPlageHoraire
+ dataLigneAppel,idAppel,columnIndexPlageHoraire,isEleveDansStructureAppel
)
} else {
return false;
var idPlage = this.storePlagesHoraires.getAt(columnIndexPlageHoraire - 1).id;
// Pour pouvoir faire un clic droit sur cette cellule,il faut qu'elle ait une absence liée à l'appel affiché
var absenceSurAppelEnCours = dataLigneAppel.get(idAppel);
- if (idAppel == this.Constantes.id.storeAppelDataIndexVide || absenceSurAppelEnCours == "") {
+ // si appel, est-ce l'élève pour lequel on saisit l'absence fait partie de la structure de l'appel affiché?
+ var isEleveDansStructureAppel =
+ this.isEleveDansStructureAppel(
+ dataLigneAppel.get("eleveStructureIds"),
+ this.storeAppel.getById(idAppel.substring(5, idAppel.length)));
+ if (idAppel == this.Constantes.id.storeAppelDataIndexVide ||
+ absenceSurAppelEnCours == "" ||
+ (!dataLigneAppel.dirty && !isEleveDansStructureAppel)) {
return;
}
this.Constantes.eventId.actionModifieDetailsRetardDepart,
function (dataAppelLigne, appelEtId, retradDepartInfo, columnIndexPlageHoraire) {
+ // si appel, est-ce l'élève pour lequel on saisit l'absence fait partie de la structure de l'appel affiché?
+ var appelId = appelEtId.substring(5, appelEtId.length); // Note on supprime le préfixe 'appel'
+ var dataAppel = this.storeAppel.getById(appelId);
+ var isEleveDansStructureAppel =
+ this.isEleveDansStructureAppel(
+ dataAppelLigne.get("eleveStructureIds"),
+ dataAppel);
+
this.fireEvent(
this.Constantes.eventId.actionModifieDetailsRetardDepart,
dataAppelLigne,
appelEtId,
retradDepartInfo,
- columnIndexPlageHoraire
+ columnIndexPlageHoraire,
+ isEleveDansStructureAppel
);
},
this
actionEditionRetardDepart:function (dataAppelLigne, appelId, columnIndexPlageHoraire) {
var dataAppel = this.storeAppel.getById(appelId);
+ var plageId = this.storePlagesHoraires.getAt(columnIndexPlageHoraire - 1).id;
+ // récupération de l'absence qui se trouve dans la cellule, si elle existe
+ var absenceSurAppel = dataAppelLigne.get('appel' + dataAppel.id);
+ var absenceJournee = dataAppelLigne.get('plage' + plageId);
+
+ // si appel, est-ce l'élève pour lequel on saisit l'absence fait partie de la structure de l'appel affiché?
+ var isEleveDansStructureAppel =
+ this.isEleveDansStructureAppel(
+ dataAppelLigne.get("eleveStructureIds"),
+ dataAppel);
+
+ // Si une absence existe dans la cellule, qu'elle n'est pas en cours de modification
+ // et que l'élève pour lequel on fait la modification
+ // n'appartient pas à la classe de l'appel affiché, on ne fait rien
+ if (absenceJournee || (absenceSurAppel && !dataAppelLigne.dirty && !isEleveDansStructureAppel)){
+ return;
+ }
this.windowEditeAbsenceView.afficherWindowEditeAbsenceView(
dataAppelLigne,
var absenceSurAppelEnCours = dataLigneAppel.get(idAppel);
var absenceSurPlageEnCours = dataLigneAppel.get("plage"+idPlage);
return (absenceSurAppelEnCours == "" && absenceSurPlageEnCours == "");
+ },
+
+ isEleveDansStructureAppel : function(eleveStructureIds, appelAffiche){
+ var isEleveDansStructureAppel = false;
+
+ // si l'appel est temporaire, la structure ne lui est pas encore rattachée.
+ // comme on sait que cette structure sera celle en cours et que celle de l'élève
+ // qu'on modifie est aussi celle en cours, on sait que l'élève est bien
+ // dans la même structure que celle de l'appel
+ if (appelAffiche.id == "APPEL_TEMP"){
+ return true;
+ }
+
+ var structureConcerneeAppel = appelAffiche.get("structureConcerneeId");
+ Ext.each(eleveStructureIds, function(eleveStructureId){
+ if (eleveStructureId == structureConcerneeAppel){
+ isEleveDansStructureAppel = true;
+ }
+ });
+ return isEleveDansStructureAppel;
}
});