X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/ca86a307ee2df8ca82974016876709a7c4746d9a..1cff7d8034b00f4fd365a716596b54b798f035d7:/SL/Controller/Base.pm diff --git a/SL/Controller/Base.pm b/SL/Controller/Base.pm index 52ec19dcb..d10ba805c 100644 --- a/SL/Controller/Base.pm +++ b/SL/Controller/Base.pm @@ -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{hash} // 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}" . ($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 # @@ -615,6 +623,10 @@ name the dispatching resolved to. Returns the global presenter object by calling L. +=item C + +Returns an L instance for this controller. + =back =head2 PRIVATE FUNCTIONS