Kontoauszug verbuchen: Neuen Skonto-Typ
[kivitendo-erp.git] / SL / Controller / Base.pm
index 52ec19d..5847b98 100644 (file)
@@ -13,7 +13,8 @@ use SL::Presenter;
 
 use Rose::Object::MakeMethods::Generic
 (
-  scalar => [ qw(action_name) ],
+  scalar                  => [ qw(action_name) ],
+  'scalar --get_set_init' => [ qw(js) ],
 );
 
 #
@@ -28,6 +29,7 @@ sub url_for {
   my %params      = ref($_[0]) eq 'HASH' ? %{ $_[0] } : @_;
   my $controller  = delete($params{controller}) || $self->controller_name;
   my $action      = $params{action}             || 'dispatch';
+  my $fragment    = delete $params{fragment};
 
   my $script;
   if ($controller =~ m/\.pl$/) {
@@ -40,7 +42,7 @@ sub url_for {
 
   my $query       = join '&', map { uri_encode($_->[0]) . '=' . uri_encode($_->[1]) } @{ flatten(\%params) };
 
-  return "${script}?${query}";
+  return "${script}?${query}" . (defined $fragment ? "#$fragment" : '');
 }
 
 sub redirect_to {
@@ -165,6 +167,8 @@ sub send_file {
   } else {
     $::locale->with_raw_io(\*STDOUT, sub { print $$file_name_or_content });
   }
+
+  return 1;
 }
 
 sub presenter {
@@ -177,6 +181,10 @@ sub controller_name {
   return $class;
 }
 
+sub init_js {
+  SL::ClientJS->new(controller => $_[0])
+}
+
 #
 # Before/after run hooks
 #
@@ -521,6 +529,9 @@ L</controller_name>.
 The action to call is given by C<$params{action}>. It defaults to
 C<dispatch>.
 
+If C<$params{fragment}> is present, it's used as the fragment of the resulting
+URL.
+
 All other key/value pairs in C<%params> are appended as GET parameters
 to the URL.
 
@@ -615,6 +626,10 @@ name the dispatching resolved to.
 Returns the global presenter object by calling
 L<SL::Presenter/get>.
 
+=item C<js>
+
+Returns an L<SL::ClientJS> instance for this controller.
+
 =back
 
 =head2 PRIVATE FUNCTIONS