Précédent   Forum des professionnels en informatique > PHP > Scripts > Éditeurs > CKeditor
CKeditor Forum d'entraide sur le script PHP "Éditeur Riche en ligne" CKeditor (anciennement FCKEditor)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 19/02/2010, 14h14   #1
Invité régulier
 
Inscription : mai 2007
Messages : 38
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 38
Points : 7
Points : 7
Par défaut Édition de code PHP

Bonjour,

J'ai créé une partie administration sur mon site qui me permet d'éditer mes fichier article, news etc..

pour sa je souhaite utiliser CKEditor, je l'ai installé tout va bien, seulement dans mes fichiers à éditer j'ai du code php et ce code est très mal interprété par CKEditor, je vous donne un exemple:

Dans mon fichier erreur404.php, j'ai un code php en tout début de fichier qui me permet de modifier la balise <title></title> comme ceci:

Code :
1
2
3
4
5
6
 
<?php
 
	$head = "<title>Erreur 404</title>";
 
?>
quand j'édite ce fichier dans CKEditor voila ce qu'il me donne:

alors je souhaiterais savoir si il est possible soit de ne pas interpréter le code php dans CKEditor soit de l'interpréter mais correctement et surtout pas le modifier parce que quand je sauvegarde une modification il me change les balises php comme ceci:
code original:
Code :
<?php $head = "<title>Erreur 404</title>"; ?>
après avoir sauvegardé
Code :
&lt;?php $head = "&lt;title&gt;Erreur 404&lt;/title&gt;"; ?&gt;
merci a tous ceux qui m'aider
chills est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2010, 14h22   #2
Modérateur
 
Avatar de ThomasR
 
Homme Thomas Rambaud
Développeur Web
Inscription : décembre 2007
Messages : 2 132
Détails du profil
Informations personnelles :
Nom : Homme Thomas Rambaud
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 2 132
Points : 2 872
Points : 2 872
Bonjour,

FCKEditor, TinyMCE et autres sont des éditeurs HTML, si tu souhaites mettre du PHP dedans, il faudra soit faire comme tu l'as fait, puis appliquer la fonction html_entity_decode afin de reconstruire les balises pour ensuite évaluer la chaine (vraiment pas propre du tout).

Ou alors tu peux simplement étendre les éléments HTML valide en autorisant la balise <title> (pas propre du tout).

Ou alors tu développes un plugin qui t'insères une chaine particulière du type :
[PHPCODE]
$var = 'truc';
echo $var;
[/PHPCODE]
Ensuite sur la callback de soumission de ton éditeur WYSIWYG tu peux éviter que l'éditeur échappe le contenu du token [PHPCODE] (ou du moins dés-échapper).

Mieux, ton plugin pourrait faire référence à un fichier existant (ou à un identifiant de bloc PHP) et simplement insérer quelque-chose comme :

[PHPFILE src="truc.php"]

