Projet

Général

Profil

Development #86624

Mis à jour par Lauréline Guérin il y a 3 mois

Soit le cas suivant:
app1:
- cat1 position 1
- cat2 position 2

Sur l'instance on a déjà:
- cata position 1
- catb position 2
- catc position 3

Après import de l'app app1, on aura sur l'instance:
- cata position 1
- cat1 position 1
- catb position 2
- cat2 position 2
- catc position 3
(position n'est pas recalculé à l'import, uniquement au classement dans l'UI)

Conséquence, dans l'interface de listing des objets, les objets sont bien groupés par catégories mais les catégories d'une même app sont éloignées les unes des autres. Si l'admin réorganise les catégories, le nouvel ordering est perdu à la mise à jour de l'application.

Pour éviter ça, deux cas à prendre en compte:

1/ aucune catégorie de l'application n'existe sur l'instance cible. On place alors toutes les catégories de l'application à la fin, en un seul bloc. Au sein du bloc des catégories de l'application, les catégories sont bien rangées selon l'ordre défini dans l'application.

Ainsi on obtient:
- cata position 1
- catb position 2
- catc position 3
- cat1 position 4
- cat2 position 5

2/ au moins une catégorie de l'application existe sur l'instance cible. Dans ce cas, repérer la position de la première catégorie de l'application, et insérer ici tout le bloc des catégories de l'application, en respectant au sein du bloc l'ordre des catégories de l'application.

En partant des situations initiales suivantes:
- cata position 1
- catb position 2
- cat1 position 3
- catc position 4

- cata position 1
- catb position 2
- cat2 position 3
- catc position 4

- cata position 1
- catb position 2
- cat2 position 3
- cat1 position 4
- catc position 5

On obtient:
- cata position 1
- catb position 2
- cat1 position 3
- cat2 position 4
- catc position 5

Pour éviter d'avoir des diffs sur l'ordering des catégories, sortir le champ @position@ des snapshots des catégories, et en cas de restore, écraser le champ par la valeur de l'objet existant (comme on le fait pour les pages dans combo)

Retour