[spip-dev] [Re: [1.9.3svn] Question bidon : comment proposer un article à la publication ?]

Bonjour,
Je reposte ce message qui n'est pas passé tout à l'heure.
Jacques

Cedric PROTIERE a écrit :

Bonjour

C'est bien ce que je pensais, malheureusement, je ne vois pas cette liste lorsque je suis rédacteur
Je ne la vois que lorsque je suis administrateur.

Cédric

BoOz a écrit :

En théorie il devrait y avoir une liste de statuts sur la gauche en dessous du numéro de l'article.

BoOz

[question]
Comment un rédacteur simple doit-il procéder pour proposer un article à la publication sous spip 1.9.3svn ?

Bonjour,
Quand tu es connecté comme rédacteur, après avoir enregistré un article,
tu devrais avoir une ligne en bas de l'article
"Lorsque votre article est terminé,
vous pouvez proposer sa publication." et un bouton sur lequel cliquer.

Dans la dernière svn cette possibilité n'apparaît plus.
Je transfère sur spip-dev.

Bonne journée,
Jacques

C'est corrigé dans la 10368. L'inventaire du remue-ménage du mois dernier n'était donc pas clos. Merci.

Committo,Ergo:Sum

Committo,Ergo:sum a écrit :

Pas de pb, j'en ai commis de bien pire.

Ce qui me contrarie peut-etre plus, c'est que c'est seulement maintenant que j'ai réalisé qu'il y avait du code PHP dans le répertoire dist/.
Il va falloir réfléchir sérieusement à la politique de chargement des filtres, parce que ça part trop dans tous les sens. Idéalement, ils devraient tous se trouver dans inc/, en étant suffisamment astucieux pour ne pas les charger tous à chaque coup.

Cette contrariété s'ajoute au "eval" dans afficher_contenu_objet qui envoie une bardée de warning en mode reporting_all, parce qu'il n'a pas suivi l'évolution récente du compilateur. Je ne comprends pas pourquoi le pas du squlette n'a pas été franchi ici: en gros c'est

