[spip-dev] Plugin "Archivage de contenus" - feedback utilisation lister_champs_selection_conditionnelle

Hello,

J’ai finalisé hier une première version du plugin Archivage de contenus qui permet enfin, par défaut, de supprimer des affichages de liste d’objets les objets archivés et, aussi d’afficher les archives uniquement à partir de ces mêmes liste d’objets.
Pour cela j’ai utilisé le critère {id_?} et le pipeline lister_champs_selection_conditionnelle.
Voilà mon feedback et quelques idées d’évolutions à discuter.

Le fonctionnement recherché pour les listes d’objets :
1- si aucun critère d’archivage n’est précisé (explicite ou implicite via id_?) je n’affiche pas les objets archivés
2- on doit pouvoir afficher que les objets archivés
3- on doit pouvoir afficher tous les objets archivés ou pas

Le critère {id_?} et le pipeline lister_champs_selection_conditionnelle :

En fait, je ne comprends plus le nom maintenant que combiné avec le pipeline lister_champs_selection_conditionnelle il permet d’insérer un champ id_xx mais aussi tout autre champ comme mon champ “est_archive” par exemple.
Il serait peut-être utile de le renommer en rappelant cette aspect pipeline comme on le fait dans le code HTML ou PHP et donc renommer aussi le pipeline qui est assez peu utilisé aujourd’hui.
Un truc du style {pipeline_where}, le “?” étant inutile et qui rappelle le critère {where} qui est le pendant “statique” du premier (ou “where_statique”, “where_immediat” et “where_dynamique”, “where_calcule” et le pipeline lister_champs_where_dynamique).

Après, lors de la discussion qui a mené à cette implémentation, il avait été proposé d’appeler une fonction de calcul du critère si elle existe : ce n’est pas le cas actuellement et ça serait bien de l’introduire car dans mon cas je suis obligé de capturer a posteriori , via le pipeline post_boucle, le where calculé par le critère id_ pour le modifier étant donné qu’il n’introduit pas la valeur par défaut (tout sauf les archives) si aucune variable “est_archive” n’est définie dans l’environnement.

Néanmoins, le code actuel fonctionne malgré ces désagréments pour les points 1 et 2 précités et j’obtiens bien soit le critère compilé {est_archive=0} soit {est_archive=1}.
Par contre, pour le 3 il faudrait que je puisse fournir une valeur différente de 0 ou 1 à est_archive dans l’appel de la liste de l’objet et c’est pas hyper propre.
Je n’ai pas encore trouver la façon propre et satsfaisante de le faire.

Donc voilà pour le feedback, ça serait bien de discuter des propositions précédentes d’évolutions si elles s’avèrent intéressantes ou de me dire si je me suis totalement fourvoyé et qu’il y a plus simple sans évolution.

Hello,

Bon je relance un peu ce fil qui a clairement fait l’unanimité :p.

Pour le cas 3, afficher tous les objets archivés ou pas, j’ai essayé d’utiliser un array dans le ENV pour la variable est_archive en passant soit #ARRAY soit #LISTE{0,1} à l’inclusion liste des objets comme il semble être possible de le faire mais ça ne fonctionne pas, j’ai une erreur SQL sur le IN.
C’est quand même étrange car le where calculé par la fonction critere_id__dist contient bien un test sur le type array et un sql_in pour condition.

Donc si quelqu’un a des idées pour le mail précédent je suis toujours preneur.

Hello,

Petite remarque sur le plugin Sites.
Contrairement à d’autres objets, la liste des sites possède la boucle suivante :

<BOUCLE_liste_sites(SYNDIC){id_syndic?}{id_mot?}{id_rubrique?}{where?}{recherche?}{statut?}{syndication?}{tri #ENV{par,date},#GET{defaut_tri}}{pagination #ENV{nb,10}}>

On voit qu’il y a encore id_mot? alors qu’on pourrait utiliser id_?.
Je suis aussi étonné qu’on ait le critère conditionnel id_syndic? : à quoi ça peut servir d’avoir une liste d’un seul site ?

Il faudrait pas corriger cela ?

[...]

Pour cela j'ai utilisé le critère {id_?} et le pipeline lister_champs_selection_conditionnelle.
Voilà mon feedback et quelques idées d'évolutions à discuter.

Ce que je voulais exprimer en indiquant que ce pipeline n’était peut être pas une bonne idée, c’est justement un cas comme tu présentes, qui appelles un autre champ que "id_qqc" (il y a déjà "objet" parfois aussi de mémoire). C’est pour cela que je pense que {id_?} ou {id_*?} est correctement nommé, pour l’usage que je lui supposais.

Peut être qu’il faut alors un autre critère, et peut être pas de pipeline sur le premier d’ailleurs) pour ton/cet autre usage.

