- $level = $item;
- $menuitem = $item;
- push @acsorder, $item;
- }
-
- $acs{$level} ||= [];
- push @{ $acs{$level} }, $menuitem;
-
- }
-
- foreach $item (split(/;/, $myconfig->{acs})) {
- ($key, $value) = split /--/, $item, 2;
- $excl{$key}{$value} = 1;
- }
-
- $form->{ACLS} = [];
- $form->{all_acs} = "";
-
- foreach $key (@acsorder) {
- my $acl = { "checked" => $form->{login} ? !$excl{$key}->{$key} : 1,
- "name" => "${key}--${key}",
- "title" => $key,
- "SUBACLS" => [], };
- $form->{all_acs} .= "${key}--${key};";
-
- foreach $item (@{ $acs{$key} }) {
- next if ($key eq $item);
-
- my $subacl = { "checked" => $form->{login} ? !$excl{$key}->{$item} : 1,
- "name" => "${key}--${item}",
- "title" => $item };
- push @{ $acl->{SUBACLS} }, $subacl;
- $form->{all_acs} .= "${key}--${item};";
- }
- push @{ $form->{ACLS} }, $acl;
- }
-
- chop $form->{all_acs};
-
- $form->header();
- print $form->parse_html_template("admin/edit_user");
-}
-
-sub save {
-
- $form->{dbdriver} = 'Pg';
-
- # no spaces allowed in login name
- ($form->{login}) = split / /, $form->{login};
-
- $form->isblank("login", $locale->text('Login name missing!'));
-
- # check for duplicates
- if (!$form->{edit}) {
- $temp = new User "$memberfile", "$form->{login}";
-
- if ($temp->{login}) {
- $form->error("$form->{login} " . $locale->text('is already a member!'));
- }
- }
-
- # no spaces allowed in directories
- ($form->{newtemplates}) = split / /, $form->{newtemplates};
-
- if ($form->{newtemplates}) {
- $form->{templates} = $form->{newtemplates};
- } else {
- $form->{templates} =
- ($form->{usetemplates}) ? $form->{usetemplates} : $form->{login};
- }
-
- # is there a basedir
- if (!-d "$templates") {
- $form->error(sprintf($locale->text("The directory %s does not exist."), $templates));
- }
-
- # add base directory to $form->{templates}
- $form->{templates} =~ s|.*/||;
- $form->{templates} = "$templates/$form->{templates}";
-
- $myconfig = new User "$memberfile", "$form->{login}";
-
- # redo acs variable and delete all the acs codes
- my @acs;
- foreach $item (split m|;|, $form->{all_acs}) {
- my $name = "ACS_${item}";
- $name =~ s| |+|g;
- push @acs, $item if !$form->{$name};
- delete $form->{$name};
- }
- $form->{acs} = join ";", @acs;
-
- $form->isblank("dbname", $locale->text('Dataset missing!'));
- $form->isblank("dbuser", $locale->text('Database User missing!'));
-
- foreach $item (keys %{$form}) {
- $myconfig->{$item} = $form->{$item};
- }
-
- delete $myconfig->{stylesheet};
- if ($form->{userstylesheet}) {
- $myconfig->{stylesheet} = $form->{userstylesheet};
- }
-
- $myconfig->save_member($memberfile, $userspath);
-
- if ($webdav) {
- @webdavdirs =
- qw(angebote bestellungen rechnungen anfragen lieferantenbestellungen einkaufsrechnungen);
- foreach $directory (@webdavdirs) {
- $file = "webdav/" . $directory . "/webdav-user";
- if ($form->{$directory}) {
- if (open(HTACCESS, "$file")) {
- while (<HTACCESS>) {
- ($login, $password) = split(/:/, $_);
- if ($login ne $form->{login}) {
- $newfile .= $_;
- }
- }
- close(HTACCESS);
- }
- open(HTACCESS, "> $file") or die "cannot open $file $ERRNO\n";
- $newfile .= $myconfig->{login} . ":" . $myconfig->{password} . "\n";
- print(HTACCESS $newfile);
- close(HTACCESS);
- } else {
- $form->{$directory} = 0;
- if (open(HTACCESS, "$file")) {
- while (<HTACCESS>) {
- ($login, $password) = split(/:/, $_);
- if ($login ne $form->{login}) {
- $newfile .= $_;
- }
- }
- close(HTACCESS);
- }
- open(HTACCESS, "> $file") or die "cannot open $file $ERRNO\n";
- print(HTACCESS $newfile);
- close(HTACCESS);