diff options
author | tetragon <tetragon@4979c152-3d1c-0410-bac9-87ea11338e46> | 2007-04-04 02:35:26 +0000 |
---|---|---|
committer | tetragon <tetragon@4979c152-3d1c-0410-bac9-87ea11338e46> | 2007-04-04 02:35:26 +0000 |
commit | 5c3a962f492011bebe096a5a4b007062152df2d7 (patch) | |
tree | 4767953d3090870de43ccb992ed096545be9e4da /LedgerSMB/Template.pm | |
parent | a3a6064b492c70ecacaa5b413547deb695212487 (diff) |
First round of template changes for new TT system
git-svn-id: https://ledger-smb.svn.sourceforge.net/svnroot/ledger-smb/trunk@1023 4979c152-3d1c-0410-bac9-87ea11338e46
Diffstat (limited to 'LedgerSMB/Template.pm')
-rwxr-xr-x | LedgerSMB/Template.pm | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/LedgerSMB/Template.pm b/LedgerSMB/Template.pm new file mode 100755 index 00000000..2c1a9d8f --- /dev/null +++ b/LedgerSMB/Template.pm @@ -0,0 +1,87 @@ +#===================================================================== +# +# Template support module for LedgerSMB +# LedgerSMB::Template +# +# LedgerSMB +# Small Medium Business Accounting software +# http://www.ledgersmb.org/ +# +# +# Copyright (C) 2007 +# This work contains copyrighted information from a number of sources all used +# with permission. It is released under the GNU General Public License +# Version 2 or, at your option, any later version. See COPYRIGHT file for +# details. +# +# +#====================================================================== +# This package contains template related functions: +# +# +#==================================================================== +use Error qw(:try); +use Template; +use LedgerSMB::Sysconfig; + +package LedgerSMB::Template; + +sub new { + my $class = shift; + my $self = {}; + $self->{myconfig} = shift; + $self->{template} = shift; + $self->{format} = shift; + $self->{language} = shift; + $self->{output} = ''; + bless $self, $class; + return $self; +} + +sub valid_language { + my $self = shift; + # XXX Actually perform validity checks + return 1; +} + +sub render { + my $self = shift; + my $vars = shift; + my $template; + + if (not defined $self->{language}) { + $template = Template->new({ + INCLUDE_PATH => $self->{'myconfig'}->{'templates'}, + START_TAG => quotemeta('<?lsmb'), + END_TAG => quotemeta('?>'), + DELIMITER => ';', + }) || throw Error::Simple Template->error(); + } elsif ($self->valid_language()) { + $template = Template->new({ + INCLUDE_PATH => "$self->{'myconfig'}->{'templates'}/$self->{language};$self->{'myconfig'}->{'templates'}", + START_TAG => quotemeta('<?lsmb'), + END_TAG => quotemeta('?>'), + DELIMITER => ';', + }) || throw Error::Simple Template->error(); + } else { + throw Error::Simple 'Invalid language'; + } + + eval "require LedgerSMB::Template::$self->{format}"; + if ($@) { + throw Error::Simple $@; + } + + my $cleanvars = &{"LedgerSMB::Template::$self->{format}::preprocess"}($vars); + if (not $template->process( + &{"LedgerSMB::Template::$self->{format}::get_template"}($self->{template}), + $cleanvars, \$self->{output}, binmode => ':utf8')) { + throw Error::Simple $template->error(); + } + + &{"LedgerSMB::Template::$self->{format}::postprocess"}($self); + + return $self->{output}; +} + +1; |