Dateien / Methoden
view config.json
config.json
Codeblock | ||||||
---|---|---|---|---|---|---|
| ||||||
{ "coreType": "print-core", "friendlyName": { "de": "Name", "en": "Name" }, "extra": { "print": { "types": [ "element" ], "children": [], "parents": [ "content", "container", "column" ], "variants": [ "content-neutral" ], "features": [ "default", "PrintFeatureKeyword" ] } } } |
...
Die Konfiguration für die Print-Themen werden in extra→print erwartet.
Key | Beschreibung |
---|---|
| Keywords, die von children und parents verwendet werden können. Diese Option beschreibt das Element. Gebräuchliche Keywords sind:
|
| Keywords, die definieren, welche Elemente als Kinder des Elements erlaubt werden. |
| Keywords, die definieren, in welches Element das Element erlaubt wird. |
| Die css-Variante für den designer-node aus, zum Beispiel, admin-styleguide/component/designer-core/_layout.scss. Gängige Varianten sind: header-primary, header-secondary |
| Für welche Features sollten in der Bearbeitenansicht Felder zur Pflege dargestellt werden. Für Keys siehe auch Print-Features. |
Engine
In der Engine.php wird eine public function mit dem Namen des Views erwartet. Als Eingabeparameter wird \Brandbox\PrintCore\PrintDocument\Render\Lib\Struct\ScopeElement
reingegeben und als Rückgabe wird ein \Brandbox\PrintCore\PrintDocument\Render\Lib\Struct\ElementResultAbstract
erwartet. Render\Lib\Struct\ElementResult
für die Rückgabe eines PrintStyleguideElements
und Render\Lib\Struct\ElementResultList
für die Rückgabe mehrere PrintStyleguideElement
Element in einem Array.
...
Um Einstellungen zu definieren, sollte parallel zu der config.json des Views auch eine Datei liegen, die "StructureDefinition.json" benannt ist. Beispiel: View/PrintParagraph/views/paragraph/StructureDefinition.json
. Die Struktur der Datei sollte dem Schema der structur.json folgen.
Quelldatensatz
Es ist möglich, einen Quelldatensatz in der StructureDefinition.json zu definieren. Falls ein Quelldatensatz definiert wurde, wird in der Bearbeitenansich des Elements in den Einstellungen ein Auswahlfeld dargestellt, mit dem es möglich ist einen Datensatz auszuwählen, zu erstellen oder zu bearbeiten.
...
Um einen Quelldatensatz zu definieren, erstellt man zuerst eine neue Datenbanktabelle und legt entsprechend auch eine widget.json an. Danach fügt man in der StructurDefinition.json ein Feld mit dem Identifier source an und definiert es als Input/ForeignKey
auf die neu angelegte Tabelle. Das Feld source wird nun automatisiert mit den Einstellungen und dem Element verarbeitet.
Beispiel
Codeblock | ||||||
---|---|---|---|---|---|---|
| ||||||
{ "identifier": "source", "label": "i18n:View/MyViewPackage.TranslationKey", "type": "Select", "configuration": { "source": "Input/ForeignKey.editable", "relation": { "repository": "MyRepositoryIdentifier" } } } |
...
Um die Variantenauswahl für ein Element anzubieten, kann man in der StructureDefintion für den View ein Feld mit der source "PrintElementVariants" definieren. Dieses kann dann im Code für den Aufbau des Elements über die $settings
abgerufen werden.
Beispiel Feld SturctureDefinition
Codeblock | ||||||
---|---|---|---|---|---|---|
| ||||||
{ "identifier": "variants", "label": "i18n:View/MyViewPackage.TranslationKey", "type": "Select", "configuration": { "multiple": true, "source": "PrintElementVariants", "print": { "plugin": "MyPackage", "view": "myview" } } } |
...
Für diese Vorgehensweise gibt es die Klasse \Brandbox\PrintCore\PrintDocument\Structure\Lib\Request\Listener\PrintDocumentStructure\PopulateVariants\PopulateVariantsAbstract
von der abgeleitet werden kann. Damit kann man die Varianten über ein Array definieren.
Beispiel Listener ViewPrintParagraph.paragraph
Codeblock | ||||||
---|---|---|---|---|---|---|
| ||||||
use Brandbox\PrintCore\PrintDocument\Structure; class Variants extends Structure\Lib\Request\Listener\PrintDocumentStructure\PopulateVariants\PopulateVariantsAbstract { public const PLUGIN = 'View/PrintParagraph'; // Für welches Plugin soll diese Varianten dargestellt werden public const VIEW = 'paragraph'; // Für welchen View soll diese Varianten dargestellt werden public const VARIANTS = [ // Die Varianten 'MyKeyVariant1' => [ // Interner Key um in der Eventstruktur die Variante identifizierbar zu machen 'label' => 'i18n:View/MyPackage.EnumerationVariantsExampleOne', // Übersetzungskey für den Namen 'variants' => ['specific', 'underline'] // Variantenkombination ], 'MyKeyVariant2' => [ 'label' => 'i18n:View/MyPackage.EnumerationVariantsExampleTwo', 'variants' => ['special'] ] ]; } |
...
Damit kann das $element
zum Beispiel um
Die Varianten aus den Einstellungen erweitert werden (wenn das Variantenfeld variants benannt wurde)
Die Print-Optionen wie Seitenumbrücke definiert werden
Bookmark Attribute erweitern
Inhaltsverzeichnis Attribute erweitern
Siehe auch Print-Features
Auch kann hiermit die Rückgabe als \Brandbox\PrintCore\PrintDocument\Render\Lib\Struct\ElementResultAbstract
verkürzt werden.
Beispiel
Codeblock | ||||||
---|---|---|---|---|---|---|
| ||||||
use Brandbox\PrintCore\PrintDocument\Render; class... { use Render\Lib\Struct\ElementHelperTrait; public function get(Render\Lib\Struct\ScopeElement $scope): Render\Lib\Struct\ElementResult { $paragraph = new PrintStyleguide\Entity\PrintParagraph(); $paragraph->content = $this->getContent($scope->settings); $this->populateDefault($paragraph, $scope); return $this->elementResult($elements); } } |
view.hbs
Wird nicht benötigt, da beim Verarbeiten des Elements ein SG-Element erwartet wird.