Store

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

Parameter-Name Typ Erforderlich Beschreibung
data String | Array Ja

Typ der Daten (user, group, role, page). Kann auch ein Array mit mehreren Werten sein.

width Integer Nein

Breite des Input Plugins.

size Integer Nein

Wieviele Treffer werden pro Seite angezeigt (Standard: alle).

hasDownArrow Boolean Nein

Ein Pfeil wird angezeigt, welcher alle möglichen Werte auflistet (Standard: false).

invalidMessage String Nein

Nachricht bei falscher Eingabe.

query Array Nein

Analog zu z.B. getPages, um SQL Anweisungen weiterzureichen.

params Array Nein

Zusätzliche Parameter als Array.

source String Nein

Eigene Store Klasse (sollte von lib/base/Ego_Input_Store.php erben).

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

input_type_store

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

{input type="store" name="store" title="store"} {input type="store" name="store1" title="Store" data.0="page" data.1="user" data.2="role"}
input_type_store2

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([ self::IDENTIFIER => 'ID', 'name' => 'LABEL', 'icon' => 'ICON PATH' ]);
wb_incandescent

Die Variablen $this->start und $this->limit können Sie verwenden, um herauszufinden auf welcher Seite im Store Sie sich gerade befinden und wie viele 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).