[SPIP Zone] [Spip-zone-commit] r5944 - in /_plugins_/_dev_/widgets: action/widgets_droits.php action/widgets_html.php widgets.js

On Fri, 2006-10-06 at 13:09 +0000, fil@rezo.net wrote:

Author: fil@rezo.net
Date: Fri Oct 6 15:09:15 2006
New Revision: 5944

Log:
gestion de droits plus complete : widgets.js etablit la liste des
class='titre-article-12' qui sont presents dans la page, et demande
(par ahah) la liste des classes qui correspondent a ses droits ;
ensuite seulement il les active

  original comme idée ça !
  mais ce qui m'embête, c'est on aura a priori un squelette qui va
afficher des choses intelligemment, et mettre les class là où c'est
pertinant, ce qui fait donc double emploi.
  par contre, pour éviter qu'on truande un post pour faire comme si
on avait eu le droit d'éditer, il faut faire le test à ce moment là
aussi, donc finalement, on teste 3 fois.

  autre solution (toujours le mécanisme d'actions évoqué depuis un
bon moment) : si coté squelette on génère une liste de tous les
class pertinants et un hash+alea et qu'on vérifie à l'arrivée que les
éléments postés sont dans cette liste, si on fait confiance au
squelette, on n'a plus qu'à vérifier que le hash est correct. non ?

  ou alors c'est au haha de générer ce hash afin de pouvoir faire des
squelettes "grands ouverts", mais ça me parait un peu dommage, puisqu'il
faut du php qui permet ou pas les choses, en plus du squelette, alors
que le squelette pourrait gérer ça.

  Par exemple, si on veut donner tous les droits dans une rubrique, il
suffit d'un squelette spécifique qui met le class widget aux éléments
d'une boucle sur cette rubrique. pas besoin de php générant une liste en
testant le statut de chaque élément reçu.

  nan ? c'est à coté de la plaque mon raisonnement ? vu l'heure, ça
m'étonnerait pas en fait :slight_smile:

--
À+, Pif.

> gestion de droits plus complete : widgets.js etablit la liste des
> class='titre-article-12' qui sont presents dans la page, et demande
> (par ahah) la liste des classes qui correspondent a ses droits ;
> ensuite seulement il les active
  mais ce qui m'embête, c'est on aura a priori un squelette qui va
afficher des choses intelligemment, et mettre les class là où c'est
pertinant, ce qui fait donc double emploi.

Il y a deux cas qui sont tranchés, dans la situation actuelle des droits :
- le cas où tu as tous les droits (admin complet, ou page de type wiki), là
  pas besoin de les demander par ahah.
- le cas où tu n'as aucun droit (visiteur, rédacteur), pas besoin non plus
  (et même pas besoin du script widgets.js).

Reste le cas où les droits sont complexes : tu as le droit à certains
widgets et pas à d'autres, et c'est la même page HTML pour tout le monde...
là je n'ai pas trouvé d'autre idée que de demander au serveur de me dire ce
que je dois activer ou pas. C'est ce que j'ai implémenté ici, mais
évidemment c'est le cas le plus complexe.

  par contre, pour éviter qu'on truande un post pour faire comme si
on avait eu le droit d'éditer, il faut faire le test à ce moment là
aussi, donc finalement, on teste 3 fois.

Oui, trois fois. Dans le cas normal (actuel), on le fait deux fois, ce n'est
pas beaucoup moins : 33% dirait cent20 (mais 50% de plus).

  autre solution (toujours le mécanisme d'actions évoqué depuis un
bon moment) : si coté squelette on génère une liste de tous les
class pertinants et un hash+alea et qu'on vérifie à l'arrivée que les
éléments postés sont dans cette liste, si on fait confiance au
squelette, on n'a plus qu'à vérifier que le hash est correct. non ?

N'oublie pas que ma page est produite pour {tous} les visiteurs, avec le
même code html. Alors qu'a priori ils ont des droits différents (sinon on ne
se fatigue pas, cf. ci-dessus).

PS: attention au cross-posting sur spip-zone et spip-zone-commit

-- Fil

On Fri, 2006-10-06 at 23:39 +0200, Fil wrote:

N'oublie pas que ma page est produite pour {tous} les visiteurs, avec le
même code html.

  Les boucle et balise "session" peuvent justement permettre d'ajouter
le class ou pas selon les droits.

--
À+, Pif.

> N'oublie pas que ma page est produite pour {tous} les visiteurs, avec le
> même code html.
  Les boucle et balise "session" peuvent justement permettre d'ajouter
le class ou pas selon les droits.

Je voulais pousser le modèle au maximum de ce qu'on peut faire avec une même
page HTML et des class (façon microformats). Mais effectivement il sera sans
doute beaucoup plus simple au final d'envoyer une page aux couleurs du
visiteur.

Pas sûr cela dit que ça passe par les boucles SESSION, car ce qui est
primordial, c'est la simplicité de la mise en oeuvre sur des squelettes
existants : ici tu n'as qu'à activer le plugin et mettre les classes "widget
article-titre-#ID_ARTICLE" autour des #TITRE...

-- Fil

On Sat, 2006-10-07 at 11:02 +0200, Fil wrote:

Pas sûr cela dit que ça passe par les boucles SESSION, car ce qui est
primordial, c'est la simplicité de la mise en oeuvre sur des squelettes
existants : ici tu n'as qu'à activer le plugin et mettre les classes "widget
article-titre-#ID_ARTICLE" autour des #TITRE...

  Avec r5993, on peut faire une construction du type
<div [(#IF{#SESSION**{statut}|={1comite}})class="widget article-titre-#ID_ARTICLE"]>#TITRE</div>

  Ça parait pas trop affreux non ?

  Après, on pourra imaginer un #IF{#DROIT{article,#ID_ARTICLE}}
surchargeable de partout, mais là, on peut déjà faire des trucs sympa
comme autoriser l'édition à tous les auteurs, pour les articles d'une
rub donnée :
[(#IF{ #SESSION**{statut}|={1comite} && #ID_RUBRIQUE|={42} })
  class="widget article-titre-#ID_ARTICLE"]

--
À+, Pif.