# 1 or more programs, files, lists or users
sub alias_form
{
-local ($a, $nocmt) = @_;
+local ($a, $nocmt, $afile) = @_;
local (@values, $v, $type, $val, @typenames);
if ($a) { @values = @{$a->{'values'}}; }
@typenames = map { $text{"aform_type$_"} } (0 .. 6);
print &ui_table_row(&hlink($text{'aform_enabled'}, "alias_enabled"),
&ui_yesno_radio("enabled", !$a || $a->{'enabled'} ? 1 : 0));
+# Alias file, if more than one possible
+if ($afile && @$afile > 1) {
+ print &ui_table_row(&hlink($text{'aform_file'}, "alias_file"),
+ &ui_select("afile", undef, $afile));
+ }
+
# Destinations
local @typeopts;
for($j=0; $j<@typenames; $j++) {
# Update the config file
local(%aliases);
-local $lref = &read_file_lines($_[1]->[0]);
+$_[0]->{'file'} ||= $_[1]->[0];
+local $lref = &read_file_lines($_[0]->{'file'});
$_[0]->{'line'} = scalar(@$lref);
push(@$lref, &make_table_comment($_[0]->{'cmt'}, 1));
local $str = ($_[0]->{'enabled'} ? "" : "# ") . $_[0]->{'name'} . ": " .
join(',', map { /\s/ ? "\"$_\"" : $_ } @{$_[0]->{'values'}});
push(@$lref, $str);
$_[0]->{'eline'} = scalar(@$lref)-1;
-&flush_file_lines($_[1]->[0]);
+&flush_file_lines($_[0]->{'file'});
if (!$_[2]) {
- if (!&rebuild_map_cmd($_[1]->[0])) {
+ if (!&rebuild_map_cmd($_[0]->{'file'})) {
&system_logged("newaliases >/dev/null 2>&1");
}
}
# Add to the cache
local $jfiles = join(",", @{$_[1]});
local $c = $list_aliases_cache{$jfiles};
-$_[0]->{'file'} = $_[1]->[0];
$_[0]->{'num'} = scalar(@$c);
push(@$c, $_[0]);
}
$newa{'values'} = \@values;
$newa{'enabled'} = $in{'enabled'};
$newa{'cmt'} = $in{'cmt'};
- if ($in{'new'}) { &create_alias(\%newa, $afile); }
- else { &modify_alias($a, \%newa); }
+ if ($in{'new'}) {
+ $newa{'file'} = $in{'afile'};
+ }
+
+ # Actually create or update
+ if ($in{'new'}) {
+ &create_alias(\%newa, $afile);
+ }
+ else {
+ &modify_alias($a, \%newa);
+ }
$loga = \%newa;
}
&unlock_alias_files($afile);