Allow editing of multiple configs
authorJamie Cameron <jcameron@webmin.com>
Wed, 27 Jul 2011 22:50:59 +0000 (15:50 -0700)
committerJamie Cameron <jcameron@webmin.com>
Wed, 27 Jul 2011 22:50:59 +0000 (15:50 -0700)
dovecot/CHANGELOG
dovecot/edit_manual.cgi
dovecot/lang/en
dovecot/save_manual.cgi

index 1edb843..dc620d5 100644 (file)
@@ -19,3 +19,5 @@ Added fields for setting the index and control files locations.
 Added fields to the SSL page for an optional CA certificate file and private key password.
 ---- Changes since 1.530 ----
 Added support for Dovecot 2.0, which renames many configuration directives and splits up the config using include files.
+---- Changes since 1.550 ----
+The Edit Config Files page can now be used to edit any of the Dovecot configuration files, for the case where there are many included configs.
index 19f03f4..b1d3f9f 100755 (executable)
@@ -3,12 +3,26 @@
 
 require './dovecot-lib.pl';
 &ui_print_header(undef, $text{'manual_title'}, "");
+&ReadParse();
+$file = $in{'file'} || $config{'dovecot_config'};
+$conf = &get_config();
+@files = &unique(map { $_->{'file'} } @$conf);
+&indexof($file, @files) >= 0 || &error($text{'manual_efile'});
+
+# Show the file selector
+print &ui_form_start("edit_manual.cgi");
+print "<b>$text{'manual_editsel'}</b>\n";
+print &ui_select("file", $file, \@files),"\n";
+print &ui_submit($text{'manual_ok'});
+print &ui_form_end();
 
 # Show the file contents
-print &text('manual_desc', "<tt>$config{'dovecot_config'}</tt>"),"<p>\n";
 print &ui_form_start("save_manual.cgi", "form-data");
-$data = &read_file_contents($config{'dovecot_config'});
-print &ui_textarea("data", $data, 20, 80),"\n";
+print &ui_hidden("file", $file);
+print &ui_table_start(undef, undef, 2);
+$data = &read_file_contents($file);
+print &ui_table_row(undef, ui_textarea("data", $data, 20, 80), 2);
+print &ui_table_end();
 print &ui_form_end([ [ "save", $text{'save'} ] ]);
 
 &ui_print_footer("", $text{'index_return'});
index 8a970a7..4e74845 100644 (file)
@@ -188,8 +188,11 @@ log_bootup=Enabled Dovecot at boot time
 log_bootdown=Disabled Dovecot at boot time
 log_manual=Manually edited config file $1
 
-manual_title=Edit Config File
-manual_desc=Editing Dovecot configuration file $1 ..
+manual_title=Edit Config Files
+manual_editsel=Edit Dovecot configuration file
 manual_err=Failed to save config file
 manual_edata=Nothing entered!
+manual_efile=Selected configuration file is not valid
+manual_ok=Edit
+
 __norefs=1
index 3b91a1d..35a37eb 100755 (executable)
@@ -4,14 +4,17 @@
 require './dovecot-lib.pl';
 &ReadParseMime();
 &error_setup($text{'manual_err'});
+$conf = &get_config();
+@files = &unique(map { $_->{'file'} } @$conf);
+&indexof($in{'file'}, @files) >= 0 || &error($text{'manual_efile'});
 
 $in{'data'} =~ s/\r//g;
 $in{'data'} =~ /\S/ || &error($text{'manual_edata'});
 
-&open_lock_tempfile(DATA, ">$config{'dovecot_config'}");
+&open_lock_tempfile(DATA, ">$in{'file'}");
 &print_tempfile(DATA, $in{'data'});
 &close_tempfile(DATA);
 
-&webmin_log("manual", undef, $config{'dovecot_config'});
+&webmin_log("manual", undef, $in{'file'});
 &redirect("");