Matt,

I don't know if any of this is useful to you. We do something that sounds a bit like what you're after, by tweaking the template include_path with each request. It's a classic path setting algorithm, working back from most specific to least specific location.

ie, a template that says PROCESS "something.tt" that is the end result of the URI /myapp/xx/yy/zz will look for something.tt in tt/xx/yy/zz, then tt/xx/yy, then tt/xx, or tt/base. This gives us enormous flexibility to tweak the output at any node or leaf of the tree.

You can create empty something.tt files in various places too, that has a negating effect.

MyApp/C/Root.pm contains

sub auto {
    ...
    $c->stash->{reportfolders} = split('/',$c->req->path);
    ...
}

MyApp/V/TT.pm contains

sub process {
    my ($self, $c) = @_;
    if (my $reportfolders = $c->stash->{reportfolders}) {
        my @orig_path = @{$self->include_path};
        my @this_path = ();
        for my $orig_entry (@orig_path) {
for (my @folders = @$reportfolders; @folders; pop @folders) { push @this_path, join('/', $orig_entry, '..', @folders);
            }
            push @this_path, $orig_entry;
        }
        @{$self->include_path} = @this_path;
#$c->log->debug(sprintf('%s:process: dynamic include_path is %s.', __PACKAGE__, join(':',@{$self->include_path})));
        $self->SUPER::process($c);
        @{$self->include_path} = @orig_path;
    } else {
        $self->SUPER::process($c);
    }
}

Hope that's useful.

cheers
RET
________________________________
Illegitimi non carborundum

On 12/08/2009, at 3:15 AM, Matt Whipple wrote:



Thanks everyone for your input, I'm certainly gathering that there is nothing preexisting that does what I'm looking to do. I'll continue to clean up my version and throw it on CPAN if it seems appealing enough. As a quick overview the basic premise is a more direct link from the path to the template which would be used for those times when the URI path determines presentation after passing through a reusable action handler which tailors content (and doesn't necessarily have to worry about the template selection). This is presently done in the auto action so that overriding the behavior is natural and any extended logic can be handled when and where desired.
<http://blog.afoolishmanifesto.com>
------------------------------------------------------------------------


_______________________________________________
List: [email protected]
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/[email protected]/
Dev site: http://dev.catalyst.perl.org/

Reply via email to