Il te suffirait par la suite de remplacer cette chaine par un include.
__________________
Développeur Web, accessoirement geek (ou l'inverse)
http://thomasrambaud.com
ThomasR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2010, 14h50   #3
Invité régulier
 
Inscription : mai 2007
Messages : 38
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 38
Points : 7
Points : 7
Merci beaucoup pour ta réponse

La création d'un tel plugin est-elle difficile d'après toi, parce que je me débrouille un peux mais faut rester modeste

peut être pourrait-tu me proposer une page ou est expliqué la création des plugin pour CKEditor?

merci beaucoup
chills est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/02/2010, 17h23   #4
Modérateur
 
Avatar de ThomasR
 
Homme Thomas Rambaud
Développeur Web
Inscription : décembre 2007
Messages : 2 132
Détails du profil
Informations personnelles :
Nom : Homme Thomas Rambaud
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 2 132
Points : 2 872
Points : 2 872
Bonsoir,

Il y a apparement un paliatif qui consiste à décommenter la ligne suivante dans fckconfig.js :

Code :
1
2
 
FCKConfig.ProtectedSource.Add( /<\?[\s\S]*?\?>/g ) ;
il faudrait également ajouter cette ligne, si tu n'utilises pas les short_open_tags :

Code :
FCKConfig.ProtectedSource.Add( /<\?php[\s\S]*?\?>/g ) ;
http://cksource.com/forums/viewtopic.php?f=5&t=12766
http://drupal.org/node/41524

Concernant la création de plugin, j'ai trouvé ce tutoriel qui me paraît très clair :
http://www.ingeny.fr/2010/01/ecrire-...itor-partie-1/
__________________
Développeur Web, accessoirement geek (ou l'inverse)
http://thomasrambaud.com
ThomasR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2010, 00h02   #5
Invité régulier
 
Inscription : mai 2007
Messages : 38
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 38
Points : 7
Points : 7
Bonsoir ThomasR,

Donc j'ai un peu cherché autour de ta solution qui est apparemment utilisé pour FCKeditor sur CKeditor il n'y a pas de dossier "lib" en fouillant un peut dans le dossier "_source" j'ai trouvé un fichier config.js dans lequel j'ai trouvé ça:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
	/**
 
	 * List of regular expressions to be executed over the input HTML,
 
	 * indicating code that must stay untouched.
 
	 * @type Array
 
	 * @default [] (empty array)
 
	 * @example
 
	 * config.protectedSource.push( /<\?[\s\S]*?\?>/g );   // PHP Code
 
	 * config.protectedSource.push( /<%[\s\S]*?%>/g );   // ASP Code
 
	 * config.protectedSource.push( /(<asp:[^\>]+>[\s|\S]*?<\/asp:[^\>]+>)|(<asp:[^\>]+\/>)/gi );   // ASP.Net Code
 
	 */
 
	protectedSource : [],
ce qui m'a l'air d'être ce que tu m'indique, par contre je ne comprend pas ce qu'il faut faire maintenant je décommente tout le code ci-dessus?

ou juste la ligne ?

merci pour le tuto je préfère attendre ta réponse pour ma demande avant de me lancer dans un plugin.
chills est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2010, 00h15   #6
Invité régulier
 
Inscription : mai 2007
Messages : 38
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 38
Points : 7
Points : 7
Quel naze j'ai trouvé il faut mettre la ligne dans le fichier config.js du dossier ckeditor !

Bon sa fonctionne à moitié malheureusement je te montre le code de ma page 404.php pour que tu vois:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
<?php
 
	$head = "<title>Erreur 404</title>";
 
?>
 
	<h1>La page que vous avez demander est introuvable !!!</h1>
 
	<p>Veuillez suivre l'un des liens suivant:</p>
 
	<p><a href="<?php echo WEBROOT; ?>index.php">Accueil</a><br /><a href="<?php echo WEBROOT; ?>contact.php">Contact</a> <br /> <img src="<?php echo WEBROOT; ?>theme/erreur404.jpg" alt="Erreur 404" /></p>
dans cette page j'ai une balise php tout en haut qui me permet de changer la balise "title" ce code n'est plus modifié avec la modification par contre tout le reste des balises php son modifié

c'est rageant à force, voici le résultat une fois enregistré avec CKEditor:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 
<html>
 
	<head>
 
		<title></title>
 
	</head>
 
	<body>
 
<?php
 
	$head = "<title>Erreur 404</title>";
 
?>		<h1>
 
			La page que vous avez demander est introuvable !!!</h1>
 
		<p>
 
			Veuillez suivre l&#39;un des liens suivant:</p>
 
		<p>
 
			<a href="&lt;!--{cke_protected}%3C%3Fphp%20echo%20WEBROOT%3B%20%3F%3E--&gt;index.php">Accueil</a><br />
 
			<a href="&lt;!--{cke_protected}%3C%3Fphp%20echo%20WEBROOT%3B%20%3F%3E--&gt;contact.php">Contact</a><br />
 
			<img alt="Erreur 404" src="&lt;!--{cke_protected}%3C%3Fphp%20echo%20WEBROOT%3B%20%3F%3E--&gt;theme/erreur404.jpg" /></p>
 
	</body>
 
</html>
Si tu a une solution je suis preneur.

merci
chills est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2010, 13h27   #7
Modérateur
 
Avatar de ThomasR
 
Homme Thomas Rambaud
Développeur Web
Inscription : décembre 2007
Messages : 2 132
Détails du profil
Informations personnelles :
Nom : Homme Thomas Rambaud
Âge : 25
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : décembre 2007
Messages : 2 132
Points : 2 872
Points : 2 872
Bonjour,

Le résultat est très bien, tu devrais générer les balises <html> et <head> après avoir utilisé la variable $title.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
<?php
ob_start();
eval($ckeditor_value);
$content = ob_get_contents();
ob_end_clean();
?>
<html>
<head>
<?php 
if(isset($title)){
    echo $title;
}
?>
</head>
<body>
<?php echo $content ?>
</body>
</html>
__________________
Développeur Web, accessoirement geek (ou l'inverse)
http://thomasrambaud.com
ThomasR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/02/2010, 16h30   #8
Invité régulier
 
Inscription : mai 2007
Messages : 38
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 38
Points : 7
Points : 7
bonjour,

J'ai mis les chemin des images avec une partie en php ce qui fait que CKEditor me le change comme ceci:

Code original:
Code :
<a href="<?php echo WEBROOT; ?>index.php">Accueil</a>
code une fois passé par CKEditor:
Code :
<a href="&lt;!--{cke_protected}%3C%3Fphp%20echo%20WEBROOT%3B%20%3F%3E--&gt;index.php">Accueil</a><br />
Pour résoudre ce problème j'ai enlevé le php et mis directement le chemin relatif, sa arrange bien les choses puisque maintenant CKEditor ne me midifie plus le chemin et en plus maintenant je vois les images quand j'édite le fichier dans CKEditor


Par contre j'ai pas tout compris dans ta réponse, ce n'est pas moi qui génère les balises <html> et <head> c'est CKEditor qui les met une fois que je sauvegarde.
C'est sur que ce serais bien mieux que ma variable $head ($title) soit mise avant le code html mais je ne vois pas comment lui dire cela à CKEditor

J'ai éssayé de mettre le code que tu ma proposé dans ma page index qui appel tout les autres fichier mais je ne vois pas trop à quoi cela sert, pourrait tu m'en dire plus s'il te plais ?

J'ai rajouté cette ligne qui manquais dans mon code:
mais il faut peut être que je définisse la variable $ckeditor_value mais je ne vois pas à quoi elle correspond !

merci
chills est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 19h02.


 
 
 
 
Partenaires

Hébergement Web