[plugin] CKEditor: editeur wysiwyg

145791018

Réponses

  • StéphaneStéphane Member, Former PluXml Project Manager
    Tu as encore des messages d'erreur ?

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • oui pareil


    PHP Error Message

    Warning: is_dir() [function.is-dir]: open_basedir restriction in effect. File(/usr/local/apache/htdocs/data) is not within the allowed path(s): (/home/:/usr/lib/php:/tmp) in /home/a5483979/public_html/plugins/ckeditor/kcfinder/core/uploader.php on line 225

    Free Web Hosting

    PHP Error Message

    Warning: file_exists() [function.file-exists]: open_basedir restriction in effect. File(/usr/local/apache/htdocs/data/.htaccess) is not within the allowed path(s): (/home/:/usr/lib/php:/tmp) in /home/a5483979/public_html/plugins/ckeditor/kcfinder/core/uploader.php on line 254

    Free Web Hosting

    et
    Cannot write to upload folder. /usr/local/apache/htdocs/data
  • J'ai besoin de vos lumières. ckfinder ne fonctionne plus depuis ce matin sur un de mes sites. Dès que je veux explorer le serveur, le navigateur me propose de télécharger la page browse.php au lieu de m'afficher l'arborescence du dossier data.


    J'ai modifié les droits qui sont tous à 777. Est-ce que quelqu'un a une idée ????
  • FrédéricFrédéric Member
    février 2013 modifié
    Jerry Wham a écrit:
    J'ai besoin de vos lumières. ckfinder ne fonctionne plus depuis ce matin sur un de mes sites. Dès que je veux explorer le serveur, le navigateur me propose de télécharger la page browse.php au lieu de m'afficher l'arborescence du dossier data.


    J'ai modifié les droits qui sont tous à 777. Est-ce que quelqu'un a une idée ????
    La même sur 2 hébergeurs différent (Infomaniak et 000webhost)

    A savoir une astuce aussi, pour afficher les images dans data/images de Pluxml, il faut configurer ckedtor avec comme path uniquement data/, quand ca fonctionne bien sur (en local c ok)
  • Je n'ai pas touché à la config qui pointe bien sur data/
    Ce qui est bizarre, c'est que ça fonctionne sur un site mais pas sur l'autre, chez le même hébergeur (même config serveur).
  • Alors, est-ce que quelqu'un a une piste ???
  • StéphaneStéphane Member, Former PluXml Project Manager
    Salut
    Quand tu testes est-ce que tu le fais avec la meme session de ton navigateur ?
    Essaye de fermer ton navigateur quand tu changes de site pour voir ce que ça donne

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • J'ai essayé avec différents navigateurs sur différents ordinateurs et toujours le même problème.


    J'ai résolu le problème en mode bourrin. J'ai téléchargé les sources du site sur lequel ça fonctionne et j'ai remplacé les fichiers du site sur lequel ça ne marchait pas. Et là ça fonctionne.


    Ce qui est étrange, c'est que ça s'est mis à ne plus fonctionner du jour au lendemain, sans que je ne change quoi que ce soit. Je ne sais pas d'où ça peut venir???
  • Pour ma part, je prépare pluxml en local, ensuite j'envois tout sur le serveur puis modifie data/configuration/parametres.xml pour modifier l'url.

    J'ajoute ou édite un article et lorsque je parcoure mon mac avec ckfinder, voila ce qu'il m'affiche:
    Cannot write to upload folder. /home/www/f28ee043b407dede8fc7e4551440a221/web/pluxmlDev/data
    
    Sachant qu'en config de ckeditor pour l'envois des images j'ai mis data/ uniquement afin de parcourir le dossier images de Pluxml.

    Et que pluxmlDev et mon dossier de mon local et que tout le reste du path je ne vois pas d'ou il sort ^^.

    Et enfin je précise que ca fonctionne en localhost.

    Merci.
  • Est-ce que ça bugue lorsque tu utilises le même navigateur ou bien est-ce que ça le fait aussi avec un autre ? Car ckfinder et ckeditor utilsent des cookies pour fonctionner. Peut-être qu'en supprimant tous les cookies de ton navigateur, le problème pourrait être arrangé ?
  • FrancisFrancis Member
    mars 2013 modifié
    Le coup du browse.php, je l'ai eu bien des fois, quand j'essayais de mettre au point KCFinder dans CKEditor. Ça arrive le dossier des images n'est pas bon.


    Je pense que c'est pour ça que Stéphane a mis en mémoire l'adresse absolue du site, pour le fournir à KCFinder comme paramètre de session PHP.


    Mais ça m'embête beaucoup, pour le passage de local à distant, ou quand je change un nom de dossier en local.

    J'ai fait un bidouillage qui marche... la plupart du temps. Mais parfois (notamment en local quand je passe beaucoup d'une fenêtre à l'autre), il perd la mémoire et il cherche le dossier data/images là où il n'est pas. Du coup, je retrouve quelque part un dossier data, avec un dossier images vide dedans.
    J'arrive à lui faire retrouver la mémoire par un petit F5 pour actualiser la fenêtre d'édition de l'article (après avoir fermé KCFinder). Par contre, je n'ai plus l'histoire du browse.php.


    Je voudrais changer ce bidouillage pour reprendre ce qu'à fait Stéphane, mais en récupérant l'adresse absolue dans data/configuration/parametres.xml, et ne pas avoir à le mémoriser dans les paramètres du plugin.


    [Edit : J'ai corrigé, je crois que c'est browse.php et non browser.php, mais ça ne change pas grand-chose, et en tout cas, ça ne résout pas le problème !...]
  • FrédéricFrédéric Member
    mars 2013 modifié
    Jerry Wham a écrit:
    Est-ce que ça bugue lorsque tu utilises le même navigateur ou bien est-ce que ça le fait aussi avec un autre ? Car ckfinder et ckeditor utilsent des cookies pour fonctionner. Peut-être qu'en supprimant tous les cookies de ton navigateur, le problème pourrait être arrangé ?
    Malheureusement oui, encore testé avec la version 19 de firefox et j'ai ce m^me message partout.
    Je creuse encore mais je ne vois pas, je vais testé avec la dernière version de ckeditor qui propose par la même occasion un jolie skin de l'éditeur.
    Francis a écrit:
    J'ai fait un bidouillage qui marche... la plupart du temps. Mais parfois (notamment en local quand je passe beaucoup d'une fenêtre à l'autre), il perd la mémoire et il cherche le dossier data/images là où il n'est pas. Du coup, je retrouve quelque part un dossier data, avec un dossier images vide dedans.
    Peut tu dire quel 'bidouillage' tu as fait Francis stp?
  • FrancisFrancis Member
    mars 2013 modifié
    Un détail en passant : je travaille encore avec CKEditor 1.4.8 (je m'aperçois que je ne suis pas encore passé à la 1.4.10, parce que je dois refaire les modifs chaque fois - je n'ai pas eu le temps quand elle est sortie, j'ai oublié après).


    Voici mes modifications, j'en avais parlé en partie ici, mais il y en a eu d'autres ailleurs (ici et dans le message qui le suit, et puis encore une autre - voir à la fin pour les icônes), ça peut être intéressant de les récapituler.

    L'essentiel de ces modifs consiste à ne pas avoir à mémoriser le nom de la racine du site, ce qui complique les transferts. Quand il s'agit d'autre chose, ce sera indiqué. Voici, voilà donc (c'est un peu long...) :


    • Dans plugins/ckeditor/ckeditor.php :


    - ligne 34 : remplacement de getParam('url') par getParam('uplDir')


    - remplacement de la ligne 37 :
    # pour le fichier config.php de kcfinder
    $_SESSION['ckeditor_url'] = $this->getParam('url');
    
    par (un peu bidouillage)
    # pour le fichier config.php de kcfinder
    $var_http = (!empty($_SERVER['HTTPS']) AND $_SERVER['HTTPS'] == 'on')?	'https://' : "http://";
    $current_path = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    // 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]
    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');
    
    - suppression de la ligne 69, dans la fonction onActivate()
    $this->setParam('url', '', 'cdata');
    

    - ligne 233 (ligne 237 dans la version 1.4.10), remplacement de getParam("url") par getParam("uplDir")


    - plus une modif (initiée par Jerry Wham mais qui n'a pas été prise en compte dans la version 1.4.10) pour éviter de coder les emails qui sont écrits dans un champ de formulaire (renvoi de la page lorsqu'un champ est manquant, par exemple)
    => remplacement dans la fonction protectEmails($txt) des lignes 163 à 168 (lignes 167 à 172 dans la version 1.4.10) par :
    // Codage uniquement des adresses mails qui ne sont pas dans un formulaire (=> qui ne sont pas précédées de "value=")
    if(preg_match_all('/(?<!value=")\b[\._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);
       }
    }
    


    • Dans plugins/ckeditor/config.php :


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

    - remplacement de la ligne 22 :
    # pour le fichier kcfinder/config.php
    $_SESSION['ckeditor_url'] = $plxPlugin->getParam('url');
    
    par :
    # pour le fichier kcfinder/config.php
    $_SESSION['ckeditor_url'] = realpath(PLX_ROOT.$_POST['uplDir']);
    
    - suppression des lignes 38 et 39 :
    if($plxPlugin->getParam('url')=='')
    	$plxPlugin->setParam('uplDir','', 'cdata');
    

    Ce que j'aimerais vraiment, dans CKEditor, c'est conserver la structure écrite par Stéphane, mais sans écrire le chemin en dur dans les paramètres du plugin.
    Ceci pour faciliter le transfert d'hébergement, notamment de local à distant (ce que je fais très régulièrement), ou encore aussi le changement du nom de dossier en local (ce que je fais aussi).


    Je pense qu'on pourrait récupérer le nom de la racine du site dans data/configuration/parametres.xml, je n'ai pas eu le temps de m'y coller et je ne maîtrise pas bien toutes les variables PluXml qui donnent les chemins des différents répertoires.


    ---
    Et pour être complet dans mes modifs de CKEditor, j'ai modifié deux icônes dans le thème par défaut BootstrapCK-Skin :
    - celle de l'insertion d'image (j'ai ajouté un arbre, sinon elle n'est pas assez parlante, je trouve)
    - et celle de oEmbed (carrément incompréhensible pour moi, je l'ai remplacée par un appareil photo qui fait tout ce qu'oEmbed propose : images, sons, vidéos)
    J'avais déjà laissé un lien vers les fichiers images dans le forum, c'est ici.
  • StéphaneStéphane Member, Former PluXml Project Manager
    @Francis
    Avec la 1.4.10 le chemin configuré dans ckeditor est un chemin relatif (data/)
    Donc tu ne devrais pas avoir de souci quand tu passes ton site local sur ton hébergeur. il faut changer juste changer le paramètre racine de PluXml et ckeditor se basera dessus pour le rajouter devant data/

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Super, merci Stéphane, c'était déjà fait et je ne m'en étais pas aperçu !

    Ce qui serait bien, ce serait d'intégrer aussi la modif° de Jerry, pour ne pas coder un mail quand c'est l'attribut "value" d'une zone de saisie, dans un formulaire (formulaire renvoyé pour cause de champ obligatoire non rempli, par exemple).

    Et pour les icônes, qu'en penses-tu ?
  • StéphaneStéphane Member, Former PluXml Project Manager
    @Francis: je travaille dessus.
    j'ai pris en compte pour le moment:
    - le problème d'encodage des emails dans les formulaires
    - le remplacement de l'icone oEmbeded
    - le paramétrage de l'utilisation de Ckeditor pour les pages statiques (pb si on fait du php à cause du wysiwyg)


    EDIT: je viens de voir qu'une nouvelle version de ckeditor est dispo avec plein de nouveauté

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • StéphaneStéphane Member, Former PluXml Project Manager
    @Francis: ton patch pour coder uniquement des adresses mails qui ne sont pas dans un formulaire ne fonctionne pas (exemple avec le plugin MyContact tel que décrit ici http://forum.pluxml.org/viewtopic.php?id=3863)


    EDIT: et je pense que c'est pour cela que je ne l'ai pas intégré dans la 1.4.10

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Stéphane a écrit:
    @Francis: ton patch pour coder uniquement des adresses mails qui ne sont pas dans un formulaire ne fonctionne pas (exemple avec le plugin MyContact tel que décrit ici http://forum.pluxml.org/viewtopic.php?id=3863)


    EDIT: et je pense que c'est pour cela que je ne l'ai pas intégré dans la 1.4.10
    Je ne pense pas que dans le cas de nicomax, le patch de Francis ait été utilisé (d'où le bug)... Il faudrait que nicomax nous le confirme. Je l'utilise et je n'ai jamais eu de soucis depuis.
  • StéphaneStéphane Member, Former PluXml Project Manager
    J'ai testé avec le patch de Francis et ça bug comme l'a décrit nicomax

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • StéphaneStéphane Member, Former PluXml Project Manager
    Pouvez-vous tester avec cette fonction svp ?
    Remplacer la fonction protectEmails dans le fichier plugins/ckeditor/ckeditor.php avec celle ci-dessous
    Merci
    
    	public static function protectEmails($txt) {
    
    		if(preg_match_all('/<a.+href=[\'"]mailto:([\._a-zA-Z0-9-@]+)((\?.*)?)[\'"]>([\._a-zA-Z0-9-@]+)<\/a>/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);
    			}
    		}
    		$s = preg_replace('/<input(\s+[^>]*)?>/i', '', $txt);
    		$s = preg_replace('/<textarea(\s+[^>]*)?>.*?<\/textarea(\s+[^>]*)?>/i', '', $s);
    		if(preg_match_all('/[\._a-zA-Z0-9-]+@[\._a-zA-Z0-9-]+/i', $s, $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);
    			}
    		}
    		return $txt;
    	}
    

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Merci Stéphane pour la modification de la fonction protectEmails.
    J'ai fait un essai, ça marche. J'ai envoyé un formulaire avec un champ obligatoire non rempli, il m'a réaffiché l'adresse mail correctement dans le formulaire.


    Par contre, j'ai sauté de joie un peu trop vite, pour le pb du chemin en dur dans data/configuration/plugins/ckeditor.xml :
    Le chemin en dur s'écrit toujours dans ce fichier au moment de l'installation, donc il n'est pas possible de copier un site de local en distant ou d'un dossier à un autre (ce que je fais au moins 2 fois par site, mais parfois davantage).
    Il faut changer ce fichier ckeditor.xml, sinon point de salut.


    Ou alors il faut réinstaller le plugin chaque fois... mais ce n'est pas du tout pratique.
    (je n'installe qu'une seule une fois mes plugins courants, avec mon paramétrage habituel, dans une installation de base de PluXml que je recopie pour chaque nouveau site => j'ai seulement à changer le chemin dans le .htaccess de la racine et dans parametres.xml.)


    Je vais donc reprendre mon bidouillage pour l'instant, mais je pense qu'avec la racine du site (quelque chose du genre "$plxShow->racine()" ou "$plxMotor->racine()") et le chemin d'accès aux paramètres du site ("data/configuration" par défaut), on pourrait récupérer ce chemin absolu dans parametres.xml.
  • StéphaneStéphane Member, Former PluXml Project Manager
    je vais regarder pour cette histoire de chemin car effectivement j'avais zappé le paramètre url qui contient le chemin complet avec le http://
    à suivre donc...

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • StéphaneStéphane Member, Former PluXml Project Manager
    version 1.4.11 (12/03/2013)
    + Détection automatique de l'url du site pour KCFinder
    + Remplacement de l'icône de oEmbeded
    + Paramétrage de l'activation de ckeditor pour les pages statiques
    BUG Erreur de protection des emails dans les champs de formulaire

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Merci Stéphane
  • Ça marche super bien !
    Merci Stéphane, c'est appréciable de ne plus avoir la racine du site dans les paramètres !

    Et le paramétrage par défaut du chemin relatif du dossier images ("data/" si le dossier images est "data/images"), c'est pratique aussi.
    Il est de plus en plus chouette, notre PluXml, non ? :)
  • bg62bg62 Member
    Yannou90 a écrit:
    Merci Stéphane
    ton lien en signature .... HS !
    :cool:
  • Merci beaucoup pour ce plugin fort utile. :)
  • jack31jack31 Member
    mars 2013 modifié
    Bonjour à tous, :)


    Cela ne me préoccupait pas outre mesure, mais maintenant, je voudrais bien fixer ce [del]petit[/del] [del]gros[/del] moyen problème.

    Pluxml 5.1.7



    L'insertion d'une image (explorer le serveur) me donne une interal error en m'ouvrant une fenêtre à l'URL


    CKEditor - Version 1.4.11 (12/03/2013)
    [== Indéfini ==]
    ../pluxml517/plugins/ckeditor/kcfinder/browse.php?type=images&CKEditor=id_content&CKEditorFuncNum=143&langCode=fr
    

    plxEditor - Version 1.2 (20/10/2011)
    [== Indéfini ==]
    .../pluxml517/plugins/plxeditor/medias.php?id=editor_content
    

    En outre, si je rentre une image en renseignant son lien à la mano avec option lightbox (agrandir l'image), au final, un clic sur cette image ne donne rien si ce n'est qu'une image dont l'URL est...
    [== Indéfini ==]
    .../pluxml517/article1/plugins/ckeditor/lightbox/blank.gif
    

    Une piste ? :rolleyes:
  • jack31jack31 Member
    Je viens de refaire une batterie de tests et voilà ce que ça donne.


    Note : Ma procédure est toujours la même pour la désinstallation : Désactiver le plugin/Supprimer


    Plusieurs instances de Pluxml 5.1.7 dans divers répertoires plus un dans la racine du NDD que je ne touche pas tant que le problème n’est pas réglé. ;)


    1/ Je télécharge ckeditor via MyPluginDownloader : error 500 lors d'une tentative d'insertion d'image (explorer le serveur) ou "page non trouvée" dans l'install de la racine du NDD


    Notons qu'il fait le même truc sur un autre hébergement.


    2/ Suppression de ckeditor selon la procédure ci-dessus et re-téléchargement par le sytème dans la gestion des plugins : Url du fichier plugin :


    J'utilise la version ckeditor.1.4.11.zip venant du dépot de Stéphanne. https://code.google.com/p/my-pluxml/downloads/list


    Mêmes symptômes. :(


    3/ Téléchargement direct et upload par FTP.


    Tout fonctionne sauf la Lightbox. :-//


    Mêmes problèmes sur une installation neuve et notons au passage que Lightbox ne fonctione ni avec Chrome ni Firefox
    Voir en *ttp://reseauk.o2switch.net/1/pluxml/article1/premier-article


    Bon, il y a un cailloux quelque part et je voudrais bien savoir lequel d'où mon post ce matin qui pourrait aider plus d'un à rechercher les pannes. ;)
  • StéphaneStéphane Member, Former PluXml Project Manager
    @jack31: pour analyser ton problème il faudrait un accès à ton ftp pour faire du debug et contrôler tout ce qui se passe dans les fichiers. Sinon on risque de perdre beaucoup de temps et d'energie. Je veux bien d'y coller si tu me fournis toutes les infos nécessaires en privé et par mail.

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

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