Ou sinon, comme tu dis, il faut renommer le critère pour quelque chose de plus général, mais les noms que tu proposes me laissent plutôt perplexe, notamment car ça n’a rien à voir techniquement avec le critère {where}.

_Le fonctionnement recherché pour les listes d'objets :_
1- si aucun critère d'archivage n'est précisé (explicite ou implicite via id_?) je n'affiche pas les objets archivés
2- on doit pouvoir afficher que les objets archivés
3- on doit pouvoir afficher tous les objets archivés ou pas

Il y a également un problème d’ordre dans les critères ; pour que {id_?} et l’appel de ton pipeline puisse détecter que le critère "archive" est utilisé, cet appel à archive doit arriver avant le critère id. ie.: {archive=1}{id_?} et pas {id_?}{archive=1} ;

Ce qui est déjà en soit une limitation sur {id_?} .

[...]

Après, lors de la discussion qui a mené à cette implémentation, il avait été proposé d'appeler une fonction de calcul du critère si elle existe :

Tu peux rafraichir nos mémoires parce que je ne vois pas à quoi ça pourrait faire allusion ?

ce n'est pas le cas actuellement et ça serait bien de l'introduire car dans mon cas je suis obligé de capturer a posteriori , via le pipeline post_boucle, le where calculé par le critère id_ pour le modifier étant donné qu'il n'introduit pas la valeur par défaut (tout sauf les archives) si aucune variable "est_archive" n'est définie dans l'environnement.

C’est bien ce qui me fait dire que ce n’est pas le même besoin, et donc probablement pas le même critère ou le même mécanisme à utiliser.

[...]

Il faut en discuter donc :slight_smile:

MM.

Hello,

[…]

Pour cela j’ai utilisé le critère {id_?} et le pipeline
lister_champs_selection_conditionnelle.
Voilà mon feedback et quelques idées d’évolutions à discuter.

Ce que je voulais exprimer en indiquant que ce pipeline n’était peut
être pas une bonne idée, c’est justement un cas comme tu présentes, qui
appelles un autre champ que « id_qqc » (il y a déjà « objet » parfois aussi
de mémoire). C’est pour cela que je pense que {id_?} ou {id_*?} est
correctement nommé, pour l’usage que je lui supposais.

Peut être qu’il faut alors un autre critère, et peut être pas de
pipeline sur le premier d’ailleurs) pour ton/cet autre usage.

Oui c’est possible.
Le critère id_? a du sens quand il permet « automatiquement » de créer des conditions basées sur les id identifiées en fonction de la boucle et des tables liées…
Là où à mon avis ça perd de son sens c’est quand on utilise un pipeline qui permet d’injecter d’autres critère comme le mien est_archive.
Ca devient alors comme tu le dis un tout autre critère.

Ou sinon, comme tu dis, il faut renommer le critère pour quelque chose
de plus général, mais les noms que tu proposes me laissent plutôt
perplexe, notamment car ça n’a rien à voir techniquement avec le critère
{where}.

Là je ne suis pas d’accord.
Si on en fait un critère plus général il y a des similitudes avec le critère {where}.
Le critère {where} attend une condition dans une variable « where » du contexte et la condition doit être totalement compilée.
Le critère {id_?} ou autre nomenclature traduit in fine un where mais qui n’est pas immédiat dans le contexte : il doit être calculé à partir d’éléments du contexte non définis en opérande du critère. Pour moi c’est une sorte de where mais dynamique ce qui justement nécessite de passer par un pipeline pour fournir cet opérande.

Le fonctionnement recherché pour les listes d’objets :
1- si aucun critère d’archivage n’est précisé (explicite ou implicite
via id_?) je n’affiche pas les objets archivés
2- on doit pouvoir afficher que les objets archivés
3- on doit pouvoir afficher tous les objets archivés ou pas

Il y a également un problème d’ordre dans les critères ; pour que {id_?}
et l’appel de ton pipeline puisse détecter que le critère « archive » est
utilisé, cet appel à archive doit arriver avant le critère id. ie.:
{archive=1}{id_?} et pas {id_?}{archive=1} ;

Ce qui est déjà en soit une limitation sur {id_?} .

Je te suis pas trop là mais je crois que mon explication n’était pas claire non plus.
A mon avis c’est un sujet mineur car j’ai réussi à faire fonctionner les trois cas.

