EiSpec erstellen
Damit Inhalte in Rocket verwaltet werden können, musst du eine Spezifikation oder eben eine Rocket Spec erstellen.
Unter der Abkürzung Ei verstehen wir Entity Integration. Entities können in unser CMS Rocket sehr einfach integriert werden. Wir sehen in dieser einfachen und modularen Integration einen der ganz grossen Vorteile von n2n gegenüber anderen CMS. In diesem Kapitel zeigen wir dir, wie du die im Rahmen des n2n Quickstarts erstellten Business Objects in Rocket Integrieren kannst.
EiSpec erstellen
Die EiSpec erstellen wir über den Hangar.
Starte den Hangar, indem du http://localhost/[pfad-zu-deinem-projekt]/hangar
aufrufst. Wenn alles klappt, startet der Hangar. Er besteht aus drei Spalten. In der linken Spalte stehen die Entities (also unsere Business Objects). Hier werden auch unsere Entities aus qs\bo
erkannt. Klicke auf alle drei mit der rechten Maustaste und wähle Generate EiSpec.
Der Hangar öffnet drei Fenster. Ausserdem wird in der rechten Spalte unter Specs (Rocket) Der Punkt qs mit den drei EiSpec von BlogArticle
, BlogCategory
und BlogComment
erstellt.
EiSpec verwalten
Wenn die Fenster der EiSpecs noch nicht offen sind, klicke dazu unter Specs (Rocket) auf die entsprechenden Einträge.
Jede EiSpec hat fünf Sektionen: General, Fields (EiFields), Commands (EiCommands), Modificators und Filter.
General
Unter General legen wir den Namen fest. Wir müssen das in Einzahl und Mehrzahl tun. Wähle hier z.B. "Kommentar" für Einzahl und "Kommentare" für Mehrzahl.
Fields
Die Felder der EiSpec sind die Eigenschaften unserer Objekte, welche wir über das Rocket bearbeiten wollen. Füge nun alle Felder über Add auto EiField (x) an. Danach können wir die Felder verwalten, indem wir jedes einzelne anklicken. Die einzelnen Felder nennen wir EiField. Das EiField stellt sicher, dass Rocket die korrekten Eingabefelder zur Verfügung stellt. Der Hangar setzt eine sinnvolle id und erkennt in den meisten Fällen die Eigenschaften (Type Name) der EiFields automatisch korrekt. Am Typ musst du daher nichts ändern.
Eigenschaften der EiFields
Name der Eigenschaft | Bedeutung |
---|---|
Label | Label, wie das Feld in Rocket beschrieben wird. |
Show in overview | Bestimmt, ob dieses Feld in der Übersicht angezeigt wird. Um in der Übersicht nicht zu viele Felder zu haben, lohnt es sich, die unwichtigeren Felder hier zu deaktivieren! |
Show in detail view | Bestimmt, ob das Feld in der Detailansicht angezeigt wird. |
Show in edit view | Bestimmt, ob das Feld angezeigt wird, wenn der Eintrag bearbeitet wird. |
Show in add view | Bestimmt, ob das Feld angezeigt wird, wenn ein neuer Eintrag erstellt wird |
Help Text | Hier kannst du einen Hilfe Text eingeben, der dem Benutzer erklärt, welche Eingabe hier von ihm erwartet wird. |
Constant | Wenn true , kann dieses Feld nur beim Erstellen eines Eintrages bearbeitet werden. Danach nicht mehr. |
Read only | Wenn aktiv, kann das Feld vom Benutzer nicht verändert werden |
Mandatory |
Hier wird vom Benutzer eine Eingabe obligatorisch verlangt. Felder, welche auf der Datenbank nicht
NULL sein dürfen, müssen als Mandatory konfiguriert werden. Sonst gibt es eine Exception, wenn das Feld vom Benutzer in Rocket leer gelassen wird. |
Draftable | Bestimmt, ob das Feld in der Entwurfsansicht zur Verfügung steht |
Maxlength (StringEiField) | Bestimmt die maximale Länge des Feldes |
Multiline (StringEiField) | Bestimmt ob der Text in einem INPUT oder ein TEXTAREA Tag editiert werden soll. |
Mode (WysiwygEiField) | Bestimmt, ob der Wysiwyg-Editor nur mit wenigen (simple), mit den wichtigsten (normal) oder mit allen (advanced) Befehlen zur Verfügung gestellt wird. |
Table Editing (WysiwygEiField) | Tabellen stehen nur zur Verfügung, wenn dieses Feld aktiv ist. |
BBcode (WysiwygEiField) | Wenn aktiv, wird nicht HTML gespeichert, sondern BBCode |
Link Configuration (WysiwygEiField) | Um bestimmte Links einfacher zur Verfügung zu stellen, können hier Link Konfigurationen angefügt werden. |
CSS (WysiwygEiField) | Hier kann dem Wysiwyg-Editor ein CSS File mitgegeben werden, damit das Editing auch tatsächlich WYSIWYG ist. |
Target Mask (toMany) | Die Maske, die verwendet werden soll, wenn der Nutzer auf einen Relation-Link klickt. |
Min (toMany) | Minimale Anzahl verknüpfter Objekte |
Max (toMany) | Maximale Anzahl verknüpfter Objekte |
Filtered (toMany) | KEINE AHNUNG |
Embedded Add Enabled (toMany) | Wenn aktiv, kannst du die verlinkten Objekte im gleichen Screen bearbeiten wie deren Mutterelement. |
Min Value (numeric) | Kleinster erlaubter Eingabewert |
Max Value (numeric) | Höchster erlaubeter Eingabewert |
Allowed Extensions (FieldEiField) | Erlaubte Dateiendungen: so kann eingeschränkt werden, dass bei einem Feld nur bestimmte Dokumente hochgeladen werden dürfen. |
Dimensions import mode (FieldEiField) | Rocket stellt für die Bearbeitung von Bildern ein Zuschneide Tool zur Verfügung. Diesem Tool können Formate hinterlegt werden. Mit All possible dimensions schaut Rocket nach, welche Formate für dieses Feld schon verwendet wurden und stellt alle verwendeten zur Verfügung. Only for current images used dimensions stellt nur die Formate zur Verfügung, wo bereits eine Anpassung gemacht wurde. |
Extra Thumb Dimensions (FieldEiField) | Du kannst auch extra Dimensionen definieren und diese zur Verfügung stellen. |
Check Image Resource Memory | Wenn diese Box aktiv ist, prüft n2n vor dem Hochladen eines Bildes, ob genügend Speicherplatz zur Verfügung steht, um Formatänderungen durchzuführen. Nicht alle Webserver stellen genügend Rechenleistung bereit, um grosse Bilder zu berechnen. |
Wie du feststellen kannst, stellt Rocket bereits sehr viele Optionen zur Verfügung, damit du in Rocket eine bequeme Verwaltung deiner Objekte sicherstellen kannst. Weitere Informationen zu den EiFields findest du in der Dokumentation. Das beste an Rocket ist aber, dass man die Funktionalitäten selber ergänzen kann. Darauf gehen wir aber im Quickstart nicht ein.
Ebenfalls kannst du hier die Reihenfolge der Felder anpassen.
Commands
Die EiCommands sind Operationen, welche du auf deine Objekte anwenden kannst. Die typischsten Commands sind:
- Overview: Anzeige aller Objekte in einer Liste
- Add: Erstellen eines Objektes
- Detail: Detailanzeige eines Objektes
- Edit: Bearbeitungsansicht eines Objektes
- Delete: Löschen eines Objektes
Diese Commands hat Rocket für dich bereits vorbereitet. Klicke bei allen drei EiSpec auf Add registered Command (6)
. Es geht ein Fenster auf. In diesem werden oben die "Available Command Groups" angezeigt. Klicke auf List
und es werden automatisch alle vorher beschriebenen Commands angefügt.
CTRL
S
oder oben über den Save
oder Save All Button
.Modificator
Mit Modificators können in Rocket spezifische Operationen vor oder nach bestimmten Commands ausgeführt werden. Der grosse Vorteil von Modificators ist, dass dazu der bestehende Command nicht ersetzt werden muss, sondern ergänzt werden kann. Im Rahmen des Quickstarts gehen wir nicht genauer auf Modificators ein.
Filter
Mit Filter können wir verschiedene Ansichten generieren. Auch auf Filter gehen wir nicht näher ein.
EiSpec überprüfen
Sämtliche EiSpec Definitionen könnten auch ohne Hangar gemacht werden. Wenn das Erstellen der EiSpecs richtig geklappt hat, wurde das File /var/etc/qs/rocket/specs.json
angefertigt. Es ist nichts anderes als ein JSON File. Dies führt nacheinander alle Business Objects auf. Bei den Business Objects werden zuerst die allgemeinen Eigenschaften (General) definiert, danach die Fields, Commands, Modificators und Masken.
Wenn du das specs.json
genauer analysierst, siehst du, dass die drei erstellten EiSpecs wie folgt heissen:
qs-blog-article
qs-blog-category
qs-blog-comment
Diese Namen wirst du im nächsten Kapitel brauchen, um die EiSpec ins Rocket Menü aufzunehmen.
Identity String Patterns
Eine Einstellung, welche bisher leider noch nicht über den Hangar möglich ist, ist das Identity String Pattern. Das Identity String Pattern ist ein Muster, mit dem ein Objekt zweifelsfrei identifizieren werden kann. Es wird in Rocket an verschiedenen Stellen verwendet. So zum Beispiel als Titel der Detail- und Bearbeitungsansichten oder um bei Beziehungen anzuzeigen, mit welchen Objekten (Blog Kategorien) das aktuelle Objekt (der aktuelle Blog Artikel) verbunden ist.
Für das Identity String Pattern einer Blog-Kategorie ist deren Namen sinnvoll. Hätten wir eine Mitarbeiter Datenbank, könnte das Identity String Pattern aus dem Vor- und Nachname des Mitarbeiters gebildet werden. In einer grossen Firma besteht allerdings die Gefahr, dass es zwei Mitarbeiter mit gleichem Vor- und Nachname gibt. In diesem Falle wäre ein Identity String Pattern aus Vor- und Nachname nicht genügend. Man müsste sich überlegen, ob man noch eine identifizierende Eigenschaft dazu nimmt. Zum Beispiel die E-Mail oder eine Mitarbeiter Nummer.
Für die Identity String Patterns müssen wir unsere EiSpecs im rocket.json
mit folgenden Zeilen ergänzen. Das Identity String Pattern bilden wir aus Eigenschaften, welche wir in geschweifte Klammern setzen. Du kannst die Zeilen jeweils nach dem "pluralLabel"
einfügen.
BlogArticle
: wir bilden das Pattern aus dem Titel und der ID des Artikels in eckigen Klammern:
"identityStringPattern": "{title} [{id}]",
BlogCategory
: für die Kategorie nehmen wir nur den Namen:
"identityStringPattern": "{name}",
BlogComment
: Das Pattern für den Kommentar bilden wir aus der E-Mail des Senders und dem Erstellungsdatum:
"identityStringPattern": "{email}, {created}",
Zur Kontrolle haben wir dir hier das specs.json als Download vorbereitet: