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 #!/usr/bin/perl -wT
# -*- Mode: perl; indent-tabs-mode: nil -*-
#
# The contents of this file are subject to the Mozilla Public # The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file # License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of # except in compliance with the License. You may obtain a copy of
@ -28,44 +26,50 @@ use Bugzilla::Token;
my $template = Bugzilla->template; my $template = Bugzilla->template;
my $user = Bugzilla->login(LOGIN_REQUIRED); my $user = Bugzilla->login(LOGIN_REQUIRED);
my $cgi = Bugzilla->cgi; my $ARGS = Bugzilla->input_params;
my $vars = {}; my $vars = {};
$user->in_group('tweakparams') $user->in_group('tweakparams') || ThrowUserError("auth_failure", {
|| ThrowUserError("auth_failure", {group => "tweakparams", group => "tweakparams",
action => "modify", action => "modify",
object => "settings"}); object => "settings",
});
my $action = trim($cgi->param('action') || ''); my $action = trim($ARGS->{action} || '');
my $token = $cgi->param('token'); my $token = $ARGS->{token};
if ($action eq 'update') { if ($action eq 'update')
{
check_token_data($token, 'edit_settings'); check_token_data($token, 'edit_settings');
my $settings = Bugzilla::User::Setting::get_defaults(); my $settings = Bugzilla::User::Setting::get_defaults();
my $changed = 0; my $changed = 0;
foreach my $name (keys %$settings)
foreach my $name (keys %$settings) { {
my $old_enabled = $settings->{$name}->{'is_enabled'}; my $old_enabled = $settings->{$name}->{is_enabled};
my $old_value = $settings->{$name}->{'default_value'}; my $old_value = $settings->{$name}->{default_value};
my $enabled = defined $cgi->param("${name}-enabled") || 0; my $enabled = $ARGS->{$name.'-enabled'} ? 1 : 0;
my $value = $cgi->param("${name}"); my $value = $ARGS->{$name};
my $setting = new Bugzilla::User::Setting($name); my $setting = new Bugzilla::User::Setting($name);
$setting->validate_value($value); $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); Bugzilla::User::Setting::set_default($name, $value, $enabled);
$changed = 1; $changed = 1;
} }
} }
$vars->{'message'} = 'default_settings_updated';
$vars->{'changes_saved'} = $changed;
delete_token($token); 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->{'settings'} = Bugzilla::User::Setting::get_defaults(); $vars->{token} = issue_session_token('edit_settings');
$vars->{'token'} = issue_session_token('edit_settings');
$template->process("admin/settings/edit.html.tmpl", $vars) $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> <th>Default Value</th>
</tr> </tr>
[% FOREACH name = settings.keys.sort %] [% FOREACH name = settings.keys.sort %]
[% checkbox_name = name _ '-enabled' %]
<tr> <tr>
<td align="center"> <td align="center">
<input type="checkbox" <input type="checkbox" name="[% name | html %]-enabled"
name="[% checkbox_name | html %]" id="[% name | html %]-enabled" value="1"
id="[% checkbox_name | html %]"
[% " checked=\"checked\"" IF settings.${name}.is_enabled %] /> [% " checked=\"checked\"" IF settings.${name}.is_enabled %] />
</td> </td>
<td align="left"> <td align="left">

View File

@ -99,6 +99,16 @@
<div class="message">Active values updated.</div> <div class="message">Active values updated.</div>
[% END %] [% 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 %] [% BLOCK msg_control_lists_updated %]
<p> <p>
[% t = Bugzilla.get_field(field_id).description | html %] [% t = Bugzilla.get_field(field_id).description | html %]
@ -372,14 +382,6 @@
successfully updated. successfully updated.
[% END %] [% 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 %] [% BLOCK msg_emailold_change_canceled %]
[% title = "Cancel Request to Change Email Address" %] [% title = "Cancel Request to Change Email Address" %]
The request to change the email address for your account to The request to change the email address for your account to