[…]

Après, lors de la discussion qui a mené à cette implémentation, il avait
été proposé d’appeler une fonction de calcul du critère si elle existe :

Tu peux rafraichir nos mémoires parce que je ne vois pas à quoi ça
pourrait faire allusion ?

Oui, c’était Cédric qui proposait :

Une solution à laquelle je pense serait de faire un critère spécifique genre {selection_conditionnelle} (nomenklatura si tu as mieux on prend !) qui regarderait les id_xxx connus dans l’environnement et pour chaque chercherait une fonction du type inc_generer_condition_selection_{id_xx}dist qu’on appelerait sur le mode
$generer_condition_selection = charger_fonction(‘generer_condition_selection
’.$primary,’inc’);

$boucle->where = $generer_condition_selection($type_boucle,champ_sql($primary));

J’ai d’ailleurs patché le critère id_ pour insérer un tel mécanisme et ça fonctionne très bien.
Ca m’a permis de simplifier mon post_boucle.

ce n’est pas le cas actuellement et ça serait bien de l’introduire car
dans mon cas je suis obligé de capturer a posteriori , via le pipeline
post_boucle, le where calculé par le critère id_ pour le modifier étant
donné qu’il n’introduit pas la valeur par défaut (tout sauf les
archives) si aucune variable « est_archive » n’est définie dans
l’environnement.

C’est bien ce qui me fait dire que ce n’est pas le même besoin, et donc
probablement pas le même critère ou le même mécanisme à utiliser.

[…]

Il faut en discuter donc :slight_smile:

Pour être clair en terme de code.
En utilisant id_ pour mon besoin j’obtiens par défaut le where suivant (le truc important est en bleu) :

**array** *(size=4)*
  0 => <small>string</small> ''?'' *(length=3)*
  1 => <small>string</small> '!(is_array(@$Pile[0]['est_archive'])?count(@$Pile[0]['est_archive']):strlen(@$Pile[0]['est_archive']))' *(length=102)*
  2 => <small>string</small> ''='' *(length=3)*
  3 => 
    **array** *(size=4)*
      0 => <small>string</small> ''?'' *(length=3)*
      1 => <small>string</small> '(is_array(@$Pile[0]['est_archive']))' *(length=36)*
      2 => <small>string</small> 'sql_in('articles.est_archive',sql_quote($in8))' *(length=46)*
      3 => 
        **array** *(size=3)*
          0 => <small>string</small> ''='' *(length=3)*
          1 => <small>string</small> ''articles.est_archive'' *(length=22)*
          2 => <small>string</small> 'sql_quote(@$Pile[0]['est_archive'], '','tinyint(1) NOT NULL DEFAULT \'0\'')' *(length=75)*

Alors que moi je voudrais, dans le cas où est_article n’est pas fourni un critère d’exclusion des archives soit :

**array** *(size=4)*
  0 => <small>string</small> ''?'' *(length=3)*
  1 => <small>string</small> '!(is_array(@$Pile[0]['est_archive'])?count(@$Pile[0]['est_archive']):strlen(@$Pile[0]['est_archive']))' *(length=102)*
  2 => 
    **array** *(size=3)*
      0 => <small>string</small> ''='' *(length=3)*
      1 => <small>string</small> ''est_archive'' *(length=13)*
      2 => <small>int</small> 0
  3 => 
    **array** *(size=4)*
      0 => <small>string</small> ''?'' *(length=3)*
      1 => <small>string</small> '(is_array(@$Pile[0]['est_archive']))' *(length=36)*
      2 => <small>string</small> 'sql_in('articles.est_archive',sql_quote($in8))' *(length=46)*
      3 => 
        **array** *(size=3)*
          0 => <small>string</small> ''='' *(length=3)*
          1 => <small>string</small> ''articles.est_archive'' *(length=22)*
          2 => <small>string</small> 'sql_quote(@$Pile[0]['est_archive'], '','tinyint(1) NOT NULL DEFAULT \'0\'')' *(length=75)*

C’est ce que je fais dans le post_boucle quand il n’y a aucun critère archive précisé.
Et c’est vrai qu’en y réfléchissant, ce n’est peut être pas la bonne méthode d’utiliser id_ sauf que pour l’instant je ne vois pas d’autre méthode.

Et toi?

Au contraire, il faut que cette listes ait un {id_syndic?} (et plus généralement les listes ait un critère sur leur clé primaire), car cela permet d’afficher 1 ou plusieurs sites qu’on file en env (quand il est conditionnel il accepte un array).
Cela dit je pense quei {id_?} couvre ce besoin du coup

