[Plugin] TinyMCE : Editeur pour articles et pages statiques

135

Réponses

  • Bonjour,

    Je viens de tester avec la dernière version en ligne de Tinymce. Je n'ai pas de souci pour changer l'image d'accroche.
    Par contre, Pluxml n'actualise pas l'image affichée quand on change. Il faut enregistrer l'article pour que la nouvelle image soit prise en compte.

    tinyMCE-pluxml.js est un fichier qui est créé automatiquement lorsque qu'on enregistre dans le panneau de configuration du plugin.
    Il contient le fichier tinyMCE.js, plus le paramétrage personnalisé du plugin.
    Si tu veux personnaliser quelque chose, fais le dans tinyMCE.js et enregistre la config pour recréer le fichier tinyMCE-pluxml.js

    Cordialement
  • Après plusieurs essais sur deux pluxml differents, j'ai cerné le problème: si j'active le plugin champPlus, alors le menu "image d'accroche" ne fonctionne plus.
    Mais après réflexion, ce n'est peut être pas anormal, puisqu'avec ChampPlus on peut aussi ajouter une vignette. Et d'ailleurs je me posais la question si cela ne faisait pas double emploi.

    Sur mes sites, JQuery est installé en "local" et non pas par le biais d'un CDN. Et j'appelle JQuery, et mes autres scripts en fin de document avant le </body>.
    Est-ce que je dois modifier quelque chose dans le plugin pour tenir compte de cette configuration?
  • @cpalo,

    Effectivement il y a un conflit entre la dernière mise à jour de Pluxml 5.5 et le plugin chamPlus. On peut le voir en ouvrant l'inspecteur dans Firefox (Ctrl-Maj-I au clavier) et en cliquant sur l'onglet console qui affiche les erreurs dans l'exécution de Javascript

    Le fichier core/admin/foot.php reprend le nom de la variable mediasManager ( Copiez-collez ?) que j'utilise dans chamPlus. Et comme cela ne fait pas la même chose, il y a un "conflit de variables" :mad: :mad: :mad:
    Bon j'ai corrigé le bug. Cela tourne avec TinyMCE. Je fais encore quelques vérifs et je publierai bientôt la mise à jour.

    Sauf si tu as une connexion ADSL pourrie, il vaut mieux charger JQuery par le CDN, tu es sûr d'avoir une version à jour. Il y a des corrections de bugs de temps en temps.
    Il vaut mieux télécharger Jquery dès que possible dans le <head>. Elle est assez lourde et les navigateurs savent charger plusieurs fichiers en parallèle. De plus certains programmes javascripts en ont besoin.
    Attention aux plugins qui chargent JQuery sans s'occuper des autres. Il peut y avoir des conflits de version.

    A++
  • cpalocpalo Membre
    janvier 2016 modifié
    Encore merci.

    Effectivement j'ai une connexion ADSL pourrie ; on nous promet le haut débit (pas le très haut débit) avec 8M° pour 2022!!! Et si par hasard, je partage ma connexion avec un de mes enfants quand ils sont là ( vidéo, jeu..)... terrible. Alors j'ai le temps de regarder les pages de s'afficher.. et le poids des pages ou des images a son importance.
    D'où mon choix actuel de ne pas utiliser le CDN .

    Je vais donc modifier mes thèmes pour remettre JQuery en tête, même si cela était déconseillé:
    http://forum.pluxml.org/viewtopic.php?id=4904
    D'ailleurs je voulais te poser la question pour ton plugin colorBox qui s'installe dans le head. A savoir comment cela se passait si JQuerry se trouve en fin de document.
  • Je me permets d'apporter une suggestion, qui n'est sans doute pas plus simple.

    Je souhaite avoir ( cf mes posts) des barres d'outils et de menus ( mais très épurés) différents suivant les profils utilisateurs.

    Alors plutôt que d'avoir dans le panneau de configuration les menus et les boutons à sélectionner suivant les utilisateurs, je pensais qu'on pouvait peut être créer dans le fichier de configuration de tinymce, le code de plusieurs barres de menus et de boutons. Et dans le panneau de configuration avoir "simplement" à choisir l'une de ces barres suivant le profil.
  • Bonjour,

    Avant de télécharger JQuery, il faut toujours faire un test pour savoir si la bibliothèque JQuery n'existe pas déjà. Voir le bout de code dans le billet n°4 du fil de discussion que tu cites. C'est la raison du test "if(typeof(jQuery) === "undefined") ...".
    J'utilise une version plus sophistiquée en créant une constante JQUERY_LOADED quand je télécharge la librairie. C'est dans la fonction setup
    Au début du plugin :
    [== PHP ==]
    if (! defined('JQUERY_LIB'))
    	define('JQUERY_LIB', 'jquery-1.11.3.min.js');
    if (! defined('JQUERY_SRC')) {
    	define('JQUERY_SRC', '//code.jquery.com/'.JQUERY_LIB);
    }
    
    Dans la fonction setup appelé par le hook ThemeEndHead():
    [== PHP ==]
    if (! defined('JQUERY_LOADED')) {
    ?>
    	<script type="text/javascript"> <!-- colorBox -->
    		if (typeof jQuery === 'undefined')
    			document.write('<scr'+'ipt type="text/javascript" src'+'="<?php echo JQUERY_SRC; ?>"></scr'+'ipt>');
    	</script>
    <?php
    		define('JQUERY_LOADED', true);
    	}
    
    On fait la même chose si on utilise le hook AdminTopEndHead().

    Dommage qu'il n'y a une convention ou une recommandation pour définir la constante JQUERY_LOAD qui évite d'avoir plusieurs lignes dans la page HTML qui tentent de télécharger jQuery.
  • Bonjour,

    l'icone inserer un lien ne fonctionne pas : lorsque'on clique sur cette icone ( que ce soit dans la barre d'outils ou par le menu insérer ) cela ne provoque aucune action.

    J'utilise l'avant-derniere version de la 5.5 (27 janvier)

    Cordialement
  • cpalocpalo Membre
    février 2016 modifié
    Bonjour,

    L'insertion du lien fonctionne... a-priori le bug est uniquement sur un site en particulier (et qui a aussi un autre bug).

    Afin de bien comprendre ( j'ai bien vu ton conseil de script pour appeler jquery ainsi que l'appeler dans le head), et sans revenir sur le débat du CDN,
    ma structure:
    common
    core
    plugins
    themes
    Je fais appel à jquery,(installé dans common/js/jquery.js) en fin de body.
    Je voudrai aussi avoir la bibliothèque tinymce installé sur le serveur (plugin/tinymce/) et non appelé par CDN.

    Comment dois-je modifier le plugin avant son installation ?
    [== PHP ==]
    define('TINY_VERSION', '4.3');
    define('TINY_PLUXML_JS_LIB', 'tinyMCE-pluxml.js');
    
    if (! defined('JQUERY_LIB'))
    	define('JQUERY_LIB', 'jquery-1.11.3.min.js');
    if (! defined('JQUERY_SRC')) {
    	define('JQUERY_SRC', '//code.jquery.com/'.JQUERY_LIB);
    }
    
    if (! defined('TINYMCE_LIB'))
    	define('TINYMCE_LIB', '//tinymce.cachefly.net/'.TINY_VERSION.'/tinymce.min.js');
    

    Cordialement
  • @cpalo,

    Je prépare une version du plugin avec la bibliothèque de tinymce intégrée dedans.
    J'ai commencé à regarder ce soir. Cela ne doit plus être très long.
  • Bonjour et merci pour ce plugin qui a l'air intéressant.
    Cependant j'aimerai pouvoir afficher le code pour faire des corrections à la main, mais je ne trouve pas de bouton dans TinyMCE pour ça.
    Est-ce que c'est possible ?
  • Tu n'as pas de bouton mais tu as le menu outils/afficher le code source
  • cpalo a écrit:
    Tu n'as pas de bouton mais tu as le menu outils/afficher le code source
    Je n'ai pas de menu outil dans TinyMCE.
  • @src386,

    Tu as quelle version de TinyMCE ?
    la dernière version en ligne est : 1.41
    Tu peux aussi utiliser la version 1.4-codemirror avec la bibliothèque de codemirror intégrée :
    http://kazimentou.fr/pluxml-plugins2/plugins/tinyMCE-1_4-codemirror.zip
  • src386src386 Membre
    février 2016 modifié
    bazooka07 a écrit:
    @src386,

    Tu as quelle version de TinyMCE ?
    la dernière version en ligne est : 1.41
    Tu peux aussi utiliser la version 1.4-codemirror avec la bibliothèque de codemirror intégrée :
    http://kazimentou.fr/pluxml-plugins2/plugins/tinyMCE-1_4-codemirror.zip
    J'ai bien la 1.4.1
    Je vais essayer la version avec Codemirror pour voir !

    EDIT: toujours pareil, je n'ai pas l'impression que cela aie modifié quoi que ce soit.
    C'est d'autant plus étrange que sur le site https://www.tinymce.com/ j'ai bien le menu Tools > Source Code.
    Or dans la version Pluxml je ne l'ai pas.
    Par contre je viens de remarquer que le changement d'options ne semble rien faire... il y a peut être un cache à vider côté serveur ?

    EDIT2: Ok c'est bon, je n'avais pas activé codemirrors dans les options. Après vidage du cache navigateur j'ai bien le menu "Outils".
    Merci.

    EDIT3: Bon, ça affiche bien le code, mais ça enregistre pas les modifs que je fais...
  • cpalocpalo Membre
    bazooka07 a écrit:
    @Tous,

    Nouvelle version du plugin :
    Version 1.2
    Extension du panneau de config pour sélectionner chaque plugin selon chaque utilisateur. Possibilité de définir les options générales ou pour chaque utilisateur. Commentaire et exemple pour chaque plugin.
    Possibilité de régler les paramètres si le plugin est inactif.
    Possibilité de désactiver l'extension

    Si vous avez un rédacteur très intrépide, vous pouvez le brider en désactivant tous les plugins.

    Bon amusement.

    Bonjour,
    Où est-ce que cela apparaît dans le panneau de configuration de tinymce?
    Si on utilise la version CDN, tous les plugins sont chargés par défaut ?

    Cordialement
  • cpalocpalo Membre
    bazooka07 a écrit:

    tinyMCE-pluxml.js est un fichier qui est créé automatiquement lorsque qu'on enregistre dans le panneau de configuration du plugin.
    Il contient le fichier tinyMCE.js, plus le paramétrage personnalisé du plugin.
    Si tu veux personnaliser quelque chose, fais le dans tinyMCE.js et enregistre la config pour recréer le fichier tinyMCE-pluxml.js

    Cordialement

    Si je veux modifier la liste des plugins ou la toolbar, je ne trouve pas dans tinyMCE.js mais dans tinyMCE.php (après la ligne 137) et dans tinyMCE-pluxml.js ( à partir de la ligne 197).

    Ce que je souhaite, c'est simplifier ces deux barres et aussi y rajouter quelques boutons ou menus personnalisés.
  • RingRing Membre
    Bonjour Bazooka et cpalo.

    J'ai installé la dernière version PluXml 5.5-Beta.3 et TinyMCE 1.41.
    Magnifique résultat !

    Pourtant, je n'arrive pas à insérer une image dans un article. La popup des medias s'ouvre mais sur le répertoire racine et impossible de naviguer dans les sous-dossiers.
    Pour le test, je n'ai importé qu'une seule image dans le répertoire data/medias. J'ai beau cliquer dessus, rien n'est inséré dans l'article.

    Un peu d'aide serait bienvenue. Je précise que je ne suis pas une flèche en php.
    Merci d'avance.
  • cpalocpalo Membre
    @ring
    à droite du repertoire racine, tu as une petite fleche qui te permet d'afficher les sous-dossiers présents dans le dossier racine
  • cpalocpalo Membre
    Je viens de m'apercevoir d'un bug d'affichage lorsqu'on est avec des longs chapo ( ce qui ne devrait pas etre) et des longs articles ou pages.
    La barre de menus et la barre d'outils ne restent pas figées,( elles le sont peut etre mais cachées sous le menu du panneau d'administration) et par conséquent elles ne deviennent plus visibles, et plus de possibilité de les utiliser lors de la rédaction.
    Un problème de css à régler donc.

    Cordialement
  • @Ring,

    C'est pas un peu abusé ?
    la version PluXml 5.5-Beta.3 est sortie de puis quelques jours à peine.
    Les versions beta sont des versions qui subissent des changements importants et fréquents.
    Ceux qui développent bénévolement des plugins n'ont pas le temps de s'adapter en permanence aux changements de versions de Pluxml.
    Quand on est pas une flèche en PHP, on évite d'utiliser les versions beta. Au pire, on peut utiliser les versions release-candidate ou RC. Sinon on attend patiemment les versions stables qui sortent quand c'est prêt.
    Et pour les impatients, on retrousse les manches et on met les mains dans le cambouis. C'est une bonne occasion d'apprendre ;)

    @cpalo,

    Pour les longs articles, tu as un bouton pour passer en mode plein écran, à droite sur la barre d'outils. Tu profites ainsi de toute la surface de ton écran. La valeur de Z-index qu'utilise Pluxml est un peu abusée !! Je dois utiliser javascript pour rendre les choses correctes. Et je me suis limité au plein écran.

    Pour ajouter/supprimer des boutons/plugins, il ne sert à rien de toucher le fichier tinyMCE-pluxml.js. C'est un fichier créé automatiquement quand on sauvegarde la config du plugin.
    Il faut faire les modifs dans le fichier tinyMCE.php à partir des lignes 140 (plugins) et 144 (toolbars pour les boutons). Enregistrer la config du plugin pour générer le fichier tinyMCE-pluxml.js. Et pour finir rafraichir le cache du navigateur en tapant F5 sur le clavier.

    Le souci, c'est que tous les profils d'utilisateurs seront impactés. Il y a tellement de plugins qu'il est compliqué de personnaliser les plugins permis pour chaque profil.
    Peux-tu préciser ton besoin ?

    Le gestionnaire de médias de TinyMCE buggue avec la dernière version de PluXml 5.5-Beta.3. Je vais voir pour corriger cela dans la prochaine version, avec la possibilité d'utiliser la bibliothèque tinymce.min.js sans passer par le CDN.

    A+++
  • RingRing Membre
    mars 2016 modifié
    @ cpalo : oui, j'ai vu la flèche mais rien d'autre que le répertoire racine ne s'affiche.

    @ Bazooka : Merci pour ton aide.
  • Pour le problème avec le popup des médias, et aussi des articles, voir billet #59 !
    Heureusement qu'il y a l'inspecteur de Firefox pour détecter les bogues rapidement sur la console Javascript.

    Prendre la version 1.42 qui corrige le bug.
  • RingRing Membre
    bazooka07 a écrit:
    Pour le problème avec le popup des médias, et aussi des articles, voir billet #59 !
    Heureusement qu'il y a l'inspecteur de Firefox pour détecter les bogues rapidement sur la console Javascript.

    Prendre la version 1.42 qui corrige le bug.

    Evidemment, je l'avais déjà corrigé avant de demander. Je n'ai pas l'habitude d'appeler à l'aide sans avoir tout tenté avant, donc je lis les posts.
    Mais laisse tomber. Je vais, comme tu me le préconises, trouver "une autre" solution.
  • cpalocpalo Membre
    Bonjour,

    Oups! j'avais oublié le bouton plein écran qui régle ce problème !! et qui donne un confort d'écriture comme lorsqu'on est dans un traitement de textes.

    Pour ma préciser ma demande. Tout de suite je te rassure je ne souhaite pas une usine à gaz et je ne veux pas parametrer les 40 plugins suivant les profils utilisateurs.
    Déjà que l'on puisse le faire pour codemirror me convient très bien.
    Mon but c'est d"éviter que qu'on ne puisse "détruire" la charte graphique en ayant trop de fonctionnalités à sa disposition ( exemple de l'accés au code source avec codemirror) et que des "débutants" aient leur tâche facilitée en ayant une barre d'outils et de menus "simplifiée".

    Alors ce que j'aurai besoin, c'est de définir deux barres d'outils et de menus différentes que je pourrai affecter à l'un ou l'autre des cinq profils.

    Une autre solution, si c'est plus facile ou plus logique, serait de dire qu'à chacun des cinq profils correspond une barre d'outils ou de menus.

    Cordialement
  • cpalocpalo Membre
    Je viens d'installer la dernière version 1.42, de deux manieres ( mise à jour et "vierge").
    Deux bugs:
    l'un dans l'administration du plugin où la mise en page a "buggé"
    et surtout dans l'édition des article sou des pages, les zones d'édition restent blanches; c'est à dire sans les barres d'outils de tinymce et sans le texte ( dans le cas d'articles à modifier)
  • @cpalo,

    Le mode plein écran apporte un réel confort pour les longs articles.

    Pour le 1er bug, il faut rafraichir le cache du navigateur en appuyant sur la couche F5
    Pour le 2ème bug: Peut-être un droit en écriture dans le dossier plugins/tinyMCE. Pour éviter cela, le fichier tinyMCE-pluxml.js est enregistré maintenant dans le dossier plugins. Mias sur un serveur Nginx/Debian le calcul de l'option document_base_url de Tinymce plantait. J'ai corrigé.

    Essaye la version 1.43.

    Pour personnaliser les barres d'outills selon les profils utilisateurs, il y a seulement 26 plugins. Ce qui fait encore beaucoup.
    En supprimant un plugin, le menu et la barre d'outils devraient s'adapter sans générer de message d'erreur.
    Dans tinyMCE.php, il faut supprimer plugins dans options la fonction build_javascript_lib et l'ajouter dans le hook AdminTopEndHead comme je le fais pour codemirror. Bien sûr, il faut personnaliser la liste de plugins en fonction du profil utilisateur à ce niveau.
  • cpalocpalo Membre
    Merci pour cette mise à jour.
    Cela a l'air de fonctionner correctement.
    Pour la barre de menus, je vais regarder cela de plus près et faire des essais..Je te ferai part de mes retours.
    Par contre si je cherchais juste à avoir avoir deux toolbars différentes suivant les profils, quelle pourrait etre la piste?

    Cordialement
  • @cpalo

    Dans le hook AdminTopEndHead(), vers la gestion de codemirror :
    [== PHP ==]
    $plugins1 = 'liste n°1 de plugins séparés par un espace';
    $plugins2 = 'liste n°2 de plugins séparés par un espace';
    $plugins = array(
      PROFIL_ADMIN=>$plugins1,
      PROFIL_MANAGER=>$plugins1,
      PROFIL_MODERATOR=>$plugins1,
      PROFIL_EDITOR=>$plugins2,
      PROFIL_WRITER=>$plugins2,
    );
    $plugins_profil = $plugins[$_SESSION['user']];
    echo <<< PLUGINS
    options.plugins = '{$plugins_profil}';
    
    PLUGINS;
    

    Je n'ai pas testé mais c'est un bon début.
    Le menu et la toolbar devraient s'adapter en fonction des plugins.
    Sinon on peut faire la même chose avec la toolbar.

    A++
  • cpalocpalo Membre
    mars 2016 modifié
    Merci pour cette piste que je viens de tester très rapidement.

    Pour deux profils différents, ce sont les mêmes barres qui appparaissent ( ne correspondant à aucune des deux créées pour la circonstance). Seule différence (mais normal puisque j'ai validé cette différence entre les deux profils) le menu pour afficher le code source.
    De même comme il n'y a plus le bouton plein écran, il y a des ascenseurs verticaux pour les zones de saisie.

    J'ai entré ton code après la ligne 273 CODEMIRROR;
    Je n'ai pas modifié les lignes 152 à 159 plugins: toolbar:

    Je vais donc continuer à chercher dans cette direction.
  • @cpalo,
    En fait, il faut utiliser $_SESSION au lieu de $_SESSION.
    [== PHP ==]
    $plugins1 = 'liste n°1 de plugins séparés par un espace';
    $plugins2 = 'liste n°2 de plugins séparés par un espace';
    $plugins = array(
      $plugins1, // PROFIL_ADMIN
      $plugins1, // PROFIL_MANAGER
      $plugins1, // PROFIL_MODERATOR
      $plugins2, // PROFIL_EDITOR
      $plugins2 // PROFIL_WRITER
    );
    $plugins_profil = $plugins[$_SESSION['profil']];
    echo <<< PLUGINS
    options.plugins = '{$plugins_profil}';
    
    J'ai fait la modif sur TinyMCE. Je finis de régler un autre problème et je publierai une mise à jour.

    A++
Connectez-vous ou Inscrivez-vous pour répondre.