Les crayons

Un plugin pour une édition directe sur le site public

Ce plugin permet d’éditer les contenus sur les pages publiques du site, sans passer par l’espace privé de SPIP.

Le paramétrage côté squelettes est des plus simples : il repose sur la classe #EDIT{...} adjointe aux éléments qu’on veut rendre modifiables.

Résumé

Après l’activation du plugin, les contenus peuvent être directement édités « en place » sur les pages publiques du site, par les personnes autorisées.

Cela demande de préparer vos squelettes pour les rendre compatibles avec ce plugin (à noter : c’est le cas de la plupart des squelettes distribués sur SPIP-Contrib). Le principe est simple : un bloc est éditable s’il contient la classe crayon objet-champ-id. Une balise #EDIT{} facilite encore l’écriture. En fait, pour permettre d’éditer le titre d’un article, il suffit de remplacer dans le squelette de la page article.html, la ligne (par exemple) :

<h1>#TITRE</h1>

par :

<h1 class="crayon article-titre-#ID_ARTICLE">#TITRE</h1>

ou encore, plus simplement :

<h1 class="#EDIT{titre}">#TITRE</h1>

Autre exemple, pour rendre « crayonnable » le texte d’un article, transformer :

[<div class="texte">(#TEXTE|image_reduire{520,0})</div>]

en :

[<div class="#EDIT{texte} texte">(#TEXTE|image_reduire{520,0})</div>]

Les pages concernées doivent obligatoirement comporter une balise </head>, écrit précisément de cette façon (lettres minuscules).

Fonctionnement

Fabrication de la page côté serveur

Lors du chargement d’une page, le plugin agit dans le pipeline affichage_final.

Il vérifie alors :

  • si l’utilisateur est identifié
  • si la page contient au moins une chaîne de caractères “crayon xxxx­-yyyy-nn”,
  • et si l’utilisateur possède des droits sur au moins un des éléments ainsi marqués

Le cas échéant, il insère dans le <head> de la page le script externe crayons.js ainsi que des données de configuration ; le script s’exécute à la fin du chargement de la page, et vérifie à intervalles réguliers si de nouveaux crayons sont disponibles, de façon à les activer en cas de besoin.


Chargement par le navigateur

Lorsque la page finit de se charger (et si le visiteur a des droits d’édition sur les crayons présents dans la page), le script crayons.js sélectionne tous les éléments possédant la classe crayon type­-champ-id, et si ils sont autorisés pour l’utilisateur inscrit, leur adjoint une image clicable (un crayon) et leur ajoute la classe crayon-autorise pour indiquer qu’ils sont « éditables ».

Un clic sur cette image, mais aussi un double-clic sur l’élément lui-même, provoquent l’activation du formulaire d’édition.


Activation du crayon

Un click sur le « crayon » (ou un double-clic sur l’élément) déclenche une requête vers le serveur, qui renvoie le formulaire de modification qui va « remplacer » l’élément affiché.

La requête spécifie au serveur le « type », le « champ » et l’« id » pour lesquels le formulaire est demandé.

Après vérification de l’existence des données et des droits sur celles-ci, le serveur renvoie le formulaire (sous forme de données javascript, au format JSON). Le type et les dimensions du champs sont déterminés d’après sa nature et la place réservée à l’élément. Il contient le source brut du texte, comme lorsque on édite depuis l’espace privé ; la police, la taille et la couleur des caractères sont préservées.

crayon.js associe ce formulaire à l’élément puis "cache" ce dernier.

L’utilisateur peut maintenant modifier les données.

Attention : l’affichage final ne peut être réalisé que par le serveur, un click en dehors de la zone d’entrée après des modifications affichera à nouveau le contenu originel.
Dans ce cas, une roue dentée vous signale que vous avez introduit une modification. Click sur le bouton ou double-click sur l’élément vous y ramène, elles ne sont pas perdues.
Si vous abandonnez cependant la page, un dernier rappel vous propose de sauvegarder.


Sauvegarde

Le formulaire possède une série de boutons/touches associées :

  • OK (ainsi que la touche Entrée [1]) permet de sauvegarder,
  • Annuler (ainsi que la touche Escape) abandonne toute mise à jour,
  • Un clic en dehors des zones de saisie cache ces zones et revient à l’affichage initial.

Il contient aussi des identificateurs et des clés associés aux données.

Le formulaire est soumis en POST par ajaxForm donc asynchrone. Sur réception, le serveur :

  • analyse les données soumises, leur cohérence et leur actualité (afin d’annuler l’envoi si les données ont été entre-temps modifiées par ailleurs).
  • vérifie une nouvelle fois les droits d’édition.
  • appelle les procédures internes de SPIP pour mettre à jour les données.
  • renvoie une vue des données modifiées, et déclenche les comportements javascript précisés par la fonction onAjaxLoad de SPIP.

Le système alimente notamment l’historique des modifications, de la même façon que l’espace privé.

Configuration

Le plugin propose plusieurs options, activables via le plugin CFG ; notamment :
-  un message si on confirme OK mais que rien n’est changé ;
-  une alerte permettant de sauvegarder les modifications si on abandonne la page alors qu’un texte est en cours d’édition ;
-  l’activation de la barre typographique ;
-  des couleurs permettant de mieux repérer les zones modifiables.

À noter : si le plugin est absent ou désactivé, la balise #EDIT{...} renvoie une chaîne vide ; cela permet donc de « crayonner » des squelettes même si l’on décide finalement de ne pas utiliser le plugin

Utilisation étendue

Toutes les tables standard de SPIP (articles, brèves, rubriques, etc.) sont gérées, y compris les forums et les signatures de pétition (mais, pour ces deux dernières, il faut utiliser le plugin Autorité pour permettre des modifications) ; pour chacune de ces tables, tous les champs de type « ligne » (titre, soustitre etc), ou « texte » (texte, chapo, descriptif...) sont crayonnables.

On peut également éditer les logos avec le crayon #EDIT{logo} ; un réglage permet de redimensionner ces logos à la volée lors de l’upload.

Les documents sont modifiables avec le crayon #EDIT{fichier} : le nouveau document vient remplacer l’ancien et sa taille, hauteur et largeur sont mises à jour. (NB : pas encore compatible documents distants).

Enfin, à partir de spip 2, on peut éditer les champs extra.

À noter :

  • Les crayons fonctionnent avec n’importe quelle table — à condition que cette table possède une clé primaire (numérique) qui s’appelle id_xxx, où le nom de la table est spip_xxxs.
  • pour la table spip_meta qui ne propose pas ce type d’index numérique, il faut utiliser la balise #EDIT d’une manière un peu différente en préfixant le champs à éditer par meta-, par exemple [2] :
    #EDIT{meta-descriptif_site}
    
  • pour éditer une valeur de configuration de plugin, on utilise la même syntaxe en ajoutant « meta » ; Par exemple pour éditer un champs de configuration adresse pour un plugin dont le préfixe est croque :
    [<div class="inner #EDIT{meta-croque/adresse}">(#CONFIG{croque/adresse})</div>]
    
  • Si un texte « crayonnable » est un champ MySQL MEDIUMTEXT ou plus long, les crayons affichent un TEXTAREA, et sinon, un INPUT.
  • Seuls les admins complets peuvent ainsi crayonner des textes provenant d’une table non-SPIP.

Editions simultanées de plusieurs champs

L’obtention du formulaire d’édition (« contrôleurs ») ainsi que la vue obtenue en retour sont surchargeables, par de simples squelettes (voir les exemples dans les répertoires controleurs/ et vues/ du plugin).

Ces formulaires peuvent travailler en parallèle sur plusieurs champs d’un enregistrement (article), voire plusieurs enregistrements d’une même table ou de tables différentes [3] : il y a là de quoi faire des interfaces d’édition spécialisées et très efficaces.

Comme toujours, contributrices et contributeurs sont bienvenus !

Notes

[1Ainsi que, sur Mac, la touche ctrl-S, et sur PC les touches alt-S ou F8, ou encore la combinaison MAJ-entrée.

[2Ceci est valable depuis la version 1.6.1 du plugin. Pour les versions précédentes la syntaxe est différente. Il faut insérer manuellement la class dans le code suivant la syntaxe meta-valeur-XXX où XXX représente le nom de la propriété à modifier. Par exemple pour modifier le nom du site (propriété : nom_site) on pourrait faire :

<h1 class="crayon meta-valeur-nom_site">#NOM_SITE_SPIP</h1>

[3Par exemple pour ouvrir en édition l’ensemble des champs descriptifs d’une adresse postale.

Debug : Les crayons ont un mode de débug activable en mettant dans mes_options.php la ligne suivante :

define('_DEBUG_CRAYONS', true);

Ce code ralentit un peu le fonctionnement, puisque le script est rechargé à chaque fois, mais facilite le repérage de bugs et le développement de nouvelles fonctionnalités.

Voir aussi : Doc complémentaire

Discussion

303 discussions

  • J’ai résolu mon problème.

    Si cela peut aider quelqu’un :

    le greffon Les crayons est incompatible avec Gallery (au moins sous SPIP 1.9.2c).
    J’ai finalement remplacé ce dernier par Diapo.

    Répondre à ce message

  • Voici plus d’une semaine que j’essaie en vain de faire fonctionner ce plugin sur mes squelettes.
    Les balises #EDIT sont bien résolues, mais les images cliquables des crayons ne sont pas générées (même en tant qu’administrateur).

    Quand je regarde le source de ma page, je vois ceci :
    ===============================================

    <script src="http://www.mjcfilliere.net/spip/spip.php?page=crayons.js" type="text/javascript"></script>
    <script type="text/javascript"><!--
    var configCrayons = new cQuery.prototype.cfgCrayons({"imgPath":"plugins/crayons/images","droits":"*","dir_racine":"","self":"/spip/spip.php?article85","txt":{"error":"Désolé, copiez/collez vos changements et recommencez","sauvegarder":"Sauvegarder les modifications ?"}
    ,"img":{"searching":{"txt":"Veuillez patienter..."}
    ,"crayon":{"txt":"Éditer"}
    ,"edit":{"txt":"Éditer tout"}
    ,"img-changed":{"txt":"Déjà modifié"}
    }
    ,"cfg":{"msgNoChange":false,"msgAbandon":"on","filet":false,"yellow_fade":false,"clickhide":false}
    }
    );
    ( window.jQuery ? jQuery : cQuery )(document).ready(cQuery.fn.crayonsstart);
    // cQuery.ready() plante le jQuery.ready() sous MSIE
    //-->
    </script>

    ===============================================

    alors que dans le source d’une page qui fonctionne, par exemple sur Gribouille, on a

    <script src="http://www.spip-contrib.net/spip.php?page=crayons.js" type="text/javascript"></script>
    <script type="text/javascript"><!--
    var configCrayons = new cfgCrayons({"imgPath":"plugins/crayons/images","droits":"*","dir_racine":"","txt":{"error":"Désolé, copiez/collez vos changements et recommencez","sauvegarder":"Sauvegarder les modifications ?"}
    ,"img":{"searching":{"file":"searching.gif","txt":"Veuillez patienter..."}
    ,"crayon":{"file":"crayon20.png","txt":"Éditer"}
    ,"edit":{"file":"edit.png","txt":"Éditer tout"}
    ,"img-changed":{"file":"changed.png","txt":"Déjà modifié"}
    }
    ,"cfg":{"msgNoChange":"on","msgAbandon":"on","filet":false,"yellow_fade":false,"clickhide":"on"}
    }
    );
    //-->
    </script>

    Les icones .png sont ici prises en compte (naturellement, chez moi, elles sont bien dans le répertoire plugins/crayons/images)

    Une idée ? Je commence sérieusement à craquer ;-)

    Répondre à ce message

  • 16

    Bonjour,

    J’ai installé ce plugin mais rien ne fonctionne... Le « crayon » ne s’affiche pas. Même avec la dist, même avec une nouvelle installation en local...

    Le code généré me semble pourtant tout à fait correct : les class « crayon article-titre-1 titre »,...,... sont présente

    J’avoue que je suis perdu là... :d

    Grand merci.

    • Même remarque : rien de rien, ni sous FF ni sous IE, version spip 192c, cfg, squelettes bien vertébrés. Pas trace de crayons. Y-a-t’il une incompatibilité ?

    • Ben comprends pas ...

      Je viens juste de mettre les crayons sur un site en local...

      ET CA FONCTIONNE bien, c’est meme carrement tres sympa.

      Peut etre un conflit avec un ou plusieurs autres plugins ?

      testé avec FF, IE7 et SAFARI beta

      petit rappel, tu dois t’etre identifié par http://monsite/ecrire ... pour pouvoir utiliser les crayons ... bien sur

    • Ben euuuuh CORRECTIF

      En local c’est tout pile poil ... mais suis obligé de me rendre à votre avis sur le net (notament chez free ) Ca marche pôs !

      J’ai vidé le cache et tout est OK sur les 3 navigateurs

      Bien a vous

    • Oui, je confirme le souci avec spip 1.9.2c et le dernier crayons, j’ai le même problème :

      On dirait que sur certaines pages, le #INSERT_HEAD n’insère pas le javascript des crayons (c’est ok pour les autres plugins)...

      Je vais essayer de trouver quelles caractéristiques ont ces pages là par rapport aux autres... Mais j’ai déjà un peu cherché, sans succès.

    • Attention, les crayons ne s’insèrent pas avec #INSERT_HEAD mais simplement sur la partie </head> du squelette.

    • Heu ???

      Mais alors, comment expliquer que l’insertion ne se fasse pas systématiquement ?

    • Je viens de tester chez moi et ça marche très bien ; donc, je ne sais pas. Il faut débuguer, quoi...

    • J’essaie de trouver l’origine du bug, sans succès.

      Je l’ai systématiquement sur des squelettes que je ne peux —hélas— pas encore publier.

      Par contre, je le rencontre aussi sur une partie de mon plugin de Cahier de texte pour Spip : c’est visible sur le site de démo :
      -  aller là : http://demobonbon.free.fr/1.9/spip....
      -  s’identifier (login : dudu, mdp : demobonbon)
      -  cliquer sur afficher ses séances
      -  sur la page affichée : les crayons fonctionnent bien.
      -  cliquer sur la petite clé de 12 situé à gauche de l’icône du document gpl_fr.txt
      -  une fenêtre s’ouvre dans laquelle les crayons ne fonctionnent plus...

      Pourquoi ? Cela fonctionne bien sur une page, et pas sur une autre ? Est-ce dû au fait que ce sont des documents à éditer sur la seconde page ? Un problème d’autorité ? (car l’admin peut utiliser les crayons sur cette page, lui...).

      Pour voir les squelettes de ces deux pages :

      -  celle où les crayons fonctionne est : http://demobonbon.free.fr/1.9/plugi... et sa noisette inclue http://demobonbon.free.fr/1.9/plugi...

      -  celle où les crayons de fonctionnent pas : http://demobonbon.free.fr/1.9/plugi...

      Je ne parviens pas à trouver le problème... Donner un exemple permettra peut-être à quelqu’un de plus expérimenté de le débusquer...

    • Il est tout à fait probable que ce soit un problème d’autorité : dudu est-il admin ou rédacteur ? Pour débuguer autoriser() il faut indiquer dans ecrire/mes_options.php :

      define ('_DEBUG_AUTORISER', true);

      et regarder alors ce qui sort sur tmp/spip.log

    • dudu est rédacteur...

      Demain je vais essayer de debugger autorité... On verra...

    • effectivement, c’est un problème avec autorité... Quand je clique sur la clé de 12 (qui affiche la page dans laquelle les crayons ne fonctionnent pas), le log indique :

      Nov 14 12:14:56 127.0.0.1 (pid 4543) autoriser modifier document 1112 (essai) ?
      Nov 14 12:14:56 127.0.0.1 (pid 4543) autoriser_defaut_dist(modifier,document,1112,essai): niet
      Nov 14 12:14:56 127.0.0.1 (pid 4543) autoriser modifier document 1112 (essai) ?
      Nov 14 12:14:56 127.0.0.1 (pid 4543) autoriser_defaut_dist(modifier,document,1112,essai): niet
      Nov 14 12:14:56 127.0.0.1 (pid 4543) autoriser modifier document 1112 (essai) ?
      Nov 14 12:14:56 127.0.0.1 (pid 4543) autoriser_defaut_dist(modifier,document,1112,essai): niet

      (essai est l’équivalent de dudu sur mon serveur local, c’est à dire un simple rédacteur).

      Donc, là c’est niet... pourquoi ? je ne sais pas encore... Pourtant, dans la partie privée, essai (et dudu sur demobonbon) peuvent modifier les docs des articles publiés...

    • Même problème avec une 1.9.2b : INSERT_HEAD ne génère pas le script et le lien vers la feuille CSS nécessaires. Par contre, en remplaçant le squelette article par le modèle de dist, ça marche... Si je recopie le bout de code généré depuis dist/article.html dans mon squelette article, ça marche aussi. Donc, on peut exclure l’incompatibilité avec un autre plugin ou un problème sur le squelette.

    • Si ça peut aider : les crayons n’utilisent pas #INSERT_HEAD, il s’accrochent sur </head>.

    • Je ne comprends pas ce que vous voulez dire par « s’accroche sur le <head> ».

      Dans le § Mise en oeuvre du plugin, il est explicitement mentionné que le squelette doit contenir la balise #INSERT_HEAD... Alors, que croire ?

    • En effet c’était une erreur de la doc, je viens de corriger le texte.

      Pour que le plugin puisse intervenir sur une page, il faut que cette page (telle qu’elle est envoyée au navigateur) contienne un tag </head>, juste avant le <body>. Attention </head> DOIT être écrit en lettres minuscules.

      Peux-tu indiquer l’URL de la page problématique ?

    • Attention </head> DOIT être écrit en lettres minuscules.

      On ne relit jamais assez son code...Désormais, ça marche. Merci.

    Répondre à ce message

  • 9

    salut,

    je n’arrive pas à faire fonctionner les crayons.
    quelqu’un peut-il me filer un coup de main ?
    je suis en 1.9.2.b. sous firefox
    l’install du plugin marche bien, je vois le petit crayon bleu en survolant mes articles mais lorsque je clique deux fois rien ne se passe (la petit roue dentée apparait et tourne dans le vide puis plus rien !!)

    j’aimerai vraiment profiter de ce super plugin que j’ai pu essayer dans le bac à sable de gribouille.

    merci d’avance

    marc

    • up

      personne ne peut m’aider ?

    • Bonsoir Marc

      Je suis nouveau mais as-tu essayé ceci décrit plus haut ?

      Pour le rendre opérationnel, il suffit ensuite d’adjoindre dans les squelettes la classe #EDITchamp ainsi que distribués dans le « trunk ». Par exemple, pour rendre « crayonnable » le texte d’un article il faut modifier :
      [

      (#TEXTE|image_reduire520,0)

      ]
      du squelette article.html en :
      [

      (#TEXTE|image_reduire520,0)

      ]

      Serge

    • salut serge,

      merci de ta réponse.
      j’ai bien mis les modif ça donne :

      <div id="contenu">
      
      			<div class="cartouche">
      				#DEBUT_SURLIGNE
      				[(#LOGO_ARTICLE||image_reduire{200,200})]
      				[<p class="#EDIT{surtitre} surtitre">(#SURTITRE)</p>]
      				<h1 class="#EDIT{titre} titre">#TITRE</h1>
      				[<p class="#EDIT{soustitre} soustitre">(#SOUSTITRE)</p>]
      				#FIN_SURLIGNE
      
      				<p><small>[(#DATE|nom_jour) ][(#DATE|affdate)][, <:par_auteur:> (#LESAUTEURS)]</small></p>
      
      				[(#REM) Inclure le modele des liens de traductions ]
      				#MODELE{article_traductions}
      				
      			</div>
      			<INCLURE{fond=inc-barre-outils}{id_article}></INCLURE>
      			#DEBUT_SURLIGNE
      			[<div class="#EDIT{chapo} chapo">(#CHAPO)</div>]
      			<br class="nettoyeur" />
      			[<p class="#EDIT{hyperlien} lien"><:voir_en_ligne:> : <a href="(#URL_SITE)" class="spip_out">[(#NOM_SITE|sinon{[(#URL_SITE|couper{80})]})]</a></p>]
      			[<div class="#EDIT{texte} texte">(#TEXTE|image_reduire{520,0})</div>]
      			#FIN_SURLIGNE

      donc je vois pas ce qui cloche.

      y a t-il besoin de cfg pour que les crayons fonctionnent ?

      marc

    • y a t-il besoin de cfg pour que les crayons fonctionnent ? : non

      pour le reste, aucune idée, ça marche chez tout le monde donc il y a un loup dans ton installation, ou alors c’est un bug que je viens d’introduire ?

    • salut,

      voilà le lien si tu veux y jeter un oeil, je peux te filer aussi mon accés admin en privé si tu en as besoin.
      (je peux pas en créer un nouveau-> erreur 500 à chaque fois ?!?)
      ça marche dans le bac à sable donc cela ne vient pas de mon serveur je pense (club-internet).

    • Sans être connecté, tout a l’air OK ; je remarque que tu as beaucoup de plugins, essaie de les désactiver tous sauf crayons, qu’on voie s’il ne s’agit pas d’une incompatibilité ?

    • déjà essayer. j’ai virer tous les plugins, réinstallé la dernière version de crayons toute seule. idem.

      alors j’ai tout remis petit à petit.

      je te parlais de cfg car je l’ai installé et pareil rien ne se passe en cliquant sur le lien « avec cfg » depuis l’inetrface de crayons (ce qui est vrai pour les autres plugins aussi) il semble donc bien y avoir un gros loup mais où ?

      j’ai fait que très peu de modif par rapport à la dist...

      ceci dit est-ce que supprimer le dossier plugins est suffisant pour vraiment désinstaller un plugin ?
      est-ce qu’il ne traine pas des trucs dans d’autres fichiers ?

      je dis ça car après avoir tout viré, je ne pouvais plus accéder à mon site, message d’erreur par rapport à spip.php avec référence aux crayons...

    • salut,

      en fait tout marche bien en local.
      je suis en spip 192b sur club-internet.
      le problème peut-il venir de l’hébergeur ?
      quelqu’un a-t-il installé les crayons chez club-internet de manière opérationnelle ?

      marc

    • je me réponds.
      il semble bien qu’il y ait incompatibilité entre crayons et club-internet car après migration chez free, tout fonctionne bien.

    Répondre à ce message

  • 4
    Joceanspi

    Bonjour,

    J’ai installé le plugin, j’ai fait toutes les mises à jour (jquery, etc)
    Cela marche très bien sous Firefox et safari
    Cela ne marche absolument pas sous opera
    Sous IE le crayon n’apparait pas si on est connecté. Par contre si on double clic, le formulaire apparait sauf le bas, les boutons sont en haut à droite mais ils n’ont aucun effet, quand on clic aussi bien sur ok que sur annulé, rien ne se passe.

    Est ce que quelqu’un peut m’aider pour faire fonctionner correctement ce merveilleux plugin sous IE au moins.

    Merci

    • Joceanspi

      J’ai l’impression que ça vient d’Ajax qui fonctionne pas correctement sous IE mais malheureusement je n’y comprends rien ! SIC !

    • IE ne marche pas, c’est souvent comme ça... mais je teste les crayons avec IE et je t’assure que « chez moi ça marche ».

    • Chez moi, ça marchotte sous IE. Cela dépend du type de texte à éditer.
      Exemple, je peux utiliser les crayons pour modifier le contenu d’un article, mais pour le titre de l’article c’est inutilisable car chaque caractère est énorme, donc c’est complètement illisible. D’où cela peut-il venir ... ?

    • Joceanspi

      C’est space ton problème ! XD

      Pour ma part, j’ai essayer de reinstaller un nouveau spip vierge et j’ai ajouté le crayon et ça marche sous IE (avec les bugs d’affichage decrit précedemment )
      Du coup, je pense que ça vient donc de mon site spip, des squelettes, de la config peut être, car le crayon ne marche pas sous ie sur d’autre poste que le mien aussi. malgré tout j’ai toujours pas trouvé où est la faille ! :(

    Répondre à ce message

  • 1

    Bonjour

    Voilà : j’essaye d’utiliser les crayons pour permettre d’afficher un menu déroulant qui permettrait de sélectionner un mot clé dans une groupe de mots clés.

    Si j’ai bien compris, la balise #EDIT{champ} permet l’édition du champ en question, la table étant définie par l’environnement (si on est par exemple dans une boucle ARTICLES, c’est le champ correspondant dans la table articles qui est édité, c bien ça ?)

    Donc mon raisonnement était le suivant : si je crée un contrôleur qui permet de créer un form avec une boucle qui récupère le groupe de mots et présente tous les mots du groupe dans un select, ça devrait le faire. Or ça n’est pas l’id_mot du mot lui-même que je désire modifier en l’occurrence, mais l’id_mot qui se trouve associé à l’id_article dans la table spip_mots_articles... et là ça coince.

    J’ai essayé une boucle du type (MOTS_ARTICLES){id_mot}{id_article} pour fournir à EDIT l’environnement qui me semblait convenir mais bien sûr ça fonctionne pas ;-(

    Donc ma question est la suivante : comment spécifier à EDIT la table qu’on désire utiliser, en plus du champ ? Est-ce qu’un EDIT{mots_articles.id_mot} est susceptible de fonctionner ?

    Désolé, j’ai cherché dans les différents forums mais rien vu sur la question. Bcp d’utilisateurs semblent vouloir éditer les forums (allez savoir pourquoi !) mais peu semblent s’intéresser aux mots-clés !

    Merci du coup de main.

    • Le plugin « tag machine » essaie de résoudre ça ; ce n’est pas du tout trivial !

    Répondre à ce message

  • 12

    Bonjour,

    J’ai un petit soucis avec crayons.

    J’ai réalisé un crontrolleur.
    Dans ce controlleur, je place un alert en javacsript.

    Sous FF, tout est ok mais sous IE, aucun message.

    Je n’arrive pas à comprendre pourquoi . Apparemment, je n’aurais pas d’erreur javascript (enfin pas facile de les voir sous IE tout de même !!!).

    merci d’avance

    • On injecte les crayons par la méthode .html() de jQuery, et jusqu’à une date récente celle-ci n’était pas cohérente cross-browser pour l’exécution ou non des scripts.

      Mais je pensais que la version 1.1.4 de jQuery avait résolu ce problème, et c’est celle qui figure dans les crayons depuis une semaine... c’est bien avec ça que tu travailles ?

    • oui je travaille avec la version crayons updater ce matin sur le svn.

      Que faudrait-il faire pour que cela fonctionne sous IE ?

      la méthode .html() de jquery est -t-elle bien capable de faire exécuter du js sous IE dans cette version ?

    • Pour le savoir il faut faire une page test appelant jquery 1.1.4 et contenant ensuite quelque chose comme :

      <div id='test' />
      <script>
      $('#test').html('hello<scri'+'pt>alert("toto");</scr'+'ipt>');
      </script>

      et tester ça sous différents navigateurs.

    • Je viens de faire le test avec le script que tu m’as donné.
      Ben tout fonctionne sous FF et sous IE rien.

      J’ai même supprimé le ’alert’ et laissé que le ’hello’. ET sous IE, toujours rien.
      J’ai seulement les deux boutons ’valider’ et ’annuler’ qui apparaisse quand je clique sur le crayon.

      Aurais-tu une autre idée pur contourner ce problème ?

      Est ce que toi tu as ce souci également ?

      merci d’avance

    • Apparemment c’est jQuery 1.2 qui résoud ce problème, il vient de sortir ce matin : http://docs.jquery.com/Release:jQue... regarde tout en bas « evalscripts ».

      Reste à tester :-)

    • j’ai essayé de mettre jquery en version 1.2. Il faut juste remplacer le script jquery.js dans le répertoire js de crayons c’est ça ?

      Et après nouvel essai de cette manière, toujours rien.

      <script>
      $(document).ready( function() {
      $('#test').html('hello').evalScripts();
      }
      );

      $('#test').html('hello1').evalScripts();
      $('#test').append('hello2').evalScripts();

      </script>

      IE n’affiche absolument rien. Peut etre ai-je mal implémenté evalScript() ?

      Tu as réussi toi avec IE à avoir un résultat (script interprété par IE dans un controlleur) ?

    • je viens de passer les crayons en jQuery 1.2, dis-moi si ça résoud ton problème.

      PS : comptes-tu partager ton contrôleur ? Qu’est-ce qu’il fait ?

    • oui, après je partagerais mon controlleur.
      En fait, il permet de changer le mot de passe d’un utilisateur dans le front.

      J’ai du modifier un fichier du core de spip pour cela.
      Donc je vais tout reverser une fois que tout fonctionne correctement sur IE.

    • J’ai un léger soucis avec cette nouvelle version de jquery.
      Le crayon n’est plus du tout fonctionnel dans IE.

      Je ne peux plus rien éditer. Je ne peux pas trop d’aider car je ne n’arrive pas à voir des erreurs javascript.

    • Je l’ai testé, ça marche, mais il faut bien vider tous les caches (celui du site et celui du navigateur)

    • Et non fonctionne pas.
      Je te file mon controlleur.

      Sous IE j’obtiens que le texte ’Juste un test’.
      Alors que sous FF, jobtiens bien la chaine ’hello1 hello2’ à la place de l’ancien texte.

      Mais j’ai remarqué aussi que Safari (version 2) avait le même comportement que IE avec ce controlleur.

      Le problème ne viendrait de la façon dont on appelle ou affiche le controlleur ?

      Je suis allé sur le site de jquery (et de jquery.validate), apparement chez eux, tout fonctionne sous IE et Safari.

      [(#REM)
      Un crayon pour changer le mot de passe
      ]
      #CACHE0

      Juste un test

      <script>
      $(document).ready( function() {
      $('#test').html('hello');
      }
      );

      $('#test').html('hello1');
      $('#test').append('hello2');

      </script>

      merci d’avance

    • En effet ça bloque quand le script est défini à l’intérieur d’un <form>, comme c’est le cas ici ; j’ai envoyé un rapport de bug chez jQuery : http://dev.jquery.com/ticket/1594

    Répondre à ce message

  • 1

    Bonjour, voilà un exellent plugin !

    Tout marche à la perfection chez moi (en local) où j’ai activé notamment l’édition des forums avec le plugin autorité, mais je voudrais aller un tout petit peu plus loin, et notamment afficher la date de dernière modification dans forums.

    J’avais pensé à la balise #DATE_MODIF mais j’ai l’impression qu’elle ne fonctonne pas avec les forums....

    Avez-vous une idée

    • Bon, j’ai trouvé une solution dérivée de celles proposéesici :
      Il faut ajouter à SPIP la fonction :

       // fonction de répartition de la variable date "brute" renvoyée par #MAJ (aaaa-mm-jj hh:mm:ss)
      // en jj-mm-aaaa
      // NB 31/08/2006 17:28:58
      function date_maj($maj_brute)
      {
             $anneeMaj=substr($maj_brute,0,4);
             $moisMaj=substr($maj_brute,5,2);
             $jourMaj=substr($maj_brute,8,2);
             $heureMaj=substr($maj_brute,11,2);
             $minuteMaj=substr($maj_brute,14,2);
             $mise_a_jour=$jourMaj.'-'.$moisMaj.'-'.$anneeMaj.' '.$heureMaj.'h'.$minuteMaj;
      return $mise_a_jour;
      }

      et dans le squelette cette simple boucle :

      <BOUCLE_maj(FORUMS) {id_forum} {0,1}>
      Dernière mise à jour le [(#MAJ|date_maj)]
      </BOUCLE_maj>

      Bon c’est pas aussi beau qu’une petite balise DATE_MODIF, mais au moins ça marche !

    Répondre à ce message

  • 5

    Bonjour,

    j’ai un énorme problème.

    Je m’explique :

    J’utilise le plugin Inscription2 et lorsque je veux éditer mon profil via crayon sur firefox, il n’y a aucun problème..

    Cependant lorsque que je le fais sur Internet Explorer, là c’est la cata...

    Les boutons OK et Annuler ne fonctionnent pas ( j’ai beau cliquer 100 fois dessus rien ne change)

    Il n’y a que lorsque j’appuie avec la toucher ENTREE de mon clavier que ça se charge..

    Mais ça charge une page blanche avec écrit dessus : {"$erreur":"","wid46d6e262713be8_57053901":null}

    avec comme adresse :

    http://www.monsite.org/spip.php?action=crayons_store

    J’appuie donc sur le bouton Précédent de mon navigateur, ça recharge la page profil, Mais la modification que j’ai voulue faire a été effectuée !

    Je précise que cela n’est pas à cause du plugin Inscription2 car j’ai essayé de modifier un titre d’article, et c’est la même chose..

    Merci d’avance

    • Salut,

      En attendant qu’il y est une correction à cela, je suis retourné en arrière ( à la révision [14329] ) afin que cela fonctionne.

      Si quelqu’un voudrait faire la même chose que moi, je peux mettre en ligne le plugin complet jusqu’à cette révision si vous le voulez.

    • Je viens de corriger un bug sous IE, et maintenant je peux dire que « chez moi ça marche ». Si tu peux vérifier et confirmer que le bug a disparu (ou est toujours présent). Et s’il est toujours présent essaie de me donner plus d’infos (notamment, est-ce que IE t’indique un numéro de ligne où ça coince ?)

    • Salut,

      Je suis désolé mais cela ne fonctionne toujours pas...
      Encore pire, ça fait sauter tout mon javascript oO mais ça marche quand même sur firefox..

      enfin bref...

      Pour ce qui est de plus d’info, je peux pas trop t’en donner plus, j’aimerai bien mais le seul message d’erreur que j’obtient c’est {"$erreur":" ","$annuler":true} si je ne modifie pas le champ et que j’appuie sur ENTREE sur mon clavier,

      ou bien {"$erreur":"","wid46db22a2a78cf7_54776448":"Jean-Claude "} si j’édite un champ..

    • Ce que tu vois c’est la réponse normale, mais normalement les crayons ne l’affichent pas, ils la traitent. La cause de cet affichage, c’est que ton javascript a « sauté ». Comme je te dis, « chez moi » le javascript ne saute pas, il faut donc que tu sois plus précis (message d’erreur de IE te disant que ça a sauté à telle ou telle ligne, etc). Hélas débuguer sur IE ça a vraiment l’air d’être infernal, je ne sais pas quelle méthode t’indiquer...

    • Salut,

      j’ai mis à jour ma version jusqu’à la révision 15047 et à présent tout fonctionne normalement.

      Merci.

      Adrien

    Répondre à ce message

  • 1

    Super cu plugin crayons.
    J’ai essayé cette nouvelle fonctionnalité fichier et logo. Pour le remplacement du logo : RAS
    Pour le remplacement d’un fichier joint fichier
    Le controleur reste affiché après envoir envoyé le nouveau fichier.

    j’ai eu le message dans le debug :

    SELECT fichier, taille, largeur, hauteur, extension, distant FROM mon_site.spip_documents
    WHERE id_document=40

    Sep 03 17:09:06 10.146.194.132 (pid 5484) Sep 03 17:09:06 10.146.194.132 (pid 5484) 1054 Unknown column ’extension’ in ’field list’

    J’ai enlevé le champ extension (ligne 111 de crayons.php) juste pour voir. Le fichier joint en place se remplace bien par le nouveau. Le controleur ’remplacer ce document’ reste affiché (avec la moulinette qui ’mouline’).
    J’éspère que ma modeste contribution fera avancer les choses.

    • En effet la partie « remplacer un document » n’est compatible qu’avec une version SVN récente de SPIP.

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom