Admin-Controller: Weiterführungslinks zu altem admin.pl gefixt
authorMoritz Bunkus <m.bunkus@linet-services.de>
Tue, 11 Jun 2013 15:17:32 +0000 (17:17 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Thu, 13 Jun 2013 14:31:36 +0000 (16:31 +0200)
SL/DB/AuthClient.pm
bin/mozilla/admin_printer.pl
templates/webpages/admin/create_dataset.html
templates/webpages/admin_printer/login.html
templates/webpages/dbupgrade/auth/clients.html

index 9e3d3e8..e83bb16 100644 (file)
@@ -2,6 +2,9 @@ package SL::DB::AuthClient;
 
 use strict;
 
+use Carp;
+use File::Path ();
+
 use SL::DB::MetaSetup::AuthClient;
 use SL::DB::Manager::AuthClient;
 use SL::DB::Helper::Util;
@@ -23,6 +26,37 @@ __PACKAGE__->meta->add_relationship(
 
 __PACKAGE__->meta->initialize;
 
+__PACKAGE__->before_save('_before_save_remember_old_name');
+__PACKAGE__->after_save('_after_save_ensure_webdav_symlink_correctness');
+__PACKAGE__->after_delete('_after_delete_delete_webdav_symlink');
+
+sub _before_save_remember_old_name {
+  my ($self) = @_;
+
+  delete $self->{__before_save_remember_old_name};
+  if ($self->id && $::lx_office_conf{features}->{webdav}) {
+    $self->{__before_save_remember_old_name} = SL::DB::AuthClient->new(id => $self->id)->load->name;
+  }
+
+  return 1;
+}
+
+sub _after_save_ensure_webdav_symlink_correctness {
+  my ($self) = @_;
+
+  $self->ensure_webdav_symlink_correctness($self->{__before_save_remember_old_name}) if $self->id && $::lx_office_conf{features}->{webdav};
+  return 1;
+}
+
+sub _after_delete_delete_webdav_symlink {
+  my ($self) = @_;
+
+  return 1 if !$::lx_office_conf{features}->{webdav};
+  my $name = $self->webdav_symlink_basename;
+  unlink "webdav/links/${name}";
+  return 1;
+}
+
 sub validate {
   my ($self) = @_;
 
@@ -38,4 +72,40 @@ sub validate {
   return @errors;
 }
 
+sub webdav_symlink_basename {
+  my ($self, $name) =  @_;
+
+  $name             =  $name || $self->name || '';
+  $name             =~ s:/+:_:g;
+
+  return $name;
+}
+
+sub ensure_webdav_symlink_correctness {
+  my ($self, $old_name) = @_;
+
+  return unless $::lx_office_conf{features}->{webdav};
+
+  croak "Need object ID" unless $self->id;
+
+  my $new_symlink = $self->webdav_symlink_basename;
+
+  croak "Need name" unless $new_symlink;
+
+  my $base_path = 'webdav/links';
+
+  if ($old_name) {
+    my $old_symlink = $self->webdav_symlink_basename($old_name);
+    return if $old_symlink eq $new_symlink;
+
+    if (-l "${base_path}/${old_symlink}") {
+      rename "${base_path}/${old_symlink}", "${base_path}/${new_symlink}";
+      return;
+    }
+  }
+
+  File::Path::make_path('webdav/' . $self->id);
+  symlink '../' . $self->id, "${base_path}/${new_symlink}";
+}
+
 1;
index e397868..9d514b3 100644 (file)
@@ -20,7 +20,7 @@ sub get_login_form {
 }
 
 sub printer_dispatcher {
-  for my $action (qw(get_login_form list_printers add_printer edit_printer save_printer delete_printer list_users)) {
+  for my $action (qw(get_login_form list_printers add_printer edit_printer save_printer delete_printer)) {
     if ($::form->{$action}) {
       ::call_sub($::locale->findsub($action));
       ::end_of_request()
index 991bbc9..45938ca 100644 (file)
@@ -90,7 +90,7 @@
    <input type="hidden" name="dbpasswd"  value="[% HTML.escape(dbpasswd) %]">
    <input type="hidden" name="dbdefault" value="[% HTML.escape(dbdefault) %]">
 
-   <input type="hidden" name="callback" value="admin.pl?action=list_users">
+   <input type="hidden" name="callback" value="controller.pl?action=Admin/show">
 
    <input type="hidden" name="nextsub" value="dbcreate">
 
index 0948d1b..7ddee95 100644 (file)
@@ -9,7 +9,7 @@
 
 <input type='hidden' name='action' value='printer_dispatcher'>
 <p>
-<input type='submit' name='list_users' value='[% 'Back' | $T8 %]'>
+ <a href="controller.pl?action=Admin/show">[% 'Back' | $T8 %]</a>
 <input type='submit' name='list_printers' value='[% 'Continue' | $T8 %]'>
 </p>
 
index d06ef96..15ef02a 100644 (file)
@@ -25,7 +25,7 @@
  [% LxERP.t8("It can be changed later but must be unique within the installation.") %]
 </p>
 
-<form method="post" action="admin.pl">
+<form method="post" action="controller.pl">
  [%- FOREACH client = SELF.clients %]
  [%- L.hidden_tag("clients[+].dummy", 1) %]
 
  [%- END %]
 
  <p>
-  [%- L.hidden_tag('action', 'list_users') %]
+  [%- L.hidden_tag('action', 'Admin/apply_dbupgrade_scripts') %]
   [% L.submit_tag('dummy', LxERP.t8('Continue')) %]
  </p>
 </form>