1 package SL::Controller::Base;
 
   3 use parent qw(Rose::Object);
 
   5 use List::Util qw(first);
 
   7 sub parse_html_template {
 
  11   return $::form->parse_html_template($name, { @_, SELF => $self });
 
  17   return $_[0] if scalar(@_) == 1;
 
  20   my $controller  = delete($params{controller}) || $self->_controller_name;
 
  21   my $action      = delete($params{action})     || 'dispatch';
 
  22   $params{action} = "${controller}::${action}";
 
  23   my $query       = join('&', map { $::form->escape($_) . '=' . $::form->escape($params{$_}) } keys %params);
 
  25   return "controller.pl?${query}";
 
  30   my $action = "action_" . shift;
 
  32   return $self->_dispatch(@_) if $action eq 'action_dispatch';
 
  34   $::form->error("Invalid action ${action} for controller " . ref($self)) if !$self->can($action);
 
  38 sub _controller_name {
 
  39   return (split(/::/, ref($_[0])))[-1];
 
  45   my @actions = grep { m/^action_/ } keys %{ ref($self) . "::" };
 
  46   my $action  = first { $::form->{$_} } @actions;