Combo

Ermöglicht das Sammeln von Seiten, Gruppen/Rollen, Benutzern, eigene Angaben und individuellen Werten.

Pos Attribut Typ Erforderlich Beschreibung
1 no_pages boolean Nein Keine Seiten auswählen.
2 no_users boolean Nein Keine Benutzer auswählen.
3 no_rights boolean Nein Keine Gruppen/Rollen auswählen.
4 no_text boolean Nein Keine Texteingabe.
5 no_comma boolean Nein Bei aktivierter Texteingabe nicht automatisch mehrere Werte durch Komma trennen.
6 no_clear boolean Nein Kein Löschen Button.
7 no_sort boolean Nein Keine Sortierung.
8 no_tooltip boolean Nein Keine Tooltips für Custom Blöcke.
9 full boolean Nein Blöcke mit voller Breite darstellen.
10 half boolean Nein Blöcke mit halber Breite darstellen.
11 custom.name string Nein Name der eigenen Funktion.
12 custom.click string Nein Aufruf der eigenen Funktion.
13 custom.icon string Nein Eine CSS Klasse die als Icon der eigenen Funktion verwendet wird.
14 store array Nein Einen Store einbinden.
15 sort string Nein Sortiert alle Blöcke automatisch (asc oder desc).
16 onAddPage string Nein Callback beim Hinzufügen einer Seite.
17 onAddUser string Nein Callback beim Hinzufügen eines Benutzers.
18 onAddRight string Nein Callback beim Hinzufügen eines Rechts.
19 onAddText string Nein Callback beim Hinzufügen eines Textes über die Texteingabe.
20 onAddData string Nein Callback beim Hinzufügen eines individuellen Daten Elements.
21 comma_separator string Nein Anstatt des Kommas wird ein anderes Zeichen als Separator verwendet.
22 limit integer Nein Maximale Anzahl an Elementen.
23 editFunc string Nein Name der Funktion, die zum Bearbeiten einzelner Elemente aufgerufen werden soll.
24 validateFunc string Nein Die einzelnen Elemente validieren.
25 removeFunc string Nein Callback, wenn ein einzelnes Element gelöscht wird (erhaltene Parameter: element, text, cls, key).
26 select integer Nein Anzahl an auswählbaren Elementen.
27 display_site boolean Nein Seitennamen mit Mandanten
28 sitename string Nein Mandant für die Seitenauswahl
29 nositechange boolean Nein Kein Mandantenwechsel in der Seitenauswahl möglich
30 limit/max integer Nein Maximale Anzahl an Elementen
31 rights string Nein

Nur Benutzer mit bestimmten Rechten sind auswählbar (kommasepariert die Gruppen ID und Rollen ID)

32 rights boolean Nein

Wenn true, dann sind nur Benutzer auswählbar, für die der aktuelle Benutzer berechtigt ist

33 startId integer Nein

Die ID der Seite, die bei der Seitenauswahl als erste Seite in der Sitemap verwendet wird. Die Sitemap wird dadurch auf diesen Bereich reduziert.

Das Combo Plugin bietet standardmäßig alle Funktionen. Sie sollten die Funktionen deaktivieren die Sie nicht benötigen.

Dieses spezielle Plugin ermöglicht es, anders als die anderen Plugins, unterschiedliche Werte auf einmal zu verwalten und somit zu kombinieren. Standardmäßig erlaubt das Combo Plugin die Auswahl von Seiten, Gruppen/Rollen und Benutzern. Diese werden optisch als Markierungen in ein Feld gesetzt und können leicht wieder gelöscht werden. Zusätzlich kann jederzeit ein eigener Wert diesem Feld hinzugefügt werden (z.B. eine E-Mail Adresse, ein Name, eine URL, etc.).

combo

Je nach Anwendungsfall können die einzelnen Funktionen deaktiviert werden um so das passende Eingabefeld zu erhalten.

      • Seite hinzufügen: eine Seitenauswahl erscheint. Die ausgewählten Seiten werden als rote Felder dargestellt.
      • Benutzer hinzufügen: eine Benutzerauswahl erscheint. Die ausgewählten Benutzer werden als blaue Felder dargestellt.
      • Gruppen/Rollen hinzufügen: eine Gruppen/Rollen Auswahl erscheint. Die ausgewählten Gruppen/Rollen werden als grüne Felder dargestellt.
      • Nur Administratoren: Alle Felder werden entfernt und stattdessen ein grünes Feld mit der Administratoren Gruppe/Rolle eingefügt.

