예제 #1
0
 protected function ConstruireListe()
 {
     $divElem = NULL;
     if ($this->rechargement === false) {
         $this->AjouterClasse($this->prefixIdClass . LISTECLASS . $this->Niveau(), false);
         $this->AjouterClasse(LISTECLASS . $this->Niveau());
         // Construction de la partie triable de la liste si elle l'est.
         $this->ConstruireListeTriable();
         // Construction de la fonction appelée en cas de changement de page.
         $divChangePageFonc = new SBalise(BAL_DIV);
         $divChangePageFonc->AddClass(LISTE_JQ_PAGE_CHANGEFONC);
         $divChangePageFonc->SetText($this->foncAjaxRechargement);
         $divChangePageFonc->AddProp(PROP_STYLE, 'display: none;');
         $this->Attach($divChangePageFonc);
         // Construction des paramètres pour la fonction appelée en cas de changement de page.
         $divChangePageParam = new SBalise(BAL_DIV);
         $divChangePageParam->AddClass(LISTE_JQ_PAGE_CHANGEPARAM);
         $param = 'contexte=' . $this->contexte . '&' . $this->contexte . '[page][' . $this->TypeSynchro() . '][' . $this->Numero() . ']';
         $divChangePageParam->SetText(to_ajax($param));
         $divChangePageParam->AddProp(PROP_STYLE, 'display: none;');
         $this->Attach($divChangePageParam);
         // Construction du type de synchronisation de la liste (utilisé pour recharger une liste via ajax).
         $divTypeSynchro = new SBalise(BAL_DIV);
         $divTypeSynchro->AddClass(LISTE_JQ_TYPESYNCHRO);
         $divTypeSynchro->SetText($this->TypeSynchroPage());
         $divTypeSynchro->AddProp(PROP_STYLE, 'display: none;');
         $this->Attach($divTypeSynchro);
         // Construction du numéro de la liste (utilisé pour recharger une liste unique via ajax).
         $divNumero = new SBalise(BAL_DIV);
         $divNumero->AddClass(LISTE_JQ_NUMERO);
         $divNumero->SetText(strval($this->Numero()));
         $divNumero->AddProp(PROP_STYLE, 'display: none;');
         $this->Attach($divNumero);
         // Construction du niveau de la liste (utilisé pour savoir si la liste est contenu dans une autre).
         $divNiveau = new SBalise(BAL_DIV);
         $divNiveau->AddClass(LISTE_JQ_NIVEAU);
         $divNiveau->SetText(strval($this->Niveau()));
         $divNiveau->AddProp(PROP_STYLE, 'display: none;');
         $this->Attach($divNiveau);
         // Construction de la ligne de titre.
         $ligneTitre = $this->ConstruireLigneTitre();
         if ($ligneTitre !== NULL) {
             $this->Attach($ligneTitre);
         }
         // Construction d'une ligne de changement de page.
         $changePage = $this->ConstruireChangementPage();
         if ($changePage !== NULL) {
             $this->Attach($changePage);
         }
         $divElem = new SBalise(BAL_DIV);
         $divElem->AddClass(LISTE_JQ_LISTE);
         if ($this->Triable()) {
             $divElem->AddClass($this->typeLiaison);
         }
         $elemModele = $this->ConstruireElementModele();
         if ($elemModele !== NULL) {
             $divElem->Attach($elemModele);
         }
         $this->Attach($divElem);
     }
     // Construction des éléments de la liste.
     $ordre = 0;
     $poidsJavascriptMax = GSession::PoidsJavascriptMax();
     $noSupp = false;
     foreach ($this->elements as &$element) {
         if (GSession::PoidsJavascript() <= $poidsJavascriptMax) {
             $elem = $this->ConstruireElement($element, $ordre);
             if ($element[LISTE_ELEMENT_ACTION] == LISTE_ELEMACTION_CREAT) {
                 GSession::PoidsJavascript(8);
             } else {
                 if ($element[LISTE_ELEMENT_ACTION] == LISTE_ELEMACTION_MODIF && array_key_exists(LISTE_ELEMENT_MODIFIE, $element) && $element[LISTE_ELEMENT_MODIFIE] === true) {
                     GSession::PoidsJavascript(2);
                 }
             }
             if ($this->rechargement === false) {
                 $divElem->Attach($elem);
             } else {
                 $element[LISTE_ELEMENT_CONTENU] = $elem;
             }
             $ordre++;
         } else {
             $noSupp = true;
             GReponse::AjouterElementSuite($this->contexte);
             break;
         }
     }
     // Suppression des éléments qui ne font plus partie de la liste.
     if ($noSupp === false && $this->listeSuppressions !== NULL) {
         foreach ($this->listeSuppressions as $id => $elemSupp) {
             $elementSupp = array();
             $elementSupp[LISTE_ELEMENT_ID] = $id;
             $elementSupp[LISTE_ELEMENT_ACTION] = LISTE_ELEMACTION_SUPP;
             GSession::PoidsJavascript(1);
             $this->elements[] = $elementSupp;
             // Suppression du contexte.
             if (array_key_exists($id, $this->listeContexte)) {
                 unset($this->listeContexte[$id]);
             }
         }
     }
     if ($this->rechargement === false) {
         // Construction d'une ligne de changement de page.
         $changePage = $this->ConstruireChangementPage();
         if ($changePage !== NULL) {
             $this->Attach($changePage);
         }
         // Construction de l'élément de création.
         if ($this->HasDroitCreation()) {
             $elemCreat = $this->ConstruireElementCreation();
             if ($elemCreat) {
                 GSession::PoidsJavascript(8);
                 $this->Attach($elemCreat);
             }
         }
     } else {
         if ($this->HasDroitCreation()) {
             // Rechargement des listes pour l'élément création.
             foreach ($this->champs as $nomChamp => $champ) {
                 $this->GetDifferentielForListeElementCreation($nomChamp);
             }
         }
     }
     // Sauvegarde de la liste dans le contexte.
     // Si on a changé de page, on supprime l'ancienne liste du contexte.
     GContexte::Liste($this->contexte, $this->TypeSynchroPage(), $this->listeContexte);
 }