So setzen Sie bedingte Attributwerte in Pflegekommentaren
Veröffentlichungsdatum: 10. Mai 2010
Änderungsdatum: 30. Mai 2012
pflegekommentar editor bedingt dynamisch wert attribut element
Dieser Artikel beschreibt, wie Sie Werte innerhalb von Attributen dynamisch setzen, um den Pflegekommentar in Abhängigkeit bestimmter Kriterien zu nutzen.
Werte innerhalb von Pflegetag-Attributen können Sie dynamisch halten, um je nach Bedingung innerhalb der Bearbeitung die Handhabung der Strukturelemente bzw. -gruppen zu beeinflussen.
Folgende Beispiele führen an, wie Sie den Wert des display-Attributes zum Gruppen-Pflegetag (web:group:start) dynamisch ermitteln. Beide Beispiele haben das gleiche Ziel und nutzen nur andere Wege. Beispiel 1 verwendet lediglich XSL zur Definition und Einlesen der Variable. Beispiel 2 nutzt hierfür zusätzlich die PHP-Framework-Funktionen "setGlobalValue" und "getGlobalValue" der wEnv-Klasse.
Im Beispiel wird abhängig davon, ob innerhalb der Gruppe schon ein Element vorhanden ist, die Möglichkeit ausgeblendet, weitere Elemente in der Gruppe einzufügen.
Beispiel 1: Auszug aus der includes.global.php zum Einbinden von content2 Strukturelementen
... <!-- Hier werden die Inhaltselemente eingebunden --> <xsl:template match="wd:group[@id='content2']"> <xsl:variable name="displayType"><xsl:choose><xsl:when test="count(wd:item) = 0">user</xsl:when><xsl:otherwise>0</xsl:otherwise></xsl:choose></xsl:variable> <!-- web:group:start name="content2" caption="" display="<xsl:value-of select="$displayType" />"--> <xsl:apply-templates select="wd:item"/> <!-- web:group:stop --> </xsl:template> ...
Beispiel 2: Auszug aus der includes.global.php zum Einbinden von content2 Strukturelementen (über wEnv)
... <!-- Hier werden die Inhaltselemente eingebunden --> <xsl:template match="wd:group[@id='content2']"> <xsl:variable name="displayType"><xsl:choose><xsl:when test="count(wd:item) = 0"><xsl:value-of select="php:function('wEnv::setGlobalValue', 'displayType', 'user')" /></xsl:when><xsl:otherwise><xsl:value-of select="php:function('wEnv::setGlobalValue', 'displayType', '0')" /></xsl:otherwise></xsl:choose></xsl:variable> <!-- web:group:start name="content2" caption="" display="<xsl:value-of select="php:function('wEnv::getGlobalValue', 'displayType', $displayType)" />"--> <xsl:apply-templates select="wd:item"/> <!-- web:group:stop --> </xsl:template> ...
Folgendes Beispiel 3 führt an, wie Sie ab der Version 005.046.013.000 Elemente von der Auswahl ausschliessen können, wenn eine bestimmte Bedingung zutrifft. Im Beispiel wird geprüft, ob das Bildelement bereits einmal (oder mehr) in der Seite vorkommt. Ist das der Fall, wird über die Variable das Bildelement (picture.standard.wItem.php) in das itemsExlude-Attribut geschrieben, womit das Bildelement nicht mehr auswählbar ist.
Beispiel 3: Auszug aus der includes.global.php zum Ausschliessen von content1 Strukturelementen
... <!-- Hier werden die Inhaltselemente eingebunden --> <xsl:template match="wd:group[@id='content1']"> <xsl:variable name="excludedItems"><xsl:if test="count(wd:item[@type ='picture.standard']) >= 1">picture.standard</xsl:if></xsl:variable> <!-- web:group:start name="content1" caption="" display="user" itemsExclude="<xsl:value-of select="$excludedItems" />"--> <xsl:apply-templates select="wd:item"/> <!-- web:group:stop --> </xsl:template> ...
FAQs
- Wie kann ich Werte in Pflegekommentaren bzw. Attributen dynamisch setzen?
- Indem Sie den Wert eines Attributs (z. B. im Pflegekommentar/Strukturelement) abhängig von Kriterien zur Laufzeit ermitteln, sodass sich die Handhabung von Strukturelementen bzw. -gruppen während der Bearbeitung anpasst.
- Wozu dient das dynamische Setzen von Attributwerten in Pflegetag-Attributen?
- Dazu, die Sichtbarkeit bzw. Bearbeitungsmöglichkeiten von Elementen in einer Gruppe zu steuern, z. B. um das Einfügen weiterer Elemente abhängig davon zu erlauben oder auszublenden.
- Wie kann ich in Beispiel 1 das display-Attribut anhand der Gruppenzusammensetzung ermitteln?
- Das Beispiel prüft die Anzahl der Gruppenelemente: Wenn <code class="codeInline">count(wd:item) = 0</code>, wird <code class="codeInline">displayType</code> auf <code class="codeInline">user</code> gesetzt; andernfalls auf <code class="codeInline">0</code>. Dieser Wert wird anschließend dem <code class="codeInline">display</code>-Attribut von <code class="codeInline">web:group:start</code> übergeben.
- Wie kann ich in Beispiel 2 den Wert des display-Attributs per wEnv-Globale Variablen setzen?
- Das Beispiel setzt <code class="codeInline">displayType</code> über PHP-Framework-Funktionen der Klasse <code class="codeInline">wEnv</code> mittels <code class="codeInline">setGlobalValue</code> und liest es dann für das <code class="codeInline">display</code>-Attribut mit <code class="codeInline">getGlobalValue</code> wieder aus. Je nach Zustand (<code class="codeInline">count(wd:item) = 0</code>) wird entweder <code class="codeInline">user</code> oder <code class="codeInline">0</code> gespeichert.
- Wann wird im Beispiel das display-Attribut auf „user“ gesetzt, und wann auf „0“?
- Wenn innerhalb der Gruppe noch kein Element vorhanden ist (<code class="codeInline">count(wd:item) = 0</code>), wird <code class="codeInline">display</code> auf <code class="codeInline">user</code> gesetzt. Sobald bereits mindestens ein Element vorhanden ist, wird <code class="codeInline">display</code> auf <code class="codeInline">0</code> gesetzt.
- Wie kann ich ab Version 005.046.013.000 Elemente von der Auswahl ausschließen?
- Indem Sie prüfen, ob ein bestimmtes Element bereits in der Seite vorkommt, und diesen Elementtyp dann in das Attribut <code class="codeInline">itemsExclude</code> schreiben. Dadurch wird das Element nicht mehr auswählbar.
- Wie funktioniert das Ausschließen eines Bildelements im Beispiel 3 über itemsExclude?
- Das Beispiel setzt eine Variable <code class="codeInline">excludedItems</code>, wenn <code class="codeInline">count(wd:item[@type ='picture.standard']) >= 1</code> gilt. Dann wird <code class="codeInline">picture.standard</code> in <code class="codeInline">excludedItems</code> geschrieben und als <code class="codeInline">itemsExclude</code> an <code class="codeInline">web:group:start</code> übergeben. So wird <code class="codeInline">picture.standard</code> aus der Auswahl ausgeschlossen.