summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKalpesh Krishna <kalpeshk2011@gmail.com>2016-08-29 19:22:51 +0200
committerDylan William Hardison <dylan@hardison.net>2016-08-29 19:22:51 +0200
commit8ec323b76f91c1fe3eb5da1a103853e7e39462cd (patch)
tree323c7a7b74c1debb8010175f8e2484484fe7aa57
parenta4751a09cf5864c868db0dc8277d465810f63dfe (diff)
downloadbugzilla-8ec323b76f91c1fe3eb5da1a103853e7e39462cd.tar.gz
bugzilla-8ec323b76f91c1fe3eb5da1a103853e7e39462cd.tar.xz
Bug 1294478 - Move JSON serialization out of the templates and into perl to improve performance
-rwxr-xr-xenter_bug.cgi29
-rw-r--r--template/en/default/bug/create/create.html.tmpl40
2 files changed, 35 insertions, 34 deletions
diff --git a/enter_bug.cgi b/enter_bug.cgi
index afaffd752..697b6c8df 100755
--- a/enter_bug.cgi
+++ b/enter_bug.cgi
@@ -52,6 +52,7 @@ use Bugzilla::Token;
use Bugzilla::Field;
use Bugzilla::Status;
use Bugzilla::UserAgent;
+use JSON::XS qw(encode_json);
my $user = Bugzilla->login(LOGIN_REQUIRED);
@@ -438,7 +439,33 @@ my $format = $template->get_format("bug/create/create",
scalar $cgi->param('format'),
scalar $cgi->param('ctype'));
+my %data;
+my $count = 0;
+foreach my $c (@{ $product->components }) {
+ next if not $c->is_active;
+ $data{components}[$count] = $c->name;
+ $data{comp_desc}[$count] = $c->description;
+ $data{initialowners}[$count] = $c->default_assignee->login;
+ my @flag_list;
+ foreach my $f (@{ $c->flag_types->{bug} }) {
+ push @flag_list, $f->id;
+ }
+ foreach my $f (@{ $c->flag_types->{attachment} }) {
+ push @flag_list, $f->id;
+ }
+ $data{flags}[$count] = join(',', @flag_list);
+ $count++;
+ if (Bugzilla->params->{'useqacontact'}) {
+ $data{initialqacontacts}[$count] = $c->default_qa_contact->login;
+ }
+ my @initial_cc_list;
+ foreach my $cc_user (@{ $c->initial_cc }) {
+ push @initial_cc_list, $cc_user->login;
+ }
+ $data{initialccs}[$count] = join(', ', @initial_cc_list);
+}
+$vars->{data} = encode_json(\%data);
print $cgi->header($format->{'ctype'});
$template->process($format->{'template'}, $vars)
- || ThrowTemplateError($template->error());
+ || ThrowTemplateError($template->error());
diff --git a/template/en/default/bug/create/create.html.tmpl b/template/en/default/bug/create/create.html.tmpl
index ba5d08273..4103c16dc 100644
--- a/template/en/default/bug/create/create.html.tmpl
+++ b/template/en/default/bug/create/create.html.tmpl
@@ -63,43 +63,17 @@ function initCrashSignatureField() {
'cf_crash_signature_action', 'cf_crash_signature');
[% END %]
}
-
-var initialowners = new Array([% product.components.size %]);
+var data = JSON.parse('[% data FILTER js %]');
+var initialowners = data["initialowners"];
var last_initialowner;
-var initialccs = new Array([% product.components.size %]);
-var components = new Array([% product.components.size %]);
-var comp_desc = new Array([% product.components.size %]);
-var flags = new Array([% product.components.size %]);
+var initialccs = data["initialccs"];
+var components = data["components"];
+var comp_desc = data["comp_desc"];
+var flags = data["flags"];
[% IF Param("useqacontact") %]
- var initialqacontacts = new Array([% product.components.size %]);
+ var initialqacontacts = data["initialqacontacts"];
var last_initialqacontact;
[% END %]
-[% count = 0 %]
-[%- FOREACH c = product.components %]
- [% NEXT IF NOT c.is_active %]
- components[[% count %]] = "[% c.name FILTER js %]";
- comp_desc[[% count %]] = "[% c.description FILTER html_light FILTER js %]";
- initialowners[[% count %]] = "[% c.default_assignee.login FILTER js %]";
- [% flag_list = [] %]
- [% FOREACH f = c.flag_types.bug %]
- [% flag_list.push(f.id) %]
- [% END %]
- [% FOREACH f = c.flag_types.attachment %]
- [% flag_list.push(f.id) %]
- [% END %]
- flags[[% count %]] = [[% flag_list.join(",") FILTER js %]];
- [% IF Param("useqacontact") %]
- initialqacontacts[[% count %]] = "[% c.default_qa_contact.login FILTER js %]";
- [% END %]
-
- [% SET initial_cc_list = [] %]
- [% FOREACH cc_user = c.initial_cc %]
- [% initial_cc_list.push(cc_user.login) %]
- [% END %]
- initialccs[[% count %]] = "[% initial_cc_list.join(', ') FILTER js %]";
-
- [% count = count + 1 %]
-[%- END %]
function set_assign_to() {
// Based on the selected component, fill the "Assign To:" field