Yop,

Re,

Une petite remarque pour la route.
La présentation en deux colonnes des rubriques est codée en PHP.
De fait, il n’est pas possible par défaut de cacher les rubriques archivées de cet affichage.
Pour Contrib on pourra le faire car on modifie déjà ces fonctions pour amender la présentation des différents types de rubriques.

J'ai testé la version 0.2 du plugin.
Il s'installe bien et fonctionne (quasiment) tout bien.
Voici qq remarques pour détailler un peu.

# Dans la configuration :

- l'option " Consigner, pour un contenu, le retrait des archives" est incompréhensible.
Qu'est ce que "consigner" ? Est-ce un log ? une révision ?
Qu'est ce que le "retrait des archives" ? Ah, ça doit être le fait de retirer un objet des archives.

- Pour le libellé « Autoriser la saisie d’une raison pour chaque archivage »
voici une version plus légère : "Permettre de préciser le motif de chaque archivage"

# Ça marche !

L'archivage et le désarchivage, testés en situation simple, marchent bien.

Les articles archivés n'apparaissent plus dans les listes de la dist,
mais ils gardent leur statut "publie"

On peut toujours les "voir en ligne" depuis le privé, même sans var_mode ou var_preview spécifique.
Dans ce cas, rien n'indique leur statut dans le public.

Je me dis que ce doit être le {id_?} : l'archivage est inopérant quand un article est explicitement ciblé.
Du coup, l'archivage n'est pas une dépublication.
Archiver c'est ne pas mettre dans les vitrines et ne montrer que si on demande avec la référence précise.

C'est original.

# Dans le privé

Une fois un contenu archivé, un bandeau fond rouge apparaît
au milieu de la colonne principale, sous les auteurs,
alors que le bouton "retirer des archives" est sous les statuts
dans le bloc "box info" à gauche.
Cette dispersion confuse le regard.
Il me semble que l'indication du statut "archive" devrait aller aussi dans le bloc "box info" d'identité de l'objet,
au dessus du bouton "archiver" ou "retirer des archives".
Et à mon avis, c'est tout ce bloc "box info" qui devrait recevoir le fond rouge.

Ainsi que tu l'indiques dans le log, le <script> passé dans le message_ok
affiche son source tel quel au lieu de s'exécuter pour fermer la modale.
Pourtant tu as bien une * sur l'affichage (dans le html) mais ça suffit pas.
Il faut ** pour que le script s'exécute et que la modale se ferme.

À part ça ya pas beaucoup de modales dans spip privé. Le recours à une modale ici me questionne un peu, surtout que son contenu se limite à un seul choix.

JLuc

Hello,

J’ai finalisé hier une première version du plugin Archivage de contenus qui permet enfin, par défaut, de supprimer des
affichages de liste d’objets les objets archivés et, aussi d’afficher les archives uniquement à partir de ces mêmes
liste d’objets.

J’ai testé la version 0.2 du plugin.
Il s’installe bien et fonctionne (quasiment) tout bien.
Voici qq remarques pour détailler un peu.

Cool merci pour les tests.

Dans la configuration :

  • l’option " Consigner, pour un contenu, le retrait des archives" est incompréhensible.
    Qu’est ce que « consigner » ? Est-ce un log ? une révision ?
    Qu’est ce que le « retrait des archives » ? Ah, ça doit être le fait de retirer un objet des archives.

Oui c’est le fait de garder une date voire un motif sur le fait de retirer un objet des archives.
J’ai pas trop travailler les libellés. Si tu as un libellé alternatif n’hésite.

  • Pour le libellé « Autoriser la saisie d’une raison pour chaque archivage »
    voici une version plus légère : « Permettre de préciser le motif de chaque archivage »

Yep ok, je ferais la modification.

Ça marche !

L’archivage et le désarchivage, testés en situation simple, marchent bien.

Les articles archivés n’apparaissent plus dans les listes de la dist,
mais ils gardent leur statut « publie »

Oui c’est le principe.
Je me disais aussi qu’on pourrait bloquer la modification du statut.

On peut toujours les « voir en ligne » depuis le privé, même sans var_mode ou var_preview spécifique.
Dans ce cas, rien n’indique leur statut dans le public.

Je me dis que ce doit être le {id_?} : l’archivage est inopérant quand un article est explicitement ciblé.
Du coup, l’archivage n’est pas une dépublication.
Archiver c’est ne pas mettre dans les vitrines et ne montrer que si on demande avec la référence précise.

