X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FPresenter.pm;h=44332bd91a666971e0ce3057039d62c6af61d7cd;hb=3782a90c336bc6c506f572e607c8526cb5e79ea3;hp=590800294038a067fb71d520742e4ec41d75d839;hpb=f1adac26732c78610767856db26d76d889e04f71;p=kivitendo-erp.git diff --git a/SL/Presenter.pm b/SL/Presenter.pm index 590800294..44332bd91 100644 --- a/SL/Presenter.pm +++ b/SL/Presenter.pm @@ -7,24 +7,7 @@ use parent qw(Rose::Object); use Carp; use Template; -use SL::Presenter::Chart; -use SL::Presenter::CustomerVendor; -use SL::Presenter::DeliveryOrder; -use SL::Presenter::EscapedText; -use SL::Presenter::Invoice; -use SL::Presenter::GL; -use SL::Presenter::Letter; -use SL::Presenter::Order; -use SL::Presenter::Part; -use SL::Presenter::Project; -use SL::Presenter::Record; -use SL::Presenter::RequirementSpec; -use SL::Presenter::RequirementSpecItem; -use SL::Presenter::RequirementSpecTextBlock; -use SL::Presenter::SepaExport; -use SL::Presenter::Text; -use SL::Presenter::Tag; -use SL::Presenter::BankAccount; +use SL::Presenter::EscapedText qw(is_escaped); use Rose::Object::MakeMethods::Generic ( scalar => [ qw(need_reinit_widgets) ], @@ -62,8 +45,10 @@ sub render { # Look for the file given by $template if $template is not a reference. my $source; if (!ref $template) { + my $webpages_path = $::request->layout->webpages_path; + my $ext = $options->{type} eq 'text' ? 'txt' : $options->{type}; - $source = "templates/webpages/${template}.${ext}"; + $source = "${webpages_path}/${template}.${ext}"; croak "Template file ${source} not found" unless -f $source; } elsif (ref($template) eq 'SCALAR') { @@ -79,15 +64,15 @@ sub render { if (!$options->{process}) { # If $template is a reference then don't try to read a file. my $ref = ref $template; - return $template if $ref eq 'SL::Presenter::EscapedText'; - return SL::Presenter::EscapedText->new(text => ${ $template }, is_escaped => 1) if $ref eq 'SCALAR'; + return $template if $ref eq 'SL::Presenter::EscapedText'; + return is_escaped(${ $template }) if $ref eq 'SCALAR'; # Otherwise return the file's content. my $file = IO::File->new($source, "r") || croak("Template file ${source} could not be read"); my $content = do { local $/ = ''; <$file> }; $file->close; - return SL::Presenter::EscapedText->new(text => $content, is_escaped => 1); + return is_escaped($content); } # Processing was requested. Set up all variables. @@ -107,12 +92,14 @@ sub render { my $parser = $self->get_template; $parser->process($source, \%params, \$output) || croak $parser->error; - return SL::Presenter::EscapedText->new(text => $output, is_escaped => 1); + return is_escaped($output); } sub get_template { my ($self) = @_; + my $webpages_path = $::request->layout->webpages_path; + # Make locales.pl parse generic/exception.html, too: # $::form->parse_html_template("generic/exception") $self->{template} ||= @@ -121,38 +108,16 @@ sub get_template { ABSOLUTE => 1, CACHE_SIZE => 0, PLUGIN_BASE => 'SL::Template::Plugin', - INCLUDE_PATH => '.:templates/webpages', + INCLUDE_PATH => ".:$webpages_path", COMPILE_EXT => '.tcc', COMPILE_DIR => $::lx_office_conf{paths}->{userspath} . '/templates-cache', - ERROR => 'templates/webpages/generic/exception.html', + ERROR => "${webpages_path}/generic/exception.html", ENCODING => 'utf8', }) || croak; return $self->{template}; } -sub escape { - my ($self, $text) = @_; - - return SL::Presenter::EscapedText->new(text => $text); -} - -sub escaped_text { - my ($self, $text) = @_; - - return SL::Presenter::EscapedText->new(text => $text, is_escaped => 1); -} - -sub escape_js { - my ($self, $text) = @_; - - $text =~ s|\\|\\\\|g; - $text =~ s|\"|\\\"|g; - $text =~ s|\n|\\n|g; - - return SL::Presenter::EscapedText->new(text => $text, is_escaped => 1); -} - 1; __END__ @@ -175,14 +140,15 @@ SL::Presenter - presentation layer class # Higher-level rendering of certain objects: use SL::DB::Customer; - my $linked_customer_name = $presenter->customer($customer, display => 'table-cell'); + my $linked_customer_name = $customer->presenter->customer(display => 'table-cell'); # Render a list of links to sales/purchase records: use SL::DB::Order; + use SL::Presenter::Record qw(grouped_record_list); my $quotation = SL::DB::Manager::Order->get_first(where => { quotation => 1 }); my $records = $quotation->linked_records(direction => 'to'); - my $html = $presenter->grouped_record_list($records); + my $html = grouped_record_list($records); =head1 CLASS FUNCTIONS @@ -308,35 +274,6 @@ it at all: { type => 'json', process => 0 } ); -=item C - -Returns an HTML-escaped version of C<$text>. Instead of a string an -instance of the thin proxy-object L is -returned. - -It is safe to call C on an instance of -L. This is a no-op (the same instance will -be returned). - -=item C - -Returns an instance of L. C<$text> is -assumed to be a string that has already been HTML-escaped. - -It is safe to call C on an instance of -L. This is a no-op (the same instance will -be returned). - -=item C - -Returns a JavaScript-escaped version of C<$text>. Instead of a string -an instance of the thin proxy-object L is -returned. - -It is safe to call C on an instance of -L. This is a no-op (the same instance will -be returned). - =item C Returns the global instance of L