editsettings.cgi: code style, remove CGI usage, redirect after saving

hinted-selects
Vitaliy Filippov 2014-09-08 18:23:42 +04:00
parent 5f3da0717b
commit aedb5a315e
3 changed files with 41 additions and 37 deletions

View File

@ -1,6 +1,4 @@
#!/usr/bin/perl -wT
# -*- Mode: perl; indent-tabs-mode: nil -*-
#
# 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
@ -28,44 +26,50 @@ use Bugzilla::Token;
my $template = Bugzilla->template;
my $user = Bugzilla->login(LOGIN_REQUIRED);
my $cgi = Bugzilla->cgi;
my $ARGS = Bugzilla->input_params;
my $vars = {};
$user->in_group('tweakparams')
|| ThrowUserError("auth_failure", {group => "tweakparams",
action => "modify",
object => "settings"});
$user->in_group('tweakparams') || ThrowUserError("auth_failure", {
group => "tweakparams",
action => "modify",
object => "settings",
});
my $action = trim($cgi->param('action') || '');
my $token = $cgi->param('token');
my $action = trim($ARGS->{action} || '');
my $token = $ARGS->{token};
if ($action eq 'update') {
if ($action eq 'update')
{
check_token_data($token, 'edit_settings');
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}");
foreach my $name (keys %$settings)
{
my $old_enabled = $settings->{$name}->{is_enabled};
my $old_value = $settings->{$name}->{default_value};
my $enabled = $ARGS->{$name.'-enabled'} ? 1 : 0;
my $value = $ARGS->{$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;
}
}
$vars->{'message'} = 'default_settings_updated';
$vars->{'changes_saved'} = $changed;
delete_token($token);
Bugzilla->add_result_message({
message => 'default_settings_updated',
changes_saved => $changed,
});
Bugzilla->save_session_data;
print Bugzilla->cgi->redirect('editsettings.cgi');
exit;
}
# Don't use $settings as defaults may have changed.
$vars->{'settings'} = Bugzilla::User::Setting::get_defaults();
$vars->{'token'} = issue_session_token('edit_settings');
$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());
|| ThrowTemplateError($template->error());
exit;

View File

@ -54,12 +54,10 @@ page, and the Default Value will automatically apply to everyone.
<th>Default Value</th>
</tr>
[% FOREACH name = settings.keys.sort %]
[% checkbox_name = name _ '-enabled' %]
<tr>
<td align="center">
<input type="checkbox"
name="[% checkbox_name | html %]"
id="[% checkbox_name | html %]"
<input type="checkbox" name="[% name | html %]-enabled"
id="[% name | html %]-enabled" value="1"
[% " checked=\"checked\"" IF settings.${name}.is_enabled %] />
</td>
<td align="left">

View File

@ -99,6 +99,16 @@
<div class="message">Active values updated.</div>
[% END %]
[% BLOCK msg_default_settings_updated %]
<div class="message">
[% IF changes_saved %]
Changes to default preferences have been saved.
[% ELSE %]
No changes made.
[% END %]
</div>
[% END %]
[% BLOCK msg_control_lists_updated %]
<p>
[% t = Bugzilla.get_field(field_id).description | html %]
@ -372,14 +382,6 @@
successfully updated.
[% END %]
[% BLOCK msg_default_settings_updated %]
[% IF changes_saved %]
Changes to default preferences have been saved.
[% ELSE %]
No changes made.
[% END %]
[% END %]
[% BLOCK msg_emailold_change_canceled %]
[% title = "Cancel Request to Change Email Address" %]
The request to change the email address for your account to