Store

Dieses Plugin erzeugt ein einzeiliges Textfeld um unterschiedliche Werte über einen Store zu suchen und auszuwählen.

Pos Attribut Typ Erforderlich Beschreibung
1 data string Ja Typ der Daten (user, group, role, page). Kann auch ein Array mit mehreren Werten sein.
2 width integer Nein Breite des Input Plugins.
3 size integer Nein Wieviele Treffer werden pro Seite angezeigt (Standard: alle).
4 hasDownArrow boolean Nein Ein Pfeil wird angezeigt, welcher alle möglichen Werte auflistet (Standard: false).
5 invalidMessage string Nein Nachricht bei falscher Eingabe.
6 params array Nein Zusätzliche Parameter als Array.
7 source string Nein Eigene Store Klasse (sollte von lib/base/Ego_Input_Store.php erben).
8 query array Nein Analog zu z.B. getPages, um SQL Anweisungen weiterzureichen.

Im Textfeld kann man auch suchen. Passende Treffer werden dann zur Auswahl angeboten. Alternativ kann man über das DropDown Menü alle Treffer durchblättern.

store.png

Wenn Sie für data ein Array übergeben, können Sie mehrere Datenbestände nebeneinander anzeigen. Die einzelnen Werte werden dann kommasepariert gespeichert.

{input version=5 type="store" data.0="page" data.1="user" data.2="role" name="store_page_user" title="Store Page User Role" hasDownArrow=1 params.id=147}
store_multiple

Eigener Store

Ein eigener Store sollte von lib/base/Ego_Input_Store.php erben und die Methode getData() überschreiben. Die Bezeichnung Ihrer Klasse sollte auch gleichzeitig der Dateiname sein. Diese Methode hat keinen Rückgabewert. Stattdessen wird jedes Element, dass über das Plugin ausgewählt werden soll, über die Methode addItem(Array) einer finalen Liste hinzugefügt. Das übergebene Array muss eine eindeutige Identifizierung (Schlüssel) und einen Namen (für die Anzeige im Plugin) besitzen. Zusätzlich kann auch ein Pfad zu einem Icon angegeben werden.

$this->addItem(array( self::IDENTIFIER => 'ID', 'name' => 'LABEL', 'icon' => 'ICON PATH' ));

Die Variablen $this->start und $this->limit können Sie verwenden, um herauszufinden auf welcher Seite im Store Sie sich gerade befinden und wieviele Elemente pro Seite ausgegeben werden.

Die Variable $this->value beinhaltet immer den aktuell im Plugin ausgewählten Wert. Befindet man sich hingegen in der Suche, ist dieser Wert leer und die Variable $this->name kann genutzt werden (als Wildcard wird % gesetzt). Diese beinhaltet den aktuell im Plugin eingetragenen Suchbegriff. Eine Unterscheidung, ob man sich gerade in der Suche befindet oder ein existierendes Element ausgewählt wurde, sieht dann so aus:

if (empty($this->value)) { // Man befindet sich in der Suche. Über $this->name nur die Elemente finden, die zum Suchbegriff passen. } else { // Man hat ein Element ausgewählt. Über $this->value nur das aktuelle Element zurückgeben. }
warning

Wenn $this->value gesetzt ist, darf nur ein Element zurückgegeben werden. Andernfalls kann der aktuelle Wert nicht als ausgewählt markiert werden.

Der Pfad für source ist ausgehend vom ECM Installationsverzeichnis.

In $this->params finden Sie alle im Plugin für params übergebenen Parameter.

wb_incandescent

Wenn Sie für data ein Array verwenden, müssen Sie in Ihrer getData() Methode den Wert für $this->data abfragen, um für die richtige Liste handeln zu können.

warning

Bei einem eigenen Store können Sie für data übrigens auch eigene Werte verwenden, da nur der Standard Store speziell user, group, role oder page erwartet. Allerdings reagiert das Input Combo Plugin für Parameter wie no_pages oder no_users explizit nur auf diese Werte (was auch nur dann von Bedeutung ist, wenn Sie das Combo Plugin mit dem Store Plugin kombinieren).