This is an old revision of the document!
Javascript-Editor integrieren
Mit Admidio 2.3 wird der CKEditor im Standard mit ausgeliefert. Dieser kann jetzt mit einfachen Mitteln in ein Script eingebaut werden.
Editor in Formular einbauen
Der Einbau in ein Formular ist relativ einfach und im Script müssen nur 3 Stellen angepasst werden. Im 1. Schritt muss die PHP-Klasse für den Editor integriert werden:
require_once('../../system/classes/ckeditor_special.php');
Im 2. Schritt wird ein Objekt der Editorklasse erstellt:
$ckEditor = new CKEditorSpecial();
Im 3. Schritt wird nun eine Editorinstanz über PHP erzeugt, dazu muss folgender Code an die Stelle eingebaut werden, an der später der Editor angezeigt werden soll:
$ckEditor->createEditor('ann_description', $announcement->getValue('ann_description'))
Folgende Übergaben werden bei createEditor erwartet: Als erstes wird die ID übergeben, die das Editorelement später bekommt und über die auf den Editor zugegriffen werden kann, als 2. Wert wird der Inhalt für den Editor erwartet. Die 3. Übergabe kann ein Name für eine andere definierte Toolbar sein und als letzte 4. Übergabe kann man Einfluss auf die Höhe des Editors nehmen.
Speichern des Inhalts
Soll der Inhalt des Editors über ein Objekt oder abgeleitetes Objekt der TableAccess-Klasse gespeichert werden, so muss für das Editor-Feld eine Ausnahme bei den Methoden getValue und setValue hinterlegt werden. Dadurch wird verhindert, dass der Html-Inhalt aus dem Editor wieder entfernt wird.
public function getValue($field_name, $format = '') { if($field_name == 'ann_description') { $value = $this->dbColumns['ann_description']; } else { $value = parent::getValue($field_name, $format); } return $value; } public function setValue($field_name, $field_value) { if($field_name == 'ann_description') { return parent::setValue($field_name, $field_value, false); } return parent::setValue($field_name, $field_value); }
Validierung des Html-Inhalts
Da über den Editor nun Html-Code übertragen wird, muss dieser vor dem Speichern in die Datenbank noch validiert werden. Dazu nutzt Admidio das Script htmLawed. Dieses muss in dem Script, welches die Eingaben des Editors verarbeitet integriert werden:
require_once('../../libs/htmlawed/htmlawed.php');
Im nächsten Schritt wird dann der Inhalt des Feldes durch das Script geprüft:
$_POST['ann_description'] = stripslashes($_POST['ann_description']); $_POST['ann_description'] = htmLawed($_POST['ann_description']);
Bildupload ermöglichen
Soll die Editorinstanz auch den Upload von Bildern ermöglichen, so muss im Uploadscript noch ein Ordnernamen für einen Ordner innerhalb von adm_my_files angegeben werden. Dazu ruft man das Script adm_program/system/ckeditor_upload_handler.php auf und ergänzt dort die If-Struktur ca. Zeile 30 mit der neuen Editor-ID
if($_GET['CKEditor'] == 'ann_description') { $folderName = 'ANNOUNCEMENTS'; }
Überspringen der Html-Code-Prüfung
Im letzten Schritt zur Integration des Editors muss die systemweite Prüfung aller Übergabevariablen auf Html-Code für die Id des Editor-Feldes deaktiviert werden. Dazu muss die Funktion admStrStripTagsSpecial ergänzt werden.
if($key != 'ann_description') // ckeditor-variable { $srcArray[$key] = strStripTags($value); }
Jede neue Id wird dann mit && $key != 'editor_id_name' ergänzt.
Fertig ist die Integration des CKEditors für ein weiteres Formular!