C’est une bonne question.
Ce qui est sur c’est que ce n’est pas une dépublication.
Il est toujours possible de chercher et d’afficher les objets archivés justement en étendant la recherche ou la visualisation.
Mais comme ils ne sont pas visibles sauf à travers la liste des archives si on à les droits associés, c’est plus difficile de les repérer.
Moi ça me parait le bon fonctionnement mais je ne sais pas si tout le monde le voyait ainsi.

C’est original.

Dans le privé

Une fois un contenu archivé, un bandeau fond rouge apparaît
au milieu de la colonne principale, sous les auteurs,
alors que le bouton « retirer des archives » est sous les statuts
dans le bloc « box info » à gauche.
Cette dispersion confuse le regard.

C’est un peu comme Proposé à la publication.
Le bouton d’action est dans la boite d’infos et ce qui attire l’œil est dans le corps de l’objet en couleur de fond différente du reste.
J’ai reproduit ce visuel mais ça peut être modifié.

Il me semble que l’indication du statut « archive » devrait aller aussi dans le bloc « box info » d’identité de l’objet,
au dessus du bouton « archiver » ou « retirer des archives ».
Et à mon avis, c’est tout ce bloc « box info » qui devrait recevoir le fond rouge.

Je ne suis pas convaincu par le fait d’indiquer l’état d’archivage dans la boite d’info vue qu’on a surtout l’habitude d’avoir le statut de publication.
Par contre, je pense qu’il serait bon de figer le statut de l’article et peut être ajouter une indication mais laquelle ?

Ainsi que tu l’indiques dans le log, le passé dans le message_ok
affiche son source tel quel au lieu de s’exécuter pour fermer la modale.
Pourtant tu as bien une * sur l’affichage (dans le html) mais ça suffit pas.
Il faut ** pour que le script s’exécute et que la modale se ferme.

Ok.

À part ça ya pas beaucoup de modales dans spip privé. Le recours à une modale ici me questionne un peu, surtout que son
contenu se limite à un seul choix.

C’est le truc que je savais faire simplement.
Si quelqu’un veut modifier avec un slide et un formulaire intégré pas de souci pour moi.
Ce que j’ai surtout voulu faire c’est distinguer l’action archiver/désarchiver qui se fait en un clic du fait de rajouter un motif.

    # Dans la configuration :
    - l'option " Consigner, pour un contenu, le retrait des archives" est incompréhensible.
    Qu'est ce que "consigner" ? Est-ce un log ? une révision ?
    Qu'est ce que le "retrait des archives" ? Ah, ça doit être le fait de retirer un objet des archives.

Oui c'est le fait de garder une date voire un motif sur le fait de retirer un objet des archives.
J'ai pas trop travailler les libellés. Si tu as un libellé alternatif n'hésite.

Enhardi par tes explications j'ai essayé.
en fait c'est la même chose que l'autre option, mais pour le désarchivage.
L'explication doit donc avoir la même forme = être symétrique.
Par exemple "Permettre de préciser le motif de chaque retrait des archives".

Elle serait mieux en 2eme position puisque le désarchivage se fait après l'archivage.
Il faut aussi choisir si on emploie les termes "désarchiver" et "désarchivage"
ou bien "retirer des archives" et "retrait des archives".

    - Pour le libellé « Autoriser la saisie d’une raison pour chaque archivage »
    voici une version plus légère : "Permettre de préciser le motif de chaque archivage"

    Les articles archivés n'apparaissent plus dans les listes de la dist,
    mais ils gardent leur statut "publie"
Oui c'est le principe.
Je me disais aussi qu'on pourrait bloquer la modification du statut.

« si c'est archivé on touche plus !» pourrait on dire et du coup bloquer toute modification.
Mais sur contrib ça semble pas utile.

    On peut toujours les "voir en ligne" depuis le privé, même sans var_mode ou var_preview spécifique.
    Dans ce cas, rien n'indique leur statut dans le public.
    Je me dis que ce doit être le {id_?} : l'archivage est inopérant quand un article est explicitement ciblé.
    Du coup, l'archivage n'est pas une dépublication.
    Archiver c'est ne pas mettre dans les vitrines et ne montrer que si on demande avec la référence précise.

C'est une bonne question.
Ce qui est sur c'est que ce n'est pas une dépublication.
Il est toujours possible de chercher et d'afficher les objets archivés justement en étendant la recherche ou la visualisation.

Pour définir le fonctionnement, il faut imaginer le plugin tel quel sur une dist.
Les extensions sont toujours possibles pour, potentiellement, tout faire.

