epic-ts
[kivitendo-erp.git] / templates / webpages / generic / multibox.html
index 49b7333..bf39fe8 100644 (file)
@@ -3,62 +3,70 @@
      Multibox
 
   This template makes an input box for you,
-  decides wether it should be a text field or a drop down box,
+  decides whether it should be a text field or a drop down box,
   generates the HTML code, and fixes everything just right.
 
-  call:  INCLUDE generic/multibox.html var = var, var2 = .... 
+  call:  PROCESS generic/multibox.html var = var, var2 = ....
 
   options and variables:
-    name       : name of the select/textfield
-    id         : id of the select/textfield, optional, defaults to name
-    default    : entered/selected value. defaults to a dereference of name, since it is usually set to that for update mechanisms
-    id_key     : key that holds the id in each row.
-    id_sub     : name of a perl sub that calculates the id for each row. will be called with a hashref.
-    label_key  : key that holds the label in each row.
-    label_sub  : name of a perl sub that calculates the label for each row. will be called with a hashref.
-    DATA       : the actual data, expected to be arrayref of hashrefs, usually what's returned by the all_vc routines.
-    limit      : defines the limit of entries, after which a textbox is generated. defaults to vclimit, or, failing to find that, 50.
-    show_empty : show an empty first line in select boxes. defaults to false
-    style      : additional style information
-    onChange   : java magic on change
-    select     : java function call for a selection popup or other magic
+    name          : name of the select/textfield
+    id            : id of the select/textfield, optional, defaults to name
+    default       : entered/selected value. defaults to a dereference of name, since it is usually set to that for update mechanisms
+    id_key        : key that holds the id in each row.
+    id_sub        : name of a perl sub that calculates the id for each row. will be called with a hashref.
+    label_key     : key that holds the label in each row.
+    label_sub     : name of a perl sub that calculates the label for each row. will be called with a hashref.
+    DATA          : the actual data, expected to be arrayref of hashrefs, usually what's returned by the all_vc routines.
+    show_empty    : show an empty first line in select boxes. defaults to false
+    style         : additional style information
+    onChange      : java magic on change
+    select        : java function call for a selection popup or other magic
+    allow_textbox : allow to display a textbox instead of a drop down box if there are more entries than 'limit' entries.
+    limit         : defines the limit of entries, after which a textbox is generated. defaults to vclimit, or, failing to find that, 200.
+    select_name   : if a select is displayed, use a different name. ex.: department for textinput, but department_id for selects
+    readonly      : softly prevents modification
+    class         : CSS class names (optional)
 -%]
-[%- DEFAULT 
-  limit      = limit != ''   ? limit   : 50
-  id         = id    != ''   ? id      : name
-  default    = default != '' ? default : $name
+[%-
+  Multibox__limit      = limit   != '' ? limit   : vclimit != '' ? vclimit : 200
+  Multibox__show_text  = allow_textbox and DATA.size and Multibox__limit < DATA.size ? 1 : 0
+  Multibox__id         = id      != '' && id * 1 != id ? id      : name
+  Multibox__default    = default != '' ? default : $name
+  Multibox__name       = (select_name != '' and ! Multibox__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
-  -%]
+[%- IF Multibox__show_text %]
+<input type="text"
+ [%- IF Multibox__name     %] name="[%  Multibox__name    | html %]"[% END -%]
+ [%- IF Multibox__id       %] id="[%    Multibox__id      | html %]"[% END -%]
+ [%- IF Multibox__default  %] value="[% Multibox__default | html %]"[% END -%]
+ [%- IF style              %] style="[% style             | html %]"[% END -%]
+ [%- IF class              %] class="[% class             | html %]"[% END -%]
+ [%- IF readonly           %] readonly[% END -%]
+[%- -%]>
+[%- IF select -%]
+  <input type="button" onclick="[% select %]" value="?">
 [%- END -%]
-[%- IF DATA.size and limit < DATA.size %]
-<input type="text" 
- [%- IF name     %] name="[%     HTML.escape(name)     %]"[% END %]
- [%- IF id       %] id="[%       HTML.escape(id)       %]"[% END %]
- [%- IF default  %] value="[%    HTML.escape(default)  %]"[% END %]
- [%- IF style    %] style="[%    HTML.escape(style)    %]"[% END %]
->
-[%- IF select %]
-  <button type="button" onclick="[% select %]">?</button>
-[% END %]
 [%- ELSE %]
-<select 
- [%- IF name     %] name="[%     HTML.escape(name)     %]"[% END %]
- [%- IF id       %] id="[%       HTML.escape(id)       %]"[% END %]
- [%- IF style    %] style="[%    HTML.escape(style)    %]"[% END %]
- [%- IF onChange %] onChange="[% HTML.escape(onChange) %]"[% END %]
->
+<select
+ [%- IF Multibox__name     %] name="[%     Multibox__name     | html %]"[% END -%]
+ [%- IF Multibox__id       %] id="[%       Multibox__id       | html %]"[% END -%]
+ [%- IF style              %] style="[%    style              | html %]"[% END -%]
+ [%- IF class              %] class="[%     class             | html %]"[% END -%]
+ [%- IF onChange           %] onChange="[% onChange           | html %]"[% END -%]
+ [%- IF readonly           %] disabled[% END -%]
+[%- -%]>
   [%- IF show_empty %]
   <option value=""></option>
   [%- END %]
   [%- FOREACH row = DATA %]
-  <option value="[% row.id %]"[% IF row.selected %] selected[% END %]>[% HTML.escape(row.label) %]</option>
+  [%-
+      Multibox__row_id       = row.$id_key     != ''  ? row.$id_key    : $id_sub(row)
+      Multibox__row_label    = row.$label_key  != ''  ? row.$label_key
+                             : $label_sub(row) != ''  ? $label_sub(row)
+                             :                          Multibox__row_id
+      Multibox__row_selected = Multibox__default == Multibox__row_id
+  %]
+  <option value="[% Multibox__row_id | html %]"[% IF Multibox__row_selected %] selected[% END %]>[% Multibox__row_label | html %]</option>
   [%- END %]
 </select>
 [%- END %]