Um eine Auswahl aus einer großen Datenmenge zu treffen, gibt es das Autocomplete Widget. Die Struktur für die Content Structure ist:
<? ... public contentStructure(){ return array( array( "key"=>"variablenname", "label"=> "Gib deine Auswahl ein", "type" => "autocomplete", ) ); } public function performElementSearch($key,$query){ if($key!="variablenname"){ return array(array('key'=>-1,'value'=>'Kein Suchtreffer')); } else { ... Ergebnisse suchen ... return array( array('key'=>0,'value'=>'Eintrag eins'), array('key'=>1,'value'=>'Eintrag zwei') ); } } public function getElementValue($key,$id){ if($key!="variablenname") return "Nicht implementiert"; ... Lesbarer Value Titel heraussuchen anhand der gespeicherten $id return $value; } ... ?>
Das Autocomplete Widget benötigt zwei weitere Methoden in der Box Klasse.
performElementSearch($key, $query)
Diese Methode führt die Suche aus und gibt ein Array mit Suchergebnissen zurück. $key ist der eindeutige Identifikator des Autocomplete Widgets. Für den Fall, dass mehr als ein Autocomplete Feld geplant ist können hiermit unterschiedliche Suchen ausgelöst werden. $query ist der eingegebene Suchtext.
Die Rückgabe ist ein Array aus Key-Value Paaren. Wobei key der Wert ist, welcher in der content Variable gespeichert wird und value der menschenlesbare Anzeigetext der Auswahl.
getElementValue($key, $id)
Wenn der Box Editor das Widget lädt, wird über diese Methode der menschenlesbare Anzeigetitel zurückgegeben. Dafür bekommt die Methode als Parameter den eindeutigen Widget $key und die gespeicherte $id der content Variable.