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); }