====== 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 seit Version 3.0 kinderleicht geworden.
In der Regel sollte ein Formular mit der Klasse [[http://www.admidio.org/dokusource/class_html_form.html|HtmlForm]] erstellt worden sein.
$form = new HtmlForm('edit_form', $g_root_path.'/adm_program/modules/announcements/announcements_function.php?ann_id='.$getAnnId, $page);
Nun könnt ihr an der entsprechenden Stelle einfach die [[http://www.admidio.org/dokusource/class_html_form.html#a8078919d1f9d0fd7966e1a5bfa635f25|addEditor]] Methode aufrufen und schon ist der CKEditor in eurem Formular enthalten.
$form->addEditor('ann_description', $gL10n->get('SYS_TEXT'), $announcement->getValue('ann_description'), array('property' => FIELD_REQUIRED));
===== 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, $check_value = true)
{
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'] = htmLawed(stripslashes($_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!