]> wagnertech.de Git - kivitendo-erp.git/commitdiff
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 dc0940d43ed42700d281f1a497aed5688edbc64e..94d536cbdf88e3db42da0fecff34ee5259c8bf16 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 dcde83af655a38198f0013024c352947ae26d1b6..315d1a9d2ff6ef4e2a128d7a4d2a43fc6943c23c 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>