Druckvorlagen: <%if%>-Block auf leere Arrays testen lassen können
authorMoritz Bunkus <m.bunkus@linet-services.de>
Mon, 12 Nov 2012 14:48:22 +0000 (15:48 +0100)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Mon, 12 Nov 2012 15:03:21 +0000 (16:03 +0100)
SL/Template/Simple.pm
doc/dokumentation.xml

index d29ec8f..926ef1f 100644 (file)
@@ -197,6 +197,7 @@ sub _parse_block_if {
   }
 
   my $value = $self->_get_loop_variable($var, 0, @indices);
+  $value    = scalar(@{ $value }) if (ref($value) || '') eq 'ARRAY';
   my $hit   = 0;
 
   if ($operator_type) {
index a2a3c8a..fbc4f42 100644 (file)
@@ -1401,7 +1401,7 @@ Administration -> Benutzerverwaltung -> [ein Benutzer]
         <sect3 id="f-tex-installation">
           <title>f-tex Die Installation</title>
           <itemizedlist>
-            <listitem>Vorlagenverzeichnis mit Option f-tex anlegen, siehe: 
+            <listitem>Vorlagenverzeichnis mit Option f-tex anlegen, siehe:
               <xref linkend="Vorlagenverzeichnis-anlegen"/>
               Das Vorlagensystem funktioniert jetzt schon, hat allerdings noch einen
               Beispiel Briefkopf
@@ -4412,6 +4412,18 @@ Administration -> Benutzerverwaltung -> [ein Benutzer]
           und dem "end" werden nur ausgegeben, wenn die Variable
           <varname>variablenname</varname> gesetzt und ungleich 0 ist.</para>
 
+          <para>Handelt es sich bei der benannten Variable um ein Array, also um einen Variablennamen, über den man mit
+          <command>&lt;%foreach variablenname%&gt;</command> iteriert, so wird mit diesem Konstrukt darauf getestet, ob das Array Elemente
+          enthält. Somit würde im folgenden Beispiel nur dann eine Liste von Zahlungseingängen samt ihrer Überschrift "Zahlungseingänge"
+          ausgegeben, wenn tatsächlich welche getätigt wurden:</para>
+
+          <programlisting>&lt;%if payment%&gt;
+Zahlungseingänge:
+ &lt;%foreach payment%&gt;
+   Am &lt;%paymentdate%&gt;: &lt;%payment%&gt; €
+ &lt;%end foreach%&gt;
+&lt;%end if%&gt;</programlisting>
+
           <para>Die Bedingung kann auch negiert werden, indem das Wort
           <function>not</function> nach dem <filename>if</filename> verwendet
           wird. Beispiel:</para>