X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=lib%2FMaypole%2FView%2FBase.pm;h=668b2c4430fa4b061d0343cf237dfd203a45ae2f;hb=fb132e6828e038d5b7f58f28af702a67f8e05d09;hp=37ca4318d32304a42977e1cb996c36eb0ea5152b;hpb=49b0368ba6c1d3d0bd1418a5914bc5265a22941f;p=maypole.git diff --git a/lib/Maypole/View/Base.pm b/lib/Maypole/View/Base.pm index 37ca431..668b2c4 100644 --- a/lib/Maypole/View/Base.pm +++ b/lib/Maypole/View/Base.pm @@ -21,10 +21,12 @@ sub paths { sub vars { my ($self, $r) = @_; my $class = $r->model_class; + my $base = $r->{config}->{uri_base}; + $base =~ s/\/+$//; my %args = ( request => $r, objects => $r->objects, - base => $r->config->{uri_base}, + base => $base, config => $r->config # ... ) ; @@ -38,7 +40,6 @@ sub vars { moniker => $class->moniker, plural => $class->plural_moniker, cgi => { $class->to_cgi }, - description => $class->description }; # User-friendliness facility for custom template writers. @@ -65,7 +66,33 @@ sub process { sub error { my ($self, $r) = @_; warn $r->{error}; - if ($r->{error} =~ /not found$/) { return -1 } + if ($r->{error} =~ /not found$/) { + # This is a rough test to see whether or not we're a template or + # a static page + return -1 unless @{$r->{objects}||[]}; + + $r->{error} = < Template not found + +This template was not found while processing the following request: + +@{[$r->{action}]} on table @{[ $r->{table} ]} with objects: + +
+@{[join "\n", @{$r->{objects}}]}
+
+ +Looking for template @{[$r->{template}]} in paths: + +
+@{[ join "\n", $self->paths($r) ]}
+
+EOF + $r->{content_type} = "text/html"; + $r->{output} = $r->{error}; + return OK; + } $r->{content_type} = "text/plain"; $r->{output} = $r->{error}; $r->send_output;