Wiki-Quellcode von Platzhalterersetzung (Templates)
Zeige letzte Bearbeiter
author | version | line-number | content |
---|---|---|---|
1 | {{content/}} | ||
2 | |||
3 | == Schnittstelle IPluginTemplateReplacer == | ||
4 | |||
5 | === Verwendungsmöglichkeiten === | ||
6 | |||
7 | {{figure image="plugin_platzhalterersetzung_template.png" width="400" clear="h3"}} | ||
8 | Einordnung des Platzhalterersetzungsplugins für //Templates// in die Prozesskette von {{formcycle case="dat"/}} | ||
9 | {{/figure}} | ||
10 | |||
11 | Eine Implementierung der Schnittstelle //IPluginTemplateReplacer// ermöglicht es, eigene Ersetzungslogik für den Ersetzungsprozess von Template-Platzhaltern zu integrieren. //Templates// können unter dem Menüpunkt [[Dateien & Templates>>doc:Formcycle.UserInterface.FilesAndTemplates.WebHome]] für die Typen //HTML//, //Text//, //E-Mail// und //Link //definiert werden. | ||
12 | |||
13 | Die eigenen Implementierungen werden dabei vor dem internen Platzhaltersetzungsprozess von {{formcycle case="dat"/}} durchgeführt. | ||
14 | |||
15 | Bei der [[Platzhalterersetzung>>doc:Formcycle.UserInterface.Variables]] wird nach folgendem Muster gesucht und durch das entsprechende //Template// ersetzt: | ||
16 | |||
17 | {{code language="none"}} | ||
18 | [%$$<Eigener Platzhalterbezeichner oder Name eines Templates>%] | ||
19 | {{/code}} | ||
20 | |||
21 | {{warning}} | ||
22 | Bei Verwendung mehrerer //IPluginTemplateReplacer//-Implementierungen ist deren Ausführungs-Reihenfolge nicht fest hinterlegt. Dadurch kann es bei mehrfacher Ausführung zu unterschiedlichen Ergebnissen kommen. | ||
23 | {{/warning}} | ||
24 | |||
25 | {{warning}} | ||
26 | Die //IPluginTemplateReplacer//-Implementierungen werden grundsätzlich bei jeder Formularverarbeitung im jeweiligen Anwendungsbereich (System- oder Mandant-Plugin), in dem sie installiert wurden, ausgeführt. Es wird deshalb empfohlen, in der Implementierungslogik als erstes zu prüfen, ob der //IPluginTemplateReplacer// für die jeweilige Formularverarbeitung ausgeführt werden soll. Dies lässt sich beispielsweise mittels [[Plugin-Properties>>doc:Formcycle.PluginDevelopment.BundleProperties]] konfigurierbar gestalten. | ||
27 | {{/warning}} | ||
28 | |||
29 | === Methodensignaturen === | ||
30 | |||
31 | Die Plugin-Schnittstelle //IPluginTemplateReplacer// referenziert alle durch die [[Basis-Schnittstelle IFCPlugin>>doc:IFCPlugin]] bereitgestellten Methoden | ||
32 | und zusätzlich noch folgende Plugin-spezifische Methodensignaturen: | ||
33 | |||
34 | {{panel title="{{code language='java'~}~}IPluginTemplateReplacerRetVal replace(IPluginTemplateReplacerParams params) throws FCPluginException{{/code~}~}" triggerable="true" fullwidth="true"}} | ||
35 | |||
36 | **Übergabewert:** | ||
37 | Der Typ //IPluginTemplateReplacerParams// stellt den Zugriff auf folgende Eigenschaften bereit: | ||
38 | * **getPlaceholder()** kompletten String des Platzhalters (dies schließt den Markup des Platzhalters mit ein) | ||
39 | * **getPlaceholderContent()** Inhalt des Platzhalters (ohne typ-spezifischen Markup) | ||
40 | * **getEntityContext()** aktueller Nutzerkontext, um beispielsweise Datenbankoperationen ausführen zu können | ||
41 | * **getMandant()** aktueller Mandant, in dessen Anwendungsbereich der TemplateReplacer ausgeführt wird | ||
42 | |||
43 | **Rückgabewerte:** | ||
44 | Der Rückgabewert muss vom Typ //IPluginTemplateReplacerRetVal// sein. Eine Referenzimplementierung wird durch die Klasse //PluginGenericReplacerRetVal// zur Verfügung gestellt, welche mit dem Ersetzungswert aus dem //IPluginTemplateReplacer// initialisiert wird. | ||
45 | {{/panel}} |