generic translations strict
[kivitendo-erp.git] / bin / mozilla / admin.pl
old mode 100644 (file)
new mode 100755 (executable)
index c22dc76..0282198
@@ -452,9 +452,8 @@ sub save_user {
   # check for duplicates
   if (!$form->{edit}) {
     my %members = $auth->read_all_users();
-
     if ($members{$form->{login}}) {
-      $form->error("$form->{login} " . $locale->text('is already a member!'));
+      $form->show_generic_error($locale->text('Another user with the login #1 does already exist.', $form->{login}), 'back_button' => 1);
     }
   }
 
@@ -550,7 +549,7 @@ sub save_user {
 
       # copy templates to the directory
       opendir TEMPLATEDIR, "$templates/." or $form - error("$templates : $ERRNO");
-      @templates = grep /$form->{mastertemplates}.*?\.(html|tex|sty|xml|txb)$/,
+      @templates = grep /$form->{mastertemplates}.*?\.(html|tex|sty|odt|xml|txb)$/,
         readdir TEMPLATEDIR;
       closedir TEMPLATEDIR;
 
@@ -573,10 +572,32 @@ sub save_user {
     }
   }
 
+  # Add new user to his groups.
+  if (ref $form->{new_user_group_ids} eq 'ARRAY') {
+    my $all_groups = $auth->read_groups();
+    my %user       = $auth->read_user($form->{login});
+
+    foreach my $group_id (@{ $form->{new_user_group_ids} }) {
+      my $group = $all_groups->{$group_id};
+
+      next if !$group;
+
+      push @{ $group->{members} }, $user{id};
+      $auth->save_group($group);
+    }
+  }
+
   $form->redirect($locale->text('User saved!'));
 
 }
 
+sub save_user_as_new {
+  $form->{login} = $form->{new_user_login};
+  delete @{$form}{qw(edit new_user_login)};
+
+  save_user();
+}
+
 sub delete_user {
   my %members   = $auth->read_all_users();
   my $templates = $members{$form->{login}}->{templates};
@@ -721,7 +742,7 @@ sub dbupdate {
 }
 
 sub create_dataset {
-  $form->{dbsources} = join " ", map { "[${_}]" } sort User->dbsources(\%$form);
+  $form->{dbsources} = join " ", map { "[${_}]" } sort User->dbsources($form);
 
   $form->{CHARTS} = [];
 
@@ -737,12 +758,24 @@ sub create_dataset {
   my $default_charset = $dbcharset;
   $default_charset ||= Common::DEFAULT_CHARSET;
 
-  $form->{DBENCODINGS} = [];
+  my $cluster_encoding = User->dbclusterencoding($form);
+  if ($cluster_encoding && ($cluster_encoding =~ m/^(?:UTF-?8|UNICODE)$/i)) {
+    if ($dbcharset !~ m/^UTF-?8$/i) {
+      $form->show_generic_error($locale->text('The selected  PostgreSQL installation uses UTF-8 as its encoding. ' .
+                                              'Therefore you have to configure Lx-Office to use UTF-8 as well.'),
+                                'back_button' => 1);
+    }
 
-  foreach my $encoding (@Common::db_encodings) {
-    push @{ $form->{DBENCODINGS} }, { "dbencoding" => $encoding->{dbencoding},
-                                      "label"      => $encoding->{label},
-                                      "selected"   => $encoding->{charset} eq $default_charset };
+    $form->{FORCE_DBENCODING} = 'UNICODE';
+
+  } else {
+    $form->{DBENCODINGS} = [];
+
+    foreach my $encoding (@Common::db_encodings) {
+      push @{ $form->{DBENCODINGS} }, { "dbencoding" => $encoding->{dbencoding},
+                                        "label"      => $encoding->{label},
+                                        "selected"   => $encoding->{charset} eq $default_charset };
+    }
   }
 
   $form->{title} =
@@ -1115,7 +1148,8 @@ sub back {
 }
 
 sub dispatcher {
-  foreach my $action (qw(create_standard_group dont_create_standard_group)) {
+  foreach my $action (qw(create_standard_group dont_create_standard_group
+                         save_user delete_user save_user_as_new)) {
     if ($form->{"action_${action}"}) {
       call_sub($action);
       return;