<BOUCLE1(OBJET){id_PRIMARY}>[(#champ1|si_actif('champ1'))] [(#champ2|si_actif('champ"))] ...

Evidemment c'est moins générique que la fonction actuelle, mais comme elles repose sur des autorisations qui elles-meme sont finies, cette généricité est illusoire (sauf si on s'autorise des bugs cf 10355 sur ce fichier). Y a-t-il vraiment des plugins qui l'utilse ?

Committo,Ergo:Sum

Committo,Ergo:sum a écrit :

  Et j'ai un peu honte de pas nettoyer moi même les saletés que j'ai faites ...

Pas de pb, j'en ai commis de bien pire.

Ce qui me contrarie peut-etre plus, c'est que c'est seulement maintenant que j'ai réalisé qu'il y avait du code PHP dans le répertoire dist/.
Il va falloir réfléchir sérieusement à la politique de chargement des filtres, parce que ça part trop dans tous les sens. Idéalement, ils devraient tous se trouver dans inc/, en étant suffisamment astucieux pour ne pas les charger tous à chaque coup.

Cette contrariété s'ajoute au "eval" dans afficher_contenu_objet qui envoie une bardée de warning en mode reporting_all, parce qu'il n'a pas suivi l'évolution récente du compilateur. Je ne comprends pas pourquoi le pas du squlette n'a pas été franchi ici: en gros c'est

<BOUCLE1(OBJET){id_PRIMARY}>[(#champ1|si_actif('champ1'))] [(#champ2|si_actif('champ"))] ...

Evidemment c'est moins générique que la fonction actuelle, mais comme elles repose sur des autorisations qui elles-meme sont finies, cette généricité est illusoire (sauf si on s'autorise des bugs cf 10355 sur ce fichier). Y a-t-il vraiment des plugins qui l'utilse ?

Pas encore, mais l'idée est justement de gerer une liste non prédéfinie de champs afin de permettre aux plugins d'ajouter des champs aux objets spip et que ce soit supporté dans l'interface sans que le plugin n'ait de surcharge à faire (ie que deux plugins differents puissent ajouter des champs sur le meme objet sans probleme de cohabitation)

Quand je vois les usines a gaz qui ont commencé à être montées pour étendre par exemple les auteurs, je crois qu'il est grand temps de combler ce besoin.
Cela passera evidemment par son pendant côté génération du formulaire d'édition, et dès que j'arrive à reposer les pieds sur terre je compte bien m'en occuper.

Bien d'accord avec ce deuxième point mais pas avec le premier, car ça ne résoudra pas le problème de 2 plugins qui ont choisi le meme nom de champ à rajouter dans une même table. Alors plutot que d'inciter encore plus à poursuivre une fausse piste, je pense qu'il faut au contraire mettre un Hola. Les premières versions du compilateur ne savaient pas gérer un champ supplémentaire dans une table standard de SPIP, pour la bonne raison que ce n'est pas comme ça qu'on fait du développement collaboratif en SQL: si je veux ajouter des infos à une table sans préjuger d'autres infos amenées par d'autres, je crée une autre table avec une jointure sur la clé primaire de la première. Il n'y a que ça qui tient la route, et ça permet aux auteurs de squelettes de pouvoir opérer, plutot que de réserver l'usage d'infos supplémentaires aux inventeurs d'usines à gaz en PHP. Il n'y a actuellemnent que 5 appels à cette fonction (dont 2 portent sur la meme table), je pense infiniment plus raisonnable de les remplacer par les squelettes sous-jacents pour couper court à des développements qui s'annuleront 2 à 2.

Committo,Ergo:Sum

Committo,Ergo:sum a écrit :

Je ne comprends pas pourquoi le pas du squlette n'a pas été franchi ici: en gros c'est

<BOUCLE1(OBJET){id_PRIMARY}>[(#champ1|si_actif('champ1'))] [(#champ2|si_actif('champ"))] ...

Evidemment c'est moins générique que la fonction actuelle, mais comme elles repose sur des autorisations qui elles-meme sont finies, cette généricité est illusoire (sauf si on s'autorise des bugs cf 10355 sur ce fichier). Y a-t-il vraiment des plugins qui l'utilse ?

Pas encore, mais l'idée est justement de gerer une liste non prédéfinie de champs afin de permettre aux plugins d'ajouter des champs aux objets spip et que ce soit supporté dans l'interface sans que le plugin n'ait de surcharge à faire (ie que deux plugins differents puissent ajouter des champs sur le meme objet sans probleme de cohabitation)

Quand je vois les usines a gaz qui ont commencé à être montées pour étendre par exemple les auteurs, je crois qu'il est grand temps de combler ce besoin.

Bien d'accord avec ce deuxième point mais pas avec le premier, car ça ne résoudra pas le problème de 2 plugins qui ont choisi le meme nom de champ à rajouter dans une même table.

Chaque plugin a un prefixe unique qui sert d'espace de nommage des fonctions, et qui devrait être utilisé de même pour les eventuels champs qu'ils ajouteraient aux tables

Alors plutot que d'inciter encore plus à poursuivre une fausse piste, je pense qu'il faut au contraire mettre un Hola. Les premières versions du compilateur ne savaient pas gérer un champ supplémentaire dans une table standard de SPIP, pour la bonne raison que ce n'est pas comme ça qu'on fait du développement collaboratif en SQL: si je veux ajouter des infos à une table sans préjuger d'autres infos amenées par d'autres, je crée une autre table avec une jointure sur la clé primaire de la première.

Oui enfin c'est assez différent. Et pour le coup ca alourdit justement le travail d'écriture des squelettes publics.
Typiquement si je veux ajouter des champs surtitre,soustitre,champo,descriptif,ps aux rubriques, il serait assez pénible de devoir doubler chaque boucle rubrique...

Il n'y a que ça qui tient la route, et ça permet aux auteurs de squelettes de pouvoir opérer, plutot que de réserver l'usage d'infos supplémentaires aux inventeurs d'usines à gaz en PHP. Il n'y a actuellemnent que 5 appels à cette fonction (dont 2 portent sur la meme table), je pense infiniment plus raisonnable de les remplacer par les squelettes sous-jacents pour couper court à des développements qui s'annuleront 2 à 2.

Dans un cas il y a un risque de conflit entre 2 qui utiliseraient le meme nom de champ (risque limité si on prend le soin de prefixé les champs supplémentaires), et dans l'autre cas, seul un plugin peut avoir la main pour ajouter ses propres champs.

Cette dernière solution n'est pas satsifaisante car ajouter des champs réponds à des besoins différents, et je vois mal devoir faire un plugin par objet qui agglomererait tous les ajouts possibles.
Tu avais dit une fois précédente,
'si plusieurs plugins veulent surcharger la meme fonction (ou squelette ici) alors c'est qu'on a un problème de conception'

On peut peut-être avoir un fonctionnement intermédiaire :
avoir un pipeline sur la liste des squelettes a evaluer pour afficher le rendu de l'objet.
Par defaut il n'y a que le squelette de base, et les plugins qui veulent ajouter des infos peuvent produire un squelette qui ne s'occupe que de leur morceau, et n'ont qu'a ajouter ce squelette à la liste, spip s'occupant de tout mettre bout a bout.
Cela permettrait
- la surcharge pour les cas simples ou ponctuels
- l'extension non conflictuelle, sans prejuger des choix d'implementation sql par les plugins

En plus, si on a la bonne idée de mettre l'id_rubrique dans le contexte, cela permettrait meme d'adapter le rendu dans certaines parties du site (et symétriquement le formulaire).

Ca te plairait plus comme cela ?
Cédric

Pour régler les conflits il y a :
- la discussion sur la zone
- le duel au petit matin
- l'utilisation de préfixes

Typiquement si je veux ajouter des champs surtitre,soustitre,champo,descriptif,ps aux rubriques, il serait assez pénible de devoir doubler chaque boucle rubrique...

Non, il s'agit seulement de déclarer la jointure. L'exemple type est la table des pétitions: on aurait pu fusionner ses champs avec ceux de la table articles, mais ils ont pu être ajoutés sans changer celle-ci et on peut les référencer à l'intérieur de la boucle Articles.

Il n'y a que ça qui tient la route, et ça permet aux auteurs de squelettes de pouvoir opérer, plutot que de réserver l'usage d'infos supplémentaires aux inventeurs d'usines à gaz en PHP. Il n'y a actuellemnent que 5 appels à cette fonction (dont 2 portent sur la meme table), je pense infiniment plus raisonnable de les remplacer par les squelettes sous-jacents pour couper court à des développements qui s'annuleront 2 à 2.

Dans un cas il y a un risque de conflit entre 2 qui utiliseraient le meme nom de champ (risque limité si on prend le soin de prefixé les champs supplémentaires), et dans l'autre cas, seul un plugin peut avoir la main pour ajouter ses propres champs.

Je ne comprends pas: chaque plugin peut rajouter une table avec jointure sur une autre pré-existante, je ne vois pas où il y aurait un pb.

Cette dernière solution n'est pas satsifaisante car ajouter des champs réponds à des besoins différents, et je vois mal devoir faire un plugin par objet qui agglomererait tous les ajouts possibles.

Mais il n'y a pas de combinatoire d'ajouts à envisager: N plugins déclarent N tables avec jointure sur une table préexistante, ils coexistent en ignorant leur existence mutuelle, c'est en ça que cette stratégie me parait meilleure.
...

Ca te plairait plus comme cela ?

je n'ai pas compris.

Committo,Ergo:Sum

Ola esj !

cedric.morin@yterium.com a écrit :

Chaque plugin a un prefixe unique qui sert d'espace de nommage des fonctions, et qui devrait être utilisé de même pour les eventuels champs qu'ils ajouteraient aux tables

c'est la sagesse même qui traverse Cedric et qui arrose ce ng.

(et sinon, d'ailleurs, les conflits sur les noms de tables ne pourraient ils pas
aussi se poser ?...)

Typiquement si je veux ajouter des champs surtitre,soustitre,champo,descriptif,ps aux rubriques, il serait assez pénible de devoir doubler chaque boucle rubrique...

ben, oui !

JL

Committo,Ergo:sum a écrit :

Typiquement si je veux ajouter des champs surtitre,soustitre,champo,descriptif,ps aux rubriques, il serait assez pénible de devoir doubler chaque boucle rubrique...

Non, il s'agit seulement de déclarer la jointure. L'exemple type est la table des pétitions: on aurait pu fusionner ses champs avec ceux de la table articles, mais ils ont pu être ajoutés sans changer celle-ci et on peut les référencer à l'intérieur de la boucle Articles.

Il n'y a que ça qui tient la route, et ça permet aux auteurs de squelettes de pouvoir opérer, plutot que de réserver l'usage d'infos supplémentaires aux inventeurs d'usines à gaz en PHP. Il n'y a actuellemnent que 5 appels à cette fonction (dont 2 portent sur la meme table), je pense infiniment plus raisonnable de les remplacer par les squelettes sous-jacents pour couper court à des développements qui s'annuleront 2 à 2.

Dans un cas il y a un risque de conflit entre 2 qui utiliseraient le meme nom de champ (risque limité si on prend le soin de prefixé les champs supplémentaires), et dans l'autre cas, seul un plugin peut avoir la main pour ajouter ses propres champs.

Je ne comprends pas: chaque plugin peut rajouter une table avec jointure sur une autre pré-existante, je ne vois pas où il y aurait un pb.

Le problème n'est pas sur la table ou les tables, mais sur le squelette qui ne peut être surchargé qu'une fois

Cette dernière solution n'est pas satsifaisante car ajouter des champs réponds à des besoins différents, et je vois mal devoir faire un plugin par objet qui agglomererait tous les ajouts possibles.

Mais il n'y a pas de combinatoire d'ajouts à envisager: N plugins déclarent N tables avec jointure sur une table préexistante, ils coexistent en ignorant leur existence mutuelle, c'est en ça que cette stratégie me parait meilleure.
...

Ca te plairait plus comme cela ?

je n'ai pas compris.

bon je crois avoir compris ton point de vue, je vais préparer un truc qui devrait etre un bon compromis :stuck_out_tongue:
Cedric

Il ne s'agit pas de règler les conflits, mais de confire les règles.

Committo,Ergo:Sum

Là dessus la premiere chose à (re-)dire, c'est que je suis sceptique sur la qualité graphique d'un squelette construit ainsi à l'aveugle: mêler plusieurs plugins faisant des écritures c'est viable, quand il font des sorties ça me parait très théorique.

La deuxième, c'est que la solution me semble plus dans un notion de pipeline appliquée aux inclusions de squelettes. D'un certain point de vue, c'est déjà un peu ce qui se passe avec les modèles: un squelette avec boucle Articles prélèvent un champ Texte, lequel contient un modele DOCnnn qui va exécuter le squelette Doc. Ca c'est bien transparent.

Committo,Ergo:Sum

Committo,Ergo:sum a écrit :

Le problème n'est pas sur la table ou les tables, mais sur le squelette qui ne peut être surchargé qu'une fois
    
Là dessus la premiere chose à (re-)dire, c'est que je suis sceptique sur la qualité graphique d'un squelette construit ainsi à l'aveugle: mêler plusieurs plugins faisant des écritures c'est viable, quand il font des sorties ça me parait très théorique.
  

oui ca c'est le revers de cette méthode, chacun peut ajouter son bric a brac joli ou pas. Alors qu'actuellement ca ne donne pas la main au rendu, mais uniquement a la liste des infos affichées.
Mais maintenant si il y a un cadre initial avec un modele (le skel par defaut) des classes et des css qui vont bien, ca donne l'opportunité à celui qui veut d'écrire un bout de skel qui se fondra esthetiquement avec le reste.
Mais ca n'empêche pas les fautes de goûts (auxquelles j'apporte parfois ma pierre :stuck_out_tongue: )

La deuxième, c'est que la solution me semble plus dans un notion de pipeline appliquée aux inclusions de squelettes. D'un certain point de vue, c'est déjà un peu ce qui se passe avec les modèles: un squelette avec boucle Articles prélèvent un champ Texte, lequel contient un modele DOCnnn qui va exécuter le squelette Doc. Ca c'est bien transparent.
  

Dailleurs, ca n'est pas documenté, mais j'avais inclus la possiblité de faire, pour ce type de besoin
<INCLURE{fond=#ENV{liste}}>
ou #ENV{liste} est un tableau
Cédric

Le 20 sept. 07 à 16:10, cedric.morin@yterium.com N'a PAS documenté :

j'avais inclus la possiblité de faire, pour ce type de besoin
<INCLURE{fond=#ENV{liste}}>
ou #ENV{liste} est un tableau

que ne l'as-tu dit plus tôt...

Committo,Ergo:Sum

cedric.morin@yterium.com a écrit :

Committo,Ergo:sum a écrit :

Quand je vois les usines a gaz qui ont commencé à être montées pour étendre par exemple les auteurs, je crois qu'il est grand temps de combler ce besoin.

Il est grand temps de combler le besoin certes, mais ou voyez vous des usines à gaz si ce n'est dans un certain plugin qui étend tout ?? ^^

Par ailleurs, ce n'est pas les auteurs strictement que l'on gère dans inscription2, mais les inscrits, qui peuvent être auteurs, mais ce n'est pas obligé : il est vrai que tout est encore un peu approximatif.

Je tenais à préciser cette histoire d'inscrits qui ne sont pas forcement auteurs car c'est ca qui justifie la clé primaire de la table spip_auteurs_elargis, que j'ai cru voir diffamée dans un log : je sens le vent du troll se leve au large du plugin inscription2, hihi ^^

BoOz

Committo,Ergo:sum a écrit :

si je veux ajouter des infos à une table sans préjuger d'autres infos amenées par d'autres, je crée une autre table avec une jointure sur la clé primaire de la première. Il n'y a que ça qui tient la route,

Voilà, tout à fait, comme dans inscription2, merci.

et ça permet aux auteurs de squelettes de pouvoir opérer

Exactement

, plutot que de réserver l'usage d'infos

supplémentaires aux inventeurs d'usines à gaz en PHP.

Comme un certain plugin en acronyme par exemple !!

BoOz ^^

BoOz a écrit :

cedric.morin@yterium.com a écrit :
  

Committo,Ergo:sum a écrit :
    
Quand je vois les usines a gaz qui ont commencé à être montées pour étendre par exemple les auteurs, je crois qu'il est grand temps de combler ce besoin.
    
Il est grand temps de combler le besoin certes, mais ou voyez vous des usines à gaz si ce n'est dans un certain plugin qui étend tout ?? ^^

Par ailleurs, ce n'est pas les auteurs strictement que l'on gère dans inscription2, mais les inscrits, qui peuvent être auteurs, mais ce n'est pas obligé : il est vrai que tout est encore un peu approximatif.

Je tenais à préciser cette histoire d'inscrits qui ne sont pas forcement auteurs car c'est ca qui justifie la clé primaire de la table spip_auteurs_elargis, que j'ai cru voir diffamée dans un log : je sens le vent du troll se leve au large du plugin inscription2, hihi ^^
  

non juste que quand j'ai mis le nez dans spip-listes pour cause de bug, cette table tombe la vraiment comme un cheveux sur la soupe.
Je comprends bien qu'il y a une idée d'interconnexion avec inscription2 (je croyais que c'etait avec auteur elargi, tu vois ci ca coule de source ... :stuck_out_tongue: ), mais du coup quand on utilise spip-listes tout seul c'est vraiment bancal.
Je pense serieusement faire une api abonnés pour spip-listes ou on regroupe toute l'interconexion abonné/listes de diffusion, car sinon je vois pas pourquoi je coderai pas en dur dedans l'utilisation de f&t pour les abonnés plutot que inscription3larevanche ...
Plus concretement, j'ai le cas d'un site ou il n'y a pas UN formulaire d'abonnement, mais plein de questionnaires divers et variés ou l'on propose en bas (tu sais, la boite a cocher qu'on oublie de decocher a chaque fois :p) de s'abonner aussi a la newsletter.
Conséquence, il faut une fonction federatrice du genre spip_listes_les_abonnes($id_liste){} surchargeable, et par extension, gerer toutes les operations sur les abonnes dans une api surchargeable.

Cédric, qui a meme plus le temps de troller ni de donner des coups de hache dans le code de la zone...

cedric.morin@yterium.com a écrit :

juste que quand j'ai mis le nez dans spip-listes pour cause de bug, cette table tombe la vraiment comme un cheveux sur la soupe.
Je comprends bien qu'il y a une idée d'interconnexion avec inscription2 (je croyais que c'etait avec auteur elargi, tu vois ci ca coule de source ... :stuck_out_tongue: ), mais du coup quand on utilise spip-listes tout seul c'est vraiment bancal.

Oui et non, car on peut imaginer peupler une liste avec des adresses email qui viennent d'on ne sait ou, et sans que ca soit des auteurs SPIP.

D'ou le recours stable à cette table (mal nommée soit) même sans inscription2.

Je pense serieusement faire une api abonnés pour spip-listes ou on regroupe toute l'interconexion abonné/listes de diffusion

Oui, On a commencé a faire ca avec Elrik dans le fichier spiplistes_api.php (branche 193)

Plus concretement, j'ai le cas d'un site ou il n'y a pas UN formulaire d'abonnement, mais plein de questionnaires divers et variés ou l'on propose en bas (tu sais, la boite a cocher qu'on oublie de decocher a chaque fois :p) de s'abonner aussi a la newsletter.
Conséquence, il faut une fonction federatrice du genre spip_listes_les_abonnes($id_liste){} surchargeable, et par extension, gerer toutes les operations sur les abonnes dans une api surchargeable.

Tout à fait d'accord, et on a commencé un peu déjà, comme je le disais plus haut.

Termine vite les trucs chronophages qui t'empechent de troller.

BoOz