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

Reply via email to