Multibox: Keine Variablen in den rows speichern
authorSven Schöling <s.schoeling@linet-services.de>
Thu, 21 Oct 2010 12:48:39 +0000 (14:48 +0200)
committerSven Schöling <s.schoeling@linet-services.de>
Thu, 21 Oct 2010 14:21:21 +0000 (16:21 +0200)
2 Gründe:

1. Die rows können Objekte sein, und sobald die entweder nicht auf Hashref
   basieren, oder per AUTOLOAD ihre methoden sauber prüfen gibt das Chaos.
2. Wenn keine Daten da reingespeichert werden, bruachen die multiboxes nicht
   mit INCLUDE aufgerufen werden, sondern können mit PROCESS den stack clone
   umgehen.

templates/webpages/generic/multibox.html

index b26f86f..72d8957 100644 (file)
 [%-
   name       = (select_name != '' and ! show_text) ? select_name : name
 -%]
-[%- FOREACH row = DATA %]
-  [%-
-       row.id       = row.$id_key     != ''  ? row.$id_key    : $id_sub(row)
-       row.label    = row.$label_key  != ''  ? row.$label_key
-                    : $label_sub(row) != ''  ? $label_sub(row)
-                    :                          row.id
-       row.selected = default == row.id
-  -%]
-[%- END -%]
 [%- IF show_text %]
 <input type="text"
  [%- IF name     %] name="[%     HTML.escape(name)     %]"[% END -%]
   <option value=""></option>
   [%- END %]
   [%- FOREACH row = DATA %]
-  <option value="[% row.id | html %]"[% IF row.selected %] selected[% END %]>[% HTML.escape(row.label) %]</option>
+  <option value="[% row.$id_key != '' ? row.$id_key : $id_sub(row) | html %]"[% IF default == (row.$id_key != '' ? row.$id_key : $id_sub(row)) %] selected[% END %]>[%
+                      row.$label_key  != ''  ? row.$label_key
+                    : $label_sub(row) != ''  ? $label_sub(row)
+                    : row.$id_key     != ''  ? row.$id_key
+                    :                          $id_sub(row) | html %]</option>
   [%- END %]
 </select>
 [%- END %]