TinyMCE und XSL

roman0906

Grünschnabel
Hallo,

ich versuche gerade einen kleinen "Editor" einzubauen. Das Ganze t auch einwandfrei, solange die "Grundseite" nicht mit XSL transformiert wurde. Soll heissen, wenn ich den transformierten inhalt in das Seitengerüst stecke ist alles in bester Ordnung. Sobald ich aber aber die Seite per XSL erzeuge ist der Ofen aus ...

"tinyMCE is not defined"
... tiny_mce/langs/de.js
"tinymce ist not defined"
... tiny_mce/themes/advanved/editor_template.js
... tiny_mce/plugins/table/editor_plugins.js

Mir ist völlig schleierhaft was hier nicht stimmt. Wenn wenigstens das manuell zusammengebaute auch nicht funktionieren würde ...

Hat zufällig jemand einen Ansatzpunkt?

Gruß
Roman
 
Moin Roman,

zeige bitte mal das Ergebnis der Transformation.

Ich würde bspw. folgendes vermuten(aus eigener Erfahrung :)):
Bei der Transformation wird aus inhaltsleeren Elementen, wie z.B. der Einbindung eines externen JS:

Code:
<script type="text/javascript" src="tinymce.js"></script>

folgendes
Code:
<script type="text/javascript" src="tinymce.js"/>

Was zwar in XML OK ist, aber nicht in HTML...möglicherweise wird das Skript dann nicht gefunden.

Ein Workaround wäre evtl., dass du inhaltsleere, aber lt. HTML nicht leere Elemente(also solche, die einen schliessenden Tag erfordern) mit einem HTML-Kommentar versiehst:
Code:
<script type="text/javascript" src="tinymce.js"><!-- --></script>
Selbiges könnte auch bei dem <textarea> , welches für den Editor verwendet wird, der Fall sein.
 
Hi,
das ist ein interessanter Ansatz, an sowas hätte ich nie gedacht, aber ...
hier mal mein Ergebnis der body fehlt komplett warum auch immer - wenn man die initfunction rausnimmt kommt es so an wie es soll. Es scheint, als würde sich irgendwie XSL und Javascript an der Stelle beissen, warum auch immer:

HTML:
<html>
<head>
<script onload="tinymce.dom.ScriptLoader._onLoad(this,'http://localhost/tiny_mce/langs/de.js',0);" src="http://localhost/tiny_mce/langs/de.js" type="text/javascript"/>
<script onload="tinymce.dom.ScriptLoader._onLoad(this,'http://localhost/tiny_mce/themes/advanced/editor_template.js',1);" src="http://localhost/tiny_mce/themes/advanced/editor_template.js" type="text/javascript"/>
<script onload="tinymce.dom.ScriptLoader._onLoad(this,'http://localhost/tiny_mce/plugins/table/editor_plugin.js',2);" src="http://localhost/tiny_mce/plugins/table/editor_plugin.js" type="text/javascript"/>
</head>
</html>

interessant finde ich auch, dass meine eigentliche Initfunction gar nicht mehr da zu sein schein ?! sondern s. oben.

Mir fällt irgendwie gar nichts dazu ein.
Ich habe mir jetzt eine temporäre Lösung gebastelt, da ich sowiso durch einige "Schichten" muss, passe ich mir das Dokument immer schon unterwegs an und spucke das fertige HTML aus, das tut wunderbar, ist aber eine nicht optimale Lösung, weil ich jetzt 2 Wege habe um im Prinzip eine Sache zu bearbeiten (noch fix vorgegebene Dokumente die per Javascript "vorgegeben" editiert werden können) ...

Gruß
Roman
 
ähm wie das?

also hier mal mein dramatisch guter XSL-Code ;-)

HTML:
  <html>
  <head>
  <title>Editor</title>
  <link rel="shortcut icon" href="../favicon.ico" type="image/x-icon"/>
  <link rel="stylesheet" href="../style.css" type="text/css"/>
  <script language="javascript" type="text/javascript" src="../tiny_mce/tiny_mce.js"><xsl:text><!-- --></xsl:text></script>
  <script language="javascript" type="text/javascript">
  tinyMCE.init({
  language : 'de', 
  theme : "advanced", 
  mode : "textareas", 
  plugins : "table", 
  theme_advanced_toolbar_location : "top", 
  theme_advanced_buttons1: "bold,italic,underline,separator,justifyleft,justifycenter,justifyright,justifyfull,bullist,numlist,undo,redo,code",
  theme_advanced_buttons2: "tablecontrols", 
  table_styles : "Header 1=header1;Header 2=header2;Header 3=header3", 
  table_cell_limit : 1000, 
  table_row_limit : 10, 
  table_col_limit : 10, 
  theme_advanced_buttons3: ""
  });
  </script>
  </head>
  <body>
  <form method="post" action="test.php?f=fullpath?l=label">
  <div align="center">
  <textarea id="elm1" name="elm1" rows="30" cols="80" style="width: 90%"><xsl:text><!-- --></xsl:text>
  <xsl:apply-templates/>
  </textarea>
  <input type="submit" value="weiter" />
  </div>
  </form>
  </body>
  </html>

dann ist <xsl:apply-templates/> und 2 x <xsl:text><!-- --></xsl:text> eigentlich meine ganze transformation. Der rest wird ja einfach so dazugeschrieben.
Hab ich dich jetzt richtig verstanden, ich soll, sofern ich das grade richtig gesehen habe, in den TinyMCE-Dateien an den RegExp rumbasteln?

Gruß
Roman
 
Naja das ist der Ausschnitt für das hier an dieser stelle klammernde Element ;-)
<xsl:template match="....">
hab ich mir gespart und was nicht dazu gehört

und bei <xsl:apply-templates/> gehts natürlich noch "rein", aber das ist nur damit wollte ich keinen langweilen, das ist quasi <absatz> nach <p> usw. eine recht kurz und knapp gehalten Umsetzung XML nach HTML

Gruß
Roman
 
Ok, ....dann erzeuge diesen Kommentar nicht per <xsl:text> sondern über das dafür bestimmte Element:

Code:
<xsl:comment/>
Inhalt brauch es ja keinen

Beim <textarea> benötigst du den Kommentar nicht...da hast du ja das <xsl:apply-templates />

Es gäbe da noch einen einfacheren Weg, und zwar könntest du das Dokument per saveHTML() statt per saveXML() ausgeben(falls du die Transformation per PHP vornimmst)...allerdings erzeugt das nur HTML-Code, welcher nicht valide wäre, falls du das Dokument als XHTML auszeichnen willst.
 
sorry bin jetzt erst dazugekommen ...

also der Kommentar auf die Art bringt das gleiche Ergebnis.

Code:
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<?xml-stylesheet href="../test.xsl" type="text/xsl"?>

Das schreib ich einfach an den XML-Datei-Start und lasse den Browser den Rest machen ;-) also kein PHP

Gruß
Roman
 
Zurück