Bivio::UI::View::SiteRoot
# Copyright (c) 2007 bivio Software, Inc. All Rights Reserved.
# $Id$
package Bivio::UI::View::SiteRoot;
use strict;
use Bivio::Base 'View.Base';
use Bivio::UI::ViewLanguageAUTOLOAD;
sub VALID_METHOD_REGEXP {
return qr{^hm_}s;
}
sub unsafe_new {
my($proto, $name) = (shift, shift);
$name =~ s/[\W_]+/_/g;
$name =~ s/^_//;
return undef
unless $name =~ $proto->VALID_METHOD_REGEXP;
my($self) = $proto->SUPER::unsafe_new($name, @_);
return $self && $self->put(view_name => $name);
}
sub execute_task_item {
my($proto, $view_name, $req) = @_;
return shift->SUPER::execute_task_item(
$view_name eq 'execute_uri' ? $req->get('uri') : $view_name, $req)
}
sub format_uri {
my($proto, $view_name, $req) = @_;
Bivio::Die->die($view_name, ': invalid view name')
unless $view_name =~ $proto->VALID_METHOD_REGEXP
&& $proto->can($view_name);
$view_name =~ s{_}{/}g;
return $req->format_uri({
task_id => Bivio::Agent::TaskId->SITE_ROOT,
path_info => $view_name,
no_context => 1,
query => undef,
});
}
1;