#
# 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);
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';
#
# 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
$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');
}
#
# 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);
- $dbh->bz_commit_transaction();
+ # delete
+ $dbh->do("DELETE FROM classifications WHERE id = ?", undef,
+ $classification->id);
- $vars->{'classification'} = $classification;
+ $dbh->bz_commit_transaction();
+ $vars->{'message'} = 'classification_deleted';
+ $vars->{'classification'} = $class_name;
delete_token($token);
- LoadTemplate($action);
+ LoadTemplate('select');
}
#
$dbh->bz_commit_transaction();
+ $vars->{'message'} = 'classification_updated';
+ $vars->{'classification'} = $class_name;
delete_token($token);
- LoadTemplate($action);
+ LoadTemplate('select');
}
#
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;
}
$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;
}
$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;
}
$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());
}
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());
}
$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());
}
$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());
}
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.
(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')) {
(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;
}
delete_token($token);
+ $vars->{'message'} = 'group_deleted';
+ $vars->{'groups'} = [Bugzilla::Group->get_all];
+
print $cgi->header();
- $template->process("admin/groups/deleted.html.tmpl", $vars)
+ $template->process("admin/groups/list.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
-
exit;
}
$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;
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
$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;
}
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;
}
#!/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);
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;
}
$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;
}
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;
}
# 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);
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
#
}
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;
}
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);
$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;
}
}
$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;
}
# 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);
use Bugzilla::Token;
my $template = Bugzilla->template;
-local our $vars = {};
-
-###############################
-### Subroutine Definitions ###
-###############################
-
-sub LoadSettings {
-
- $vars->{'settings'} = Bugzilla::User::Setting::get_defaults();
+my $user = Bugzilla->login(LOGIN_REQUIRED);
+my $cgi = Bugzilla->cgi;
+my $vars = {};
- my @setting_list = keys %{$vars->{'settings'}};
- $vars->{'setting_names'} = \@setting_list;
-}
+print $cgi->header;
-sub SaveSettings{
+$user->in_group('tweakparams')
+ || ThrowUserError("auth_failure", {group => "tweakparams",
+ action => "modify",
+ object => "settings"});
- my $cgi = Bugzilla->cgi;
+my $action = trim($cgi->param('action') || '');
+my $token = $cgi->param('token');
- $vars->{'settings'} = Bugzilla::User::Setting::get_defaults();
- my @setting_list = keys %{$vars->{'settings'}};
+if ($action eq 'update') {
+ check_token_data($token, 'edit_settings');
+ my $settings = Bugzilla::User::Setting::get_defaults();
+ my $changed = 0;
- foreach my $name (@setting_list) {
- my $changed = 0;
- my $old_enabled = $vars->{'settings'}->{$name}->{'is_enabled'};
- my $old_value = $vars->{'settings'}->{$name}->{'default_value'};
+ 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) ) {
+ if ($old_enabled != $enabled || $old_value ne $value) {
Bugzilla::User::Setting::set_default($name, $value, $enabled);
+ $changed = 1;
}
}
-}
-
-###################
-### Live code ###
-###################
-
-my $user = Bugzilla->login(LOGIN_REQUIRED);
-
-my $cgi = Bugzilla->cgi;
-print $cgi->header;
-
-$user->in_group('tweakparams')
- || ThrowUserError("auth_failure", {group => "tweakparams",
- action => "modify",
- object => "settings"});
-
-my $action = trim($cgi->param('action') || 'load');
-my $token = $cgi->param('token');
-
-if ($action eq 'update') {
- check_token_data($token, 'edit_settings');
- SaveSettings();
+ $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');
-
- $template->process("admin/settings/edit.html.tmpl", $vars)
- || ThrowTemplateError($template->error());
+# Don't use $settings as defaults may have changed.
+$vars->{'settings'} = Bugzilla::User::Setting::get_defaults();
+$vars->{'token'} = issue_session_token('edit_settings');
- exit;
-}
-
-#
-# No valid action found
-#
-ThrowUserError('no_valid_action', {'field' => "settings"});
+$template->process("admin/settings/edit.html.tmpl", $vars)
+ || ThrowTemplateError($template->error());
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.
# 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';
# 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);
$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",
$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.
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();
}
$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();
}
}
delete_token($token);
- $template->process("admin/fieldvalues/updated.html.tmpl",
- $vars)
- || ThrowTemplateError($template->error());
-
- exit;
+ $vars->{'message'} = 'field_value_updated';
+ display_field_values();
}
# 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);
exit;
}
-
-
-
#
# action='add' -> present form for parameters for new version
#
exit;
}
-
-
#
# action='new' -> add version entered in the 'action=add' screen
#
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
#
exit;
}
-
-
#
# action='delete' -> really delete the version
#
$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
#
exit;
}
-
-
#
# action='update' -> update the version
#
$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
#
#%]
[%# 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)
<th>Enabled</th>
</tr>
- [% FOREACH name = setting_names %]
+ [% FOREACH name = settings.keys %]
[% checkbox_name = name _ '-enabled' %]
<tr>
<td align="right">
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
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
[%+ 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.
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 %]'
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" %]
[% 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 %]
[% 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:
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
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.