IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Problème envoi page script TinyMCE: code html non pris en compte


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 127
    Points : 36
    Points
    36
    Par défaut Problème envoi page script TinyMCE: code html non pris en compte
    Bonjour

    Je suis actuellement en train de mettre en oeuvre un système de création de page à partir de TinyMCE. Ce système a été modifié par le site scriptol.fr et fonctionne théoriquement bien.

    Le problème est le suivant:

    Lorsqu'on travaille avec le richtextbox, et qu'on veut mettre en page via de l'html (en cliquant sur le bouton html), la page visualisée dans TinyMCE a bien la mise en page demandée, mais les pages créées n'en tiennent plus compte ou à moitié !

    Testez par vous-même:
    http://warhammer-jdr.kalikoba.com/te...hes/editor.php

    1) Cliquez sur éditer et entrez "essai123.php3"

    Ensuite entrez ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <ul>
    <li>essai 1</li>
    <li>essai 2</li>
    </ul>
    <p>&nbsp;</p>
    <p><img src="http://warhammer-jdr.kalikoba.com/images/bannierelogo.jpg" alt="" width="135" height="135" /></p>
    Ou de l'html quelconque.

    La prévisualisation fonctionne bien. Cliquez sur Sauver, puis allez sur la page générée: http://warhammer-jdr.kalikoba.com/te.../essai123.php3

    Et là, vous verrez le problème: la liste à puce est prise en compte et mise en page, mais aucune trace de l'image

    D'où le problème: le code que mes membres devront entrer dans le richtextbox est sensé être du html pour avoir une belle mise en page. Là, tout capote !

    Note importante ! Tout fonctionne correctement en local. Mais dès que je passe en ligne, ca bug comme expliqué ci dessus

    Voyez, pour les mêmes informations entrées en html, les mêmes noms de pages et les mêmes fichiers php:
    en local:
    http://img2.imageshack.us/img2/2021/locala.png
    en ligne:
    http://img580.imageshack.us/img580/4866/online.png

    On peut remarquer aussi qu'il y a beaucoup de différences entre le contenu inséré dans l'éditeur et ce qui ressort du code source de la page:

    HTML entré:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <p><img style="display: block; margin-left: auto; margin-right: auto;" src="../images/imgfiches/barre1.jpg" alt="" width="600" height="100" /></p><br>
    <p style="text-align: center;"><strong><span style="font-family: verdana,geneva; font-size: medium; color: #6a94bd;"><em><span style="text-decoration: underline;">Informations générales sur le personnage :</span></em></span></strong></p>
    <h4>Nom et prénom:</h4> Medenor
    <h4>Âge du personnage :</h4> dddd ans
    Résultat du code source:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <p><img style=\"display: block; margin-left: auto; margin-right: auto;\" src=\"../images/imgfiches/barre1.jpg\" alt=\"\" width=\"600\" height=\"100\" /></p>
    <p>&nbsp;</p>
    <p style=\"text-align: center;\"><strong><span style=\"font-family: verdana,geneva; font-size: medium; color: #6a94bd;\"><em><span style=\"text-decoration: underline;\">Informations g&eacute;n&eacute;rales sur le personnage :</span></em></span></strong></p>
     
    <h4>Nom et pr&eacute;nom:</h4>
    <p>Medenor</p>
    <h4>&Acirc;ge du personnage :</h4>
    <p>dddd ans</p>

    On peut voir par exemple que des antislash sont ajoutées systématiquement avant chaque " (en local comme en ligne), alors que normalement en html pas besoin de ça.

    Voici le script original:
    http://www.scriptol.fr/cms/tinymce.php

    Voici mes codes:

    • Editor.php, qui contient le Richtextbox


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html>
    <head>
    <title>Warhammer JDR: Jeu de r&ocirc;le par forum</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <link href="style.css" rel="stylesheet" type="text/css" />
    <!-- TinyMCE -->
    <script type="text/javascript" src="tiny_mce/tiny_mce.js"></script>
    <script type="text/javascript" src="anaa.js"></script>
    <script type="text/javascript">
    	tinyMCE.init({
    		// General options
    		mode : "textareas",
    		theme : "advanced",
    		language : 'fr',		
    		plugins : "safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups",
     
    		// Theme options
    		theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect",
    		theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
    		theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
    		theme_advanced_toolbar_location : "top",
    		theme_advanced_toolbar_align : "left",
    		theme_advanced_statusbar_location : "bottom",
    		theme_advanced_resizing : true,
     
    		// Example word content CSS (should be your site CSS) this one removes paragraph margins
    		content_css : "editor.css",
     
    		// Drop lists for link/image/media/template dialogs
    		template_external_list_url : "lists/template_list.js",
    		external_link_list_url : "lists/link_list.js",
    		external_image_list_url : "lists/image_list.js",
    		media_external_list_url : "lists/media_list.js",
     
    		// Replace values for the template plugin
    		template_replace_values : {
    			username : "Some User",
    			staffid : "991234"
    		}
    	});
     
     
    function view()
    {
        var x = document.getElementById("elm1");
    	alert(tinyMCE.activeEditor.getContent());
    }
     
     
    function storend(answer)
    {
    	alert(answer);
    }	
     
    function store()
    {
    	var content = tinyMCE.activeEditor.getContent();
    	var title = document.getElementById("title").value;
    	var template = document.getElementById("template").value;
    	var data = "content=" + escape(content) + "&title=" + title + "&template=" + template;
     
        AAWrite("store.php", data, storend); 
    }
     
    // extract the text of the page to edit, put it into the editor
     
    function insert(content)
    {
    	alert(content);
    }
     
    // read the page and send it to a script to extract data
     
    function retrieveContent(content)
    {
    	if(content == "")
    	{
    		alert("Fichier introuvable");
    		return;
    	} 
        tinyMCE.activeEditor.setContent(unescape(content));
    }
     
     
    function retrieveTitle(content)
    {
    	if(content == "")
    	{
    		alert("Fichier introuvable");
    		return;
    	} 
    	var title = document.getElementById("title");
    	title.value = content;
    }
     
     
    function editpage()
    {
    	var filename = prompt("Page à éditer:", "");
    	var data = "page=" + filename + "&command=post";
    	AAWrite("retrieve.php", data, retrieveContent);
     
    	var data = "page=" + filename + "&command=title";		
    	AAWrite("retrieve.php", data, retrieveTitle);	
    }
     
     
    </script>
     
    </head>
    <body>
    <div id="container">
    	<div id="header">
    		<div id="nav"></div>
    	</div>
      <div id="contentenvoi">
        <div id="text1">
    	    <table width="644" border="0">
    	      <tr>
    	        <td><div class="heading">
    	      <p>Warhammer JDR</p>
    	              <blockquote>
    	                <p>Gestion des fiches personnages</p>
                  </blockquote>
     
                </div>
    	          <p><em><br />
                Ce module vous permet de cr&eacute;er et g&eacute;rer efficacement les fiches des personnages du forum. En copiant collant ici le code qu'auront g&eacute;n&eacute;r&eacute;s les PJ via le g&eacute;n&eacute;rateur, vous obtiendrez la mise en page directement souhait&eacute;e.</em><br /><br />
    	          <strong>Quelques notes importantes !</strong><br /><br />
    	          - Le titre donn&eacute; &agrave; la fiche sera le nom du fichier g&eacute;n&eacute;r&eacute;, utilisez donc comme titre &quot;Fiche nom&quot; <strong>uniquement</strong> ! Chaque espace donnera un tiret dans le nom de fichier<br />
                  - <br />
    	          - Une fois la page cr&eacute;&eacute;e, vous pourrez par la suite l'&eacute;diter en appuyant simplement sur le bouton &quot;Editer&quot;, puis d'entrer le nom de fichier correspondant: &quot;fiche-nom.php3&quot; (le num&eacute;ro est important) si on reprend l'exemple du point pr&eacute;c&eacute;dent. La liste des fiches pourra aider au besoin.</p></td>
    <td align="right"><div id="quicklinks">
    				<ul>
    					<li><a href="http://warhammer-jdr.kalikoba.com/index.php"><strong>Accueil</strong></a></li>
                        <li><a href="http://warhammer-jdr.kalikoba.com/phpBB3/index.php"><strong>Forum de jeu V2</strong></a></li>
    					<li><a href="http://warhammer-jdr.kalikoba.com/wiki-v2/doku.php">Biblioth&egrave;que V2 (r&egrave;gles, etc)</a></li>
                        <li><a href="mailto:admin_warhammer-jdr@skynet.be">Contacter l'administrateur</a></li>
                        <li><a href="http://warhammer-jdr.kalikoba.com/phpBB3/viewtopic.php?f=1&t=157">Nouveau ? Vos premiers pas</a></li>
    					<li><a href=".">G&eacute;n&eacute;rateur de fiche personnage</a></li>
    					<li><a href="http://warhammer-jdr.kalikoba.com/carriere/">Module des carri&egrave;res</a></li>
    					<li><a href="http://warhammer-jdr.kalikoba.com/bestiaire/">Le bestiaire</a></li>
                        <li><a href="http://warhammer-jdr.kalikoba.com/phpBB3/viewtopic.php?f=4&t=65">FAQ</a></li>
    				</ul>
    			</div></td>
              </tr>
          </table>
     
    	  </div>
          <?php
     
    	echo "<p><b>Editeur de fiches en ligne</b></p>";
     
    ?>
     
     
    <form method="post" action="">
    	<p>Titre ("Fiche pseudo du PJ" uniquement !)   
    	<input type="text" id="title" name="title" />
        Template 
    	  <select id="template" name="template">
    	    <option value="index.php">Par défaut</option>
          </select>
    	</p>
    	<textarea id="elm1" name="elm1" rows="15" cols="80" style="width: 80%"></textarea>
    	<br />
    	<input type="button" name="save" value="Sauver" onclick="javascript:store()" />
    	<input type="button" name="edit" value="Editer" onclick="javascript:editpage()" />
    </form>
        </div>    
     
    	<div id="pagebottom"></div>
    	<div id="footer">
    	  <p class="small2">Site optimis&eacute; pour <a href="http://www.mozilla-europe.org/fr/firefox/">Firefox</a> et <a href="http://www.google.com/chrome">Google Chrome</a><br />	&copy; Interdiction de faire une quelconque reproduction | Id&eacute;es et Design appartiennent &agrave; l'auteur de ce forum, et les messages et id&eacute;es de RP aux membres. <br />	&copy; L'univers, le contexte, les noms et autres appartiennent &agrave; Games Workshop&reg;</p>
    	</div>
    </div>
    </form>
    </body>
    </html>
    • Store.php, qui convertir les données du richtextbox en page et les génères


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    35
    36
    37
    38
    <?php
    session_start();
    if(!array_key_exists("user", $_SESSION))
    {
    	die("Accès direct interdit");
    }
     
    include_once("titleconvert.php");
     
    $a = $_POST;
    $content = urldecode($a["content"]);
    $title= $a["title"];
    $template = "templates/".$a["template"];
     
    $body = file_get_contents($template); 
     
    $filename = convertTitle($title).".php3";
     
    $pattern='{<div\s+id="content"\s*>((?:(?:(?!<div[^>]*>|</div>).)++|<div[^>]*>(?1)</div>)*)</div>}si';
     
    preg_match($pattern, $content, $matches);
    $parts = preg_split($pattern, $body);
     
    // replace title
     
    $tpat = "/[\$title\s=]([\s\"].*[\"])[;]/i";
    $head = preg_replace($tpat, '="'.$title.'";', $parts[0]);
     
    // replace content
     
    $body = $head.'<div id="content">'.$content.'</div>'.$parts[1];
     
    $n = file_put_contents($filename, $body, FILE_TEXT );
     
    echo "La fiche a été sauvée sous le nom de $filename";
     
     
    ?>
    Les autres fichiers fournis par Scriptol.fr n'ont pas été modifiés.

    Merci d'avance de votre aide, car je désespère ^^ Je pensais avoir passé tout les problèmes, et planter si près du but c'est

    NB: j'ai remarqué la présence de plusieurs / quand on switch de fiches avec la liste déroulante, sait-on jamais, ca pourrait être une cause ?

  2. #2
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2010
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2010
    Messages : 127
    Points : 36
    Points
    36
    Par défaut
    Bonsoir

    Le problème semble apparemment réglé:

    En modifiant dans Shop.php:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $body = $head.'<div id="content">'.$content.'</div>'.$parts[1];
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $body = $head.'<div id="content">'.stripslashes($content).'</div>'.$parts[1];

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Code JavaScript non pris en compte
    Par QAYS dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/03/2013, 08h39
  2. Code html non pris en compte dans un ToolTip ?
    Par Hujii dans le forum ASP.NET
    Réponses: 8
    Dernier message: 14/05/2009, 20h59
  3. Réponses: 2
    Dernier message: 28/11/2007, 15h34
  4. Problème fonction die() incluant du code html
    Par ksper92 dans le forum Langage
    Réponses: 2
    Dernier message: 30/11/2006, 09h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo