Bildergalerie



Konfiguration

Bereich

Beschreibung

Bereich

Beschreibung

Konfigurations-Schlüssel

Eine Zeichenkette, die über die HTTP-Parameter an den Server übertragen wird, damit die entsprechende Galerie genutzt werden kann.

Zeige Dateien die keine Bilder sind

Dateien die keine Bilder sind, werden bei einer aktivierter Checkbox auch eingeblendet.

Primärer Ordner

Ein wählbarer Ordner.

Sekundärer Ordner

Ein Ordner, der in der Gallerie zusätzlich zur Auswahl steht.

Manuelle Ordner-Angabe

Eine Pfadangabe zu einem Ordner. Hier können Wildcards benutzt werden.

Zeige meine Dateien

Ist diese Checkbox aktiviert, ist es dem Nutzer möglich, auf die Dateien zuzugreifen, die von Ihnen bzw. vom aktuell angemeldeten Benutzer hochgeladenen Dateien wurden. Diese Dateien müssen nicht unbedingt im Hauptpfad liegen, um dort angezeigt zu werden.

Meine Dateien

Beachten Sie, dass mit "Meine Dateien" immer die Dateien gemeint sind, die unter dem aktuell angemeldeten Benutzer-Konto hochgeladen wurden.



Zeige Dateien aus dem primären Ordner

Bei aktiver Checkbox wird der Hauptpfad in der mam/gallery Oberfläche sichtbar als "Ordner" angezeigt. Sie können dann Dateien vom Hauptpfad auswählen. Der Hauptpfad ist dieser, welchen Sie oben definiert haben.

Zeige Dateien aus dem sekundären Ordner

Bei aktiver Checkbox wird zusätzlich zu dem primären Ordner auch der sekundäre Ordner angezeigt.

Anzahl Datensätze pro Seite

Mit dieser Option können Sie x Datensätze (Dateien) pro Seite anzeigen lassen. Ist die Anzahl pro Seite niedriger als Dateien insgesamt angezeigt werden können, wird eine Seitenauswahl angezeigt, mit der Sie auf einzelne Seiten springen können.

Weitere Dateien

Über dieses Auswahlfeld wird festgelegt, wie die Optionen für "weitere Dateien" dargestellt werden. 

  • Pagination: Wie gewohnt, erscheint eine Blätterfunktion im Kopfbereich der Galerie. Über diese Seiten kann navigiert werden.

  • "Mehr"-Button: im Fußbereich der Galerie erscheint ein Button, welcher bei einem Klick weitere Dateien an die bereits Vorhandenen anhängt.

Standardmäßig wird die Pagination dargestellt, sofern keine Option gewählt wurde.

Zeige Dateien aus Kategorien

Ist die Checkbox aktiv, ist der Abruf der Kategorien in der Galerie möglich.

Um die Konfiguration der Galerie zu erweitern, sollten weitere Entitäten erstellt werden, die einen Fremdschlüsselbezug zu einem Galeriedatensatzes besitzen. Die Konfigurationsoberfläche kann über das OnPopulateForm-Event von ComponentForm erweitert werden.

Verwendung

Die Galerie kann über den entsprechenden Button eines Datei-Feldes geöffnet werden. Die Galerie wird dabei in einem Modal platziert.

Die Galerie ist standardmäßig aus folgenden Elementen aufgebaut.

Nr.

Bereich

Beschreibung

Nr.

Bereich

Beschreibung

1 & 2

Marginalie - Toolbar & Baum

Die Organisationseinheiten einer Galerie können über entsprechende Ui-Elemente in der Toolbar, oder im rekursiven Baum dargestellt werden. Je nach Kontext, sollte der Programmierer eine passende Darstellung wählen.

3

Blätterfunktion

Wenn sich viele Dateien im Hauptpfad befinden, bzw. mehr Dateien wie in der Konfiguration "Anzahl Datensätze pro Seite" angegeben, können Sie hier auf verschiedene Seiten springen. Falls es nur eine Seite gibt, wird die Seitenauswahl nicht angezeigt.

Es ist möglich die Blätterfunktion durch einen "Mehr"-Button zu ersetzen, der weitere Kacheln nachlädt, sofern weitere Elemente vorhanden sind.

4

Dateisuche

Mit dieser Option können Sie nach Dateien suchen indem Sie den Namen eingeben, oder Buchstaben und Zahlen, welche der Dateinamen enthält. Das suchen nach Dateiendungen (z.B. ".jpg", ".png", ...) ist ebenfalls möglich. Danach einen Klick auf die Enter-Taste um die Suche zu starten. Die Dateien werden Ihnen rechts im großen Feld angezeigt.

5

Sortierung

Hier kann die Sortierung gewählt werden. Es werden alle Spalten aufgelistet, die als Sortierspalten gekennzeichnet sind und keine Systemspalten sind.

6

Sichtbare Werte

Hier können die Werte gewählt werden, die in den Kacheln sichtbar sein sollen. Die Einstellung wird im WebStorage persistiert.

Die Sortierung ist in der Parameterliste bei Anfragen an die Galerie vorhanden und muss von den Listenern/Subscribern, welche die Dateien aus der Datenbank beschaffen, entsprechend verarbeitet werden.

7

Datei-Kachel

Die Kachel besteht aus mehreren Unterelementen.

  • Vorschaubild

  • Trennstrich

  • Dateiinformationen

  • Aktionen (Löschen, Download und Favorisieren sind im Standard enthalten)



Aktionen

Im Kopfbereich der Galerie lassen sich unter Umständen Buttons finden, über die bestimmte Aktionen ausgeführt werden können.

  • Upload: Wurde der Upload in der Konfiguration der Galerie aktiviert, so können Dateien in dieser Organisationseinheit hochgeladen werden. Derzeit ist diese Funktion nur für "Favorisierte Dateien" und "Meine Dateien" verfügbar.

Aufbau der Galerie

Die Galerie besitzt grundlegend zwei Einsteigspunkte:

  • Ui/Modal/Engine::gallery

    • Haupteinstiegspunkt. Diese Methode liefert die Galerie als Ganzes aus.

  • UI/Modal/Engine::pwa/gallery/files/wrapper

    • Diese Methode ist für den Hauptbereich zuständig. Wird ein Element einer Organisationseinheit gewählt, wird der Hauptinhalt entsprechend aktualisiert.

gallery

Den Haupteinstiegspunkt bildet gallery. Wird diese Methode aufgerufen, wird der Rahmen für die Galerie platziert. Die Marginalie bzw. der Hauptbereich werden nachgeladen.



Marginalie

Die Marginalie wird über die Methode Ui\Modal\Manager::buildMargin erstellt. In der Marginalie befinden sich Elemente, die der Navigation dienen. Diese Elemente geben an, was im Hauptbereich dargestellt wird.

Im Kopfbereich der Marginalie befindet sich eine Toolbar, in der Buttons platziert werden können. Diese Buttons werden üblicherweise genutzt um die Navigation zu Dateien zu ermöglichen, die keine dahinterliegende Struktur besitzen (z.B. willkürliche Session Dateien).

Im Körper der Marginalie hingegen werden strukturierte Organisationseinheiten dargestellt, welche wiederum Dateien enthalten. Ein Beispiel für solche Organisationseinheiten sind Ordner, die weitere Unterordner besitzen und explizit über die Konfiguration der Galerie freigegeben wurden.

Hauptbereich

Der Hauptbereich wird über den Aufruf Ui\Modal\Engine::pwaGalleryContent geladen. Während sich die Marginalie mit der Frage beschäftigt, was dargestellt wird, beschäftigt sich der Hauptbereich hingegen damit, wie die vorab "gewählten" Inhalte dargestellt werden. Der Hauptbereich wird wiederum in zwei Bereiche untergliedert; eine Kopfzeile, in der Steuerelemente angezeigt werden und ein Hauptbereich in dem hauptsächlich die Dateikarten angezeigt werden.

