Fix NAME in POD
[catagits/Reaction.git] / lib / Reaction / UI / Controller.pm
index fa9290f..361a5c2 100644 (file)
@@ -22,7 +22,7 @@ sub push_viewport {
       if (my $conf_class = delete $vp_attr->{class}) {
         $class = $conf_class;
       }
-      %args = (%$vp_attr, @proto_args);
+      %args = %{ $self->merge_config_hashes($vp_attr, {@proto_args}) };
     } else {
       $class = $vp_attr;
       %args = @proto_args;
@@ -55,7 +55,7 @@ sub redirect_to {
   my $action;
   if(!ref $to){
       $action = $self->action_for($to);
-      confess("Failed to locate action ${to} in " . $self->blessed) unless $action;
+      confess("Failed to locate action ${to} in " . blessed($self)) unless $action;
   }
   elsif( blessed $to && $to->isa('Catalyst::Action') ){
       $action = $to;
@@ -74,3 +74,64 @@ sub redirect_to {
 }
 
 1;
+
+__END__;
+
+=head1 NAME
+
+Reaction::UI::Controller
+
+=head1 DESCRIPTION
+
+Base Reaction Controller class. Inherits from:
+
+=over 4
+
+=item L<Catalyst::Controller>
+=item L<Catalyst::Component::ACCEPT_CONTEXT>
+=item L<Reaction::Object>
+
+=back
+
+=head1 METHODS
+
+=head2 push_viewport $vp_class, %args
+
+Will create a new instance of $vp_class with the arguments of %args
+merged in with any arguments in the ViewPort attribute of the current
+Catalyst action (also accessible through the controller config), add
+it to the main FocusStack (C<$c-E<gt>stash-E<gt>{focus_stack}>) and
+return the instantiated viewport.
+
+TODO: explain how next_action as a scalar gets converted to the redirect arrayref thing
+
+=head2 pop_viewport
+
+=head2 pop_viewport_to $vp
+
+Shortcut to subs of the same name in the main FocusStack (C<$c-E<gt>stash-E<gt>{focus_stack}>)
+
+=head2 redirect_to $c, $to, $captures, $args, $attrs
+
+If C<$to> is a string then redirects to the action of the same name  in the current
+ controller (C<$c-E<gt>controller> not C<$self>).
+
+If C<$to> isa L<Catalyst::Action>
+it will pass the argument directly to C<$c-E<gt>uri_for>.
+
+If C<$to> is an ArrayRef with two items it will treat the first as a Controller name
+and the second as the action name whithin that controller.
+
+C<$captures>, C<$args>, and C<$attrs> are equivalent to the same arguments in
+C<uri_for>. If left blank the current request captures and args will be used
+and C<$attrs> will be passed as an empty HashRef.
+
+=head1 AUTHORS
+
+See L<Reaction::Class> for authors.
+
+=head1 LICENSE
+
+See L<Reaction::Class> for the license.
+
+=cut