]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 634812: Having a very large number of custom fields can make displaying show_bug...
authorFrédéric Buclin <LpSolit@gmail.com>
Mon, 1 Aug 2011 08:36:48 +0000 (10:36 +0200)
committerFrédéric Buclin <LpSolit@gmail.com>
Mon, 1 Aug 2011 08:36:48 +0000 (10:36 +0200)
r=glob a=LpSolit

Bugzilla/Template.pm
template/en/default/bug/field-help.none.tmpl
template/en/default/bug/field-label.html.tmpl
template/en/default/global/field-descs.none.tmpl
template/en/default/pages/fields.html.tmpl

index 4320121bfbe6cea63427ccc1625fa8423a337fb9..3ebda68efaccae39efe30f1af6545b7bbe32c1c8 100644 (file)
@@ -922,6 +922,10 @@ sub create {
             # $template->process() is called.
             'field_descs' => sub { return template_var('field_descs') },
 
+            # Calling bug/field-help.none.tmpl once per label is very
+            # expensive, so we generate it once per-language.
+            'help_html' => sub { return template_var('help_html') },
+
             'install_string' => \&Bugzilla::Install::Util::install_string,
 
             'report_columns' => \&Bugzilla::Search::REPORT_COLUMNS,
index 558cad6c64a44ceae0d726a1dbaf4974315066fe..de16f20add3e97ca1676468b564e652edaf46280 100644 (file)
   #                 Max Kanat-Alexander <mkanat@bugzilla.org>
   #%]
 
-[%# This file describes both bug fields and search fields. %]
+[%# This file describes both bug fields and search fields.
+  # As calling this template once per label is very expensive,
+  # it is called only by Template.pm. %]
 
-[% PROCESS "global/field-descs.none.tmpl" %]
+[% RETURN UNLESS in_template_var %]
 
-[% help_html = {
+[% vars.help_html = {
 
 # Note that all these keys here are in alphabetical order, though
 # search-specific fields are at the bottom.
@@ -100,7 +102,7 @@ op_sys =>
 
 percentage_complete =>
   "How close to 100% done this $terms.bug is, by comparing its
-   $field_descs.work_time to its ${field_descs.estimated_time}.",
+   $vars.field_descs.work_time to its ${vars.field_descs.estimated_time}.",
 
 priority =>
   "Engineers prioritize their $terms.bugs using this field.",
@@ -116,8 +118,8 @@ qa_contact =>
 
 remaining_time =>
   "The number of hours of work left on this $terms.bug, calculated by
-   subtracting the $field_descs.work_time from the 
-   ${field_descs.estimated_time}.",
+   subtracting the $vars.field_descs.work_time from the 
+   ${vars.field_descs.estimated_time}.",
 
 rep_platform => 
   "The hardware platform the $terms.bug was observed on.",
@@ -137,8 +139,8 @@ see_also =>
 
    <p>You should normally use this field to refer to $terms.bugs in
      <em>other</em> installations. For $terms.bugs in this
-     installation, it is better to use the $field_descs.dependson and 
-     $field_descs.blocked fields.</p>",
+     installation, it is better to use the $vars.field_descs.dependson and 
+     $vars.field_descs.blocked fields.</p>",
 
 short_desc =>
   "The $terms.bug summary is a short sentence which succinctly"
@@ -149,7 +151,7 @@ status_whiteboard =>
   _ " adding tags and status information.",
 
 target_milestone =>
-   "The $field_descs.target_milestone field is used to define when the"
+   "The $vars.field_descs.target_milestone field is used to define when the"
    _ " engineer the $terms.bug is assigned to expects to fix it.",
 
 version =>
@@ -185,8 +187,8 @@ chfieldvalue =>
 
 content =>
   "This is a field available in searches that does a Google-like
-   'full-text' search on the $field_descs.short_desc and
-   $field_descs.longdesc fields.",
+   'full-text' search on the $vars.field_descs.short_desc and
+   $vars.field_descs.longdesc fields.",
 
 # Duplicated to email2 below, also.
 email1 =>
@@ -195,10 +197,10 @@ email1 =>
 
 } %]
 
-[% help_html.email2 = help_html.email1 %]
-[% help_html.chfieldto = help_html.chfieldfrom %]
-[% help_html.deadlinefrom = help_html.deadline %]
-[% help_html.deadlineto = help_html.deadline %]
+[% vars.help_html.email2 = vars.help_html.email1 %]
+[% vars.help_html.chfieldto = vars.help_html.chfieldfrom %]
+[% vars.help_html.deadlinefrom = vars.help_html.deadline %]
+[% vars.help_html.deadlineto = vars.help_html.deadline %]
 
 [% help_all_note = BLOCK %]
   <strong>Note:</strong> When searching, selecting the option "All"
@@ -206,34 +208,34 @@ email1 =>
   the word "All".
 [% END %]
 [% FOREACH all_field = ['op_sys', 'rep_platform'] %]
-  [% help_html.$all_field = help_html.$all_field _ ' ' _ help_all_note %]
+  [% vars.help_html.$all_field = vars.help_html.$all_field _ ' ' _ help_all_note %]
 [% END %]
 
 [% IF Param('useclassification') %]
-  [% help_html.product = help_html.product 
+  [% vars.help_html.product = vars.help_html.product 
       _ " Select a Classification to narrow down this list." %]
 [% END %]
 
 [% FOREACH help_field = bug_fields.keys %]
 
   [%# Add help for custom fields. %]
-  [% IF !help_html.${help_field}.defined %]
+  [% IF !vars.help_html.${help_field}.defined %]
     [% SET field_type = bug_fields.${help_field}.type %]
     [% field_type_desc = BLOCK -%]
       [% field_types.$field_type FILTER html %]
     [%- END %]
-    [% help_html.${help_field} = 
+    [% vars.help_html.${help_field} = 
       "A custom $field_type_desc field in this installation"
       _ " of ${terms.Bugzilla}." %]
   [% END %]
 
   [%# Add help for the search types, for query.cgi. %]
   [% type_desc = BLOCK %]
-    The type of [% field_descs.${help_field} FILTER html %] search you 
+    The type of [% vars.field_descs.${help_field} FILTER html %] search you 
     would like.
   [% END %]
   [% SET type_name = help_field _ '_type' %]
-  [% help_html.$type_name = type_desc %]
+  [% vars.help_html.$type_name = type_desc %]
 [% END %]
 
 [% Hook.process("end") %]
index 0b794f82a0b13a8458ef3c25b17fb5f9a40cc60a..2138f0362557ff77a10f1d952eb5968168907c11 100644 (file)
@@ -26,7 +26,6 @@
   #   tag_name: the tag to use to surround the label
   #%]
 
-[% PROCESS "bug/field-help.none.tmpl" %]
 [% DEFAULT tag_name = "th" %]
 <[% tag_name FILTER html %] class="field_label [% ' bz_hidden_field' IF hidden %]
            [%- ' required' IF field.is_mandatory && NOT bug.id %]"
index aefef454f34fdb1b985cd00e50189a42f9b9ee20..57af42af1c56968ec78a7eb73dd92ae47ba86ca2 100644 (file)
      "component"               => "Component",
      "content"                 => "Content",
      "creation_ts"             => "Creation date",
-     "days_elapsed"            => "Days since bug changed",
+     "days_elapsed"            => "Days since $terms.bug changed",
      "deadline"                => "Deadline",
      "delta_ts"                => "Changed",
      "dependson"               => "Depends on",
          IF !vars.field_descs.${bz_field.name}.defined %]
     [% END %]
   [% END %]
+
+  [% PROCESS "bug/field-help.none.tmpl" %]
 [% END %]
 
 [% Hook.process("end") %]
index 9c905abad0a782a3efd1b2d5722b3c42845a1fbe..e68b1572f14823297103299dc26f19c2c13088c1 100644 (file)
 
 <h2>Other Fields</h2>
 
-[% PROCESS "bug/field-help.none.tmpl" %]
-
 [% SET field_help_map = {} %]
 [% FOREACH field = bug_fields.keys %]
   [% SET field_desc = field_descs.$field %]