Darstellung
Navigation
Mobiles Menü
Darstellung
Navigation
Mobiles Menü
In-Place Editing Pro – Trix, Bilder und Galerien

In-Place Editing Pro – Trix, Bilder und Galerien

Erweitere In-Place Editing um Rich Text, Bilder, Galerien und die integrierte Lightbox.

Von einfachen Feldern zu Rich Content

Im ersten Teil haben wir Text-, Zahlen-, Boolean-, Select- und Radio-Felder direkt auf der Show-Seite bearbeitbar gemacht.
Jetzt gehen wir einen Schritt weiter. Unser bestehendes Product erhält:
  • Rich Text mit Action Text und Trix
  • ein einzelnes Bild
  • eine Galerie mit mehreren Bildern
  • eine Lightbox zur vergrößerten Darstellung
Auch diese Inhalte lassen sich anschließend direkt auf der Show-Seite bearbeiten.

Rich Text mit Trix hinzufügen

Zunächst erweitern wir unser Product um eine Beschreibung mit Action Text.
Der b4um Generator übernimmt dafür die Einrichtung von Trix:
bin/rails generate b4um:trix Product description
Falls dabei eine neue Action-Text-Migration angelegt wurde, führen wir anschließend die Migration aus:
bin/rails db:migrate
Unser Product besitzt jetzt das Rich-Text-Feld description.
Über das normale Product-Formular können wir zunächst einen formatierten Text anlegen. Trix ermöglicht dabei beispielsweise Überschriften, Fettschrift, Listen und weitere Formatierungen.

Trix direkt auf der Show-Seite bearbeiten

Jetzt kommt der eigentliche In-Place-Schritt.
Wir führen für dasselbe Feld den In-Place-Generator aus:
bin/rails generate b4um:in_place Product description
Der Generator erkennt automatisch, dass description ein Action-Text-Feld ist:
in_place Product#description (rich_text)
Wir müssen den Feldtyp also nicht zusätzlich angeben.
Ein Klick auf die Bearbeitungsfunktion öffnet jetzt den vollständigen Trix-Editor direkt innerhalb der Product-Show-Seite.
Formatierungen des vorhandenen Textes bleiben dabei erhalten.
Trix-In-Place-Editor geöffnet

Rich Text nach dem Speichern

Nach dem Speichern verschwindet der Editor wieder und die formatierte Beschreibung wird direkt auf der Show-Seite dargestellt.
Unsere Beispielbeschreibung enthielt unter anderem:

MacBook Air M4

mit leistungsstarkem Apple Chip und hochwertigem Display
Die Formatierung stammt weiterhin aus Action Text. In-Place Editing verändert also nicht die Funktionsweise von Trix, sondern ergänzt die Möglichkeit, den Inhalt direkt dort zu bearbeiten, wo er angezeigt wird.

gespeicherte Description auf der Show-Seite

Ein einzelnes Bild hinzufügen

Als Nächstes erhält unser Product ein Bild.
Dafür verwenden wir den Attachment-Generator:
bin/rails generate b4um:attachment Product image
Der Generator richtet das Active-Storage-Attachment am Modell ein und ergänzt die benötigten Stellen in Formular, Controller und Show-Ansicht.
Anschließend aktivieren wir In-Place Editing für dieses Attachment:
bin/rails generate b4um:in_place Product image
Auch hier erkennt der Generator den Typ automatisch:
in_place Product#image (attachment)
Damit kann das Bild direkt auf der Show-Seite hinzugefügt und später wieder ausgetauscht werden.

Bild direkt bearbeiten

Ist bereits ein Bild vorhanden, zeigt die Product-Seite eine Vorschau an.
Über die In-Place-Bearbeitung kann das Bild ersetzt oder entfernt werden. Ist noch kein Bild vorhanden, steht stattdessen die Möglichkeit zum Hinzufügen eines Bildes zur Verfügung.
Das Hochladen geschieht direkt aus dem In-Place-Editor heraus.
Product-Seite mit dem einzelnen großen Bild

Bilder in der Lightbox öffnen

Das angezeigte Bild ist gleichzeitig mit der b4um Lightbox verbunden.
Ein Klick auf das Bild öffnet die vergrößerte Ansicht. Dabei wird auch der Dateiname beziehungsweise die Bildbeschriftung angezeigt.
Für die Lightbox ist keine zusätzliche Einrichtung notwendig – sie wird vom Generator in die erzeugte Darstellung integriert.
Einzelbild in geöffneter Lightbox