Wenn man neben das Plus Icon im Feld klickt, kann man direkt Text eingeben. Bestätigt man diesen mit Enter, so wird der Text als graues Feld hinzugefügt. Standardmäßig wird der Text bei einem Komma getrennt, so dass eine Texteingabe wie "Hallo,Welt" zwei Felder "Hallo" und "Welt" einfügt. Will man das vermeiden, so kann man den Parameter no_comma setzen.

wb_incandescent

Per Drag & Drop können die Felder innerhalb ihrer Gruppen manuell verschoben werden.

wb_incandescent

Verwenden Sie den Parameter full wenn Sie alle Felder mit voller Breite anzeigen lassen möchten.

Eigene Funktionen

Zusätzlich kann man auch eigene Funktionen anbinden. Die hier resultierenden Werte werden als orange Felder eingefügt.

combo2

Es können mehrere eigene Funktionen angebunden werden. Mit dem Parameter custom können als Array pro Element click, name, icon und mehr übergeben werden. Beispiel:

{input version=5 type="combo" name="feld" title="Titel" custom.0.click="combo_custom()" custom.0.name="Datum hinzufügen"}
warning

Der Index der eigenen Elemente sollte immer bei 0 beginnen.

wb_incandescent

icon muss hierbei eine CSS Klasse sein, welche im System verfügbar ist. In bin/admin_skin/egotec/style.css sind einige Icons in dijitMenuItems* Klassen definiert.

Die Funktion muss immer ein Objekt mit den Schlüsseln name und key beinhalten.

      • name: der angezeigte Titel im Feld.
      • key: ein eindeutiger Schlüssel um dieses Feld zu identifizieren.

Das Objekt kann zudem noch weitere Eigenschaften beinhalten, die ebenfalls gespeichert werden. So können Sie komplexe Datensätze als ein Feld darstellen und speichern.

Um das Objekt dem Combo Input Plugin zu übergeben, ist die Funktion combo_add() verfügbar. Beispiel:

function combo_custom(){ var d = new Date(), o = {name : d.toString(), key : d.getSeconds(), foo : 'bar'}; combo_add(o); }

Werte bearbeiten und validieren

Sie können über den Parameter editFunc den Namen der Javascript Funktion angeben, welche für das Bearbeiten von custom Elemente verwendet wird. Alternativ können Sie auch jedem custom Element eine eigene editFunc angeben.

{input version=5 type="combo" name="feld" title="Titel" editFunc="edit_element"}
{input version=5 type="combo" name="feld" title="Titel" custom.0.name="Mein Element" custom.0.editFunc="edit_element"}

Über den Parameter validateFunc können Sie den Namen der Javascript Function angeben, welche alle Elemente im Combo Plugin validiert. Diese Funktion muss true oder false zurückliefern. Ihre Funktion erhält die Parameter obj, type und data, mit denen Sie den Typ und den Wert des zu prüfenden Elements validieren können.

{input version=5 type="combo" name="feld" title="Titel" validateFunc="validate_element"}
<script type="text/javascript">
function validate_element(obj, type, data) {
if (type == 'text' && data == 'BADWORD') {
return false;
}
return true;
}
</script>
warning

Beachten Sie, die validierten Elemente werden in jedem Fall angezeigt. Bei problematischer Eingabe wird lediglich das Element mit einem signalisierenden Symbol erweitert, so dass der Redakteur informiert wird, dass mit diesem Element etwas nicht in Ordnung ist.

Werte verwalten und verwenden

Das Combo Plugin speichert alle gesammelten Werte in einem JSON kodierten Array ab. Um diesen String auswerten zu können, müssen Sie ihn dekodieren und darauß die Informationen ermitteln. Hierfür gibt es zwei Möglichkeiten: PHP und Smarty.

In PHP können Sie die Werte folgendermaßen auswerten:

require_once('base/Ego_Combo.php'); $combo = new Ego_Combo($page->extra['feld']);

Das Objekt $combo beinhaltet nun Methoden um an die einzelnen Typen von Werten zu gelangen:

      • getPages(): alle Seiten ermitteln (rote Felder). Zurückgeliefert werden die Page Objekte.
      • getUsers(): alle Benutzer ermitteln (blaue Felder). Zurückgeliefert werden die Benutzer Objekte.
      • getRights(): alle Gruppen/Rollen ermitteln (grüne Felder). Ein Element besteht jeweils aus einer Liste mit group und role. Zurückgeliefert werden die Gruppen und Rollen Objekte.
      • getRightsUsers(): alle Benutzer der Gruppen/Rollen ermitteln (grüne Felder). Zurückgeliefert werden die Benutzer Objekte.
      • getText(): alle Texteingaben ermitteln (graue Felder).
      • getData(): alle individuellen Daten ermitteln (orange Felder).
      • getDataBy(key, value): alle individuellen Daten ermitteln, die für einen bestimmten Schlüssel einen bestimmten Wert haben (orange Felder).
      • getMailAddresses(): alle E-Mail Adressen aus allen Feldern (außer den orangen) ermitteln.

