[plugin] CKEditor: editeur wysiwyg

1235718

Réponses

  • J'ai proposé une alternative à Stéphane avec zoombox. C'est dans les cartons en attente de mise à jour.
  • D'accord, merci pour l'info, j'attends avec impatience ^^
  • lorknaylorknay Member
    septembre 2012 modifié
    Bonjour,

    je voulais juste signaler (je ne sais pas si le sujet a été traité, j'ai survolé vite faire les 5 pages de discutions), 2 problèmes que je rencontre qui sont assez gênants dans l'édition de pages statiques :


    - Si je modifie une page statique avec un éditeur (ex notepad++) pour y insérer du code php comme par exemple la méthode racine pour avoir accès au domaine dans un lien quelconque et que je souhaite ensuite modifier du texte via l'interface du plugin, après enregistrement toute mes balises php sont renommées.


    Exemple :
    <!--?php global $plxShow; ?--> au lieu de <?php global $plxShow; ?>


    - De plus, lors d'un enregistrement de page, même s'il n'y a aucune modification de faite, j'ai toujours en bas de page un saut qui s'insert automatiquement : <p> </p>


    Si quelqu'un aurait un début de solution a m'apporter, j'en serai ravi ;)
  • On modifier une page statique avec un éditeur de code, pour y écrire du PHP. Mais ensuite, il ne faut plus enregistrer cette page avec CKEditor, sinon ça met la zone, comme tu as pu le constater.


    Pour le saut de ligne en fin de page, je n'ai pas ce problème. Est-ce que ce serait dans ton cas une page vide au départ ?
  • Si vous voulez enregistrer du code php, il faut je pense afficher le code source en appuyant sur le bouton du même nom puis coller le code et enregistrer la page.

    Si Stéphane passe par là, est-il prévu une mise à jour ?
  • Non, il n'est pas possible d'écrire du PHP dans un article ou une page statique, à partir de CKEditor. Si on l'écrit en mode source, des balises de commentaire HTML sont automatiquement ajoutées, les balises PHP sont démolies.


    Mais comme l'accès admin est prévu pour être utilisé par plusieurs personnes, ça sécurise le serveur de ne pas pouvoir inclure du PHP via l'interface d'administration.
  • Ca parrait logique de ne pas intégré du PHP dans un éditeur ^^


    Par contre, du coup, il serait pas mal de mettre quelque part dans la fenêtre de code le langage utilisé ^^


    Sinon, des nouvelles pour zoombox ? ^^
  • Aparté à propos de la stratégie de développement

    Stéphane, tu sembles t'être beaucoup investi dans la mise au point de CKEditor. Est-ce que le projet plxEditor est pour autant abandonné ?

    Merci !
  • StéphaneStéphane Member, Former PluXml Project Manager
    AirW a écrit:
    Aparté à propos de la stratégie de développement

    Stéphane, tu sembles t'être beaucoup investi dans la mise au point de CKEditor. Est-ce que le projet plxEditor est pour autant abandonné ?

    Merci !

    Bonjour
    Non il n'est pas abandonné, mais aucune évolution n'est prévue pour le moment

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Mouarf, j'ai été snobé xD
  • StéphaneStéphane Member, Former PluXml Project Manager
    aruhuno a écrit:
    Mouarf, j'ai été snobé xD

    Oups désolé :D
    La version zoombox de Jerry Wham demande quelques petites modifs que je n'ai pas encore eu le temps de faire car nous sommes en train de faire les tests de la 5.1.7

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • +1 pour la zombox !

    J'ai désactivé la lightbox actuelle, chez moi elle ne marche pas très bien.


    J'avais adopté aussi la zombox, que j'ai écrite dans le code source des pages, elle est très performante (redimensionnement auto suivant la largeur de la fenêtre, navigation avec les flèches du clavier ou à l'aide des vignettes, Echap pour quitter, etc.).

    Il n'y a "plus qu'à", comme dirait l'autre : facile à dire ! J'ai jeté un oeil, il faut ajouter (en écriture) ou récupérer (en lecture) la classe zoombox + la classe éventuelle zgallery pour les images liées entre elles. Ça n'est pas immédiat, effectivement.
  • aruhunoaruhuno Member
    septembre 2012 modifié
    Stéphane a écrit:
    Oups désolé :D
    La version zoombox de Jerry Wham demande quelques petites modifs que je n'ai pas encore eu le temps de faire car nous sommes en train de faire les tests de la 5.1.7
    Mouarf, ok, j'attends ça avec impatience (manque que la validation w3c pour la prochaine version de mon site) ^^

    Bon courage pour le taff, je serais patients et encore merci !
  • Une petite question, il serait possible d'ajouter un compteur de mots a cotés ou en dessous de l'éditeur de ce merveilleux plugin ?
  • Jerry WhamJerry Wham Member
    octobre 2012 modifié
    Petite précision pour ceux qui copieraient le dossier du plugin d'un domaine vers un autre : il faut réenregistrer la config et vérifier le paramètre url du fichier parametres.xml car sinon c'est l'ancien nom de domaine qui est conservé. Et si vous essayez d'explorer le serveur sans avoir fait cette manip, vous aurez une belle erreur du style ("Firefox ne sait pas ouvrir cette adresse car le protocole (kcact) n'est associé à aucun programme.").
  • FrancisFrancis Member
    octobre 2012 modifié
    Effectivement, j'ai ce problème moi aussi. Depuis la version 1.4.7, le chemin en dur est écrit dans parametres.xml, pour fournir à KCFinder le dossier contenant les images (celui qui est donné dans les paramètres de l'admin PluXml).


    J'ai essayé de m'en affranchir, parce que c'est embêtant d'avoir à changer un dossier de plus, quand on passe de local à distant, ça enlève de la souplesse à PluXml.


    J'ai trouvé une solution en modifiant dans plugins/ckeditor/ckeditor.php :


    - remplacement des lignes 34 et 37 par les lignes suivantes :
     $var_http = (!empty($_SERVER['HTTPS']) AND $_SERVER['HTTPS'] == 'on')?	'https://' : "http://";
     $current_path = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
     if (preg_match("/core\/admin\/.*/", $current_path)) { $root_site = $var_http . preg_replace("/core\/admin\/.*/", "", $current_path); }
        else { $root_site = $var_http . preg_replace("/[^\/]*\/[^\/]*$/", "", $current_path); }
     $_SESSION['ckeditor_url'] = $root_site . $this->getParam('uplDir');
     # pour le fichier config.php de kcfinder
     $_SESSION['ckeditor_url'] = "../" . PLX_ROOT . $this->getParam('uplDir');
    
    • si page admin [ce qui devrait toujours être le cas], adresse = chemin de la page admin, sans la fin "core/admin/article.php?a=001" par exemple
    • sinon (else), adresse = chemin de la page du site, sans la fin "article1/premierepage" par exemple [cas qui ne devrait pas arriver mais qui se produit parfois]


    - suppression de la ligne 69 :
    $this->setParam('url', '', 'cdata');
    

    - modification de la ligne 233 :
    if($plxAdmin->plxPlugins->aPlugins["ckeditor"]["instance"]->getParam("uplDir")=="") {
    



    et en modifiant le fichier plugins/ckeditor/config.php :


    - suppression de la ligne 13 :
    $plxPlugin->setParam('url', $plxAdmin->aConf['racine'].ltrim($_POST['uplDir'],'/'), 'cdata');
    

    - supression de la ligne 22 (je n'ai pas l'impression qu'elle est utilisée - à vérifier) :
    $_SESSION['ckeditor_url'] = realpath(PLX_ROOT.$_POST['url']);
    

    - suppression des lignes 38 et 39 :
    if($plxPlugin->getParam('url')=='')
    $plxPlugin->setParam('uplDir','', 'cdata');
    


    Je n'avais pas donné tout de suite cette solution, pour prendre le temps de la tester sur la durée (j'ai eu pas mal de soucis avec ça et j'avais testé une autre version avant).


    Ça marche pour ainsi dire tout le temps, mais parfois le navigateur se place dans un dossier où il ne devrait pas être => dans ce cas, on ne voit plus les images, et un dossier data/images vide est créé dans le dossier en question. Ça m'est arrivé une seule fois, avec cette version.


    L'idéal serait de pouvoir reprendre la racine du site dans le fichier data/configuration/parametres.xml, ou une autre solution qui évite de mémoriser la racine en dur.
  • Jerry WhamJerry Wham Member
    octobre 2012 modifié
    Comme je n'ai pas de réponse , je poste ici ma remarque. La fonction protectEmails de ckeditor ne prend pas en compte le fait que l'url du mail peut être écrite dans un formulaire (typiquement le formulaire de contact).

    Donc, avec le formulaire de contact par exemple, si une personne poste des données et fait une erreur en lisant le captcha par exemple, les données saisies précédemment sont ré-écrites dans le formulaire mais l'adresse e-mail est obfusquée ce qui fait que dans l'input on a quelque chose comme
    <script type=
    
    et à côté
    eval(unescape('%64%6f%63%75%6d%65%6e%74%2e%77%72%70%74%23%28%27%65%6d%61%69%6c%40%6d%61%69%6c%2e%64%72%27%29'))" />
    

    N'étant pas professeur ex-regex, est-ce qu'une âme charitable pourrait se pencher sur le problème (la regex qui foire est dans mon post précédent)?


    Je m'auto-réponds: En attendant une meilleure, je vous propose ceci.

    A la place de :
    if(preg_match_all('/[\._a-zA-Z0-9-]+@[\._a-zA-Z0-9-]+/i', $txt, $matches)) {
       foreach($matches[0] as $k => $v) {
            $string = ckeditor::encodeBin2Hex('document.write(\''.$matches[0][$k].'\')');
            $txt = str_replace($matches[0][$k], '<script type="text/javascript">eval(unescape(\''.$string.'\'))</script>' , $txt);
       }
    }
    
    mettre
    if(!preg_match_all('/value="[\._a-zA-Z0-9-]+@[\._a-zA-Z0-9-]+"/i', $txt, $matches)) {
       if(preg_match_all('/[\._a-zA-Z0-9-]+@[\._a-zA-Z0-9-]+/i', $txt, $matches)) {
           foreach($matches[0] as $k => $v) {
                $string = ckeditor::encodeBin2Hex('document.write(\''.$matches[0][$k].'\')');
    	    $txt = str_replace($matches[0][$k], '<script type="text/javascript">eval(unescape(\''.$string.'\'))</script>' , $txt);
           }
       }
    }
    

    Je n'ai pas réussi à n'utiliser qu'une seule regex alors que je pense que c'est possible.
  • Merci Jerry pour cette bonne remarque et pour sa solution.


    Cette expression régulière semble marcher, pour remplacer les deux :
    /(?<!value=")\b[\._a-zA-Z0-9-]+@[\._a-zA-Z0-9-]+/i
    
  • Jerry WhamJerry Wham Member
    octobre 2012 modifié
    Nickel Miguel... euh Francis ! Ça marche du tonnerre.

    A la réflexion, tu peux m'expliquer ce que tu as ajouté.
    ? : des caractères sont facultatifs
    <: ça c'est pour l'ouverture de la balise input
    ! : comprends pas
    value=" : ok, je comprends
    \b : comprends pas non plus

    Si tu peux nous éclairer steplait.
  • FrancisFrancis Member
    octobre 2012 modifié
    (?...) est une chaîne "non capturante" qui permet d'éliminer les chaînes précédées ou suivies d'une autre chaîne donnée.
    C'est un autre usage du point d'interrogation, qui peut indiquer un caractère facultatif s'il n'est pas précédé d'une parenthèse.


    (?<value=") ne sélectionnerait que les chaînes précédées du texte value="
    Le signe < indique "précédé par", aucun rapport ici avec une ouverture de balise.


    Pour l'inverse, on ajoute la négation qui est le point d'exclamation !
    ce qui donne (?<!value=") pour ne pas sélectionner les chaînes précédées par value="


    Plus d'infos ici.


    Mais ça ne suffit pas, parce que si on a
    value="toto@titi.fr"
    
    le 1er "t" de "toto" est éliminé, puisqu'il est précédé de value=" mais le reste convient, donc la chaîne renvoyée est "oto@titi.fr".


    Il faut donc préciser qu'on ne prend que les mots entiers, c'est le rôle de \b


    Je teste mes expressions régulières sur www.rubular.com, je trouve cette page claire à utiliser, mais je pense que tu connais déjà soit ce site, soit un autre de ce genre.
  • Merci pour les liens. Je n'en connaissais aucun. D'ailleurs, je suis à la recherche d'un site en français de qualité sur les expressions régulières car j'avoue que je rame quand je dois en écrire une. Si quelqu'un en connais un je suis preneur.

    Merci également pour les explications, je m'en vais dormir moins bête ce soir :p
  • C'est bizarre. Sur rubular.com, la regex :
    /(?<!value=")\b[\._a-zA-Z0-9-]+@[\._a-zA-Z0-9-]+/i
    
    ne renvoie aucun résultat.


    Par contre celle-là oui :
    /(?<!value="\d)[\._a-zA-Z0-9-]+@[\._a-zA-Z0-9-]+/i
    

    Or dans la vraie vie, c'est la première qui fonctionne.

    Donc rubular.com est à prendre avec des pincettes...

    Quoi qu'il en soit, merci pour les infos, j'ai de quoi potasser pendant quelques temps !!!
  • Je n'ai jamais eu de problème avec rubular.com, il marche très bien et c'est sur ce site que j'ai mis au point l'expression régulière que je t'ai proposée. Mais il ne faut pas taper le premier slash, ni le dernier (le i est à mettre dans la case de droite).


    Quelques liens, c'est-à-dire en vrac tout mon marque-page sur les regex (expressions régulières), en plus des deux liens précédents :
    - sur le Site du zéro
    - sur Comment ça marche
    - un résumé en anglais
    - un autre mémento, mais en français
    Et pour tester, outre rubular.com que j'utilise le plus souvent, il y a par exemple :
    - des tests de fonctions regex en PHP
    - et un autre site
  • Merci beaucoup Francis. Je connaissais le tuto du sdz mais je le trouve succinct (bien pour comprendre le concept global mais pas suffisant pour des regex un peu plus poussées).


    Je confirme que la regex ne fonctionne pas sur rubular (ma regex).
    Ça ne vient pas a priori de mon navigateur (testé avec Aurora, Safari, Opera, Chromium) ? Mais elle fonctionne avec le formulaire de contact. Va comprendre...
  • Jerry, ton adresse mail est précédée de value="
    et tu te plains qu'elle n'est pas prise en compte !


    Mais le but de cette expression régulière est bien d'éliminer les adresses mail précédées de value="
    => rubular.com marche très bien, il ne récupère pas cette adresse mail !


    Si tu ajoutes une adresse mail en-dehors d'un "value", tu verras qu'elle sera bien récupérée, contrairement à l'autre.
    C'est bien ce qui permettra à CKEditor de ne pas coder les adresses mail incluses dans un formulaire.
  • Ah oui je suis trop con ! Fatigué aussi peut-être...
  • On va dire fatigué, plutôt ! :)
    Ne t'inquiète pas, ce genre de choses m'arrive parfois aussi... - raison de plus pour dire fatigué ! :)
  • StéphaneStéphane Member, Former PluXml Project Manager
    petitchevalroux a écrit:
    Une petite question, il serait possible d'ajouter un compteur de mots a cotés ou en dessous de l'éditeur de ce merveilleux plugin ?

    Réalisé. dispo bientot (avec d'autres modifs)

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Dans le thème par défaut BootstrapCK-Skin, je trouvais que l'icône image n'était pas très parlante, alors j'ai mis un arbre dedans.


    Et pour l'icône de oEmbed, je la trouvais encore moins parlante, j'ai mis un appareil photo (qui permet de capturer des images, de la vidéo ou du son).


    Si vous avez d'autres idées, je suis preneur. Les images modifiées (respectivement icons.png et icon.png, avec les chemins dans le nom des fichiers) sont ici.
  • Yosh !


    Ça faisait un petit bout de temps que je n'avais pas ajouté de vidéo sur mon site et avec ce plugin... surprise : la taille des iFrames n'est pas pris en compte ><


    Bon comme j'ai lu ceci :
    Stéphane a écrit:
    Réalisé. dispo bientôt (avec d'autres modifs)

    Je me dis que ça va peut-être être corrigé dans la prochaine version ^^


    En passant, faudrait vraiment rendre tous les plugins conforme au W3C =/Oui oui, je sais le boulot que ça représente.
Connectez-vous ou Inscrivez-vous pour répondre.