Mais comme ils ne sont pas visibles sauf à travers la liste des archives si on à les droits associés, c'est plus difficile de les repérer.

Ils sont également accessibles par les liens directs dans le contenu [->123]

Moi ça me parait le bon fonctionnement mais je ne sais pas si tout le monde le voyait ainsi.

Pour le public j'en viens à trouver ça OK,
mais là je suis retourné sur le site où je teste et je ne pouvais plus trouver l'article archivé
car il a disparu des listes de la partie privée !!!
C'est la mémoire d'url du navigateur qui m'a permis d'en retrouver l'accès.
Ça c'est gênant !
Quelque chose de déjà prévu m'a échappé ?

Sinon, sans considérer le détail du "comment" le faire,
j'imagine 2 possibilités pour corriger ça pour l'instant :

- Soit le privé liste par défaut les contenus archivés dans toutes les listes
(avec une ligne à fond grisé par exemple, plutôt que rouge)
Du coup les archives ne désencombrent pas le privé

- Soit les listes du privé n'incluent pas les archives (comme maintenant)
mais une option ajoutée sur chaque liste (dans ou vers le caption)
signale le nombre d'archivés qui n'apparaissent pas dans la liste : "+ 3 archives"
et permet (si cliqué) de les inclure à la liste -- ou de ne voir qu'eux.

Mais peut être d'autres moyens sont plus adaptés.

JL

Re,

Enhardi par tes explications j’ai essayé.
en fait c’est la même chose que l’autre option, mais pour le désarchivage.
L’explication doit donc avoir la même forme = être symétrique.
Par exemple « Permettre de préciser le motif de chaque retrait des archives ».

En fait, pas vraiment là l’idée est de consigner la date de retrait des archives sinon c’est remis à zéro comme l’état d’archivage.
Donc j’ai fait les modifications suivantes :

Permettre de conserver la date de fin d\'archivage

Et j’ai mis ta proposition pour l’autre mais en fait pour l’autre ça vaut pour l’archivage et de désarchivage.
Comme tu dis il faudrait caler le vocabulaire archivage / désarchivage ou autre. Une idée ?
Je me demande si il ne faudrait pas le préciser ainsi :

Permettre de préciser le motif de chaque archivage ou désarchivage

« si c’est archivé on touche plus !» pourrait on dire et du coup bloquer toute modification.
Mais sur contrib ça semble pas utile.

Oui c’est fait dans la version 0.2.1

Mais comme ils ne sont pas visibles sauf à travers la liste des archives si on à les droits associés, c’est plus
difficile de les repérer.
Ils sont également accessibles par les liens directs dans le contenu [->123]

Normal aussi, c’est l’accès qui est rendu difficile avec l’archivage pas le fait qu’il ne soit pas lisible.

Pour le public j’en viens à trouver ça OK,
mais là je suis retourné sur le site où je teste et je ne pouvais plus trouver l’article archivé
car il a disparu des listes de la partie privée !!!
C’est la mémoire d’url du navigateur qui m’a permis d’en retrouver l’accès.
Ça c’est gênant !
Quelque chose de déjà prévu m’a échappé ?

Oui il existe une page « Liste des archives » dans le menu de maintenance.
Elle liste par type d’objet les objets archivés et permet donc de naviguer dans les archives et de les modifier si besoin.

Après pour Contrib on pourrait améliorer l’espace privé en proposant ces listes dans les pages adéquates mais ça demandent à reprendre les squelettes (ou le pipeline affiche_enfants à voir).
Je me suis dit que pour le plugin de base ça devrait être suffisant et générique cette page.
Mais c’est aussi à réfléchir.

L’utilisation importante c’est la recherche pour moi.
Dans Contrib il faudrait la limiter aux objets non archivés et si on le demande explicitement étendre à tous les objets archivés.
Je le vois ainsi.
Tu vois autre chose ?

    mais là je suis retourné sur le site où je teste et je ne pouvais plus trouver l'article archivé
    car il a disparu des listes de la partie privée !!!

Oui il existe une page "Liste des archives" dans le menu de maintenance.

> Elle liste par type d'objet les objets archivés et permet donc de naviguer dans les archives et de les modifier si besoin.