Im Kopfbereich dieser Ansicht werden Elemente platziert, mit denen man die Filterung und Ansichtseinstellungen für die Dateikacheln beeinflussen kann. In diesem Bereich finden sich gängige Funktionen wie z.B. eine Suche oder Sortierungsmöglichkeiten wieder. Die Steuerungsparameter wie z.B. der Suchbegriff des Suchfeldes können über eigene JavaScript-Dateien an das JavaScript galleryRequest übermittelt werden. Wurden die gewünschten Parameter übermittelt, lässt sich eine neue Anfrage für Dateien auslösen. Somit gibt es nur eine zentrale Stelle, welche die Anfragen für die Galerie ausführt. Die in galleryRequest platzierten Elemente sind somit möglichst unabhängig voneinander.

Im Hauptbereich werden die auf Basis der im Kopfbereich bereitgestellten Steuerungsparameter gesammelten Dateien in Form von Karten dargestellt. Dieser Aufruf bezieht die geforderten Dateien anhand der Steuerungs- und Filterparameter aus Marginalie und Request, aus der Datenbank und mappt diese zu den Kachel-Objekten aus dem Styleguide.



Events 

PHP

Die Galerie löst Events aus, um die Manipulation der Galerie möglich zu machen. Diese Events verfügen über ein Kontext-Objekt, welches alle nötigen Daten beinhaltet.
Folgende Events werden ausgelöst, um die Inhalte der Galerie zu füllen. Es existieren weitere Events, um die Galerie präziser zu manipulieren.

Event

Beschreibung

Event

Beschreibung

OnPopulateMargin

Ein Event, um den FrameworkContainer der Marginalie zu füllen. GalleryCore löst in Reaktion auf dieses Event diese weiteren Events aus:

  • Ui\Modal\lib\event\Margin\OnPopulateToolbar

  • Ui\Modal\lib\event\Margin\OnPopulateTree

OnPopulateGalleryContent

Ein Even, um den FrameworkContainer des Hauptbereiches zu füllen. GalleryCore löst in Reaktion auf dieses Event diese weiteren Events aus:

  • Ui\Modal\lib\event\GalleryRequest\OnPopulateToolbar

  • Ui\Modal\lib\event\GalleryFiles\OnPopulateGalleryFiles

  • Ui\Modal\lib\event\GalleryFiles\OnPopulateGalleryFile

Ui/Modal implementiert zahlreiche Listener, um die Basisfunktionalität der Galerie bereitzustellen.

Übersicht aller Events

JavaScript

Sämtliche detail-Objekte der Events einer Galerie sollten den String "galleryIdentifier" enthalten, da es möglich ist, dass mehrere Galerien aktiv sind. Dieser Identifier wird zur Unterscheidung benötigt.

Event

event.detail

Beschreibung

Event

event.detail

Beschreibung

onTriggerUpdateGalleryRequestParams



Dieses Event kann von Elementen im Request-Bereich der Galerie getriggert werden, um der Galerie zu signalisieren, dass die Parameterliste aktualisiert werden soll.

Dieses Event löst wiederum "onCollectGalleryRequestParams" aus.

onCollectGalleryRequestParams



Dieses Event wird vom Request-Bereich selbst getriggert, sobald die Parameterliste aktualisiert werden soll. Die Elemente im Request-Bereich können auf das Event reagieren und die Parameterliste befüllen. Um die Parameter an die Galerie zurückzugeben ist das Event "onUpdateGalleryRequestParams" vom Listener auszulösen.

onCollectGalleryRequestParams: function (event) { if (event.detail.galleryIdentifier === this.galleryIdentifier) { var eventOptions = { detail: { params: { query: this.element.value }, galleryIdentifier: this.galleryIdentifier }, bubbles: true } var customEvent = new CustomEvent('onUpdateGalleryRequestParams', eventOptions); this.element.dispatchEvent(customEvent) } }



