package BeerDB::Base;
use base qw/Maypole::Model::CDBI/;
use strict;
use warnings;
use Data::Dumper;

# Overide list to add display_columns to cgi  
# Perhaps do this in AsForm?
sub list : Exported {
	use Data::Dumper;
	my ($self, $r) = @_;
	$self->SUPER::list($r);
	my %cols =  map { $_ => 1 } $self->columns, $self->display_columns;
	my @cols = keys %cols;
	$r->template_args->{classmetadata}{cgi} = { $self->to_cgi(@cols) }; 
}

# Override view to make inputs and process form to add to related 
sub view : Exported {
    my ($self, $r, $obj) = @_;
    $self->_croak( "Object method only") unless $obj;

    if ($r->params->{submit}) {
        my @related  = $obj->add_to_from_cgi($r, { required => [$self->related ]});
        if (my $errs = $obj->cgi_update_errors) {
            $r->template_args->{errors} = $errs;
        }
    }

    # Inputs to add to related on the view page
	# Now done on the view template 
	# my %cgi = $self->to_cgi($self->related);
	#$r->template_args->{classmetadata}{cgi} =  \%cgi ;
}


# Template switcheroo bug bit me -- was seeing view page but the view action was never 
# being executed after an edit.
sub do_edit : Exported {
	my ($self, $r) = (shift, shift);
	$self->SUPER::do_edit($r, @_);
	if (my $obj = $r->object) {
		my $url = $r->config->uri_base . "/" . $r->table . "/view/" . $obj->id;
		$r->redirect_request(url => $url);
	}
}

sub metadata: Exported {}
	

1;