[SPIP Zone] un plugin spip_collection

Bon, ça fait trop longtemps que j'ai plein d'idées sur lesquelles je travaille seul et je ne code jamais assez vite :wink: donc cette fois, poussé par James et avant d'aller plus loin sur spip_collection je vous propose de réagir sur cet éventuel projet de plug-in (voir de squelette complet) et ses possibilités de réalisation commune.

L'idée de spip_collection:
Le musée imaginaire en spip :wink:

A la demande du visiteur (authentifié ou non) spip_collection affiche une colonne supplémentaire dans les pages du site.
Lors de sa (ses) venues sur le site, le visiteur se construit sa collection extraite des pages et éléments du site: un bout de texte, une image, un article qu'il glisse dans sa collection.
Le visiteur peut trier et organiser sa collection et revenir dessus plus tard, on peut aussi imaginer de proposer d'envoyer cette collection par email, la zipper ou choisir de la montrer aux autres visiteurs, voire d'en modifier le contenu.

Je pense que cela peut réellement être intéressant, pour les écoles (les enfants choisissent de construire leur page facilement), les musées (cf Malraux) , ou pour bien sur faciliter le partage des savoirs (sur spip-contrib par exemple possibilité de stocker les articles ou les morceux de codes qui m'intéressent le plus)

Voici donc une brève présentation de la méthode, dîtes moi si je me trompe ou si vous voyez ça autrement en gros si mon mini balisage du process est correct :wink: car il y a surement de plus courts chemins!

Techniquement:

J'imaginais utiliser le principe de session de james (marche si le visiteur est authentifié sinon 'anonyme' à creuser en sessions propres) et les principes de fragments de spip avec modèles que j'ai assez peu abordé mais qui à ce qu'il me semble stocke en cache des morceaux de la page que l'on peut rappeller en ajax par exemple et peuvent alors différer suivant la session authentifié ou non.

Il faut un squelette avec des ids sur les divs pour stocker les ids (doc52 art44 br12) , pour les bouts de phrases on stocke en dur les morceaux choisis.
Comme un panier ajax ... avec stockage dans un array multiple
Création d'une session php dédiée au visiteur et stockage des fragments demandés dans cette session
-réorganisations des fragments de la session en js (glisser/déposer/supprimer)

plusieurs méthodes de sauvegardes possibles
-sauvegarde du tableau lors de la session php, puis expiration
-sauvegarde de la session dans un fichier cache même numéro, on propose au visiteur de noter son numéro?
-sauvegarde dans un cookie si cookie accepté
A tout moment le visiteur peut demander son inscription en base et s'authentifier
-si visiteur authentifié sauvegarde dans la base de données de sa collection, cela autorisera plusieurs collections

Mes sources:

Sur l'utilisation d'ajax en spip (à creuser...)
http://www.jquery.info/
Sur les glisser/déposer il y a
http://demo.script.aculo.us/shop (marche pas sous firefox...)
http://wiki.script.aculo.us/scriptaculous/page/print/SortableFloatsDemo
Sur la selection de texte
http://www.quirksmode.org/js/selected.html

Conversion d'un tableau PHP en Javascript
http://www.aidejavascript.com/scripts/arrayphp_en_js.php

Le début du plugin inspiré d'une boutique spip préexistante
http://musee.elastick.net/spip.php?page=collections-musee
(projet pour le site du musée national de bosnie herzégovine)
quand même assez loin du projet final...

Merci de vos commentaires et suggestions
toutati

Coucou,

Pour le glisser-déposé il y a surtout le plugin Interface de jQuery qu'il faut privilégier maintenant.
Il est utilisé dans la 1.9.2 sur la page tout le site (reorganisation de l'arbo en glissé deposé)
et dans forms_et_tables pour gerer l'odre des champs et des choix (en prenant par la petite icone)
jettes-y un oeil !
Et puis je rajoute quelqu'un dans la liste qui me parle de ca depuis longtemps, tu vas le faire rever la ... :slight_smile:

Cedric

toutati@free.fr a écrit :

Bon, ça fait trop longtemps que j'ai plein d'idées sur lesquelles je travaille seul et je ne code jamais assez vite :wink: donc cette fois, poussé par James et avant d'aller plus loin sur spip_collection je vous propose de réagir sur cet éventuel projet de plug-in (voir de squelette complet) et ses possibilités de réalisation commune.

L'idée de spip_collection:
Le musée imaginaire en spip :wink:

A la demande du visiteur (authentifié ou non) spip_collection affiche une colonne supplémentaire dans les pages du site.
Lors de sa (ses) venues sur le site, le visiteur se construit sa collection extraite des pages et éléments du site: un bout de texte, une image, un article qu'il glisse dans sa collection.
Le visiteur peut trier et organiser sa collection et revenir dessus plus tard, on peut aussi imaginer de proposer d'envoyer cette collection par email, la zipper ou choisir de la montrer aux autres visiteurs, voire d'en modifier le contenu.

Je pense que cela peut réellement être intéressant, pour les écoles (les enfants choisissent de construire leur page facilement), les musées (cf Malraux) , ou pour bien sur faciliter le partage des savoirs (sur spip-contrib par exemple possibilité de stocker les articles ou les morceux de codes qui m'intéressent le plus)

Voici donc une brève présentation de la méthode, dîtes moi si je me trompe ou si vous voyez ça autrement en gros si mon mini balisage du process est correct :wink: car il y a surement de plus courts chemins!

Techniquement:

J'imaginais utiliser le principe de session de james (marche si le visiteur est authentifié sinon 'anonyme' à creuser en sessions propres) et les principes de fragments de spip avec modèles que j'ai assez peu abordé mais qui à ce qu'il me semble stocke en cache des morceaux de la page que l'on peut rappeller en ajax par exemple et peuvent alors différer suivant la session authentifié ou non.

Il faut un squelette avec des ids sur les divs pour stocker les ids (doc52 art44 br12) , pour les bouts de phrases on stocke en dur les morceaux choisis.
Comme un panier ajax ... avec stockage dans un array multiple
Création d'une session php dédiée au visiteur et stockage des fragments demandés dans cette session
-réorganisations des fragments de la session en js (glisser/déposer/supprimer)

plusieurs méthodes de sauvegardes possibles
-sauvegarde du tableau lors de la session php, puis expiration
-sauvegarde de la session dans un fichier cache même numéro, on propose au visiteur de noter son numéro?
-sauvegarde dans un cookie si cookie accepté
A tout moment le visiteur peut demander son inscription en base et s'authentifier
-si visiteur authentifié sauvegarde dans la base de données de sa collection, cela autorisera plusieurs collections

Mes sources:

Sur l'utilisation d'ajax en spip (à creuser...)
http://www.jquery.info/
Sur les glisser/déposer il y a
http://demo.script.aculo.us/shop (marche pas sous firefox...)
http://wiki.script.aculo.us/scriptaculous/page/print/SortableFloatsDemo
Sur la selection de texte
JavaScript - Get selection - removed

Conversion d'un tableau PHP en Javascript
http://www.aidejavascript.com/scripts/arrayphp_en_js.php

Le début du plugin inspiré d'une boutique spip préexistante
http://musee.elastick.net/spip.php?page=collections-musee
(projet pour le site du musée national de bosnie herzégovine)
quand même assez loin du projet final...

Merci de vos commentaires et suggestions
toutati
_______________________________________________
spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone
  

Sur spip svn si js est désactivé aucun triangle ne s'ouvre
par exemple pour un article ?exec=articles&id_article=xx (mots clefs, auteurs, langues, agenda ...)
ou bien presentation on a pas accès au bouton "vider le cache"

Ne sachant pas ce qui est prèvu comme dev là dessus (jquery ou autre)
je me permets de référençer une page que j'ai trouvé très intéressante à propos de Javascript non-intrusif

http://www.vanillart.net/ala/fr/behavioralseparation/

traduit de A list apart

toutati@free.fr ha scritto:

Sur spip svn si js est désactivé aucun triangle ne s'ouvre
par exemple pour un article ?exec=articles&id_article=xx (mots clefs, auteurs, langues, agenda ...)
ou bien presentation on a pas accès au bouton "vider le cache"

Fixed in version 7967. Thanks. As always, I forgot to mention your name, sorry.

Ne sachant pas ce qui est prèvu comme dev là dessus (jquery ou autre)
je me permets de référençer une page que j'ai trouvé très intéressante à propos de Javascript non-intrusif

Unobtrusive js is elegant but has some limits too:
1) the js behavior can be attached only after the page has completely loaded, that is you can't click on a triangle as soon as it appears on the page.
2) a consequence of point 1 is that, when js has to hide some elements, they flicker in the browser. This means that in some cases, it is not possible to send the same code to the browser if javascript id active or not, in order to avoid the flickering.
3) there are problems when these behaviors needs functions with arguments. These ones have to be inserted in the html for every element, but, at the moment, there is no standard way to store them. One of the ways to do it is storing them in the rel attribute.

