developer.jelix.org is not used any more and exists only for history. Post new tickets on the Github account.
developer.jelix.org n'est plus utilisée, et existe uniquement pour son historique. Postez les nouveaux tickets sur le compte github.

Opened 9 years ago

Closed 6 years ago

#1347 closed enhancement (fixed)

jControllerDaoCrud - Ajout de la possibilité de modifier l'ordre d'apparition des résultats

Reported by: brunto Owned by: laurentj
Priority: normal Milestone: Jelix 1.7
Component: jelix:controllers Version: trunk
Severity: normal Keywords:
Cc: Blocked By:
Blocking: Documentation needed: no
Hosting Provider: Php version:

Description

Pouvoir classer l'ordre d'apparition des résultats en cliquant sur le titre de chaque colonne. A chaque clique l'ordre de la colonne passe de "asc" à "desc" puis à "null", ainsi de suite. L'ordre des cliques sur les titres est pris en compte.

Attachments (4)

order.png (277 bytes) - added by brunto 9 years ago.
Icon order
jControllerDaoCrud.diff (10.0 KB) - added by brunto 9 years ago.
Patch
jControllerDaoCrud-2.diff (16.1 KB) - added by laurentj 9 years ago.
deuxième version du patch non corrigé, mais qui s'applique sans erreur et avec l'image incluse
jControllerDaoCrud-3.diff (10.9 KB) - added by brunto 9 years ago.

Download all attachments as: .zip

Change History (11)

Changed 9 years ago by brunto

Icon order

comment:1 Changed 9 years ago by brunto

  • review set to review?

Changed 9 years ago by brunto

Patch

comment:2 Changed 9 years ago by laurentj

  • Component changed from jelix to jelix:controllers
  • review changed from review? to review-

le nom du dao n'est pas assez discriminant pour le stockage dans la session. On peut très bien avoir deux crud avec le même dao. il faut je pense plutôt utiliser module~controlleur.

+                if (array_key_exists($lo, $this->propertiesForListOrder)) {
+                    if (isset($_SESSION['CRUD_LISTORDER'][$this->dao][$lo]) && $_SESSION['CRUD_LISTORDER'][$this->dao][$lo] == 'asc')
+                        $_SESSION['CRUD_LISTORDER'][$this->dao][$lo] = 'desc';
+                    elseif (isset($_SESSION['CRUD_LISTORDER'][$this->dao][$lo]) && $_SESSION['CRUD_LISTORDER'][$this->dao][$lo] == 'desc')
+                        unset($_SESSION['CRUD_LISTORDER'][$this->dao][$lo]);
+                    else
+                        $_SESSION['CRUD_LISTORDER'][$this->dao][$lo] = 'asc';
+                }

ça manque de lisibilité. on pourrait passer par des variables temporaires pour éviter d'avoir à manipuler $_SESSION à toutes les lignes.

il y a une notice dans _indexSetConditions. tester l'existence de la variable de session. Il me semble qu'il y a moyen d'optimiser, de faire tout en une seule boucle.

Changed 9 years ago by laurentj

deuxième version du patch non corrigé, mais qui s'applique sans erreur et avec l'image incluse

comment:3 Changed 9 years ago by brunto

  • review changed from review- to review?
  • Modification pour le stockage dans la session en module~controlleur:dao utilisation de $this->_getAction($this->dao)
  • Variable temporaire pour $_SESSION + allégement du code.
  • Notice dans _indexSetConditions() corrigée.

Changed 9 years ago by brunto

comment:4 Changed 9 years ago by nesswaw

Bonjour,

Ce ticket est toujours d'actualité? J'aurais une solution simple à proposer...mais je ne sais pas faire de patch...

comment:5 Changed 9 years ago by brunto

Bonjour nesswaw,

Comme tu peux le voir, j'ai proposé un patch que tu peux trouver ci-dessus "jControllerDaoCrud-3.diff" Bien entendu libre à toi de proposer une solution.

Tu peux consulter la page suivante Proposer un patch afin de proposer ton patch.

comment:6 Changed 9 years ago by laurentj

  • Owner set to laurentj
  • review review? deleted
  • Status changed from new to reviewing

comment:7 Changed 6 years ago by laurentj

  • Milestone set to Jelix 1.7
  • Resolution set to fixed
  • Status changed from reviewing to closed
Note: See TracTickets for help on using tickets.