Eine Bildergalerie hinzufügen

Für mehrere Bilder verwenden wir ein weiteres Active-Storage-Attachment – diesmal mit --multiple:
bin/rails generate b4um:attachment Product gallery --multiple
Dadurch erhält unser Product eine Galerie, die mehrere Dateien aufnehmen kann.
Anschließend machen wir auch dieses Feld direkt bearbeitbar:
bin/rails generate b4um:in_place Product gallery
Der In-Place-Generator erkennt die Mehrfachbeziehung:
in_place Product#gallery (attachments)
Damit unterscheidet der Generator automatisch zwischen einem einzelnen Attachment und einer Galerie.

Mehrere Bilder direkt auf der Show-Seite

Nach dem Upload erscheinen die Galeriebilder als kompakte Vorschaubilder nebeneinander.
Neue Bilder können direkt hinzugefügt werden. Vorhandene Bilder lassen sich ebenfalls direkt über den In-Place-Editor entfernen.
Die komplette Galerie muss dafür nicht über die normale Edit-Seite verwaltet werden.
Product-Show-Seite mit den drei Galerie-Thumbnails nebeneinander

Galerie in der Lightbox

Auch die Galerie ist automatisch mit der Lightbox verbunden.
Wird eines der Vorschaubilder geöffnet, kann innerhalb der Galerie zwischen den Bildern navigiert werden.
Neben den Navigationselementen stehen auch die Vorschaubilder der Galerie zur Verfügung. Auf Geräten mit entsprechender Eingabe kann außerdem per Drag beziehungsweise Swipe zwischen den Bildern gewechselt werden.
Galerie-Lightbox mit 1 von 3

Bilder hinzufügen und entfernen

Öffnen wir die In-Place-Bearbeitung der Galerie, können vorhandene Bilder entfernt und weitere Bilder hinzugefügt werden.
Sind noch keine Bilder vorhanden oder wurden alle entfernt, erscheint eine deutlich erkennbare Fläche zum Hinzufügen:
+ Add image
Damit kann auch eine zunächst leere Galerie vollständig über die Show-Seite aufgebaut werden.
leerer Galerie-Editor mit gestricheltem + Add image-Bereich

Was der Generator automatisch erkennt

Für die drei erweiterten Feldtypen mussten wir dem In-Place-Generator keinen Typ mitteilen.
Aus:
bin/rails generate b4um:in_place Product description
wurde automatisch:
rich_text
aus:
bin/rails generate b4um:in_place Product image
wurde:
attachment
und aus:
bin/rails generate b4um:in_place Product gallery
wurde:
attachments
Der Generator verwendet dafür die Informationen aus dem Rails-Modell und erzeugt abhängig davon die passende Darstellung und den passenden Editor.
Das ist gerade bei Action Text und Active Storage praktisch, weil für diese Felder keine zusätzliche Typkonfiguration notwendig ist.

Das Ergebnis

Unser Product kann jetzt wesentlich mehr als einfache Datenbankwerte direkt zu bearbeiten.
Die Beschreibung verwendet Action Text und Trix, das einzelne Bild kann direkt hochgeladen, ersetzt und entferntwerden und die Galerie verwaltet mehrere Bilder direkt auf der Show-Seite.
Bild und Galerie sind zusätzlich mit der Lightbox verbunden. Dadurch bleiben Bearbeitung und Präsentation voneinander getrennt: Im normalen Zustand sehen Besucher die fertigen Inhalte, während die Bearbeitungsfunktionen nur bei Bedarf geöffnet werden.

Wie geht es weiter?

Bis jetzt kann jeder Benutzer, der Zugriff auf die entsprechenden Aktionen besitzt, die In-Place-Funktionen verwenden.
In einer öffentlichen Anwendung möchten wir die Inhalte jedoch beispielsweise für alle Besucher sichtbar machen, die Bearbeitung aber nur angemeldeten Benutzern erlauben.
Genau das machen wir im nächsten Teil.

Nächstes Tutorial:

In-Place Editing mit Login schützen

Dort verwenden wir b4um:authentication, schützen Products und zeigen anhand unserer beiden Vergleichsbilder sehr schön: ausgeloggt nur ansehen – eingeloggt direkt bearbeiten.


Meld dich an und schreibe ein Kommentar