When these constraints are not important, unobtrusive javascript can be used, always keeping an eye on the balance between the time the browser needs to init the behaviors (especially on low-end computers) and the time that is saved to receive a thinner page.

Renato

Renato Formato a écrit :

Unobtrusive js is elegant but has some limits too:
1) the js behavior can be attached only after the page has completely loaded, that is you can't click on a triangle as soon as it appears on the page.
  

Hi Renato,
just a question about jQuery :
Under IE6, the ready function is call before DOM was completly loaded.
I read this function is called after complete load but ... not with IE, is it a known issue ?
I finaly write my script at the end of the page, it's work fine, but I thought that it was one of the interests of this function...

Regards.
Stephane.

spipcarto ha scritto:

Hi Renato,
just a question about jQuery :
Under IE6, the ready function is call before DOM was completly loaded.
I read this function is called after complete load but ... not with IE, is it a known issue ?
I finaly write my script at the end of the page, it's work fine, but I thought that it was one of the interests of this function...

It should be called when the dom is complete on IE too. There were some issue with explorer with the first versions of jQuery, but they should have been solved now (version 1.0.3).

Have you a test page to show this bug?

Ciao
Renato

* Renato Formato tapotait, le 27/11/2006 18:47:

spipcarto ha scritto:

Hi Renato,
just a question about jQuery :
Under IE6, the ready function is call before DOM was completly loaded.
I read this function is called after complete load but ... not with IE, is it a known issue ?
I finaly write my script at the end of the page, it's work fine, but I thought that it was one of the interests of this function...

