open(FILE, $file) || error("Failed to open $file for update");
open(FILETMP, ">$file.tmp") || error("Failed to open $file.tmp for writing");
-local $conflinenb = 0;
+# $%conf contains param and values
+my %confchanged=();
+my $conflinenb = 0;
+
+# First, change values that are already present in old config file
while(<FILE>) {
my $savline=$_;
chomp $_; s/\r//;
$conflinenb++;
- # Remove comments
+ # Remove comments not at beginning of line
$_ =~ s/\s#.*$//;
# Extract param and value
$param =~ s/^\s+//; $param =~ s/\s+$//;
if ($param) {
- if ($conf->{$param}) {
+ # cleanparam is param without begining #
+ my $cleanparam=$param; $cleanparam =~ s/^#//;
+ if (defined($conf->{$cleanparam})) {
# Change line with new value
- $savline = "$param=\"".($conf->{$param})."\"\n";
+ $savline = "$cleanparam=\"".($conf->{$cleanparam})."\"\n";
+ $confchanged{$cleanparam}=1;
}
}
print FILETMP "$savline";
+}
+# Now add values that were not present in old config file
+foreach my $key (keys %$conf) {
+ if ($confchanged{$key}) { next; } # param already changed
+ print FILETMP "\n";
+ print FILETMP "# Param $key added by AWStats Webmin module\n";
+ print FILETMP "$key=\"$conf->{$key}\"\n";
}
+
close(FILE);
close(FILETMP);
print "<hr>\n";
-print "<form action='save_config.cgi'>\n";
+print <<EOF;
+<SCRIPT LANGUAGE="JavaScript">\r
+function Submit_onClick() {\r
+ if (document.editconfig.LogFormat.value=='') {\r
+ alert('$text{save_errLogFormat}');\r
+ document.editconfig.LogFormat.focus();\r
+ return false;\r
+ }\r
+ if (document.editconfig.SiteDomain.value=='') {\r
+ alert('$text{save_errSiteDomain}');\r
+ document.editconfig.SiteDomain.focus();\r
+ return false;\r
+ }\r
+ if (document.editconfig.DirData.value=='') {\r
+ alert('$text{save_errDirData}');\r
+ document.editconfig.DirData.focus();\r
+ return false;\r
+ }\r
+ return true;
+}
+</SCRIPT>
+EOF
+
+
+print "<form name='editconfig' action='save_config.cgi'>\n";
print "<table border width=100%>\n";
print "<tr $tb> <td><b>";
print &hblink("Help", "help.cgi?param=LogType")." </td> </tr>\n";
print "<tr> <td><b>LogFormat</b></td> <td> <input name=LogFormat type=text size=40 value='$lconf->{'LogFormat'}'> </td> <td> ";
print &hblink("Help", "help.cgi?param=LogFormat")," </td> </tr>\n";
-print "<tr> <td><b>LogSeparator</b></td> <td> <input name=LogSeparator type=text value='$lconf->{'LogSeparator'}'> </td> <td> ";
+print "<tr> <td><b>LogSeparator</b></td> <td> <input name=LogSeparator type=text size=10 value='$lconf->{'LogSeparator'}'> </td> <td> ";
print &hblink("Help", "help.cgi?param=LogSeparator")." </td> </tr>\n";
print "<tr> <td><b>SiteDomain</b></td> <td> <input name=SiteDomain type=text value='$lconf->{'SiteDomain'}'> </td> <td> ";
print &hblink("Help", "help.cgi?param=SiteDomain")." </td> </tr>\n";
print &hblink("Help", "help.cgi?param=HostAliases")." </td> </tr>\n";
print "<tr> <td><b>DNSLookup</b></td> <td> <input name=DNSLookup type=text value='$lconf->{'DNSLookup'}'> </td> <td> ";
print &hblink("Help", "help.cgi?param=DNSLookup")." </td> </tr>\n";
-print "<tr> <td><b>DirData</b></td> <td> <input name=DirData type=text value='$lconf->{'DirData'}'> </td> <td> ";
+print "<tr> <td><b>DirData</b></td> <td> <input name=DirData type=text size=40 value='$lconf->{'DirData'}'> </td> <td> ";
print &hblink("Help", "help.cgi?param=DirData")." </td> </tr>\n";
-print "<tr> <td><b>DirCgi</b></td> <td> <input name=DirCgi type=text value='$lconf->{'DirCgi'}'> </td> <td> ";
+print "<tr> <td><b>DirCgi</b></td> <td> <input name=DirCgi type=text size=30 value='$lconf->{'DirCgi'}'> </td> <td> ";
print &hblink("Help", "help.cgi?param=DirCgi")." </td> </tr>\n";
-print "<tr> <td><b>DirIcons</b></td> <td> <input name=DirIcons type=text value='$lconf->{'DirIcons'}'> </td> <td> ";
+print "<tr> <td><b>DirIcons</b></td> <td> <input name=DirIcons type=text size=30 value='$lconf->{'DirIcons'}'> </td> <td> ";
print &hblink("Help", "help.cgi?param=DirIcons")." </td> </tr>\n";
print "<tr> <td><b>AllowToUpdateStatsFromBrowser</b></td> <td> <input name=AllowToUpdateStatsFromBrowser type=text value='$lconf->{'AllowToUpdateStatsFromBrowser'}'> </td> <td> ";
print &hblink("Help", "help.cgi?param=AllowToUpdateStatsFromBrowser")." </td> </tr>\n";
@b=();
if ($in{'new'}) {
- push(@b, "<input type=submit value='$text{'create'}'>");
+ push(@b, "<input type=submit value='$text{'create'}' onClick=\"return Submit_onClick();\">");
}
else {
if ($access{'global'}) {
- push(@b, "<input type=submit value='$text{'save'}'>");
+ push(@b, "<input type=submit value='$text{'save'}' onClick=\"return Submit_onClick();\">");
}
if ($access{'add'}) {
push(@b, "<input type=submit name=delete value='$text{'delete'}'>");