From: Frédéric Buclin Date: Mon, 1 Aug 2011 08:36:48 +0000 (+0200) Subject: Bug 634812: Having a very large number of custom fields can make displaying show_bug... X-Git-Tag: bugzilla-4.0.2~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6b56e1ac30ed96ab3d47936552023dfabbf7d6c2;p=thirdparty%2Fbugzilla.git Bug 634812: Having a very large number of custom fields can make displaying show_bug.cgi slow r=glob a=LpSolit --- diff --git a/Bugzilla/Template.pm b/Bugzilla/Template.pm index 4320121bfb..3ebda68efa 100644 --- a/Bugzilla/Template.pm +++ b/Bugzilla/Template.pm @@ -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, diff --git a/template/en/default/bug/field-help.none.tmpl b/template/en/default/bug/field-help.none.tmpl index 558cad6c64..de16f20add 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 #%] -[%# 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 =>

You should normally use this field to refer to $terms.bugs in other installations. For $terms.bugs in this - installation, it is better to use the $field_descs.dependson and - $field_descs.blocked fields.

", + installation, it is better to use the $vars.field_descs.dependson and + $vars.field_descs.blocked fields.

", 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 %] Note: 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 0b794f82a0..2138f03625 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 aefef454f3..57af42af1c 100644 --- a/template/en/default/global/field-descs.none.tmpl +++ b/template/en/default/global/field-descs.none.tmpl @@ -125,7 +125,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", @@ -174,6 +174,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 9c905abad0..e68b1572f1 100644 --- a/template/en/default/pages/fields.html.tmpl +++ b/template/en/default/pages/fields.html.tmpl @@ -182,8 +182,6 @@

Other Fields

-[% PROCESS "bug/field-help.none.tmpl" %] - [% SET field_help_map = {} %] [% FOREACH field = bug_fields.keys %] [% SET field_desc = field_descs.$field %]