It should be called when the dom is complete on IE too. There were some issue with explorer with the first versions of jQuery, but they should have been solved now (version 1.0.3).

Have you a test page to show this bug?

There is the same bug with FF 2.0 : look at the warning on the bottom of http://michael.futreal.com/jquery/vjustify

Regards,
--
RealET — SPIP fort et vert !

RealET ha scritto:

There is the same bug with FF 2.0 : look at the warning on the bottom of http://michael.futreal.com/jquery/vjustify

Absolutely not. That is the very difference between the complete load of the DOM vs the complete load of the page, images included.

The DOM is loaded when HTML has been loaded and the DOM tree built, that is not waiting for the images or other binary content.

If you consider it a bug, maybe you want to use load() function, to bind the onload event.

Read this for a more extensive explanation:
http://dean.edwards.name/weblog/2005/09/busted/

Even the author of vjustify, in the link that should present the workaround, admits it is not a bug, but that his plugin can have problems when the image dimensions are not specified in the <img> tag. I think this last condition is the real bug :slight_smile:

http://michael.futreal.com/jquery/readyvsload

Ciao
Renato

Renato Formato a écrit :

spipcarto ha scritto:

Hi Renato,
just a question about jQuery :
Under IE6, the ready function is call before DOM was completly loaded.
I read this function is called after complete load but ... not with IE, is it a known issue ?
I finaly write my script at the end of the page, it's work fine, but I thought that it was one of the interests of this function...

It should be called when the dom is complete on IE too. There were some issue with explorer with the first versions of jQuery, but they should have been solved now (version 1.0.3).

I have the same probleme with 1.0.1, 1.0.2 and 1.0.3-form using IE6/XP

Have you a test page to show this bug?

I have a large page (>500ko) and a lot of manipulations (add click function by class to many objects).
It's not only the size of the page, because I can't reproduce in simple case.
It's seems to be related to the time of loading of the page.
I have large template with complexes includes and the page wait few seconds before finish when cache expires.
When it's happening, I think the ready function start.
I try to stop loading page, I haven't </body></html> in the source, but the first element are already transformed by the script

I try to make a sample to show you tomorrow.
thanx.

Stephane.