Editor

Übersicht

Die Klasse Editor stellt den Inhalt eines HTML-Formulars zur verfügung. Die Felder können dabei einzeln angegeben oder an eine Tabelle in der Datenbank gebunden werden. Beides Gleihzeitig ist auch Möglich. Beim Binden an die Tabelle erzeugt der Editor die Feldtypen anhand der Datentypen in der Tabelle. Die Klasse ist ziemlich umfangreich und soll zumindest für die Bindung an eine Tabelle ein Selbstläufer sein. Sie sit stark auf die Benutzung von (X)AJAX ausgerichtet. Es geht aber auch ohne, siehe Gästebuch.

Benutzung

Features

  • Bindet eine Tabelle
    • varchar wird input/text, text wird textarea, boolean wird eine checkbox ...
    • Über ignore können Felder als Hidden markiert werden.
  • Erzeugt Label für die Felder
    • Wenn als 2. Parameter bei bindLabel ein string übergeben wird, kommt der Text der Label aus der Datatab, aus eben jenen tabname.
    • Ist der Param ein array mit strings, werden die genommen.
    • Sonst wird das Comment aus der Datenbank genommen.
    • Ist auch das nicht verfügbar, nimmt der Editor den Spaltennamen.
  • Erzeugt eine Liste mit den Einträgen in der DB
    • Die Liste wird in einem Fieldset als einzelne Links abgelegt. Das Fieldset muss listview heissen (Prefix wird gesetzt!). Die Links laden dann die Einträge in den Editor.
  • Erzeugt Buttons für Ajaxaufrufe
    • die addButton... Methoden erzeugen die Buttons und binde direkt einen AJAX Aufruf.
    • Siehe Methodenbeschreibung welche Aufrufe das sind.
    • Wenn man die Werte noch ändern will (BBCode in HTML wandeln oder so) kann man die Methoden überschreiben, die Werte ändern und an parent:: weiterleiten

Best practice

  • Eigene Klasse ableiten.
  • Aufruf der Methoden der Klasse über den XajaxDispatcher.
  • Den Konstruktor aufteilen ⇒ Grundlagen und Felder (siehe Beispiel).
    • Der Konstruktor wird auch vom Dispatcher aufgerufen, durch das afteilen hat man weniger Overhead.

Beispiele

Konstruktor

  function __construct($komplett = false, $xajax_prefix = 'myeditor_') {
    // Grundlagen, Konstruktor der eigentlichen 
    // Editorklasse aufrufen und das Prefix setzen
    parent::__construct('tabellenname');
    $this->prefix = $xajax_prefix;
    // Felder
    if( $komplett){
      // Erzeugt einen Button zum speichern der Werte
      $this->addButtonSave('Speichern');
      // Erzeugt ein Fieldsetelement. Ab jetzt landet
      // alles in diesem Fieldset.
      $hauptfeld = $this->addFieldset('artikel','Artikel');
      $this->setCurrentFieldset($hauptfeld);
      // Bindet die Tabelle, erzeugt die Felder anhand der Datentypen
      $this->bindTable();
      // Bindet die Label für die Felder
      $this->bindLabel();
      // Erzeugt für die textareas das BBCode Zeugs
      $this->bindBBCode('textarea');
      // Setzt des Fieldset auf keins
      $this->setCurrentFieldset(null);
    }
  }

Methoden

Die Klasse ist, äh, recht groß. Ich werd mich aber bemühen so viel wie Möglich hier reinzubringen.

Methode Parameter Rückgabe Beschreibung
addAjaxLink
addBoxlist
addButtonDelete
addButtonPreview
addButtonReset
addButtonSave
addDate
addFieldset
addIdent
addInput
addLabel
addLabels
addLink
addOrderedSelection
addSelectionlist
addTag
addTextarea
bindBBCode
bindColumn
bindFullTable
bindLabel
bindTable
correctBoolean
createOptionList
deleteByID
extractValues
getAjaxCall
getItemList
getNoRefLink
getTag
loadByValues
makeAjaxLink
setAttr
setByValues
setCurrentFieldset
setRowByValues
stripPrefix
substituteForRows
tag
 
klassen/tools/editor.txt · Zuletzt geändert: 2007/04/24 22:24 von oli
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki