зеркало из https://github.com/mozilla/pjs.git
Bug 325487: Admin pages should require less "clicks" (remove useless confirmation pages) - Patch by Fr��d��ric Buclin <LpSolit@gmail.com> r=justdave r=mkanat a=LpSolit
This commit is contained in:
Родитель
bf145b9c31
Коммит
6705785212
|
@ -17,8 +17,8 @@
|
|||
#
|
||||
# Contributor(s): Albert Ting <alt@sonic.net>
|
||||
# Max Kanat-Alexander <mkanat@bugzilla.org>
|
||||
#
|
||||
# Direct any questions on this source code to mozilla.org
|
||||
# Frédéric Buclin <LpSolit@gmail.com>
|
||||
|
||||
|
||||
use strict;
|
||||
use lib qw(. lib);
|
||||
|
@ -39,6 +39,9 @@ sub LoadTemplate {
|
|||
my $action = shift;
|
||||
my $cgi = Bugzilla->cgi;
|
||||
my $template = Bugzilla->template;
|
||||
|
||||
$vars->{'classifications'} = [Bugzilla::Classification::get_all_classifications()]
|
||||
if ($action eq 'select');
|
||||
# There is currently only one section about classifications,
|
||||
# so all pages point to it. Let's define it here.
|
||||
$vars->{'doc_section'} = 'classifications.html';
|
||||
|
@ -77,14 +80,7 @@ my $token = $cgi->param('token');
|
|||
#
|
||||
# action='' -> Show nice list of classifications
|
||||
#
|
||||
|
||||
unless ($action) {
|
||||
my @classifications =
|
||||
Bugzilla::Classification::get_all_classifications();
|
||||
|
||||
$vars->{'classifications'} = \@classifications;
|
||||
LoadTemplate("select");
|
||||
}
|
||||
LoadTemplate('select') unless $action;
|
||||
|
||||
#
|
||||
# action='add' -> present form for parameters for new classification
|
||||
|
@ -129,10 +125,13 @@ if ($action eq 'new') {
|
|||
$dbh->do("INSERT INTO classifications (name, description, sortkey)
|
||||
VALUES (?, ?, ?)", undef, ($class_name, $description, $sortkey));
|
||||
|
||||
$vars->{'classification'} = $class_name;
|
||||
|
||||
delete_token($token);
|
||||
LoadTemplate($action);
|
||||
|
||||
$vars->{'message'} = 'classification_created';
|
||||
$vars->{'classification'} = new Bugzilla::Classification({name => $class_name});
|
||||
$vars->{'classifications'} = [Bugzilla::Classification::get_all_classifications];
|
||||
$vars->{'token'} = issue_session_token('reclassify_classifications');
|
||||
LoadTemplate('reclassify');
|
||||
}
|
||||
|
||||
#
|
||||
|
@ -177,20 +176,20 @@ if ($action eq 'delete') {
|
|||
# lock the tables before we start to change everything:
|
||||
$dbh->bz_start_transaction();
|
||||
|
||||
# delete
|
||||
$dbh->do("DELETE FROM classifications WHERE id = ?", undef,
|
||||
$classification->id);
|
||||
|
||||
# update products just in case
|
||||
$dbh->do("UPDATE products SET classification_id = 1
|
||||
WHERE classification_id = ?", undef, $classification->id);
|
||||
|
||||
# delete
|
||||
$dbh->do("DELETE FROM classifications WHERE id = ?", undef,
|
||||
$classification->id);
|
||||
|
||||
$dbh->bz_commit_transaction();
|
||||
|
||||
$vars->{'classification'} = $classification;
|
||||
|
||||
$vars->{'message'} = 'classification_deleted';
|
||||
$vars->{'classification'} = $class_name;
|
||||
delete_token($token);
|
||||
LoadTemplate($action);
|
||||
LoadTemplate('select');
|
||||
}
|
||||
|
||||
#
|
||||
|
@ -267,8 +266,10 @@ if ($action eq 'update') {
|
|||
|
||||
$dbh->bz_commit_transaction();
|
||||
|
||||
$vars->{'message'} = 'classification_updated';
|
||||
$vars->{'classification'} = $class_name;
|
||||
delete_token($token);
|
||||
LoadTemplate($action);
|
||||
LoadTemplate('select');
|
||||
}
|
||||
|
||||
#
|
||||
|
|
|
@ -137,11 +137,12 @@ if ($action eq 'new') {
|
|||
initialqacontact => $default_qa_contact,
|
||||
initial_cc => \@initial_cc });
|
||||
|
||||
$vars->{'message'} = 'component_created';
|
||||
$vars->{'comp'} = $component;
|
||||
$vars->{'product'} = $product;
|
||||
delete_token($token);
|
||||
|
||||
$template->process("admin/components/created.html.tmpl", $vars)
|
||||
$template->process("admin/components/list.html.tmpl", $vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
exit;
|
||||
}
|
||||
|
@ -174,11 +175,13 @@ if ($action eq 'delete') {
|
|||
|
||||
$component->remove_from_db;
|
||||
|
||||
$vars->{'message'} = 'component_deleted';
|
||||
$vars->{'comp'} = $component;
|
||||
$vars->{'product'} = $product;
|
||||
$vars->{'no_edit_component_link'} = 1;
|
||||
delete_token($token);
|
||||
|
||||
$template->process("admin/components/deleted.html.tmpl", $vars)
|
||||
$template->process("admin/components/list.html.tmpl", $vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
exit;
|
||||
}
|
||||
|
@ -234,12 +237,13 @@ if ($action eq 'update') {
|
|||
$component->set_cc_list(\@initial_cc);
|
||||
my $changes = $component->update();
|
||||
|
||||
$vars->{'message'} = 'component_updated';
|
||||
$vars->{'comp'} = $component;
|
||||
$vars->{'product'} = $product;
|
||||
$vars->{'changes'} = $changes;
|
||||
delete_token($token);
|
||||
|
||||
$template->process("admin/components/updated.html.tmpl", $vars)
|
||||
$template->process("admin/components/list.html.tmpl", $vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
exit;
|
||||
}
|
||||
|
|
|
@ -332,15 +332,17 @@ sub insert {
|
|||
|
||||
$dbh->bz_commit_transaction();
|
||||
|
||||
$vars->{'name'} = $cgi->param('name');
|
||||
$vars->{'name'} = $name;
|
||||
$vars->{'message'} = "flag_type_created";
|
||||
delete_token($token);
|
||||
|
||||
$vars->{'bug_types'} = Bugzilla::FlagType::match({'target_type' => 'bug'});
|
||||
$vars->{'attachment_types'} = Bugzilla::FlagType::match({'target_type' => 'attachment'});
|
||||
|
||||
# Return the appropriate HTTP response headers.
|
||||
print $cgi->header();
|
||||
|
||||
# Generate and return the UI (HTML page) from the appropriate template.
|
||||
$template->process("global/message.html.tmpl", $vars)
|
||||
$template->process("admin/flag-type/list.html.tmpl", $vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
}
|
||||
|
||||
|
@ -427,15 +429,17 @@ sub update {
|
|||
undef, $id);
|
||||
}
|
||||
|
||||
$vars->{'name'} = $cgi->param('name');
|
||||
$vars->{'name'} = $name;
|
||||
$vars->{'message'} = "flag_type_changes_saved";
|
||||
delete_token($token);
|
||||
|
||||
$vars->{'bug_types'} = Bugzilla::FlagType::match({'target_type' => 'bug'});
|
||||
$vars->{'attachment_types'} = Bugzilla::FlagType::match({'target_type' => 'attachment'});
|
||||
|
||||
# Return the appropriate HTTP response headers.
|
||||
print $cgi->header();
|
||||
|
||||
# Generate and return the UI (HTML page) from the appropriate template.
|
||||
$template->process("global/message.html.tmpl", $vars)
|
||||
$template->process("admin/flag-type/list.html.tmpl", $vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
}
|
||||
|
||||
|
@ -484,11 +488,13 @@ sub deleteType {
|
|||
$vars->{'message'} = "flag_type_deleted";
|
||||
delete_token($token);
|
||||
|
||||
$vars->{'bug_types'} = Bugzilla::FlagType::match({'target_type' => 'bug'});
|
||||
$vars->{'attachment_types'} = Bugzilla::FlagType::match({'target_type' => 'attachment'});
|
||||
|
||||
# Return the appropriate HTTP response headers.
|
||||
print $cgi->header();
|
||||
|
||||
# Generate and return the UI (HTML page) from the appropriate template.
|
||||
$template->process("global/message.html.tmpl", $vars)
|
||||
$template->process("admin/flag-type/list.html.tmpl", $vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
}
|
||||
|
||||
|
@ -509,11 +515,14 @@ sub deactivate {
|
|||
$vars->{'flag_type'} = $flag_type;
|
||||
delete_token($token);
|
||||
|
||||
$vars->{'bug_types'} = Bugzilla::FlagType::match({'target_type' => 'bug'});
|
||||
$vars->{'attachment_types'} = Bugzilla::FlagType::match({'target_type' => 'attachment'});
|
||||
|
||||
# Return the appropriate HTTP response headers.
|
||||
print $cgi->header();
|
||||
|
||||
# Generate and return the UI (HTML page) from the appropriate template.
|
||||
$template->process("global/message.html.tmpl", $vars)
|
||||
$template->process("admin/flag-type/list.html.tmpl", $vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
}
|
||||
|
||||
|
|
|
@ -257,7 +257,7 @@ if ($action eq 'new') {
|
|||
VALUES (?, ?, 1, ?, ?, ?)',
|
||||
undef, ($name, $desc, $regexp, $isactive, $icon_url));
|
||||
|
||||
my $gid = $dbh->bz_last_key('groups', 'id');
|
||||
my $group = new Bugzilla::Group({name => $name});
|
||||
my $admin = Bugzilla::Group->new({name => 'admin'})->id();
|
||||
# Since we created a new group, give the "admin" group all privileges
|
||||
# initially.
|
||||
|
@ -265,9 +265,9 @@ if ($action eq 'new') {
|
|||
(member_id, grantor_id, grant_type)
|
||||
VALUES (?, ?, ?)');
|
||||
|
||||
$sth->execute($admin, $gid, GROUP_MEMBERSHIP);
|
||||
$sth->execute($admin, $gid, GROUP_BLESS);
|
||||
$sth->execute($admin, $gid, GROUP_VISIBLE);
|
||||
$sth->execute($admin, $group->id, GROUP_MEMBERSHIP);
|
||||
$sth->execute($admin, $group->id, GROUP_BLESS);
|
||||
$sth->execute($admin, $group->id, GROUP_VISIBLE);
|
||||
|
||||
# Permit all existing products to use the new group if makeproductgroups.
|
||||
if ($cgi->param('insertnew')) {
|
||||
|
@ -275,13 +275,18 @@ if ($action eq 'new') {
|
|||
(group_id, product_id, entry, membercontrol,
|
||||
othercontrol, canedit)
|
||||
SELECT ?, products.id, 0, ?, ?, 0 FROM products',
|
||||
undef, ($gid, CONTROLMAPSHOWN, CONTROLMAPNA));
|
||||
undef, ($group->id, CONTROLMAPSHOWN, CONTROLMAPNA));
|
||||
}
|
||||
Bugzilla::Group::RederiveRegexp($regexp, $gid);
|
||||
Bugzilla::Group::RederiveRegexp($regexp, $group->id);
|
||||
delete_token($token);
|
||||
|
||||
$vars->{'message'} = 'group_created';
|
||||
$vars->{'group'} = $group;
|
||||
get_current_and_available($group, $vars);
|
||||
$vars->{'token'} = issue_session_token('edit_group');
|
||||
|
||||
print $cgi->header();
|
||||
$template->process("admin/groups/created.html.tmpl", $vars)
|
||||
$template->process("admin/groups/edit.html.tmpl", $vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
exit;
|
||||
}
|
||||
|
@ -454,10 +459,12 @@ if ($action eq 'delete') {
|
|||
|
||||
delete_token($token);
|
||||
|
||||
print $cgi->header();
|
||||
$template->process("admin/groups/deleted.html.tmpl", $vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
$vars->{'message'} = 'group_deleted';
|
||||
$vars->{'groups'} = [Bugzilla::Group->get_all];
|
||||
|
||||
print $cgi->header();
|
||||
$template->process("admin/groups/list.html.tmpl", $vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
exit;
|
||||
}
|
||||
|
||||
|
@ -521,9 +528,13 @@ if ($action eq 'remove_regexp') {
|
|||
$vars->{'users'} = \@deleted;
|
||||
$vars->{'regexp'} = $regexp;
|
||||
delete_token($token);
|
||||
|
||||
|
||||
$vars->{'message'} = 'group_membership_removed';
|
||||
$vars->{'group'} = $group->name;
|
||||
$vars->{'groups'} = [Bugzilla::Group->get_all];
|
||||
|
||||
print $cgi->header();
|
||||
$template->process("admin/groups/remove.html.tmpl", $vars)
|
||||
$template->process("admin/groups/list.html.tmpl", $vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
|
||||
exit;
|
||||
|
|
|
@ -92,14 +92,15 @@ if ($action eq 'new') {
|
|||
|
||||
print $cgi->header();
|
||||
|
||||
$vars->{'message'} = 'keyword_created';
|
||||
$vars->{'name'} = $keyword->name;
|
||||
$template->process("admin/keywords/created.html.tmpl", $vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
$vars->{'keywords'} = Bugzilla::Keyword->get_all_with_bug_count();
|
||||
|
||||
$template->process("admin/keywords/list.html.tmpl", $vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#
|
||||
# action='edit' -> present the edit keywords from
|
||||
|
@ -132,16 +133,19 @@ if ($action eq 'update') {
|
|||
|
||||
$keyword->set_name($cgi->param('name'));
|
||||
$keyword->set_description($cgi->param('description'));
|
||||
$keyword->update();
|
||||
my $changes = $keyword->update();
|
||||
|
||||
delete_token($token);
|
||||
|
||||
print $cgi->header();
|
||||
|
||||
$vars->{'message'} = 'keyword_updated';
|
||||
$vars->{'keyword'} = $keyword;
|
||||
$template->process("admin/keywords/rebuild-cache.html.tmpl", $vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
$vars->{'changes'} = $changes;
|
||||
$vars->{'keywords'} = Bugzilla::Keyword->get_all_with_bug_count();
|
||||
|
||||
$template->process("admin/keywords/list.html.tmpl", $vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
exit;
|
||||
}
|
||||
|
||||
|
@ -173,9 +177,11 @@ if ($action eq 'delete') {
|
|||
|
||||
print $cgi->header();
|
||||
|
||||
$template->process("admin/keywords/rebuild-cache.html.tmpl", $vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
$vars->{'message'} = 'keyword_deleted';
|
||||
$vars->{'keywords'} = Bugzilla::Keyword->get_all_with_bug_count();
|
||||
|
||||
$template->process("admin/keywords/list.html.tmpl", $vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
exit;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,19 +1,23 @@
|
|||
#!/usr/bin/perl -wT
|
||||
# -*- Mode: perl; indent-tabs-mode: nil -*-
|
||||
|
||||
#
|
||||
# This is a script to edit the target milestones. It is largely a copy of
|
||||
# the editversions.cgi script, since the two fields were set up in a
|
||||
# very similar fashion.
|
||||
# The contents of this file are subject to the Mozilla Public
|
||||
# License Version 1.1 (the "License"); you may not use this file
|
||||
# except in compliance with the License. You may obtain a copy of
|
||||
# the License at http://www.mozilla.org/MPL/
|
||||
#
|
||||
# (basically replace each occurrence of 'milestone' with 'version', and
|
||||
# you'll have the original script)
|
||||
# Software distributed under the License is distributed on an "AS
|
||||
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||
# implied. See the License for the specific language governing
|
||||
# rights and limitations under the License.
|
||||
#
|
||||
# Matt Masson <matthew@zeroknowledge.com>
|
||||
# The Initial Developer of the Original Code is Matt Masson.
|
||||
# Portions created by Matt Masson are Copyright (C) 2000 Matt Masson.
|
||||
# All Rights Reserved.
|
||||
#
|
||||
# Contributors : Gavin Shelley <bugzilla@chimpychompy.org>
|
||||
# Contributors : Matt Masson <matthew@zeroknowledge.com>
|
||||
# Gavin Shelley <bugzilla@chimpychompy.org>
|
||||
# Frédéric Buclin <LpSolit@gmail.com>
|
||||
#
|
||||
|
||||
use strict;
|
||||
use lib qw(. lib);
|
||||
|
@ -116,9 +120,10 @@ if ($action eq 'new') {
|
|||
sortkey => $sortkey });
|
||||
delete_token($token);
|
||||
|
||||
$vars->{'message'} = 'milestone_created';
|
||||
$vars->{'milestone'} = $milestone;
|
||||
$vars->{'product'} = $product;
|
||||
$template->process("admin/milestones/created.html.tmpl", $vars)
|
||||
$template->process("admin/milestones/list.html.tmpl", $vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
exit;
|
||||
}
|
||||
|
@ -158,10 +163,12 @@ if ($action eq 'delete') {
|
|||
$milestone->remove_from_db;
|
||||
delete_token($token);
|
||||
|
||||
$vars->{'message'} = 'milestone_deleted';
|
||||
$vars->{'milestone'} = $milestone;
|
||||
$vars->{'product'} = $product;
|
||||
$vars->{'no_edit_milestone_link'} = 1;
|
||||
|
||||
$template->process("admin/milestones/deleted.html.tmpl", $vars)
|
||||
$template->process("admin/milestones/list.html.tmpl", $vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
exit;
|
||||
}
|
||||
|
@ -202,10 +209,11 @@ if ($action eq 'update') {
|
|||
|
||||
delete_token($token);
|
||||
|
||||
$vars->{'message'} = 'milestone_updated';
|
||||
$vars->{'milestone'} = $milestone;
|
||||
$vars->{'product'} = $product;
|
||||
$vars->{'changes'} = $changes;
|
||||
$template->process("admin/milestones/updated.html.tmpl", $vars)
|
||||
$template->process("admin/milestones/list.html.tmpl", $vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
exit;
|
||||
}
|
||||
|
|
|
@ -26,10 +26,6 @@
|
|||
# Frédéric Buclin <LpSolit@gmail.com>
|
||||
# Greg Hendricks <ghendricks@novell.com>
|
||||
# Lance Larsh <lance.larsh@oracle.com>
|
||||
#
|
||||
# Direct any questions on this source code to
|
||||
#
|
||||
# Holger Schurig <holgerschurig@nikocity.de>
|
||||
|
||||
use strict;
|
||||
use lib qw(. lib);
|
||||
|
@ -73,6 +69,28 @@ $user->in_group('editcomponents')
|
|||
action => "edit",
|
||||
object => "products"});
|
||||
|
||||
sub get_group_controls {
|
||||
my $product = shift;
|
||||
|
||||
my $group_controls = $product->group_controls;
|
||||
# Convert Group Controls (membercontrol and othercontrol) from
|
||||
# integer to string to display Membercontrol/Othercontrol names
|
||||
# in the template.
|
||||
my $constants = {
|
||||
(CONTROLMAPNA) => 'NA',
|
||||
(CONTROLMAPSHOWN) => 'Shown',
|
||||
(CONTROLMAPDEFAULT) => 'Default',
|
||||
(CONTROLMAPMANDATORY) => 'Mandatory'};
|
||||
|
||||
foreach my $group (keys %$group_controls) {
|
||||
foreach my $control ('membercontrol', 'othercontrol') {
|
||||
$group_controls->{$group}->{$control} =
|
||||
$constants->{$group_controls->{$group}->{$control}};
|
||||
}
|
||||
}
|
||||
return $group_controls;
|
||||
}
|
||||
|
||||
#
|
||||
# often used variables
|
||||
#
|
||||
|
@ -339,9 +357,14 @@ if ($action eq 'new') {
|
|||
}
|
||||
delete_token($token);
|
||||
|
||||
$vars->{'message'} = 'product_created';
|
||||
$vars->{'product'} = $product;
|
||||
$vars->{'classification'} = new Bugzilla::Classification($product->classification_id)
|
||||
if Bugzilla->params->{'useclassification'};
|
||||
$vars->{'group_controls'} = get_group_controls($product);
|
||||
$vars->{'token'} = issue_session_token('edit_product');
|
||||
|
||||
$template->process("admin/products/created.html.tmpl", $vars)
|
||||
$template->process("admin/products/edit.html.tmpl", $vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
exit;
|
||||
}
|
||||
|
@ -382,8 +405,6 @@ if ($action eq 'delete') {
|
|||
my $product = $user->check_can_admin_product($product_name);
|
||||
check_token_data($token, 'delete_product');
|
||||
|
||||
$vars->{'product'} = $product;
|
||||
|
||||
if (Bugzilla->params->{'useclassification'}) {
|
||||
my $classification =
|
||||
Bugzilla::Classification::check_classification($classification_name);
|
||||
|
@ -442,10 +463,35 @@ if ($action eq 'delete') {
|
|||
|
||||
$dbh->bz_commit_transaction();
|
||||
|
||||
# We have to delete these internal variables, else we get
|
||||
# the old lists of products and classifications again.
|
||||
delete $user->{selectable_products};
|
||||
delete $user->{selectable_classifications};
|
||||
|
||||
delete_token($token);
|
||||
|
||||
$template->process("admin/products/deleted.html.tmpl", $vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
$vars->{'message'} = 'product_deleted';
|
||||
$vars->{'product'} = $product;
|
||||
$vars->{'no_edit_product_link'} = 1;
|
||||
|
||||
if (Bugzilla->params->{'useclassification'}) {
|
||||
$vars->{'classifications'} = $user->get_selectable_classifications;
|
||||
|
||||
$template->process("admin/products/list-classifications.html.tmpl", $vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
}
|
||||
else {
|
||||
my $products = $user->get_selectable_products;
|
||||
# If the user has editcomponents privs for some products only,
|
||||
# we have to restrict the list of products to display.
|
||||
unless ($user->in_group('editcomponents')) {
|
||||
$products = $user->get_products_by_permission('editcomponents');
|
||||
}
|
||||
$vars->{'products'} = $products;
|
||||
|
||||
$template->process("admin/products/list.html.tmpl", $vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
}
|
||||
exit;
|
||||
}
|
||||
|
||||
|
@ -475,30 +521,12 @@ if ($action eq 'edit' || (!$action && $product_name)) {
|
|||
}
|
||||
$vars->{'classification'} = $classification;
|
||||
}
|
||||
my $group_controls = $product->group_controls;
|
||||
|
||||
# Convert Group Controls(membercontrol and othercontrol) from
|
||||
# integer to string to display Membercontrol/Othercontrol names
|
||||
# at the template. <gabriel@async.com.br>
|
||||
my $constants = {
|
||||
(CONTROLMAPNA) => 'NA',
|
||||
(CONTROLMAPSHOWN) => 'Shown',
|
||||
(CONTROLMAPDEFAULT) => 'Default',
|
||||
(CONTROLMAPMANDATORY) => 'Mandatory'};
|
||||
|
||||
foreach my $group (keys(%$group_controls)) {
|
||||
foreach my $control ('membercontrol', 'othercontrol') {
|
||||
$group_controls->{$group}->{$control} =
|
||||
$constants->{$group_controls->{$group}->{$control}};
|
||||
}
|
||||
}
|
||||
$vars->{'group_controls'} = $group_controls;
|
||||
$vars->{'group_controls'} = get_group_controls($product);
|
||||
$vars->{'product'} = $product;
|
||||
$vars->{'token'} = issue_session_token('edit_product');
|
||||
|
||||
$template->process("admin/products/edit.html.tmpl", $vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
|
||||
exit;
|
||||
}
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
# The Original Code is the Bugzilla Bug Tracking System.
|
||||
#
|
||||
# Contributor(s): Shane H. W. Travis <travis@sedsystems.ca>
|
||||
#
|
||||
# Frédéric Buclin <LpSolit@gmail.com>
|
||||
|
||||
use strict;
|
||||
use lib qw(. lib);
|
||||
|
@ -27,51 +27,10 @@ use Bugzilla::User::Setting;
|
|||
use Bugzilla::Token;
|
||||
|
||||
my $template = Bugzilla->template;
|
||||
local our $vars = {};
|
||||
|
||||
###############################
|
||||
### Subroutine Definitions ###
|
||||
###############################
|
||||
|
||||
sub LoadSettings {
|
||||
|
||||
$vars->{'settings'} = Bugzilla::User::Setting::get_defaults();
|
||||
|
||||
my @setting_list = keys %{$vars->{'settings'}};
|
||||
$vars->{'setting_names'} = \@setting_list;
|
||||
}
|
||||
|
||||
sub SaveSettings{
|
||||
|
||||
my $cgi = Bugzilla->cgi;
|
||||
|
||||
$vars->{'settings'} = Bugzilla::User::Setting::get_defaults();
|
||||
my @setting_list = keys %{$vars->{'settings'}};
|
||||
|
||||
foreach my $name (@setting_list) {
|
||||
my $changed = 0;
|
||||
my $old_enabled = $vars->{'settings'}->{$name}->{'is_enabled'};
|
||||
my $old_value = $vars->{'settings'}->{$name}->{'default_value'};
|
||||
my $enabled = defined $cgi->param("${name}-enabled") || 0;
|
||||
my $value = $cgi->param("${name}");
|
||||
my $setting = new Bugzilla::User::Setting($name);
|
||||
|
||||
$setting->validate_value($value);
|
||||
|
||||
if ( ($old_enabled != $enabled) ||
|
||||
($old_value ne $value) ) {
|
||||
Bugzilla::User::Setting::set_default($name, $value, $enabled);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
###################
|
||||
### Live code ###
|
||||
###################
|
||||
|
||||
my $user = Bugzilla->login(LOGIN_REQUIRED);
|
||||
|
||||
my $cgi = Bugzilla->cgi;
|
||||
my $vars = {};
|
||||
|
||||
print $cgi->header;
|
||||
|
||||
$user->in_group('tweakparams')
|
||||
|
@ -79,32 +38,36 @@ $user->in_group('tweakparams')
|
|||
action => "modify",
|
||||
object => "settings"});
|
||||
|
||||
my $action = trim($cgi->param('action') || 'load');
|
||||
my $token = $cgi->param('token');
|
||||
my $action = trim($cgi->param('action') || '');
|
||||
my $token = $cgi->param('token');
|
||||
|
||||
if ($action eq 'update') {
|
||||
check_token_data($token, 'edit_settings');
|
||||
SaveSettings();
|
||||
my $settings = Bugzilla::User::Setting::get_defaults();
|
||||
my $changed = 0;
|
||||
|
||||
foreach my $name (keys %$settings) {
|
||||
my $old_enabled = $settings->{$name}->{'is_enabled'};
|
||||
my $old_value = $settings->{$name}->{'default_value'};
|
||||
my $enabled = defined $cgi->param("${name}-enabled") || 0;
|
||||
my $value = $cgi->param("${name}");
|
||||
my $setting = new Bugzilla::User::Setting($name);
|
||||
|
||||
$setting->validate_value($value);
|
||||
|
||||
if ($old_enabled != $enabled || $old_value ne $value) {
|
||||
Bugzilla::User::Setting::set_default($name, $value, $enabled);
|
||||
$changed = 1;
|
||||
}
|
||||
}
|
||||
$vars->{'message'} = 'default_settings_updated';
|
||||
$vars->{'changes_saved'} = $changed;
|
||||
delete_token($token);
|
||||
$vars->{'changes_saved'} = 1;
|
||||
|
||||
$template->process("admin/settings/updated.html.tmpl", $vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
|
||||
exit;
|
||||
}
|
||||
|
||||
if ($action eq 'load') {
|
||||
LoadSettings();
|
||||
$vars->{'token'} = issue_session_token('edit_settings');
|
||||
# Don't use $settings as defaults may have changed.
|
||||
$vars->{'settings'} = Bugzilla::User::Setting::get_defaults();
|
||||
$vars->{'token'} = issue_session_token('edit_settings');
|
||||
|
||||
$template->process("admin/settings/edit.html.tmpl", $vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
|
||||
exit;
|
||||
}
|
||||
|
||||
#
|
||||
# No valid action found
|
||||
#
|
||||
ThrowUserError('no_valid_action', {'field' => "settings"});
|
||||
$template->process("admin/settings/edit.html.tmpl", $vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
|
|
|
@ -110,7 +110,7 @@ Bugzilla->login(LOGIN_REQUIRED);
|
|||
my $dbh = Bugzilla->dbh;
|
||||
my $cgi = Bugzilla->cgi;
|
||||
my $template = Bugzilla->template;
|
||||
my $vars = {};
|
||||
local our $vars = {};
|
||||
|
||||
# Replace this entry by separate entries in templates when
|
||||
# the documentation about legal values becomes bigger.
|
||||
|
@ -134,7 +134,7 @@ my $token = $cgi->param('token');
|
|||
|
||||
# Gives the name of the parameter associated with the field
|
||||
# and representing its default value.
|
||||
my %defaults;
|
||||
local our %defaults;
|
||||
$defaults{'op_sys'} = 'defaultopsys';
|
||||
$defaults{'rep_platform'} = 'defaultplatform';
|
||||
$defaults{'priority'} = 'defaultpriority';
|
||||
|
@ -142,7 +142,7 @@ $defaults{'bug_severity'} = 'defaultseverity';
|
|||
|
||||
# Alternatively, a list of non-editable values can be specified.
|
||||
# In this case, only the sortkey can be altered.
|
||||
my %static;
|
||||
local our %static;
|
||||
$static{'bug_status'} = ['UNCONFIRMED', Bugzilla->params->{'duplicate_or_move_bug_status'}];
|
||||
$static{'resolution'} = ['', 'FIXED', 'MOVED', 'DUPLICATE'];
|
||||
$static{$_->name} = ['---'] foreach (@custom_fields);
|
||||
|
@ -169,10 +169,8 @@ my $field_obj = FieldMustExist($field);
|
|||
$vars->{'field'} = $field_obj;
|
||||
trick_taint($field);
|
||||
|
||||
#
|
||||
# action='' -> Show nice list of values.
|
||||
#
|
||||
unless ($action) {
|
||||
sub display_field_values {
|
||||
my $field = $vars->{'field'}->name;
|
||||
my $fieldvalues =
|
||||
$dbh->selectall_arrayref("SELECT value AS name, sortkey"
|
||||
. " FROM $field ORDER BY sortkey, value",
|
||||
|
@ -181,12 +179,16 @@ unless ($action) {
|
|||
$vars->{'values'} = $fieldvalues;
|
||||
$vars->{'default'} = Bugzilla->params->{$defaults{$field}} if defined $defaults{$field};
|
||||
$vars->{'static'} = $static{$field} if exists $static{$field};
|
||||
|
||||
$template->process("admin/fieldvalues/list.html.tmpl", $vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
|
||||
exit;
|
||||
}
|
||||
|
||||
#
|
||||
# action='' -> Show nice list of values.
|
||||
#
|
||||
display_field_values() unless $action;
|
||||
|
||||
#
|
||||
# action='add' -> show form for adding new field value.
|
||||
|
@ -254,12 +256,9 @@ if ($action eq 'new') {
|
|||
|
||||
delete_token($token);
|
||||
|
||||
$vars->{'message'} = 'field_value_created';
|
||||
$vars->{'value'} = $value;
|
||||
$template->process("admin/fieldvalues/created.html.tmpl",
|
||||
$vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
|
||||
exit;
|
||||
display_field_values();
|
||||
}
|
||||
|
||||
|
||||
|
@ -362,10 +361,9 @@ if ($action eq 'delete') {
|
|||
$dbh->bz_commit_transaction();
|
||||
delete_token($token);
|
||||
|
||||
$template->process("admin/fieldvalues/deleted.html.tmpl",
|
||||
$vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
exit;
|
||||
$vars->{'message'} = 'field_value_deleted';
|
||||
$vars->{'no_edit_link'} = 1;
|
||||
display_field_values();
|
||||
}
|
||||
|
||||
|
||||
|
@ -485,11 +483,8 @@ if ($action eq 'update') {
|
|||
}
|
||||
delete_token($token);
|
||||
|
||||
$template->process("admin/fieldvalues/updated.html.tmpl",
|
||||
$vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
|
||||
exit;
|
||||
$vars->{'message'} = 'field_value_updated';
|
||||
display_field_values();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -22,11 +22,6 @@
|
|||
# Terry Weissman <terry@mozilla.org>
|
||||
# Gavin Shelley <bugzilla@chimpychompy.org>
|
||||
# Frédéric Buclin <LpSolit@gmail.com>
|
||||
#
|
||||
#
|
||||
# Direct any questions on this source code to
|
||||
#
|
||||
# Holger Schurig <holgerschurig@nikocity.de>
|
||||
|
||||
use strict;
|
||||
use lib qw(. lib);
|
||||
|
@ -103,9 +98,6 @@ unless ($action) {
|
|||
exit;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
# action='add' -> present form for parameters for new version
|
||||
#
|
||||
|
@ -121,8 +113,6 @@ if ($action eq 'add') {
|
|||
exit;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#
|
||||
# action='new' -> add version entered in the 'action=add' screen
|
||||
#
|
||||
|
@ -132,17 +122,15 @@ if ($action eq 'new') {
|
|||
my $version = Bugzilla::Version::create($version_name, $product);
|
||||
delete_token($token);
|
||||
|
||||
$vars->{'message'} = 'version_created';
|
||||
$vars->{'version'} = $version;
|
||||
$vars->{'product'} = $product;
|
||||
$template->process("admin/versions/created.html.tmpl", $vars)
|
||||
$template->process("admin/versions/list.html.tmpl", $vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
#
|
||||
# action='del' -> ask if user really wants to delete
|
||||
#
|
||||
|
@ -161,8 +149,6 @@ if ($action eq 'del') {
|
|||
exit;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#
|
||||
# action='delete' -> really delete the version
|
||||
#
|
||||
|
@ -174,17 +160,17 @@ if ($action eq 'delete') {
|
|||
$version->remove_from_db;
|
||||
delete_token($token);
|
||||
|
||||
$vars->{'message'} = 'version_deleted';
|
||||
$vars->{'version'} = $version;
|
||||
$vars->{'product'} = $product;
|
||||
$vars->{'no_edit_version_link'} = 1;
|
||||
|
||||
$template->process("admin/versions/deleted.html.tmpl", $vars)
|
||||
$template->process("admin/versions/list.html.tmpl", $vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#
|
||||
# action='edit' -> present the edit version form
|
||||
#
|
||||
|
@ -204,8 +190,6 @@ if ($action eq 'edit') {
|
|||
exit;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#
|
||||
# action='update' -> update the version
|
||||
#
|
||||
|
@ -223,16 +207,15 @@ if ($action eq 'update') {
|
|||
$dbh->bz_commit_transaction();
|
||||
delete_token($token);
|
||||
|
||||
$vars->{'message'} = 'version_updated';
|
||||
$vars->{'version'} = $version;
|
||||
$vars->{'product'} = $product;
|
||||
$template->process("admin/versions/updated.html.tmpl", $vars)
|
||||
$template->process("admin/versions/list.html.tmpl", $vars)
|
||||
|| ThrowTemplateError($template->error());
|
||||
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#
|
||||
# No valid action found
|
||||
#
|
||||
|
|
|
@ -15,8 +15,7 @@
|
|||
#%]
|
||||
|
||||
[%# INTERFACE:
|
||||
# setting_names: an array of strings
|
||||
# settings: a hash of hashes, keyed by setting_name.
|
||||
# settings: a hash of hashes, keyed by setting name.
|
||||
# Each hash contains:
|
||||
# is_enabled - boolean
|
||||
# default_value - string (global default for this setting)
|
||||
|
@ -56,7 +55,7 @@ page, and the Default Value will automatically apply to everyone.
|
|||
<th>Enabled</th>
|
||||
</tr>
|
||||
|
||||
[% FOREACH name = setting_names %]
|
||||
[% FOREACH name = settings.keys %]
|
||||
[% checkbox_name = name _ '-enabled' %]
|
||||
<tr>
|
||||
<td align="right">
|
||||
|
|
|
@ -173,6 +173,82 @@
|
|||
Click <a href="[% redirect_url FILTER html %]">here</a>
|
||||
if the page does not automatically refresh.
|
||||
|
||||
[% ELSIF message_tag == "classification_created" %]
|
||||
[% title = "New Classification Created" %]
|
||||
The <em>[% classification.name FILTER html %]</em> classification has been created.
|
||||
|
||||
[% ELSIF message_tag == "classification_deleted" %]
|
||||
[% title = "Classification Deleted" %]
|
||||
The <em>[% classification FILTER html %]</em> classification has been deleted.
|
||||
|
||||
[% ELSIF message_tag == "classification_updated" %]
|
||||
[% IF updated_classification || updated_description || updated_sortkey %]
|
||||
[% title = "Classification Updated" %]
|
||||
Changes to the <em>[% classification FILTER html %]</em> classification
|
||||
have been saved:
|
||||
<ul>
|
||||
[% IF updated_classification %]
|
||||
<li>Classification name updated</li>
|
||||
[% END %]
|
||||
[% IF updated_description %]
|
||||
<li>Description updated</li>
|
||||
[% END %]
|
||||
[% IF updated_sortkey %]
|
||||
<li>Sortkey updated</li>
|
||||
[% END %]
|
||||
</ul>
|
||||
[% ELSE %]
|
||||
No changes made to <em>[% classification FILTER html %]</em>.
|
||||
[% END %]
|
||||
|
||||
[% ELSIF message_tag == "component_created" %]
|
||||
[% title = "Component Created" %]
|
||||
The component <em>[% comp.name FILTER html %]</em> has been created.
|
||||
|
||||
[% ELSIF message_tag == "component_deleted" %]
|
||||
[% title = "Component Deleted" %]
|
||||
The component <em>[% comp.name FILTER html %]</em> has been deleted.
|
||||
[% IF comp.bug_count %]
|
||||
All [% terms.bugs %] being in this component and all references
|
||||
to them have also been deleted.
|
||||
[% END %]
|
||||
|
||||
[% ELSIF message_tag == "component_updated" %]
|
||||
[% title = "Component Updated" %]
|
||||
[% IF changes.keys.size %]
|
||||
Changes to the component <em>[% comp.name FILTER html %]</em> have been saved:
|
||||
<ul>
|
||||
[% IF changes.name.defined %]
|
||||
<li>Name updated to '[% comp.name FILTER html %]'</li>
|
||||
[% END %]
|
||||
[% IF changes.description.defined %]
|
||||
<li>Description updated to '[% comp.description FILTER html_light %]'</li>
|
||||
[% END %]
|
||||
[% IF changes.initialowner.defined %]
|
||||
<li>Default assignee updated to '[% comp.default_assignee.login FILTER html %]'</li>
|
||||
[% END %]
|
||||
[% IF changes.initialqacontact.defined %]
|
||||
[% IF comp.default_qa_contact.id %]
|
||||
<li>Default QA contact updated to '[% comp.default_qa_contact.login FILTER html %]'</li>
|
||||
[% ELSE %]
|
||||
<li>Default QA contact deleted</li>
|
||||
[% END %]
|
||||
[% END %]
|
||||
[% IF changes.cc_list.defined %]
|
||||
[% IF comp.initial_cc.size %]
|
||||
[% cc_list = [] %]
|
||||
[% FOREACH cc_user = comp.initial_cc %]
|
||||
[% cc_list.push(cc_user.login) %]
|
||||
[% END %]
|
||||
<li>Default CC list updated to [% cc_list.join(", ") FILTER html %]</li>
|
||||
[% ELSE %]
|
||||
<li>Default CC list deleted</li>
|
||||
[% END %]
|
||||
[% END %]
|
||||
[% ELSE %]
|
||||
No changes made to <em>[% comp.name FILTER html %]</em>.
|
||||
[% END %]
|
||||
|
||||
[% ELSIF message_tag == "custom_field_created" %]
|
||||
[% title = "Custom Field Created" %]
|
||||
The new custom field '[% field.name FILTER html %]' has been
|
||||
|
@ -183,6 +259,13 @@
|
|||
Properties of the '[% field.name FILTER html %]' field have been
|
||||
successfully updated.
|
||||
|
||||
[% ELSIF message_tag == "default_settings_updated" %]
|
||||
[% IF changes_saved %]
|
||||
Changes to default preferences have been saved.
|
||||
[% ELSE %]
|
||||
No changes made.
|
||||
[% END %]
|
||||
|
||||
[% ELSIF message_tag == "emailold_change_canceled" %]
|
||||
[% title = "Cancel Request to Change Email Address" %]
|
||||
The request to change the email address for your account to
|
||||
|
@ -201,6 +284,44 @@
|
|||
[%+ new_email FILTER html %] has been canceled.
|
||||
Your old account settings have been reinstated.
|
||||
|
||||
[% ELSIF message_tag == "field_value_created" %]
|
||||
[% title = "New Field Value Created" %]
|
||||
The value <em>[% value FILTER html %]</em> has been added as a valid choice
|
||||
for the <em>[% field.description FILTER html %]</em>
|
||||
(<em>[% field.name FILTER html %]</em>) field.
|
||||
[% IF field.name == "bug_status" %]
|
||||
You should now visit the <a href="editworkflow.cgi">status workflow page</a>
|
||||
to include your new [% terms.bug %] status.
|
||||
[% END %]
|
||||
|
||||
[% ELSIF message_tag == "field_value_deleted" %]
|
||||
[% title = "Field Value Deleted" %]
|
||||
The value <em>[% value FILTER html %]</em> of the
|
||||
<em>[% field.description FILTER html %]</em>
|
||||
(<em>[% field.name FILTER html %]</em>) field has been deleted.
|
||||
|
||||
[% ELSIF message_tag == "field_value_updated" %]
|
||||
[% title = "Field Value Updated" %]
|
||||
[% IF updated_value || updated_sortkey %]
|
||||
Changes to the <em>[% value FILTER html %]</em> value of the
|
||||
<em>[% field.description FILTER html %]</em>
|
||||
(<em>[% field.name FILTER html %]</em>) field have been changed:
|
||||
<ul>
|
||||
[% IF updated_value %]
|
||||
<li>Field value updated to <em>[% value FILTER html %]</em></li>
|
||||
[% IF default_value_updated %]
|
||||
(note that this value is the default for this field. All
|
||||
references to the default value will now point to this new value)
|
||||
[% END %]
|
||||
[% END %]
|
||||
[% IF updated_sortkey %]
|
||||
<li>Field value sortkey updated to <em>[% sortkey FILTER html %]</em></li>
|
||||
[% END %]
|
||||
</ul>
|
||||
[% ELSE %]
|
||||
No changes made to the field value <em>[% value FILTER html %]</em>.
|
||||
[% END %]
|
||||
|
||||
[% ELSIF message_tag == "flag_cleared" %]
|
||||
Some flags didn't apply in the new product/component
|
||||
and have been cleared.
|
||||
|
@ -210,6 +331,26 @@
|
|||
An error occured while validating flags:
|
||||
[%+ flag_creation_error FILTER none %]
|
||||
|
||||
[% ELSIF message_tag == "group_created" %]
|
||||
[% title = "New Group Created" %]
|
||||
The group <em>[% group.name FILTER html %]</em> has been created.
|
||||
|
||||
[% ELSIF message_tag == "group_deleted" %]
|
||||
[% title = "Group Deleted" %]
|
||||
The group <em>[% name FILTER html %]</em> has been deleted.
|
||||
|
||||
[% ELSIF message_tag == "group_membership_removed" %]
|
||||
[% title = "Group Membership Removed" %]
|
||||
[% IF users.size %]
|
||||
Explicit membership to the <em>[% group FILTER html %]</em> group removed
|
||||
[% IF regexp %] for users matching '[% regexp FILTER html %]'[% END %]:
|
||||
[% FOREACH user = users %]
|
||||
[%+ user.login FILTER html %]
|
||||
[% END %]
|
||||
[% ELSE %]
|
||||
No users are being affected by your action.
|
||||
[% END %]
|
||||
|
||||
[% ELSIF message_tag == "group_updated" %]
|
||||
[% IF changes.keys.size %]
|
||||
The following changes have been made to the '[% group.name FILTER html %]'
|
||||
|
@ -275,6 +416,41 @@
|
|||
group.
|
||||
[% END %]
|
||||
|
||||
[% ELSIF message_tag == "keyword_created" %]
|
||||
[% title = "New Keyword Created" %]
|
||||
The keyword <em>[% name FILTER html %]</em> has been created.
|
||||
|
||||
[% ELSIF message_tag == "keyword_deleted" %]
|
||||
[% title = "Keyword Deleted" %]
|
||||
The <em>[% keyword.name FILTER html %]</em> keyword has been deleted.
|
||||
<b>After you have finished editing keywords, you need to
|
||||
<a href="sanitycheck.cgi?rebuildkeywordcache=1">rebuild the keyword
|
||||
cache</a></b> (on a very large installation of [% terms.Bugzilla %],
|
||||
this can take several minutes).
|
||||
|
||||
[% ELSIF message_tag == "keyword_updated" %]
|
||||
[% title = "Keyword Updated" %]
|
||||
[% IF changes.keys.size %]
|
||||
Changes to the <em>[% keyword.name FILTER html %]</em> keyword have
|
||||
been saved:
|
||||
<ul>
|
||||
[% IF changes.name.defined %]
|
||||
<li>
|
||||
Keyword renamed to <em>[% keyword.name FILTER html %]</em>.
|
||||
<b>After you have finished editing keywords, you need to
|
||||
<a href="sanitycheck.cgi?rebuildkeywordcache=1">rebuild
|
||||
the keyword cache</a></b> (on a very large installation
|
||||
of [% terms.Bugzilla %], this can take several minutes).
|
||||
</li>
|
||||
[% END %]
|
||||
[% IF changes.description.defined %]
|
||||
<li>Description updated to <em>[% keyword.description FILTER html %]</em></li>
|
||||
[% END %]
|
||||
</ul>
|
||||
[% ELSE %]
|
||||
No changes made.
|
||||
[% END %]
|
||||
|
||||
[% ELSIF message_tag == "logged_out" %]
|
||||
[% title = "Logged Out" %]
|
||||
[% url = "index.cgi?GoAheadAndLogIn=1" %]
|
||||
|
@ -287,6 +463,35 @@
|
|||
[% title = "$terms.Bugzilla Login Changed" %]
|
||||
Your [% terms.Bugzilla %] login has been changed.
|
||||
|
||||
[% ELSIF message_tag == "milestone_created" %]
|
||||
[% title = "Milestone Created" %]
|
||||
The milestone <em>[% milestone.name FILTER html %]</em> has been created.
|
||||
|
||||
[% ELSIF message_tag == "milestone_deleted" %]
|
||||
[% title = "Milestone Deleted" %]
|
||||
The milestone <em>[% milestone.name FILTER html %]</em> has been deleted.
|
||||
[% IF milestone.bug_count %]
|
||||
[%+ terms.Bugs %] targetted to this milestone have been retargetted to
|
||||
the default milestone <em>[% product.default_milestone FILTER html %]</em>.
|
||||
[% END %]
|
||||
|
||||
[% ELSIF message_tag == "milestone_updated" %]
|
||||
[% title = "Milestone Updated" %]
|
||||
[% IF changes.size %]
|
||||
Changes to the milestone <em>[% milestone.name FILTER html %]</em>
|
||||
have been saved:
|
||||
<ul>
|
||||
[% IF changes.value.defined %]
|
||||
<li>Milestone name updated to <em>[% milestone.name FILTER html %]</em></li>
|
||||
[% END %]
|
||||
[% IF changes.sortkey.defined %]
|
||||
<li>Sortkey updated to <em>[% milestone.sortkey FILTER html %]</em>
|
||||
[% END %]
|
||||
</ul>
|
||||
[% ELSE %]
|
||||
No changes made to milestone <em>[% milestone.name FILTER html %]</em>.
|
||||
[% END %]
|
||||
|
||||
[% ELSIF message_tag == "parameters_updated" %]
|
||||
[% title = "Parameters Updated" %]
|
||||
[% IF param_changed.size > 0 %]
|
||||
|
@ -321,32 +526,21 @@
|
|||
|
||||
[% ELSIF message_tag == "flag_type_created" %]
|
||||
[% title = "Flag Type Created" %]
|
||||
The flag type <em>[% name FILTER html %]</em> has been created.
|
||||
<a href="editflagtypes.cgi">Back to flag types.</a>
|
||||
|
||||
The flag type <em>[% name FILTER html %]</em> has been created.
|
||||
|
||||
[% ELSIF message_tag == "flag_type_changes_saved" %]
|
||||
[% title = "Flag Type Changes Saved" %]
|
||||
<p>
|
||||
Your changes to the flag type <em>[% name FILTER html %]</em>
|
||||
have been saved.
|
||||
<a href="editflagtypes.cgi">Back to flag types.</a>
|
||||
</p>
|
||||
|
||||
Your changes to the flag type <em>[% name FILTER html %]</em>
|
||||
have been saved.
|
||||
|
||||
[% ELSIF message_tag == "flag_type_deleted" %]
|
||||
[% title = "Flag Type Deleted" %]
|
||||
<p>
|
||||
The flag type <em>[% name FILTER html %]</em> has been deleted.
|
||||
<a href="editflagtypes.cgi">Back to flag types.</a>
|
||||
</p>
|
||||
|
||||
The flag type <em>[% name FILTER html %]</em> has been deleted.
|
||||
|
||||
[% ELSIF message_tag == "flag_type_deactivated" %]
|
||||
[% title = "Flag Type Deactivated" %]
|
||||
<p>
|
||||
The flag type <em>[% flag_type.name FILTER html %]</em>
|
||||
has been deactivated.
|
||||
<a href="editflagtypes.cgi">Back to flag types.</a>
|
||||
</p>
|
||||
|
||||
The flag type <em>[% flag_type.name FILTER html %]</em> has been deactivated.
|
||||
|
||||
[% ELSIF message_tag == "install_admin_get_email" %]
|
||||
Enter the e-mail address of the administrator:
|
||||
|
||||
|
@ -444,6 +638,21 @@
|
|||
Verify that the file permissions in your [% terms.Bugzilla %] directory are
|
||||
suitable for your system. Avoid unnecessary write access.
|
||||
|
||||
[% ELSIF message_tag == "product_created" %]
|
||||
[% title = "Product Created" %]
|
||||
The product <em>[% product.name FILTER html %]</em> has been created. You will need to
|
||||
<a href="editcomponents.cgi?action=add&product=[% product.name FILTER url_quote %]">
|
||||
add at least one component</a> before you can enter [% terms.bugs %] against this product.
|
||||
|
||||
[% ELSIF message_tag == "product_deleted" %]
|
||||
[% title = "Product Deleted" %]
|
||||
The product <em>[% product.name FILTER html %]</em> and all its versions,
|
||||
components, milestones and group controls have been deleted.
|
||||
[% IF product.bug_count %]
|
||||
All [% terms.bugs %] being in this product and all references
|
||||
to them have also been deleted.
|
||||
[% END %]
|
||||
|
||||
[% ELSIF message_tag == "product_invalid" %]
|
||||
[% title = "$terms.Bugzilla Component Descriptions" %]
|
||||
The product <em>[% product FILTER html %]</em> does not exist
|
||||
|
@ -513,6 +722,20 @@
|
|||
user, so we have instead left the [% match_field FILTER html %]
|
||||
field blank.
|
||||
|
||||
[% ELSIF message_tag == "version_created" %]
|
||||
[% title = "Version Created" %]
|
||||
The version <em>[% version.name FILTER html %]</em> of product
|
||||
<em>[% product.name FILTER html %]</em> has been created.
|
||||
|
||||
[% ELSIF message_tag == "version_deleted" %]
|
||||
[% title = "Version Deleted" %]
|
||||
The version <em>[% version.name FILTER html %]</em> of product
|
||||
<em>[% product.name FILTER html %]</em> has been deleted.
|
||||
|
||||
[% ELSIF message_tag == "version_updated" %]
|
||||
[% title = "Version Updated" %]
|
||||
Version renamed as <em>[% version.name FILTER html %]</em>.
|
||||
|
||||
[% ELSIF message_tag == "workflow_updated" %]
|
||||
The workflow has been updated.
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче