1 [%- USE HTML -%][%- USE LxERP -%][%- USE L -%][%- USE T8 -%]<h1>[% HTML.escape(title) %]</h1>
 
   3 <form action="controller.pl" method="post">
 
   4  [%- L.hidden_tag("id", SELF.config.id) %]
 
   9     <td align="right">[% 'Module' | $T8 %]</td>
 
  10     <td>[%- L.select_tag('module', SELF.modules, value_key='module', title_key='description', default=SELF.module, onchange="update_ic_rows();") %]</td>
 
  14     <td align="right">[% 'Variable Name' | $T8 %]<sup><span class="small-text">(1)</span></sup></td>
 
  15     <td>[%- L.input_tag("config.name", SELF.config.name, class='initial_focus') %]</td>
 
  19     <td align="right">[% 'Variable Description' | $T8 %]<sup><span class="small-text">(2)</span></sup></td>
 
  20     <td>[%- L.input_tag("config.description", SELF.config.description) %]</td>
 
  24     <td align="right">[% 'Type' | $T8 %]<sup><span class="small-text">(3)</span></sup></td>
 
  25     <td>[% L.select_tag("config.type", SELF.translated_types, value_key='type', title_key='translation', default=SELF.config.type) %]</td>
 
  29     <td align="right">[% 'Default value' | $T8 %]<sup><span class="small-text">(4)</span></sup></td>
 
  30     <td>[%- L.input_tag("config.default_value", SELF.config.type == 'number' ? LxERP.format_amount(SELF.config.default_value, 2) : SELF.config.default_value) %]</td>
 
  34     <td align="right">[% 'Options' | $T8 %]<sup><span class="small-text">(5)</span></sup></td>
 
  35     <td>[%- L.input_tag("config.options", SELF.config.options) %]</td>
 
  39     <td align="right">[% 'Is Searchable' | $T8 %]</td>
 
  41      [% L.radio_button_tag('config.searchable', value='1', id='config_searchable_1', label=LxERP.t8('Yes'), checked=(SELF.config.searchable ?  1 : '')) %]
 
  42      [% L.radio_button_tag('config.searchable', value='0', id='config_searchable_0', label=LxERP.t8('No'),  checked=(SELF.config.searchable ? '' :  1)) %]
 
  47     <td align="right">[% 'Includeable in reports' | $T8 %]</td>
 
  49      [% L.radio_button_tag('config.includeable', value='1', id='config_includeable_1', label=LxERP.t8('Yes'), checked=(SELF.config.includeable ?  1 : ''), onclick='update_included_by_default()') %]
 
  50      [% L.radio_button_tag('config.includeable', value='0', id='config_includeable_0', label=LxERP.t8('No'),  checked=(SELF.config.includeable ? '' :  1), onclick='update_included_by_default()') %]
 
  55     <td align="right">[% 'Included in reports by default' | $T8 %]</td>
 
  57      [% SET disabled = SELF.config.includeable ? '' : 'disabled' %]
 
  58      [% L.radio_button_tag('config.included_by_default', value='1', id='config_included_by_default_1', label=LxERP.t8('Yes'), checked=(SELF.config.included_by_default ?  1 : ''), disabled=disabled) %]
 
  59      [% L.radio_button_tag('config.included_by_default', value='0', id='config_included_by_default_0', label=LxERP.t8('No'),  checked=(SELF.config.included_by_default ? '' :  1), disabled=disabled) %]
 
  63    <tr data-show-for="IC"[% UNLESS SELF.module == 'IC' %] style="display: none;"[% END %]>
 
  64     <td align="right">[% 'Editable' | $T8 %]<sup><span class="small-text">(6)</span></sup></td>
 
  66      [% L.radio_button_tag('config.flag_editable', value='1', id='config.flag_editable_1', label=LxERP.t8('Yes'), checked=(SELF.flags.editable ?  1 : '')) %]
 
  67      [% L.radio_button_tag('config.flag_editable', value='0', id='config.flag_editable_0', label=LxERP.t8('No'),  checked=(SELF.flags.editable ? '' :  1)) %]
 
  74   [% L.hidden_tag("action", "CustomVariableConfig/dispatch") %]
 
  75   [% L.submit_tag("action_" _  (SELF.config.id ? "update" : "create"), LxERP.t8('Save'), onclick="return check_prerequisites();") %]
 
  76   [%- IF SELF.config.id %]
 
  77    [% L.submit_tag("action_create", LxERP.t8('Save as new'), onclick="return check_prerequisites();") %]
 
  78    [% L.submit_tag("action_destroy", LxERP.t8('Delete'), confirm=LxERP.t8('Are you sure?')) %]
 
  80   <a href="[% SELF.url_for(action='list', module=SELF.module) %]">[%- LxERP.t8("Cancel") %]</a>
 
  85  <h3>[% 'Annotations' | $T8 %]</h3>
 
  88   (1) [% 'The variable name must only consist of letters, numbers and underscores. It must begin with a letter. Example: send_christmas_present' | $T8 %]
 
  92   (2) [% 'The description is shown on the form. Chose something short and descriptive.' | $T8 %]
 
  95   (3) [% 'For type "customer" the perl module JSON is required. Please check this on system level: $ ./scripts/installation_check.pl' | $T8 %]
 
  99   (4) [% 'The default value depends on the variable type:' | $T8 %]
 
 102    <li>[%- 'Text, text field and number variables: The default value will be used as-is.' | $T8 %]</li>
 
 103    <li>[%- 'Boolean variables: If the default value is non-empty then the checkbox will be checked by default and unchecked otherwise.' | $T8 %]</li>
 
 104    <li>[%- 'Date and timestamp variables: If the default value equals \'NOW\' then the current date/current timestamp will be used. Otherwise the default value is copied as-is.' | $T8 %]</li>
 
 109   (5) [% 'The available options depend on the varibale type:' | $T8 %]
 
 112    <li>[%- 'Text variables: \'MAXLENGTH=n\' sets the maximum entry length to \'n\'.' | $T8 %]</li>
 
 113    <li>[%- 'Text field variables: \'WIDTH=w HEIGHT=h\' sets the width and height of the text field. They default to 30 and 5 respectively.' | $T8 %]</li>
 
 114    <li>[%- 'Number variables: \'PRECISION=n\' forces numbers to be shown with exactly n decimal places.' | $T8 %]</li>
 
 115    <li>[%- 'Selection fields: The option field must contain the available options for the selection. Options are separated by \'##\', for example \'Early##Normal##Late\'.' | $T8 %]</li>
 
 118   [% 'Other values are ignored.' | $T8 %]
 
 121  <p data-show-for="IC"[% UNLESS SELF.module == 'IC' %] style="display: none;"[% END %]>
 
 124   [%- 'A variable marked as \'editable\' can be changed in each quotation, order, invoice etc.' | $T8 %]
 
 126   [% 'Otherwise the variable is only available for printing.' | $T8 %]
 
 131 <script type="text/javascript">
 
 133 function update_included_by_default() {
 
 134   $('INPUT[name="config.included_by_default"]').prop('disabled', !$('#config_includeable_1').prop('checked'));
 
 137 function update_ic_rows() {
 
 138   $('[data-show-for="IC"]').toggle($('#module').val() === "IC");
 
 141 function check_prerequisites() {
 
 142   if (($('#config_type').val() === "select") && ($('#config_options').val() === "")) {
 
 143     alert(kivi.t8('The option field is empty.'));
 
 147   if ($('#config_name').val() === "") {
 
 148     alert(kivi.t8('The name is missing.'));
 
 152   if (!$('#config_name').val().match(/^[a-z][a-z0-9_]*$/i)) {
 
 153     alert(kivi.t8('The name must only consist of letters, numbers and underscores and start with a letter.'));
 
 157   if ($('#config_description').val() === "") {
 
 158     alert(kivi.t8('The description is missing.'));