summaryrefslogtreecommitdiffstats
path: root/enter_bug.cgi
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 /enter_bug.cgi
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
Diffstat (limited to 'enter_bug.cgi')
-rwxr-xr-xenter_bug.cgi29
1 files changed, 28 insertions, 1 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());