Ich habe eine Seite, auf der der Benutzer den Intro-Text eines bestimmten Artikels bearbeiten kann, und ich verwende diesen Code, um dies zu ermöglichen:
$editor = & JFactory::getEditor();
$params = array('smilies'=> '0' ,'style' => '0' ,'layer' => '0' ,'table' => '0' ,'clear_entities'=>'0');
echo $editor->display('introtext',$this->introtext , '96%', '100px', 250, 40, false, null, null, null, $params);
Das Problem ist, dass ich beim Speichern der Änderungen mit jQuery / AJAX nur auf den ursprünglichen HTML-Code zugreifen kann, mit dem der Editor initialisiert wurde. Ich habe während der Entwicklung den TinyMCE-Editor verwendet, aber die Benutzer bevorzugen JCE, sodass für mich gefundene editerspezifische Antworten nicht ausreichen.
Wie kommt man zu dem bearbeiteten Text, den der Benutzer speichern möchte, um gepostet zu werden? Ich hatte angenommen, dass dies oder ähnliches funktionieren würde, aber es funktioniert eindeutig nicht:
var newHTML = $('#introtext').val();
joomla-3.x
jquery
editor
BIP
quelle
quelle
&
vorher nichtJFactory
. Bietet JCE in seiner "API" nicht etwas an, das geänderte Inhalte erhalten kann? Ich bin mir nicht sicher, ob ihre Unterstützung kostenlos ist oder nicht, aber es könnte sich lohnen, sie zu fragen&
vorher nicht,JFactory
wenn Sie PHP5 verwenden - ich denke nicht, dass dies notwendigerweise mit einer bestimmten Version von Joomla zusammenhängt (abgesehen von der Tatsache, dass <1.5 unter PHP5 möglicherweise nicht funktioniert)? joomla.stackexchange.com/questions/411/…Antworten:
Wenn ich mich richtig erinnere, verwendet JCE einen Iframe für den Inhalt. Daher müssen Sie zuerst einen Verweis auf den Iframe abrufen und dann auf das innere Dokument des Iframes zugreifen, das das innere HTML als den gesuchten Text bereitstellt. Ich habe das einmal gemacht, aber leider kann ich erst am Sonntag auf den Code zugreifen.
Ich würde mit so etwas beginnen (so erinnere ich mich daran, kann es momentan nicht testen):
Mit currentText als "neuem" Text.
quelle
Die Frage nach "BIP" war
"elk" hat mich auf den richtigen Weg gebracht, aber ich habe auf jQuery zurückgegriffen, um den bearbeiteten Text tatsächlich zu erhalten. Das habe ich getan:
Wo "
Array_ifr
" ist die ID desiframe the JCE editor uses
. Ich fand dies, indem ich die Elemente mit Firebug untersuchte.Das hat bei mir in einem Joomla funktioniert! Umwelt, aber ich sehe es nicht als Problem in anderen. Hoffe das hilft anderen Leuten bei ihrer Codierung.
quelle
Es gibt keine mir bekannte Methode. Sie müssen den Originaltext speichern und bei der Übermittlung einen Vergleich durchführen.
Weitere Details, sodass der Editor im Allgemeinen auf globaler Ebene festgelegt ist, Benutzer jedoch ihr Profil ändern können, um ihren bevorzugten Editor auszuwählen.
Joomla 3.x + era lädt den Editor mit einem,
JFormFieldEditor
der den ausgewählten Editor lädt . Der Benutzer nimmt Änderungen im Editor vor, aber wie Sie bemerkt haben, werden sie nicht sofort im Feld angezeigt. zB in einem Artikel, der das#jform_articletext
Element wäre.Für die meisten Editoren verfügt das Formularelement jedoch zum Zeitpunkt des Speicherns des Elements
jform[articletext]
über den aktualisierten Inhalt. (Dies scheint nicht für die AJAX-Editoren zu gelten, die ich gesehen habe).Ich spekuliere hier nur, aber ich stelle mir vor, dass sie (die Redakteure) ein
submit
Ereignis an das Hauptformular anhängen und ihren Inhalt an diesem Punkt in das Feld einfügen. Der andere Ort, den Sie überprüfen können, ist der Link "Toggle Editor", den JCE und TinyMCE haben.In einem Artikel hat TinyMCE diesen Klickereignisauslöser an die Schaltfläche "Editor umschalten" angehängt:
Dadurch wird der Inhalt des Editors in das Feld verschoben
#jform_articletext
.Ein anderer Ansatz kann darin bestehen, ein
submit
Ereignis an den aktiven Editor zu senden , der hoffentlich dazu führt, dass das Feld mit dem geänderten Text aktualisiert wird.Da jeder Editor die Behandlung
submit
auf unterschiedliche Weise implementieren kann und nicht alle über die Schaltfläche "Editor umschalten" von MCE verfügen, müssen Sie möglicherweise für jeden Editor, den Sie unterstützen möchten, einen Sonderfall erstellen.quelle
versuche kurz vorher zu setzen
oder
Daher wird der Text aus dem Editor in diese neue HTML- Variable kopiert
Natürlich muss sich Ihr Javascript-Code in derselben PHP-Formulardatei befinden (nicht in einer eigenständigen JS-Datei).
quelle
newHTML
der von PHP gelieferte Wert nicht in Anführungszeichen gesetzt werden?Dieser Thread ist ziemlich alt, aber das könnte anderen helfen ...
Die Antwort von Elk ist fast genau richtig, außer dass ich sie ändern musste
quelle