onUpdateGalleryRequestParams

  • params - Array/Objekt. Die hier enthaltenen key-value-Einträge werden in die Parameterliste des nächsten Requests übernommen.

Dieses Event aktualisiert die Parameterliste des Request-Objekts mit den im event definierten Parametern des detail-Objekts.

onGalleryRequestReload

  • replaceTarget - Boolean. Steuert das "targetReplaceWith"-Flag der Brandbox event.js.

  • target - Zeichenkette. Selektor, der das Ziel angibt.

Wird dieses Event ausgelöst, werden neue Inhalte für die Galerie angefragt. Die Parameterliste des Request-Objekts wird für diese Anfrage genutzt. Über die Parameter "target" und "replaceTarget" kann man bestimmen, welche HTML-Inhalte teilweise oder vollständig ersetzt werden.

onUpdateWebStorage

  • scope - Zeichenkette. Der Eintrag im WebStorage wird in diesem Scope/Kontext angelegt.

  • key - Zeichenkette.

  • value - Zeichenkette.

Dieses Event löst eine Aktualisierung des WebStorage in brandbox aus.

Es sollte beachtet werden, dass die WebStorage Einträge der Galerie über einen Scope (Kontext) verfügen sollen.

Beispielsweise sollte die Einstellung der sichtbaren Kachelwerte unabhängig von der Sortierung gespeichert werden.

GalleryFileClicked

  • fileID - Ganzzahl. Die ID der Datei.

  • relativePath - Zeichenkette. Der relative Pfad der Datei.

  • basename - Zeichenkette. Der Name der Datei.

  • src - Zeichenkette.

  • gallery - Objekt. Die Instanz von gallery.js.

Dieses Event wird i.d.R. ausgelöst, wenn eine Dateikachel angeklickt wird. Auf das Event kann reagiert werden, wenn bei dem Klick auf eine Datei ein spezielles Verhalten erwartet wird. Normalerweise wird das Input-Feld mit den Daten des detail-Objekts befüllt, sodass die Vorschau generiert werden kann (siehe Base/Widget/js/gallery::UIGallery.onFileClick).

GalleryRemoveFile

  • contentID

Über die Angabe einer contentID lässt sich die entsprechende Kachel aus der Galerie entfernen (nur UI!).

Dieses Event wird bspw. beim Löschen oder beim Entfavorisieren in der "Favorisierte Dateien"-Ansicht ausgelöst.



Einbindung in der Dateiauswahl

Die Galerie kann im Feld vom Typ "Dateiauswahl" hinzugefügt werden. Um das zu ermöglichen, muss die Konfiguration des Feldes angepasst werden.

In der Konfiguration muss ein neues Objekt "gallery" angelegt werden. Dieses Objekt besitzt zwei Eigenschaften:

  • isEnabled

    • Boolescher Wert. Dieser Wert entscheidet, ob der Button für die Galerie dargestellt werden soll.

  • configKey

    • Zeichenkette. Der Identifikator des gewünschten Galerie-Datensatzes.

InputFile.gallery
"identifier": "identifierInputFile1", "labels": { "de": "Dateifeld mit Galerie", "en": "File field with gallery" }, "formType": "file", "configuration": { "gallery": { "isEnabled": true, "configKey": "base-shopArticle" } }


Bildauswahl als Eingabefeld

Es ist möglich eine Sammlung von Bildern als Eingabefeld zu nutzen. Somit erfolgt die Bildauswahl nicht über das Modal der Galerie, sondern durch einen Klick auf ein Bild, welches direkt beim Feld dargestellt wird. Der Bilderpool wird durch den Primärordner einer Galerie festgelegt. Diese Galerie muss in der Konfiguration festgelegt werden. Der Typ für das Feld ist ImageSelect.

{ "identifier": "imageSelection", "labels": { "de": "Bildauswahl", "en": "ImageSelection" }, "formType": "ImageSelect", "configuration": { "galleryId": 95 } }