Es gibt auch Methoden um die einzelnen Typen zu setzen oder Werte einzelnen Typen hinzuzufügen. So können Sie also den Wert des Combo Plugins auch über PHP in Ihren eigenen Skripten befüllen und ändern. Für genauere Informationen zu den Methoden können Sie die Datei lib/base/Ego_Combo.php begutachten.

In Smarty können Sie ebenfalls die Werte auswerten:

{get_combo var=combo value=$page->extra.feld}

Das hier erzeugte Objekt entspricht dem Ego_Combo Objekt.

Objekt Details

Sollte man das Combo Objekt selbst generieren wollen, z.B. über eigene Skripte, so sind folgende Richtlinien zu beachten.

Ein leeres Combo Objekt sieht als JSON String wie folgt aus:

{"pages":[],"users":[],"rights":[],"text":[],"data":[]}

Darauß ergibt sich, dass das Combo Objekt fünf Listen beinhaltet:

      • pages: eine Liste mit Objekten bestehend aus site, lang und id.
      • users: eine Liste mit Benutzer IDs.
      • rights: eine Liste mit Objekten bestehend aus group und role. Die Werte hier sind jeweils die IDs der Gruppen/Rollen.
      • text: eine Liste mit Texten.
      • data: eine Liste mit Objekten. Jedes Objekt muss die Eigenschaft key besitzen um jeden Datensatz eindeutig identifizieren zu können. Außerdem wird name, als Bezeichnung im Plugin, erwartet.
Ein so in PHP erzeugtes Array kann mit json_encode() in eine Ego_Combo Instanz gesetzt werden. Diese Instanz kann weiter verwendet oder der Wert für eine spätere Verwendung gespeichert werden. Beispiel:
require_once('base/Ego_Combo.php'); $combo = new Ego_Combo(); $object = array( 'pages' => array(), 'users' => array(),   'rights' => array(), 'text' => array(), 'data' => array() ); $combo->setValue(json_encode($object)); // ODER $combo->addPage($page); $combo->addUser('UserID'); $combo->addRights('GroupID', 'RoleID'); $combo->addText('Text'); $combo->addData(array('key' => 1, 'name' => 'myData')); // Speichern $extra = $page->extra; $extra['feld'] = $combo->getString(); $page->updateExtra($extra);

Store einbinden

Mit dem Parameter store kann man dieses Plugin mit dem

Input Store Plugin

kombinieren. Der Parameter unterstützt dabei die für das Store Plugin verfügbaren Parameter.

{input version=5 type="combo" name="combo_store" title="Combo Store Page" no_pages=1 store.data="page" store.params.id=1}
combo_store.png

Mit dem Parameter handle für store können Sie die Methode zum Einfügen eines Werts aus dem Store in das Combo Plugin bestimmen. Automatisch wird versucht diese Methode über den Wert für data zu ermitteln. Existiert keine Methode dazu, wird der Wert mit addData hinzugefügt.

wb_incandescent

Derzeit werden für data nur die Werte page, user und text unterstützt (das sind auch die möglichen Werte für handle). Eigene Werte für data und die Werte group, role werden mit addData hinzugefügt. So hinzugefügte Elemente besitzen immer die Eigenschaften key, name und type (der Wert für handle, bzw. data).

warning

Wird für data, bzw. handle, der Wert page übergeben, muss der Wert eines Elements eine typische URL im Format index.php?site=...&lang=...&id=... aufweisen (es genügt auch nur der Query). Existieren diese drei Parameter im Query der URL nicht, wird der Wert automatisch mit addData hinzugefügt.

onAdd* Callbacks

Alle onAdd* Callbacks erhalten als ersten Parameter das betroffene Combo Objekt und als zweiten alle dazugehörigen Parameter. Ist der Rückgabewert des Callbacks false, dann wird kein Element hinzugefügt. Sie müssen entsprechend true zurückgeben, um das Element hinzufügen. Mit den Callbacks können Sie z.B. eine nachträgliche Validierung des hinzuzufügenden Elements vornehmen oder stattdessen andere Elemente hinzufügen.

Elemente auswählen

Mit dem Parameter select können Sie Anzahl an Elementen einstellen, die "hervorgehoben" werden. Mit einem Klick auf ein Element im Combo Plugin werden diese markiert. Bei der Auswertung des Wertes im Combo Plugin können Sie dann diese Markierungen je nach Element Typ unterschiedlich abfragen:

  • Seiten, Benutzer und Text: Eigenschaft selected.
  • Rechte: Array Element selected.
  • Daten: Array Element s.