[SPXTYNIMCE] Editeur wysiwyg : Tinymce + file manager

1356710

Réponses

  • Que fait ckeditor la dessus ?
  • On est limité à images et documents il me semble (images quand on clique sur le bouton image et documents quand on clique sur le bouton flash. Je dis ça de mémoire, il faudrait vérifier).
  • A première vue pas de limitation non plus dans ckeditor (juste une vérif que le file exist)
  • J'ai rencontré un soucis de droits sur les fichiers, et en fouinant un peu je me suis aperçu que lorsque l'on upload une image par la gestion des médias de pluxml, celles ci se retrouvent en copie dans un second répertoire.

    1° ) Dans le répertoire data/images/
    2° ) Dans le répertoire plugins/spxtynimce/tinymce/plugins/filemanager/thumbs

    On retrouve dans ce second répertoire en fait une copie des fichiers du répertoire /data/images/

    J'ai également trouvé dans ce répertoire des dossiers et des images de chaussures addidas et de slider parallax. Sans doute des traces d'un test oublié, rien de grave.

    Faut il vraiment avoir une duplication des images ou est-ce moi qui ai oublié de valider quelque chose ?

    Merci pour tout et puis j'adore ce plugin :)
  • C'est la même chose avec ckeditor. C'est un répertoire générique pour pouvoir utiliser le gestionnaire de médias sur n'importe quelle plateforme (CMS).
  • Je ne connaissais pas cette spécificité, comme quoi on en apprend tous les jours :)

    Je vais à ce moment la créer une petite moulinette en cronjob pour effacer les fichiers identifiés en doublon.

    Merci Jerry :)
  • kamea a écrit:
    Je vais à ce moment la créer une petite moulinette en cronjob pour effacer les fichiers identifiés en doublon.
    C'est prévu dans la prochaine version (ménage automatique au bout de x temps défini dans la config bien sur)
  • Bonjour
    je suis satisfait de son utilisation, même si au premier abord le noir et blanc peut faire austère.
    mais les parametrages des menus et des barres d'outils suivant le utilisateurs, super!! et l'édition en mode code source très agréable.

    Merci pour ce travail
  • Hum ça fait plaisir ça. Merci à toi.
  • je-evrad a écrit:
    C'est prévu dans la prochaine version (ménage automatique au bout de x temps défini dans la config bien sur)

    Chouette, merci :)
  • DanDan Member
    Bonjour,
    Testé sur Free, la configuration par défaut fonctionne parfaitement, et l’explorateur trouve tous les dossiers images et documents ("artgalerie", "coinslider", etc)
    Très satisfait aussi de l'utilisation et très complet à mon avis (undo/redo, tableau, etc).
    Bravo et merci aussi
  • Merci Dan.
  • @je-evrard : j'adore le thème de ton site. Vraiment. Peut-être le verra-t-on un jour dans les ressources ???

    Sinon, je viens de tester spxtynimce est je l'ai adopté. Quelques petites fautes d'orthographe ici et là mais sinon, ça déchire sa mère en short.
    Je te ferai un autre post quand j'aurai le temps pour te dire ce que j'ai relevé.
  • je-evrardje-evrard Member
    octobre 2013 modifié
    Salut jerry,
    Jerry a écrit:
    j'adore le thème de ton site. Vraiment. Peut-être le verra-t-on un jour dans les ressources ???

    Pas de soucis pour le thème je le posterais quand j'aurais le temps (pas beaucoup de temps en ce moment)
    Jerry a écrit:
    Sinon, je viens de tester spxtynimce est je l'ai adopté. Quelques petites fautes d'orthographe ici et là mais sinon, ça déchire sa mère en short.
    Je te ferai un autre post quand j'aurai le temps pour te dire ce que j'ai relevé.

    Pas de soucis la dessus dès que tu me postes ton relevé je ferais un update.

    PS : Dans le but d'améliorer le plugin et surtout pas d'en faire une usine à gaz je voudrais savoir si vous avez des plugins tynimce que vous avez créé ou récupéré (attention version 4). Il est tout a fait possible de l'inclure dans le package selon le degré de pertinence du plugin. Vous pouvez m'envoyer un mail directement sans soucis.
    PS2: Je suis énormément en retard sur le spxlightbox car j'ai eu des expos de peintue et je suis en plein développement d'un gros site via pluxml. Désolé pour l'attente donc. :8.
  • DanDan Member
    octobre 2013 modifié
    Bonjour je-evrard

    Petite question sur spxtynimce et Tynimce :

    Lorsque j'édite une page et redimensionne un tableau ou une image, j'ai "parfois" un cadre gris qui apparaît à côté des "poignées" et qui me donne précisément la taille en pixel du cadre (très utile), problème ça n'apparait pas toujours (voire très très souvent ça n'apparait pas). Essai sur Firefox et Opéra.

    Un réglage à faire de mon côté ? (assistance visuelle est cochée)
    soucis de navigateur ? (j'ai essayé plusieurs versions)

    Merci
    Et sinon, c'est vraiment très bien :)
  • La version actuelle de tynimce est TinyMCE 4.0.8 et je sais qu'ils ont corrigé pas mal de bugs.

    La prochaine mise à jour va inclure cette version et la dernière du filemanager. Je pense que ce genre de soucis sera réglé.
  • Il faudrait d'urgence protéger les emails. J'ai vu que tu avais commencé. Pourquoi t'es tu arrêté ?
    En reprenant la méthode de ckeditor, il faut ajouter les lignes suivantes et décommenter les lignes sur les appels de hook dans le constructeur :
    	/**
    	 * Méthode qui encode une chaine de caractère en hexadecimal
    	 *
    	 * @parm	s		chaine de caractères à encoder
    	 * @return	string	chane de caractères encodée en hexadecimal
    	 * @author	Stephane F
    	 **/
    	public static function encodeBin2Hex($s) {
    
    		$encode = '';
    		for ($i = 0; $i < strlen($s); $i++) {
    			$encode .= '%' . bin2hex($s[$i]);
    		}
    		return $encode;
    	}
    
    	/**
    	 * Méthode qui protège les adresses emails contre le spam
    	 *
    	 * @parm	txt		chaine de caractères à protéger
    	 * @return	string	chaine de caractères avec les adresses emails protégées
    	 * @author	Stephane F, Francis
    	 **/
    	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 = spxtynimce::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 = spxtynimce::encodeBin2Hex('document.write(\''.$matches[0][$k].'\')');
    				$txt = str_replace($matches[0][$k], '<script type="text/javascript">eval(unescape(\''.$string.'\'))</script>' , $txt);
    			}
    		}
    		return $txt;
    	}
    
    	/**
    	 * Méthode qui protège les adresses emails contre le spam dans les articles
    	 *
    	 * @return	stdio
    	 * @author	Stephane F
    	 **/
    	public function protectEmailsArticles() {
    
    		echo '<?php
    			$art["chapo"] = spxtynimce::protectEmails($art["chapo"]);
    			$art["content"] = spxtynimce::protectEmails($art["content"]);
    		?>';
    
    	}
    
    	/**
    	 * Méthode qui protège les adresses emails contre le spam dans les pages statiques
    	 *
    	 * @return	stdio
    	 * @author	Stephane F
    	 **/
    	public function protectEmailsStatics() {
    
    		echo '<?php
    			$output = spxtynimce::protectEmails($output);
    		?>';
    
    	}
    
  • je-evrardje-evrard Member
    octobre 2013 modifié
    Merci jerry. J'ai noté. Je pensais pas que ce plugin prendrait autant d'ampleur. Je savais pas non plus qu'il a été mis dans les plugins officiels ! (stef ?). Du coup je vais soigner tout ça.
  • StéphaneStéphane Member, PluXml Former Project Manager
    je-evrard a écrit:
    Je savais pas non plus qu'il a été mis dans les plugins officiels ! (stef ?).
    j'ai rien fait... :D

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Qui est le coupable ? :)
  • P3terP3ter PluXml Project Manager
    je-evrard a écrit:
    Qui est le coupable ? :)
    Ah ! C'est moi. Je ne me suis pas rendu compte, je l'ai ajouté spontanément avec les autres plugins "Editeurs".
    Je vais corriger et le mettre avec les plugins non officiels ;-)
  • Bonjour,

    Je viens de tester et vraiment excellent travail, je suis même fan du nouveau gestionnaire de média :D

    Après je sais pas si c'est que moi, mais je rencontre un bug, sous chrome j'ai bien la barre de bouton mais aucun n'ai affiché :
    capture.png

    En revanche sous firefox aucun souci.

    Une idée ?
    J'ai testé sur deux hébergeur différent.

    @+
  • je-evrardje-evrard Member
    octobre 2013 modifié
    P3ter a écrit:
    Ah ! C'est moi. Je ne me suis pas rendu compte, je l'ai ajouté spontanément avec les autres plugins "Editeurs".
    Je vais corriger et le mettre avec les plugins non officiels ;-)

    Moi je l'ai déja mis dans non officiels. Merci quand même. Dans les plugins officiels ça me gêne pas vraiment en fait :) .
  • libertyweb a écrit:
    Après je sais pas si c'est que moi, mais je rencontre un bug, sous chrome j'ai bien la barre de bouton mais aucun n'ai affiché :

    Questions toute bête :

    Quand tu vas sur : http://www.tinymce.com/ as-tu un affichage correct ?

    Quelle version de chrome ?

    Quand tu "clic droit" / inspecter élément / console : tu as des erreurs ?
  • StéphaneStéphane Member, PluXml Former Project Manager
    Bonjour Jérome.

    Mes remarques:

    version testée: 1.1
    1) plugin non activé. je vais sur l'écran de config => Notice: Undefined variable: aprofil in \plugins\spxtynimce\config.php on line 17
    2) orthographe:
    - Activation des éléments de la barre d'outil de tynimce => manque un s à outil
    - Editeur => il faut un accent sur la lettre E
    3) coquille: Si vous précisez une taille de 0, le filemanger calculera automatiquement la taille. => filemanger au lieu de filemanager (manque la lettre a)
    4) activation du plugin:
    Notice: Use of undefined constant L_PROFIL_ADMIN - assumed 'L_PROFIL_ADMIN' in\plugins\spxtynimce\spxtynimce.php on line 189
    Notice: Use of undefined constant L_PROFIL_MANAGER - assumed 'L_PROFIL_MANAGER' in \plugins\spxtynimce\spxtynimce.php on line 190
    Notice: Use of undefined constant L_PROFIL_MODERATOR - assumed 'L_PROFIL_MODERATOR' in \plugins\spxtynimce\spxtynimce.php on line 191
    Notice: Use of undefined constant L_PROFIL_EDITOR - assumed 'L_PROFIL_EDITOR' in \plugins\spxtynimce\spxtynimce.php on line 192
    Notice: Use of undefined constant L_PROFIL_WRITER - assumed 'L_PROFIL_WRITER' in \plugins\spxtynimce\spxtynimce.php on line 194
    5) Clic sur le menu Médias: There is an error! The root folder not exist.
    6) dans le fichier spxtinymce.php
    Que veux-tu faire par ce code ? C'est syntaxiquement incorrect ce genre de chose: PROFIL_ADMIN => L_PROFIL_ADMIN
    Si PROFIL_ADMIN est une constante définie par un défine, tu ne peux pas modifier sa valeur: php l'interdit (une constante reste une constante et tu ne peux pas rédéfinir sa valeur apres son init, sinon c'est une variable et la syntaxe est différente)
    public function get_aprofil() {
    		# Tableau des profils
    		return array(
    			PROFIL_ADMIN => L_PROFIL_ADMIN,
    			PROFIL_MANAGER => L_PROFIL_MANAGER,
    			PROFIL_MODERATOR => L_PROFIL_MODERATOR,
    			PROFIL_EDITOR => L_PROFIL_EDITOR,
    			PROFIL_WRITER => L_PROFIL_WRITER
    		);
    		
    	}
    
    7)
    	public static function addImgData($txt) {
    		if(preg_match_all('/<img[^>]+>/i', $txt, $matches)){
    			foreach($matches[0] as $k => $v) {
    				$img = $v;
    				preg_match( '/data-spxtynimce="([^"]*)"/i', $img, $dataspxtynimce ) ;
    				if ($dataspxtynimce[1]!="true"){
    					$newsrcdata = '<img data-spxtynimce="true"';
    					$img2 = str_replace("<img", $newsrcdata , $img);
    					$txt = str_replace($img, $img2 , $txt);
    				}
    			}
    		};
    
    		return $txt;
    	}
    
    ça ne me plait pas de voir utilisez $dataspxtynimce[1] car si ton preg_match ne trouve pas de correspondance, $dataspxtynimce sera vide et $dataspxtynimce[1] génèrera une erreur car référence à un indice de tableau inexistant.
    La solution propre est:
    if(preg_match( '/data-spxtynimce="([^"]*)"/i', $img, $dataspxtynimce)) {
       if($dataspxtynimce[1]!="true"){
       ...
       }
    }
    

    et alors "éventuellement": if(isset($dataspxtynimce[1]) AND $dataspxtynimce[1]!="true"){

    8 )
    	public function AdminTopBottom() {
    
    		$string = '
    		if($plxAdmin->plxPlugins->aPlugins["spxtynimce"]->getParam("uplDir")=="") {
    			echo "<p class=\"warning\">Plugin tynimcebr />'.$this->getLang("L_ERR_UPLDIR_NOT_DEFINED").'</p>";
    			plxMsg::Display();
    		}';
    		$string='';	
    		echo '<?php '.$string.' ?>';
    
    	}
    
    Y a pas un erreur dans : Plugin tynimcebr />
    ça serait pas plutot Plugin tynimce<br />

    ça sera tout pour le moment :)

    Très bon plugin ! A suivre...

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • je-evrard a écrit:
    libertyweb a écrit:
    Après je sais pas si c'est que moi, mais je rencontre un bug, sous chrome j'ai bien la barre de bouton mais aucun n'ai affiché :

    Questions toute bête :

    Quand tu vas sur : http://www.tinymce.com/ as-tu un affichage correct ?

    Quelle version de chrome ?

    Quand tu "clic droit" / inspecter élément / console : tu as des erreurs ?

    Ben du coups c'est moi qui doit avoir un problème car non pas de messages d'erreur probant et je rencontre le même souci en me rendant sur le site de tinymce 8.(
    Juste pour confirmation si quelqu'un à un chrome Version 30.0.1599.69 m qu'il n'hésite pas à me dire si c'est pareil.

    En tout cas merci pour la rapidité de ta réponse.
  • je-evrardje-evrard Member
    octobre 2013 modifié
    Stephane : merci pour toutes tes remarques, je check tout ça rapidement.

    A noter : Jerry Wham m'a contacté, il a planché sur les traductions. (merci à lui)

    Donc bientôt une version 1.2...
    libertyweb a écrit:
    Juste pour confirmation si quelqu'un à un chrome Version 30.0.1599.69 m

    J'ai la même version que toi sur différents postes et ça marche sans soucis. Et si tu vides le cache de chrome ?
  • je-evrardje-evrard Member
    octobre 2013 modifié
    Salut stef,
    Stéphane a écrit:
    5) Clic sur le menu Médias: There is an error! The root folder not exist.

    La partie médias ne fonctionne pas alors que dans les articles ça fonctionne chez toi ? Tu as plus de détails stp ?
    Stéphane a écrit:
    6) dans le fichier spxtinymce.php
    Que veux-tu faire par ce code ? C'est syntaxiquement incorrect ce genre de chose: PROFIL_ADMIN => L_PROFIL_ADMIN
    Si PROFIL_ADMIN est une constante définie par un défine, tu ne peux pas modifier sa valeur: php l'interdit (une constante reste une constante et tu ne peux pas rédéfinir sa valeur apres son init, sinon c'est une variable et la syntaxe est différente)

    Pourtant dans le core/admin/parametres_users.php ligne 24 tu as :
    [== PHP ==]
    # Tableau des profils
    $aProfils = array(
    	PROFIL_ADMIN => L_PROFIL_ADMIN,
    	PROFIL_MANAGER => L_PROFIL_MANAGER,
    	PROFIL_MODERATOR => L_PROFIL_MODERATOR,
    	PROFIL_EDITOR => L_PROFIL_EDITOR,
    	PROFIL_WRITER => L_PROFIL_WRITER
    );
    

    Le but étant de créer un tableau de ce type :
    [== PHP ==]
    Array
    (
        [0] => Administrateur
        [1] => Gestionnaire
        [2] => Modérateur
        [3] => Editeur
        [4] => Rédacteur
    )
    

    Je peux utiliser une autre méthode sinon mais je l'ai directement copié de parametres_users.php
  • StéphaneStéphane Member, PluXml Former Project Manager
    Pour mon explication sur le tableau $aProfils n'en tient pas compte. J'ai l'explication des Notices, qui est tout autre:

    Les clés de traduction L_PROFIL_ADMIN, L_PROFIL_MANAGER, ... sont définies dans le fichier core/lang/fr/admin.php

    Dans le fichier core/admin/prepend.com le fichier de langue est chargé après l'instanciation de l'objet $plxadmin
    # Creation de l'objet principal et premier traitement
    $plxAdmin = plxAdmin::getInstance();
    
    # Chargement des fichiers de langue en fonction du profil de l'utilisateur connecté
    $lang = isset($_SESSION['lang']) ? $_SESSION['lang'] : $plxAdmin->aConf['default_lang'];
    loadLang(PLX_CORE.'lang/'.$lang.'/admin.php');
    

    Or le moteur de plugin charge et traite les plugins au moment de l'instanciation de $plxadmin (grace à la ligne $plxAdmin = plxAdmin::getInstance()) donc avant que le fichier de langue soit chargé.
    Du coup comme tu fais référence à ces clés de traduction qui ne sont pas encore chargées apparait les messages d'erreur de type notice.

    Donc le mieux est de gérer dans ton plugin la traduction et rédéfinissant tes propres clés de traduction.

    Sinon effectivement ici il est tout à fait possible de faire
    $aProfils = array(
    	PROFIL_ADMIN => L_PROFIL_ADMIN,
    	PROFIL_MANAGER => L_PROFIL_MANAGER,
    	PROFIL_MODERATOR => L_PROFIL_MODERATOR,
    	PROFIL_EDITOR => L_PROFIL_EDITOR,
    	PROFIL_WRITER => L_PROFIL_WRITER
    );
    

    Pour l'autre erreur (There is an error! The root folder not exist.) je vais voir si je peux te trouver plus d'infos

    Consultant PluXml

    Ancien responsable du projet (2010 à 2018)

  • Jerry WhamJerry Wham Member
    octobre 2013 modifié
    Stéphane a écrit:
    6) dans le fichier spxtinymce.php
    Que veux-tu faire par ce code ? C'est syntaxiquement incorrect ce genre de chose: PROFIL_ADMIN => L_PROFIL_ADMIN
    Si PROFIL_ADMIN est une constante définie par un défine, tu ne peux pas modifier sa valeur: php l'interdit (une constante reste une constante et tu ne peux pas rédéfinir sa valeur apres son init, sinon c'est une variable et la syntaxe est différente)

    Ce n'est pas incorrect car ce n'est pas la constante que tu redéfinis, mais la valeur dont l'index du tableau $aProfils est égal à la constante, ce qui n'est pas la même chose...

    Une constante est constante (par définition) mais une variable de type array est variable (par définition). :P
Connectez-vous ou Inscrivez-vous pour répondre.