I'm sorry to be such a pain (and/or sound like a newb) but I just cannot get
eval_perl set. Anyway, I've attached my config file to this email (in txt
format) in case anyone can (or has time to!) take a look and advise. Keep in
mind that this isn't my app. that is using tt. Thanks,
john
#
# Copyright (c) 2003-2008 PeopleCube. All Rights Reserved.
# ------------------------------------------------------------
package WebEvent::Cmd::Template;
use strict;
use Carp;
use Template;
use WebEvent::App::Uri;
use WebEvent::App::Util;
use WebEvent::App::Defaults qw(icon_style time_radix);
use WebEvent::API::Constants qw(WEBEVENT_ADMIN
WEBEVENT_SYNC
WEBEVENT_ADMIN_GROUP);
use WebEvent::API::Permissions qw(user_may);
use base qw(WebEvent::App::Defaults);
sub template
{
my $cmd = shift;
my $cgi = $cmd->{cgi};
my $session = $cmd->{session};
my $user = $cmd->{user};
my $site = $cmd->{site};
my $ioh = $cmd->{ioh};
my $name = $cmd->{user}->get_username;
my $vars = $cmd->{vars};
my $base = $cgi->url(-base => 1);
my $html_url = $site->getattr('html_url') || '/';
my $templates = $site->getattr('template_dir');
my $display = $cgi ->param ('display' ) || $cmd->display;
my $config = {
INCLUDE_PATH => $templates,
CACHE_SIZE => 0,
EVAL_PERL => 1,
};
# if ($site->has_attrib("templatecache")) {
# $config->{COMPILE_DIR} = $site->get_templatecache();
#}
my $template = Template->new($config) or
die "Can't make new Template: ", Template->error;
# my $template = new Template $config or
# die "Can't make new Template: ", Template->error;
$cmd->set_icon_style;
$vars->{base_url} = $base . $html_url;
$vars->{cgi_url } = my_url($cgi);
$vars->{release} = $base . $html_url;
# These interfere with navigation
$cgi->delete('subcmd');
$cgi->delete('cal_view');
$cgi->delete('cal_format');
my $icon_style = lc icon_style($cgi,
$session,
$cmd->{user},
undef,
$site);
my @logout_params = ('cmd=logout');
$site->get_site_auth_http_auth()
and push @logout_params, 'disable_http_login=1';
$vars->{base_test} = $base . $html_url;
$vars->{can_submit } = $session->get('can_submit');
$vars->{can_admin } = $session->get('can_admin');
$vars->{can_add } = $session->get('can_add');
$vars->{cal_cmd } = $cmd->make_cal_cmd;
$vars->{cal_url } = $cmd->make_cal_url;
$vars->{cmd } = $cmd->cmd;
$vars->{favorites_on_url } = related_url ($cgi, show_favorites => 1 );
$vars->{favorites_off_url} = related_url ($cgi, show_favorites => 0 );
$vars->{is_admin } = $user->is_admin;
$vars->{is_in_admin_group} = $user->is_group_member(WEBEVENT_ADMIN_GROUP) ?
1 : 0;
$vars->{login_url } = assemble_url($cgi, [] , ['cmd=login' ]);
$vars->{logout_url } = assemble_url($cgi, ['token'],
\...@logout_params);
$vars->{opt_url } = $cmd->make_opt_url;
$vars->{release_url } = $cmd->make_opt_url;
$vars->{search_url } = related_url ($cgi, cmd => 'search' );
$vars->{show_menu_icons } = ( $icon_style eq 'picture'
or $icon_style eq 'both');
$vars->{show_menu_text } = ( $icon_style eq 'text'
or $icon_style eq 'both');
$vars->{site_footer } = $site->get_site_footer;
$vars->{site_header } = $site->get_site_header;
$vars->{tabs } = $cmd->tabs;
$vars->{time_radix } = time_radix($cgi, $session, $user, undef, $site)
unless exists $vars->{time_radix};
$vars->{token } = $cmd->{session}->token;
$vars->{username } = $name;
$vars->{years } = $site->years;
$vars->{weversion } = WebEvent::API::Constants::WEBEVENT_VERSION;
$vars->{secure } = (($ENV{HTTPS} =~ /ON/i)?1:0);
$ioh->print($cgi->header($cmd->response_type, '200 OK'));
my $htmx = $cmd->{htmx};
my $file = "$display/$htmx.htmx";
$template->process($file, $vars, $ioh) or
confess "Can't process $file: ", $template->error;
}
sub display { 'crt' }
sub response_type { 'text/html' }
sub make_cal_cmd
{
my $cmd = shift;
my $session = $cmd->{session};
my $view = $session->view;
my $period = $session->period;
"$view$period"
}
sub make_cal_url
{
my $cmd = shift;
my $session = $cmd->{session};
my $view = $session->view;
my $period = $session->period;
my $cal_cmd = "$view$period";
$cmd->make_toolbar_url(cmd => $cal_cmd)
}
sub make_opt_url
{
my $cmd = shift;
$cmd->make_toolbar_url(cmd => 'opt_session')
}
sub make_toolbar_url
{
my($cmd, %add) = @_;
my $cgi = $cmd->{cgi};
my %drop = map { $_ => undef } qw(calID
dates
from_DD
from_MM0
from_YYYY
i
key
pattern
reload
selectedItems
selectedItems
to_DD
to_MM0
to_YYYY);
related_url($cgi, %add, %drop)
}
sub assemble_url
{
my($cgi, $keys, $pairs) = @_;
my $url = my_url($cgi);
my @pairs = map { my $key = $_;
my $val = $cgi->param($key);
"$key=$val" } @$keys;
my $query = join ';', @pairs, @$pairs;
"$url?$query"
}
sub cmd
{
my $cmd = shift;
my $package = ref $cmd;
my @package = split /::/, $package;
$package[-1]
}
sub tabs
{
my $cmd = shift;
my $site = $cmd->{site};
my $user = $cmd->{user};
my $agents = $user->agents;
my $siteR = $site->readable($user);
my $siteW = $site->writable($user);
my $calAdmin = ($user->calendar_list(WEBEVENT_ADMIN)) ? 1 : 0 ;
{ is_user => (not $user->is_guest),
is_admin => $siteR && $siteW,
is_caladmin => $calAdmin,
# :KLUDGE: SWM 2003Dec17 should have per-download access control
has_downloads => user_may($site, $user, $site->id, WEBEVENT_SYNC)
};
}
sub set_url
{
my($cmd, $url) = @_;
$cmd->{session}->clear('urls');
$cmd->push_url($url);
}
sub push_url
{
my $cmd = shift;
my $cgi = $cmd->{cgi};
$cgi->param('popup') and return;
my $url = shift || WebEvent::App::Uri::my_self_url($cgi);
$cmd->{session}->push('urls', $url);
}
sub pop_url
{
my $cmd = shift;
my $session = $cmd->{session};
my $url = $session->pop('urls');
# :KLUDGE: SWM In case the user gets impatient and clicks 'Cancel' again.
# See also WebEvent::CGI::Session::push0
$session->empty('urls') and
$session->push('urls', $url);
$url
}
sub back
{
my($cmd, $levels) = (@_, 1);
my $url;
while ($levels-- > 0)
{
my $u = $cmd->pop_url or last;
$url = $u;
}
$cmd->redirect($url);
}
sub redirect
{
my($cmd, $url) = @_;
my $cgi = $cmd->{cgi};
my $ioh = $cmd->{ioh};
$ioh->print($cgi->redirect($url));
}
sub cmd_redirect
{
my ($cmd, $goto) = @_;
my $cgi = $cmd->{cgi};
my $token = $cgi->param('token');
$cgi->delete_all();
$cgi->param('cmd', $goto);
$cgi->param('token', $token);
$cmd->redirect(WebEvent::App::Uri::my_self_url($cgi));
}
sub set_icon_style
{
my $cmd = shift;
my $vars = $cmd->{vars};
my $style = $cmd->default('icon_style', undef, 'both');
$vars->{icon_text } = $style eq 'both' || $style eq 'text' ;
$vars->{icon_picture} = $style eq 'both' || $style eq 'picture';
}
sub reshape
{
my $cmd = shift;
my $Vars = $cmd->{cgi}->Vars;
$cmd->{Vars} = WebEvent::App::Util::Reshape($Vars)
}
sub LineEnding
{
my $cmd = shift;
my $cgi = $cmd->{cgi};
my $agent = $ENV{HTTP_USER_AGENT};
if ($cgi)
{
for ($cgi->param('file_type'))
{
/PC/ and return "\r\n";
/Unix/ and return "\n";
/Mac/ and return "\r";
}
}
for ($agent)
{
/unix/i and return "\n";
/linux/i and return "\n";
}
undef
}
sub addslashes {
my $self = shift;
my $text = shift;
for ($text) {
s/'/\\'/g;
s/"/\\"/g;
s/"/\\"/g;
}
return $text;
}
1;
=head1 NAME
WebEvent::Cmd::Template - utility methods for commands
=cut
_______________________________________________
templates mailing list
[email protected]
http://mail.template-toolkit.org/mailman/listinfo/templates