package MobileCat::Base;
use strict;
use warnings;
use base 'Catalyst::Controller::Mobile::JP';

sub default :Path {
    my ($self, $c) = @_;
    $c->error(404);
}

sub end :Private {
    my ($self, $c) = @_;
    
    $c->stash->{encoding} = $self->encoding;
    $c->forward('render');
    $c->forward('error');
    $c->forward( $c->view('MobileJpFilter') );

    $self->next::method($c);
}

sub render :ActionClass('RenderView') {
    my ($self, $c) = @_;
}

sub error :Private {
    my ($self, $c) = @_;
    
    if ($c->stash->{error}) {
        $c->log->error('error: '. $c->stash->{error});
    }
    if ($c->form->has_error) {
        $c->log->error('validate error:'. join(', ', $c->form->error));
    }
    
    return unless @{ $c->error };
    
    my $errcode;
    if (grep { $c->error->[0] eq $_ } qw/401 404 503/) {
        $errcode = shift @{ $c->error };
    }
    if (my @errors = @{ $c->error } and not $c->debug) {
        $c->log->error($_) for @errors;
        $c->clear_errors;
        $errcode = 503;
    }
    if ($errcode) {
        $c->res->status($errcode);
        
        return unless $c->res->content_type =~ /html$/;
        $c->view('TT')->template("error/$errcode.tt");
        $c->forward( $c->view('TT') );
    }
}

1;