En effet. J'avais cherché dans Edition et trop vite survolé Maintenance et les autres menus.
(Pas évident le choix d'un menu)

Pb : sur le site où je teste, cette page liste tous les articles, y compris ceux non archivés.

var_mode=debug me montre
- qu'il y a <INCLURE{fond=prive/objets/liste/#VALEUR}{est_archive=1, env}>
avec l'argument est_archive et du coup c'est /contenu/objets_archives.html qui est appelé ensuite,
- mais que le paramétre n'est pas passé à la boucle :
<BOUCLE_liste_art(articles){id_?}{where?}{statut?}{recherche?}{tri (#ENV{par,date}|defaut_tri_par{#GET{defaut_tri}}),#GET{defaut_tri},session_liste_art}{par titre}{pagination #ENV{nb,10}}{!lang_select}>

Ça semble un oubli.

Après pour Contrib on pourrait améliorer l'espace privé en proposant ces listes dans les pages adéquates mais ça demandent à reprendre les squelettes (ou le pipeline affiche_enfants à voir).
Je me suis dit que pour le plugin de base ça devrait être suffisant et générique cette page.
Mais c'est aussi à réfléchir.

Oui tant qu'il y a pas trop d'articles archivés.
Peut être faudrait il montrer la rubrique dans cette liste.
La solution que j'évoquais : ajouter un sélecteur "avec ou sans archives" pour chaque liste du privé
à l'avantage de permettre de bénéficier de la navigation par rubrique du privé.

L'utilisation importante c'est la recherche pour moi.
Dans Contrib il faudrait la limiter aux objets non archivés et si on le demande explicitement étendre à tous les objets archivés.
Je le vois ainsi.
Tu vois autre chose ?

J'anticipe pas plus.

JL

Hop,

Après pour Contrib on pourrait améliorer l'espace privé en proposant ces listes dans les pages adéquates mais ça demandent à reprendre les squelettes (ou le pipeline affiche_enfants à voir).
Je me suis dit que pour le plugin de base ça devrait être suffisant et générique cette page.
Mais c'est aussi à réfléchir.

Oui tant qu'il y a pas trop d'articles archivés.
Peut être faudrait il montrer la rubrique dans cette liste.
La solution que j'évoquais : ajouter un sélecteur "avec ou sans archives" pour chaque liste du privé
à l'avantage de permettre de bénéficier de la navigation par rubrique du privé.

Amha ça risque d'être compliqué à intégrer, un peu intrusif (qu'estce que ça donnera quand plusieurs plugins taperont l'incruste dans la liste de cette manière ?) et pas forcément le truc le plus facile à repérer visuellement.

Peut-être qu'il serait plus opportun d'afficher une liste des articles/objets archivés dans la page des rubriques, en passant par le pipeline afficher_enfants ?

Yop,

Hop,

Après pour Contrib on pourrait améliorer l’espace privé en proposant
ces listes dans les pages adéquates mais ça demandent à reprendre les
squelettes (ou le pipeline affiche_enfants à voir).
Je me suis dit que pour le plugin de base ça devrait être suffisant et
générique cette page.
Mais c’est aussi à réfléchir.

Oui tant qu’il y a pas trop d’articles archivés.
Peut être faudrait il montrer la rubrique dans cette liste.
La solution que j’évoquais : ajouter un sélecteur « avec ou sans
archives » pour chaque liste du privé
à l’avantage de permettre de bénéficier de la navigation par rubrique du
privé.

Amha ça risque d’être compliqué à intégrer, un peu intrusif (qu’estce
que ça donnera quand plusieurs plugins taperont l’incruste dans la liste
de cette manière ?) et pas forcément le truc le plus facile à repérer
visuellement.

Peut-être qu’il serait plus opportun d’afficher une liste des
articles/objets archivés dans la page des rubriques, en passant par le
pipeline afficher_enfants ?

Le toggle qui permet d’afficher ou pas les objets archivés c’est bien mais y a quex problèmes :

  • il faudrait indiquer l’archivage dans une colonne ce qui demande à modifier toutes les listes
  • il faut passer la variable est_archive explicitement à la liste ce qui nécessite aussi à modifier tous les squelettes qui appellent les listes.
    Ca me parait pas envisageable simplement (c’est d’ailleurs pour ça que je dis que l’archivage est un sujet du Core même si il faut un plugin pour le mettre en oeuvre, mais on a besoin de le prévoir).

Donc comme dit b_b le plus simple est surement d’ajouter la liste des archives enfants via le pipeline mais ça ne concernent que les rubriques non ? On ferait comment pour la liste des sites archivés ?
En plus, je pense qu’il faudrait une configuration pour activer cette visu et l’éviter par défaut.

Vous comprenez pourquoi j’ai fait une page des archives :stuck_out_tongue: !
Je ne sais pas si il y a d’autres solutions.

Re,

Re,

La solution que j'évoquais : ajouter un sélecteur "avec ou sans archives" pour chaque liste du privé
à l'avantage de permettre de bénéficier de la navigation par rubrique du privé.

Amha ça risque d'être compliqué à intégrer, un peu intrusif (qu'estce que ça donnera quand plusieurs plugins taperont l'incruste dans la liste de cette manière ?)

Effectivement <hs>mais a propos, cette possibilité de paramétrer les listes est un feature intéressant des contextes bien plus général que archive_objet. Sur un site j'ai ajouté plusieurs boutons d'options au dessus des listes d'objet et j'apprécie beaucoup cet enrichissement fonctionnel. La plupart des options permettent d'afficher, dans chaque ligne des listes, des informations supplémentaires, mais certains affichent des boutons_action pour agir directement sur les objets sans se rendre sur leur page. Est-ce que ça mériterait pas d'être facilité de base dans la dist ?</hs>

>et pas forcément le truc le plus facile à repérer visuellement.
Je vois pas la gêne là.

Peut-être qu'il serait plus opportun d'afficher une liste des articles/objets archivés dans la page des rubriques, en passant par le pipeline afficher_enfants ?

Il me semble que Eric évoquait cela aussi mais je vois plus où.

JL

Yop,

Si je prends l’exemple de la page “articles” le code est le suivant :

[(#AUTORISER{voir,_articles}|sinon_interdire_acces)]
<h1 class="grostitre"><:titre_page_articles_page:></h1>
<div class='onglets_simple clearfix'>
   <ul>
      <li>[(#SELF|parametre_url{id_auteur,''}|lien_ou_expose{<:info_articles_tous:>,[(#ENV{id_auteur,''}|non)],ajax})]</li>
      <li>[(#SELF|parametre_url{id_auteur,#SESSION{id_auteur}}|lien_ou_expose{<:info_articles_miens:>,#ENV{id_auteur,''}|=={#SESSION{id_auteur}},ajax})]</li>
   </ul>
</div>

#FORMULAIRE_RECHERCHE_ECRIRE{#SELF,ajax}
<div class="nettoyeur"></div>

#SET{statuts,#SESSION{statut}|statuts_articles_visibles}
[(#ENV{id_auteur,''}|=={#SESSION{id_auteur}}|oui)
   #SET{statuts,#GET{statuts}|array_merge{#LISTE{prepa}}}
]
<INCLURE{fond=prive/objets/liste/articles,statut=#GET{statuts},par=date,id_auteur=#ENV{id_auteur,''},nb=30,env,ajax}>

[(#AUTORISER{creer,article})
   [(#URL_ECRIRE{article_edit,new=oui}|parametre_url{id_rubrique,#ENV{id_rubrique}}|icone_verticale{<:icone_ecrire_article:>,article,new,right})]
]

On voit qu’il n’y a pas de pipeline pour injecter la liste des archives si demandée.
Donc il faut changer le squelette.
Si on pense que c’est utile pour Contrib vu la taille du site, on peut l’ajouter au plugin Contrib qui organise la nouvelle structure de Contrib. Mais pour les autres sites je ne sais pas.
La seule solution me parait être de prévoir le plugin d’archivage dans le Core de SPIP sans le fournir ce qui ne me choquerait pas vu la fonctionnalité. Mais ça reste à discuter.

Pour cela j'ai utilisé le critère {id_?} et le pipeline lister_champs_selection_conditionnelle.
En fait, je ne comprends plus le nom maintenant que combiné avec le pipeline lister_champs_selection_conditionnelle il permet d'insérer un champ id_xx mais aussi tout autre champ comme mon champ "est_archive" par exemple.
Il serait peut-être utile de le renommer en rappelant cette aspect pipeline comme on le fait dans le code HTML ou PHP et donc renommer aussi le pipeline qui est assez peu utilisé aujourd'hui.

Un truc du style {pipeline_where},

> le "?" étant inutile et qui rappelle le critère {where} qui est le pendant "statique"> du premier (ou "where_statique", "where_immediat" et "where_dynamique", "where_calcule" et le pipeline
> lister_champs_where_dynamique).

L'extension à des critères autres que id_xxx m'a fait aussi douter du choix '{id_?}'
mais 'est_archive' et toute autre sélection conditionnelle ajoutée par le pipeline
sont des manières de reconnaître un objet, et donc des formes d'identité...
alors j'envisageais {critere_id}
mais {id_?} est tout de mm bien sympa.

JL