CVar Inputfelder auf Templateblöcke umgeschrieben.
authorSven Schöling <s.schoeling@linet-services.de>
Wed, 21 Jul 2010 15:39:46 +0000 (17:39 +0200)
committerSven Schöling <s.schoeling@linet-services.de>
Wed, 21 Jul 2010 15:39:46 +0000 (17:39 +0200)
Bei großen Belegen, sprich 50 Zeilen steigt der Aufwand für die CVars im Moment
in der dritten Potenz. Das führt dazu dass selbst auf schnellen Servern die
Requests unhaltbar langsam sind.

Ab jetzt werden für Belege die CVars nicht mehr vorgrendert, sondern zur
Laufzeit gerendert, und dann mit einem vorkompilierten Template, dass im
Speicher eingebunden wird.

Die anderen beiden Templates sind davon nicht betroffen.

bin/mozilla/io.pl
templates/webpages/amcvar/render_inputs_block.html [new file with mode: 0644]
templates/webpages/oe/sales_order.html

index dc0940d..94d536c 100644 (file)
@@ -2094,30 +2094,30 @@ sub _render_custom_variables_inputs {
     return;
   }
 
-  foreach my $cvar (@{ $form->{CVAR_CONFIGS}->{IC} }) {
-    $cvar->{valid} = $params{part_id}
-      ? CVar->get_custom_variables_validity(config_id => $cvar->{id}, trans_id => $params{part_id})
-      : 0;
-
-    $cvar->{value} = $form->{"ic_cvar_" . $cvar->{name} . "_$params{row}"};
-  }
-
-  CVar->render_inputs(hide_non_editable => 1,
-                      variables         => $form->{CVAR_CONFIGS}->{IC},
-                      name_prefix       => 'ic_',
-                      name_postfix      => "_$params{row}");
-
   my $num_visible_cvars = 0;
   foreach my $cvar (@{ $form->{CVAR_CONFIGS}->{IC} }) {
+    $cvar->{valid} = $params{part_id} &&
+       CVar->get_custom_variables_validity(config_id => $cvar->{id}, trans_id => $params{part_id});
+
     my $description = '';
     if ($cvar->{flag_editable} && $cvar->{valid}) {
       $num_visible_cvars++;
       $description = $cvar->{description} . ' ';
     }
 
-    push @{ $params{ROW2} }, { line_break => $num_visible_cvars == 1,
-                               value      => $description . $cvar->{HTML_CODE},
-                             };
+    push @{ $params{ROW2} }, {
+      line_break     => $num_visible_cvars == 1,
+      description    => $description,
+      cvar           => 1,
+      render_options => {
+         hide_non_editable => 1,
+         var               => $cvar,
+         name_prefix       => 'ic_',
+         name_postfix      => "_$params{row}",
+         valid             => $cvar->{valid},
+         value             => $form->{"ic_cvar_" . $cvar->{name} . "_$params{row}"},
+      }
+    };
   }
 
   $main::lxdebug->leave_sub(2);
