diff options
author | Frédéric Buclin <LpSolit@gmail.com> | 2011-08-01 10:35:09 +0200 |
---|---|---|
committer | Frédéric Buclin <LpSolit@gmail.com> | 2011-08-01 10:35:09 +0200 |
commit | 39888980be9924ebdd05913b0c8fbb92bf99fcf1 (patch) | |
tree | 930db47dbcc17c83aba5fab95bac90593bff61cd | |
parent | bc82259f9284e3d682536086637ace46cd8ab6ea (diff) | |
download | bugzilla-39888980be9924ebdd05913b0c8fbb92bf99fcf1.tar.gz bugzilla-39888980be9924ebdd05913b0c8fbb92bf99fcf1.tar.xz |
Bug 634812: Having a very large number of custom fields can make displaying show_bug.cgi slow
r=glob a=LpSolit
-rw-r--r-- | Bugzilla/Template.pm | 5 | ||||
-rw-r--r-- | template/en/default/bug/field-help.none.tmpl | 44 | ||||
-rw-r--r-- | template/en/default/bug/field-label.html.tmpl | 1 | ||||
-rw-r--r-- | template/en/default/global/field-descs.none.tmpl | 4 | ||||
-rw-r--r-- | template/en/default/pages/fields.html.tmpl | 2 |
5 files changed, 31 insertions, 25 deletions
diff --git a/Bugzilla/Template.pm b/Bugzilla/Template.pm index d8822272f..64c18c64c 100644 --- a/Bugzilla/Template.pm +++ b/Bugzilla/Template.pm @@ -936,6 +936,11 @@ sub create { # it only once per-language no matter how many times # $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') }, + # This way we don't have to load field-descs.none.tmpl in # many templates. 'display_value' => \&Bugzilla::Util::display_value, diff --git a/template/en/default/bug/field-help.none.tmpl b/template/en/default/bug/field-help.none.tmpl index 558cad6c6..de16f20ad 100644 --- a/template/en/default/bug/field-help.none.tmpl +++ b/template/en/default/bug/field-help.none.tmpl @@ -19,11 +19,13 @@ # 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") %] diff --git a/template/en/default/bug/field-label.html.tmpl b/template/en/default/bug/field-label.html.tmpl index a47855e14..fe3bed75b 100644 --- a/template/en/default/bug/field-label.html.tmpl +++ b/template/en/default/bug/field-label.html.tmpl @@ -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 %]" diff --git a/template/en/default/global/field-descs.none.tmpl b/template/en/default/global/field-descs.none.tmpl index 49962aeeb..130ad82c6 100644 --- a/template/en/default/global/field-descs.none.tmpl +++ b/template/en/default/global/field-descs.none.tmpl @@ -98,7 +98,7 @@ "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", @@ -149,6 +149,8 @@ IF !vars.field_descs.${bz_field.name}.defined %] [% END %] [% END %] + + [% PROCESS "bug/field-help.none.tmpl" %] [% END %] [% Hook.process("end") %] diff --git a/template/en/default/pages/fields.html.tmpl b/template/en/default/pages/fields.html.tmpl index 312941875..2794e1cc4 100644 --- a/template/en/default/pages/fields.html.tmpl +++ b/template/en/default/pages/fields.html.tmpl @@ -188,8 +188,6 @@ <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 %] |