bzrmirror%bugzilla.org 9edbaf529a typo
git-svn-id: svn://10.0.0.236/trunk@265865 18797224-902f-48f8-a5cc-f745e15eee43
2015-03-14 18:15:17 +00:00

98 lines
3.4 KiB
Perl

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
# This Source Code Form is "Incompatible With Secondary Licenses", as
# defined by the Mozilla Public License, v. 2.0.
package Bugzilla::Extension::Testopia::Admin;
use strict;
use warnings;
use Bugzilla::Constants;
use Bugzilla::Util;
use Bugzilla::Error;
use Bugzilla::Extension::Testopia::TestPlan;
sub report {
my ($vars) = @_;
my $input = Bugzilla->input_params;
my $template = Bugzilla->template;
my $plan = Bugzilla::Extension::Testopia::TestPlan->new({});
$vars->{plan} = $plan;
Bugzilla->login(LOGIN_REQUIRED);
my $cgi = Bugzilla->cgi;
print $cgi->header();
# Make sure user is a Bugzilla admin.
ThrowUserError('testopia-read-only', { 'object' => {'type' => 'Testopia administration'}})
unless Bugzilla->user->in_group('admin');
my $action = $input->{'action'} || '';
my $item = $input->{'item'} || '';
if ($item ne 'plan_type') {
$template->process('testopia/admin/show.html.tmpl', $vars)
or ThrowTemplateError($template->error());
}
elsif ($action eq 'edit') {
my $type_id = $input->{'type_id'};
detaint_natural($type_id);
# Make sure test id exists.
$vars->{'type'} = $plan->plan_type_ref($type_id)
|| ThrowUserError("invalid-test-id-non-existent", {'id' => $type_id, 'type' => 'Plan Type'});
$template->process("testopia/admin/plantypes/edit.html.tmpl", $vars)
or ThrowTemplateError($template->error());
}
elsif ($action eq 'doedit') {
my $type_id = $input->{'type_id'};
my $type_name = $input->{'name'} || '';
my $type_desc = $input->{'description'} || '';
# Type name is required.
ThrowUserError('testopia-missing-required-field', {'field' => 'name'}) if $type_name eq '';
detaint_natural($type_id);
# Make sure test id exists.
ThrowUserError("invalid-test-id-non-existent", {'id' => $type_id, 'type' => 'Plan Type'})
unless $plan->plan_type_ref($type_id);
trick_taint($type_name);
trick_taint($type_desc);
$plan->update_plan_type($type_id, $type_name, $type_desc);
$template->process("testopia/admin/plantypes/show.html.tmpl", $vars)
or ThrowTemplateError($template->error());
}
elsif ($action eq 'add') {
$template->process("testopia/admin/plantypes/add.html.tmpl", $vars)
or ThrowTemplateError($template->error());
}
elsif ($action eq 'doadd') {
my $type_name = $input->{'name'} || '';
my $type_desc = $input->{'description'} || '';
# Type name is required
ThrowUserError('testopia-missing-required-field', {'field' => 'name'}) if $type_name eq '';
trick_taint($type_name);
trick_taint($type_desc);
# Type name must be unique
ThrowUserError('testopia-name-not-unique', {'object' => 'Plan Type', 'name' => $type_name})
if $plan->check_plan_type($type_name);
$plan->add_plan_type($type_name, $type_desc);
$template->process("testopia/admin/plantypes/show.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
}
else {
$template->process("testopia/admin/plantypes/show.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
}
}
1;