diff --git a/templates/webpages/amcvar/render_inputs_block.html b/templates/webpages/amcvar/render_inputs_block.html
new file mode 100644 (file)
index 0000000..bea36c0
--- /dev/null
@@ -0,0 +1,44 @@
+[%- USE T8 %]
+[%- USE HTML %]
+[%- BLOCK cvar_inputs %]
+[%- var               = cvar.var  %]
+[%- hide_non_editable = cvar.hide_non_editable, %]
+[%- name_prefix       = cvar.name_prefix, %]
+[%- name_postfix      = cvar.name_postfix, %]
+[%- valid             = cvar.valid, %]
+[%- value             = cvar.value, %]
+[%- var_name          = HTML.escape(name_prefix) _ "cvar_" _ HTML.escape(var.name) _ HTML.escape(name_postfix) -%]
+[%- %]
+[%- IF hide_non_editable && !var.flag_editable %]
+<input type="hidden" name="[% var_name %]" value="[% HTML.escape(var.value) %]">
+[%- ELSIF !valid %]
+  [%- IF show_disabled_message %]
+<i>[% 'Element disabled' | $T8 %]</i>
+  [%- END %]
+[%- ELSIF var.type == 'bool' %]
+<input type="checkbox" name="[% var_name %]" value="1"[% IF value %] checked[% END %]>
+[%- ELSIF var.type == 'textfield' %]
+<textarea name="[% var_name %]" cols="[% HTML.escape(var.width) %]" rows="[% HTML.escape(var.height) %]">[% HTML.escape(value) %]</textarea>
+[%- ELSIF var.type == 'date' %]
+<input name="[% var_name %]" id="[% var_name %]" size="12" value="[% HTML.escape(value) %]">
+<input name="[% var_name %]_button" id="[% var_name %]_trigger" type="button" value="?">
+<script type="text/javascript">
+ <!--
+     Calendar.setup({ inputField : "[% var_name %]",
+                      ifFormat   : "[% myconfig_jsc_dateformat %]",
+                      align      : "BR",
+                      button     : "[% var_name %]_trigger" });
+   -->
+</script>
+[%- ELSIF var.type == 'timestamp' %]
+<input name="[% var_name %]" value="[% HTML.escape(value) %]">
+[%- ELSIF var.type == 'select' %]
+<select name="[% var_name %]">
+ [%- FOREACH option = var.OPTIONS %]
+ <option[% IF option.value == value %] selected[% END %]>[% HTML.escape(option.value) %]</option>
+ [%- END %]
+</select>
+[%- ELSE %]
+<input name="[% var_name %]" value="[% HTML.escape(value) %]" [%- IF var.maxlength %] maxlength="[% HTML.escape(var.maxlength) %]"[% END -%]>
+[%- END %]
+[%- END %]
index dcde83a..315d1a9 100644 (file)
@@ -1,5 +1,6 @@
 [%- USE T8 %]
-[% USE HTML %]
+[%- USE HTML %]
+[%- PROCESS 'amcvar/render_inputs_block.html' %]
 <tr>
  <td>
   <input type="button" id="cb_show_details" name="show_details" value='[% 'Show details' | $T8 %]'>
@@ -7,23 +8,36 @@
    $('#cb_show_details').click(function(){ $('[id$="row2"]').toggle() });
   </script>
   <table id='display_row' width="100%">
-   <tr class="listheading">[% FOREACH header = HEADER %][% IF header.display %]
-    <th align="left" nowrap width="[% header.width %]" class="listheading">[% header.value %]</th>[% END %][% END %]
+   <tr class="listheading">
+[%- FOREACH header = HEADER %]
+ [%- IF header.display %]
+    <th align="left" nowrap width="[% header.width %]" class="listheading">[% header.value %]</th>
+ [%- END %]
+[%- END %]
    </tr>
-
-   [% FOREACH row = ROWS %]
-     <tr valign="top" class="[% IF row.error %]error_message[% ELSE %]listrow[% loop.count % 2 %][% END %]">[% FOREACH row1 = row.ROW1 %]
-      <td align="[% row1.align %]"[% IF row1.nowrap %] nowrap[% END %]>[% row1.value %]</td>[% END %]
+[%- FOREACH row = ROWS %]
+     <tr valign="top" class="[% IF row.error %]error_message[% ELSE %]listrow[% loop.count % 2 %][% END %]">
+ [%- FOREACH row1 = row.ROW1 %]
+      <td align="[% row1.align %]"[% IF row1.nowrap %] nowrap[% END %]>[% row1.value %]</td>
+ [%- END %]
      </tr>
-
-     [% FOREACH hidden = row.HIDDENS %][% hidden.value %]
-     [% END %]
-
-     <tr class="listrow[% loop.count % 2 %]" id="[% loop.count %].row2" [% UNLESS show_details %]style="display:none;"[% END %]><td colspan="[% row.colspan %]">[% FOREACH row2 = row.ROW2 %]
-      [% IF row2.line_break %]<br/>[% END %]
-      [% row2.value %][% END %]
-     </td></tr>
-   [% END %]
+ [%- FOREACH hidden = row.HIDDENS %]
+    [% hidden.value %]
+ [%- END %]
+     <tr class="listrow[% loop.count % 2 %]" id="[% loop.count %].row2" [% UNLESS show_details %]style="display:none;"[% END %]>
+      <td colspan="[% row.colspan %]">
+ [%- FOREACH row2 = row.ROW2 %]
+   [%- IF row2.line_break %]<br/>[%- END %]
+   [%- IF row2.cvar %]
+     [% row2.description %]
+     [% INCLUDE cvar_inputs cvar = row2.render_options %]
+   [%- ELSE %]
+     [% row2.value %]
+   [%- END %]
+ [%- END %]
+      </td>
+     </tr>
+[%- END %]
 
   </table>
  </td>