view release on metacpan or search on metacpan
DBD::CSV, SQL::Statement and Text::CSV_XS.
( Boris Zentner )
- fop_command can be disabled with fop_command = ""
( Boris Zentner, Shimon Rura )
- Remove Apache->request calls from Apache::PageKit::Edit
just to make apache 2 changes smaller ( Boris Zentner )
- Fix: Parse Accept-Charsets more pettier ( Boris Zentner )
! If the client browser has no accept charset header or no good one,
deliver in the default_output_charset and set the charset
in the content_type header. ( Erik Günther )
- Fix uri_prefix in conjunction with can_edit
( Boris Zentner, Erik Günther )
1.13
- Add support for Apache2 ( Boris Zentner )
- Add scripts/pkit_rename_app.pl it helps to start new applications
fast ( Boris Zentner )
- Add <PKIT_COMMENT> and </PKIT_COMMENT> tags. ( Boris Zentner )
- Fix filetest for upload_tmp_dir ( Boris Zentner )
- Fix locale support. One message was twice in the .po files.
( Boris Zentner )
- Fix Encoding of Apache::PageKit::Edit. Use HTML::Entities
- Avoid changing apr->filename and apr->path_info
(Boris Zentner)
- Fix warning, when the clients browser did not send a
User-Agent header. (Boris Zentner)
- Fix for startup when passed parameter should override
PKIT_ROOT and PKIT_SERVER settings (TJ Mather)
- Workaround another UTF conversion bug in perl 5.6.1
(Boris Zentner, Gabriel Burca)
- Fix docs for PKIT_HAVE_MESSAGES and PKIT_HAVE_NOT_MESSAGES
(Boris Zentner)
- Fix: pkit_edit translate & to & since <textarea> holds
#PCDATA, but we want it raw. (Boris Zentner)
- Fix warning, when pkit_auth_session_key is called with a session
without a user_id or the database can not provide a login
or passwd. (Boris Zentner)
- Fix: do NOT cache the page, that force us to login (Boris Zentner)
- Fix warning, when a pkit_macro tag is used without the same
parameter in the pkit_component tag (Boris Zentner)
- Fix pkit_input_hashref for the case where you request the hash,
change something and request the hash again. In error
you get the old value(s) back. (Glenn Morgan)
find PKIT_ROOT and or PKIT_SERVER for
mod_perl >= 1.06 (Boris Zentner)
- Add patch to use <PKIT_ERRORSPAN> and <PKIT_ERRORFONT>
without a name attribute. (Boris Zentner)
- Add: component subs are called with component-parameters.
See pkit_component_params_hashref
(Boris Zentner)
! Component code is called inorder from top to the bottom
(Boris Zentner)
- Fix: bug, where path relative components are not listed
as an edit component. (Boris Zentner, Gabriel Burca)
- Fix: A errormessage is fixed, that report file is out of
the root_dir even if the file is not found.
(Boris Zentner, Gabriel Burca)
- Add new server option cookie_postfix. To name cookies just for the
case, that multiple pkit applications run in the same
apache server. (Boris Zentner, David Raimbault)
- Fix: write the session data and destroy the db connection
even if an error transpires (Boris Zentner)
- Fix: defer delivery of static pages if parameters are attached to
the URI. This allows to login/logout even with a static
attribute. (Boris Zentner)
- Fix two cases where a filehandle can be used even if open failed
(Boris Zentner)
- Fix uri_prefix so that the url did not grow anymore (Boris Zentner)
- Remove unused modules Data::Dumper and Carp from View.pm (Boris Zentner)
- Fix to deliver static pages unzipped if desired (Anton Permyakov)
- Fix case where wrong cached file is used for xsl files with
reload="no" and first called without parameters in the
URL (Boris Zentner, Ben Ausden)
1.08
- Added on-line editing tools
- Add Postgres support (Chris Hamilton)
- Add support for page based sessions (Boris Zentner)
- Add support for localized messages of pkit (Boris Zentner)
- Add fr message catalog (David Raimbault)
- Add pt message catalog (Leonardo T. de Carvalho)
- Add de message catalog (Boris Zentner)
! Change default for html_clean_level to 0 (Boris Zentner)
- Add <PKIT_NOT_ERROR> directive to seperate errors
from messages (David Christian)
! Catch up with new interface in XML::LibXML 1.31 (Anton Berezin)
- Fixed pkit_merge_sessions (David Raimbault)
- Fixed writing and warning of gzipped static pages (Boris Zentner)
- Fixed default for html_clean_level. It is now 9 as documented (Boris Zentner)
- Fixed language localization support (Boris Zentner)
- Fixed default for post_max. It is now 100_000_000 as documented (Boris Zentner)
- Reenable gzip content it was ignored before. (Boris Zentner)
- Fixed uri handling of http://www.abc.de/ where we end in a empty uri instead
of index (Boris Zentner)
- Fixed usage of Digest::MD5::md5_hex in sub pkit_auth_credential and
pkit_auth_session_key in Common.pm (Boris Zentner)
- Set Default for the server attrs can_edit and reload (Boris Zentner)
- First attempt to make pkit warning clean (Boris Zentner, David Raimbault)
- Fix default timeout for 'recent_login_timeout' from unlimited to 3600
like the Docs say (Boris Zentner)
- Parse difficult parameters like
http://ka.brain.de/login2?passwd=ss&&&&submit&&login=s& (Boris Zentner)
- Add restricted page to the example site (Boris Zentner)
- Fixed setup_session without touch of pkit_merge_session (Boris Zentner)
- Fixed problem with append of check_cookie (Boris Zentner)
- Sessions are not lazy anymore (Boris Zentner)
- Fixed bug with use_template is set to 'no'
- Fixed bug with XPath queries.
- Fixed bug with locating only files in Page dir for
preparse_templates
0.97 Wed Apr 25 17:07:31 2001 EST
- Login code has been rewritten. To attempt a login, the
pkit_login request parameter must be set.
The new_credential configuration option is no longer
supported.
- added can_edit to server config section Config.dtd file.
- Names in <CONTENT_VAR> and <CONTENT_LOOP> tags are
XPath queries
- Removed support for navigation bars, since they didn't fit
in well with the new Content and View modules. Might
add them back if there is demand and I can find an
clean way of doing it (using XPointers in content
XML file???)
- Removed support for $model->content_param, since content
is now compiled into template and it is not possible
to get or set the tags run time.
eg/View/Default/customize.tmpl
eg/View/Default/demo_desc.tmpl
eg/View/Default/end_cell.tmpl
eg/View/Default/form_validation.tmpl
eg/View/Default/index.tmpl
eg/View/Default/language.tmpl
eg/View/Default/license.tmpl
eg/View/Default/login1.tmpl
eg/View/Default/media.tmpl
eg/View/Default/newacct1.tmpl
eg/View/Default/pkit_edit/open_file.tmpl
eg/View/Default/restricted.tmpl
eg/View/Default/simple_page.xsl
eg/View/Default/top.tmpl
eg/View/pdf/media.tmpl
eg/View/pdf/simple_page.xsl
eg/View/print/bottom.tmpl
eg/View/print/top.tmpl
eg/View/wml/media.tmpl
eg/View/wml/simple_page.xsl
eg/View/xml/media.tmpl
by providing a clear separation of programming, content and
presentation.
It does this by implementing a Model/View/Content/Controller (MVCC)
design paradigm:
- Model is user supplied Perl Classes
- View is set of PageKit Templates and/or XSLT files
- Content is set of XML Files
- Controller is PageKit
This allows your programmers, designers and content editors to work
independently with clean well-defined interfaces.
PageKit provides the following features:
- Component-based architecture
- Language Localization and charset translation
- Session Management
- Input Validation
- Sticky HTML Forms
- Authentication
- Co-branding and XML,WML, and PDF output
docsrc/features.xml view on Meta::CPAN
FOP processor, available from
<ulink url="http://xml.apache.org/fop/">http://xml.apache.org/fop/</ulink>, and
configure <link linkend="config.global.fop_command">fop_command</link> to point
to the FOP processor.
</para>
<para>
You may set the <literal><link linkend="request.pkit_view">pkit_view</link></literal> request parameter in the request URI or by using
<literal>$model->input(pkit_view => <replaceable>pkit_view</replaceable>);</literal> in your model code.
</para>
</sect1>
<sect1 id="features.editing"><?dbhtml filename="editing.html"?>
<title>On-line Editing tools</title>
<para>
PageKit supports a set of simple on-line editing tools. To enable,
set <literal><link linkend="config.server.can_edit">can_edit</link></literal> in your
server config. You will also need to call in your Model code:
</para>
<informalexample>
<programlisting>
$model->output(pkit_admin => 1);
</programlisting>
</informalexample>
</sect1>
<sect1><?dbhtml filename="errorreport.html"?>
<title>Error Reporting</title>
docsrc/reference.xml view on Meta::CPAN
</para>
</listitem>
</varlistentry>
<varlistentry id="config.global.relaxed_parser">
<term>relaxed_parser</term>
<listitem>
<para>
If set to yes, this option allows template tags to be placed inside
HTML comments. It also permits spaces and newlines within the tag itself.
This option may be useful to HTML authors who would like to validate their
templates' HTML syntax prior to processing, or who use DTD-aware editing
tools.
Defaults to <emphasis>no</emphasis>.
<informalexample>
<programlisting>
relaxed_parser = "yes"
# these tags are all allowed if relaxed_parser is enabled:
<MODEL_VAR NAME="x">
< MODEL_VAR NAME = 'x' >
docsrc/reference.xml view on Meta::CPAN
<sect2>
<title>Server Attributes</title>
<para>
These options are global over all pages, but are local to each server configuration
(e.g. production, staging, development). They are located in the <SERVERS> tag of
<filename>Config/Config.xml</filename>.
</para>
<variablelist>
<varlistentry id="config.server.can_edit">
<term>can_edit</term>
<listitem>
<para>
If set to <emphasis>yes</emphasis>, enables <link linkend="features.editing">on-line editing tools</link>.
</para>
</listitem>
</varlistentry>
<varlistentry id="config.server.cookie_domain">
<term>cookie_domain</term>
<listitem>
<para>
Domain for that cookies are issued. Note that you must have
at least two periods in the cookie domain.
</para>
docsrc/reference.xml view on Meta::CPAN
</refnamediv>
<refsynopsisdiv>
<synopsis>
$model->fillinform(email => $email);
</synopsis>
</refsynopsisdiv>
<refsect1>
<title>Description</title>
<para>
Used with <ulink uri="http://kobesearch.cpan.org/search?dist=HTML-FillInForm">HTML::FillInForm</ulink> to fill in HTML forms. Useful for example
when you want to fill an edit form with data from the database.
</para>
</refsect1>
</refentry>
<refentry id="model.api.ignore_fillinform_fields">
<refnamediv>
<refname>ignore_fillinform_fields</refname>
<refpurpose>
Fills in HTML Forms
</refpurpose>
eg/Config/Config.xml view on Meta::CPAN
login_page="login1"
model_base_class="MyPageKit::Common"
model_dispatch_prefix="MyPageKit::MyModel"
recent_login_timeout="10"
session_expires="+1y"
/>
<SERVERS>
<SERVER id="production"
reload="no"/>
<SERVER id="staging"
can_edit="yes"
reload="yes"/>
</SERVERS>
<VIEWS>
<VIEW id="pdf"/>
<VIEW id="wml"/>
<VIEW id="xml"/>
</VIEWS>
<PAGES>
<PAGE id="customize" request_param_in_tmpl="yes"/>
<PAGE id="restricted" require_login="recent"/>
eg/Config/PageKit_Config-0.97.dtd view on Meta::CPAN
post_max CDATA "100000000"
recent_login_timeout CDATA "3600"
request_param_in_tmpl CDATA "no"
session_expires CDATA #IMPLIED
uri_prefix CDATA #IMPLIED
verify_page CDATA #IMPLIED>
<!ELEMENT SERVERS (SERVER)*>
<!ELEMENT SERVER EMPTY>
<!ATTLIST SERVER
id CDATA "Default"
can_edit (yes|no) "no"
cookie_domain NMTOKENS #IMPLIED
files_match CDATA #IMPLIED
html_clean_level (0|1|2|3|4|5|6|7|8|9) "9"
reload (yes|no) "no">
<!ELEMENT PAGES (PAGE)*>
<!ELEMENT PAGE EMPTY>
<!ATTLIST PAGE
id ID #REQUIRED
browser_cache CDATA #IMPLIED
fill_in_form (yes|no) "yes"
eg/Model/MyPageKit/Common.pm view on Meta::CPAN
$session = $model->session;
}
# for the pagekit.org website, we control the colors based on the
# values the user selected, stored in the session.
$model->output(link_color => $session->{'link_color'} || '#ff9933');
$model->output(text_color => $session->{'text_color'} || '#000000');
$model->output(bgcolor => $session->{'bgcolor'} || '#dddddd');
$model->output(mod_color => $session->{'mod_color'} || '#ffffff');
# toggle on-line editing tools
if($model->input('pkit_admin')) {
$session->{'pkit_admin'} = $model->input('pkit_admin') eq 'on' ? 1 : 0;
}
$model->output(pkit_admin => $session->{'pkit_admin'});
}
sub pkit_auth_credential {
my ($model) = @_;
my $dbh = $model->dbh;
my $login = $model->input('login');
eg/View/Default/pkit_edit/open_file.tmpl view on Meta::CPAN
<html>
<body>
<center>
<h1><MODEL_VAR file/></h1>
<MODEL_IF read_only>
<h2>File is readonly!</h2>
</MODEL_IF>
<form action="/pkit_edit/commit_file?file=<MODEL_VAR file/>&pkit_done=<MODEL_VAR pkit_done>" method=post enctype="application/x-www-form-urlencoded">
<p><textarea
name="content" wrap=off cols=100 rows=25
<MODEL_IF read_only>readonly</MODEL_IF>
><MODEL_VAR content></textarea></p>
<MODEL_UNLESS read_only><input name="submit" type=submit value="Commit"> <input name="reset" type=reset value="Reset"></MODEL_UNLESS>
</form>
</center>
</body>
</html>
lib/Apache2/PageKit.pm view on Meta::CPAN
die "Model class $model_base_class has no new method ($@)";
}
}
$self->{dbh} = $model->pkit_dbi_connect if $model->can('pkit_dbi_connect');
my $default_lang = $config->get_global_attr('default_lang') || 'en';
my $default_input_charset = $config->get_global_attr('default_input_charset') || 'ISO-8859-1';
my $default_output_charset = $config->get_global_attr('default_output_charset') || 'ISO-8859-1';
my $html_clean_level = $config->get_server_attr('html_clean_level') || 0;
my $can_edit = $config->get_server_attr('can_edit') || 'no';
my $reload = $config->get_server_attr('reload') || 'no';
my $cache_dir = $config->get_global_attr('cache_dir');
my $view_cache_dir = $cache_dir ? $cache_dir . '/pkit_cache' : $pkit_root . '/View/pkit_cache';
my $relaxed_parser = $config->get_global_attr('relaxed_parser') || 'no';
my $errorspan_begin_tag = $config->get_global_attr('errorspan_begin_tag') || q{<font color="<PKIT_ERRORSTR>">};
my $errorspan_end_tag = $config->get_global_attr('errorspan_end_tag') || q{</font>};
my $default_errorstr = $config->get_global_attr('default_errorstr') || '#ff0000';
my $uri_prefix = $config->get_global_attr('uri_prefix') || '';
lib/Apache2/PageKit.pm view on Meta::CPAN
view_dir => "$pkit_root/View",
content_dir => "$pkit_root/Content",
cache_dir => $view_cache_dir,
default_lang => $default_lang,
default_input_charset => $default_input_charset,
default_output_charset => $default_output_charset,
reload => $reload,
html_clean_level => $html_clean_level,
input_param_object => $apr,
output_param_object => $self->{output_param_object},
can_edit => $can_edit,
relaxed_parser => $relaxed_parser,
errorspan_begin_tag => $errorspan_begin_tag,
errorspan_end_tag => $errorspan_end_tag,
default_errorstr => $default_errorstr,
template_class => $template_class,
uri_prefix => $uri_prefix,
# used only to set browser_cache = '..' maybe another
# way to set browser_cache is better to leave the View
lib/Apache2/PageKit.pm view on Meta::CPAN
}
sub page_sub {
my $pk = shift;
my $page_id = shift || $pk->{page_id};
# change all the / to ::
$page_id =~ s!/!::!g;
my $perl_sub;
if($page_id =~ s/^pkit_edit:://){
$perl_sub = 'Apache2::PageKit::Edit::' . $page_id;
} else {
my $model_dispatch_prefix = $pk->{config}->get_global_attr('model_dispatch_prefix');
$perl_sub = $model_dispatch_prefix . '::' . $page_id;
}
return $perl_sub if defined &{$perl_sub};
my ($class_package) = $perl_sub =~ m/^(.*)::/;
return if exists $Apache2::PageKit::checked_classes{$class_package};
lib/Apache2/PageKit/Edit.pm view on Meta::CPAN
open my $fh, ">$file" or die $!;
binmode $fh, ":encoding($default_input_charset)";
print $fh $content;
close $fh;
if($pkit_done){
$model->pkit_redirect($pkit_done);
}
}
sub add_edit_links {
my ($view, $record, $output_ref) = @_;
my $pkit_root = $view->{root_dir};
my $output_param_object = $view->{output_param_object};
if($output_param_object->param('pkit_admin')){
my $pkit_done = Apache2::Util::escape_path($output_param_object->param('pkit_done'), $view->{pkit_pk}->{apr}->pool);
my $include_mtimes = $record->{include_mtimes};
my $abs_uri_prefix = $view->{uri_prefix} ? '/' . $view->{uri_prefix} : '';
# add edit link for main template file
my $filename = $record->{filename};
die "Filename ($filename) points outside PKIT_ROOT ($pkit_root)" if ( $filename and $filename !~ s!^$pkit_root/!! );
my $edit_html = $filename ? qq{<font size="-1"><a href="$abs_uri_prefix/pkit_edit/open_file?file=$filename&pkit_done=$pkit_done">(edit $filename)</a></font><br>}:qq{};
for my $filename (grep /\.(xml|xsl)$/, keys %$include_mtimes){
# add edit link content XML files and XSLT files
die "Filename ($filename) points outside PKIT_ROOT ($pkit_root)" unless ( $filename =~ s!^$pkit_root/!! );
$edit_html .= qq{<font size="-1"><a href="$abs_uri_prefix/pkit_edit/open_file?file=$filename&pkit_done=$pkit_done">(edit $filename)</a></font><br>};
}
for my $filename (grep !/\.xml$/, keys %$include_mtimes){
# add edit links for components in the location right before where the
# the component is included
die "Filename ($filename) points outside PKIT_ROOT ($pkit_root)" unless ( $filename =~ s!^$pkit_root/!! );
(my $component_id = $filename) =~ s!(?:[^/]+/+){2}(.*?)\.(?:tmpl|xsl)$!$1!;
$$output_ref =~ s!<PKIT_EDIT_COMPONENT NAME="/?$component_id">!<font size="-1"><a href="$abs_uri_prefix/pkit_edit/open_file?file=$filename&pkit_done=$pkit_done">(edit $filename)</a></font><br>!g;
}
$$output_ref = $edit_html . $$output_ref;
# $$output_ref =~ s/<\s*BODY($key_value_pattern)*\s*>/<BODY$1>$edit_html/i;
} else {
$$output_ref =~ s!<PKIT_EDIT_COMPONENT NAME=".*?">!!sig;
}
}
sub add_component_edit_stubs {
my ( $view, $page_id, $html_code_ref, $pkit_view ) = @_;
# insert edit stubs (PKIT_EDIT_COMPONENT), before each PKIT_COMPONENT tag,
# for online editing tools to use
if ( $view->{relaxed_parser} eq 'yes' ) {
$$html_code_ref =~
s%<(!--)?\s*PKIT_COMPONENT($key_value_pattern+)\s*/?(?(1)--)?>(?:<(!--)?\s*/PKIT_COMPONENT\s*(?(1)--)>)?%_build_component_edit_stub($view, $pkit_view, $page_id, $2)%eig;
} else {
$$html_code_ref =~
s%<\s*PKIT_COMPONENT($key_value_pattern+)\s*/?>(<\s*/PKIT_COMPONENT\s*>)?%_build_component_edit_stub($view, $pkit_view, $page_id, $1)%eig;
}
###$$html_code_ref =~ s!(<[^>]*)?(<PKIT_COMPONENT $key_value_pattern>)!<font size="-1"><a href="/pkit_edit/open_file?file=$3">(edit $3)</a></font><br>$2!sig;
sub _build_component_edit_stub {
my ( $view, $pkit_view, $page_id, $params ) = @_;
my %params;
while ( $params =~ m!$key_value_pattern!g ) {
my $value = $3 || $4 || $5;
if ( $value ) {
$params{ uc($2) } = $value;
} else {
# put standalone attrs into the NAME key. This might be wrong for other tags,
# but for <PKIT_COMPONENT ...> this is a shortcut for the filename.
lib/Apache2/PageKit/FAQ.pod view on Meta::CPAN
=head1 Migrating to I<Apache2::PageKit> from...
=head2 3.1 I already have a website and I want to extend it with Apache2::PageKit. Where can I put my data?
You have several options, some follows.
=over 2
=item *
Copy your whole site into the directory View/Default/. Of the edited eg site of I<Apache2::PageKit>.
=item *
Copy the eg site of I<Apache2::PageKit> to a directory in the rootdir of your site ie:
cp -R .../Apache-PageKit-x.yz/eg .../htdocs/.../pagekit
edit MyModel/Model.pm, MyModel/Common.pm and Config/Config.xml and add I<Apache2::PageKit> as the
handler for this dir in yout C<httpd.conf>.
=back
=head1 I<Apache2::PageKit> beginner's FAQ's
=head2 4.1 Can I run more as one site with one Apache Server?
Sure, as long as the Perl Classes don't conflict. (You can't run both production and development
PageKits on the same server, unless you make sure that the Classes have different names.)
lib/Apache2/PageKit/View.pm view on Meta::CPAN
# * include_mtimes - a hash ref with file names as keys and mtimes as values
# (contains all of the files included by the <PKIT_COMPONENT> tags
# * component_ids - an array ref containing an array ref of component_ids and a hash ref
# with the parameters for the compoent, that may have
# code associated with them
# * has_form - 1 if contains <form> tag, 0 otherwise. used to
# determine whether to apply HTML::FillInForm module
# the objects themselves are keyed by page_id, pkit_view and lang
# 3. methods that are called externally
# * new($view_dir, $content_dir, $cache_dir, $default_lang, $reload, $html_clean_level, $can_edit, [ $associated_objects ], [ $fillinform_objects], $input_param_object, $output_param_object) (args passed as hash reference)
# * fill_in_view($page_id, $pkit_view, $lang)
# * open_view($page_id, $pkit_view, $lang)
# * param
# * preparse_templates($view_root,$html_clean_level,$view_cache_dir);
# * template_file_exists($page_id, $pkit_view)
# 4. methods that are called interally
# * _fetch_from_file_cache($page_id, $pkit_view, $lang);
# * _prepare_content($template_text_ref, $page_id)
# * _fill_in_content($template_text_ref, $page_id)
lib/Apache2/PageKit/View.pm view on Meta::CPAN
$view->{pkit_pk}->{browser_cache} = 'no';
Encode::_utf8_off($output);
$fif = HTML::FillInForm->new();
$output = $fif->fill(scalarref => \$output,
fobject => $view->{fillinform_objects},
ignore_fields => $view->{ignore_fillinform_fields}
);
Encode::_utf8_on($output);
}
}
if($view->{can_edit} eq 'yes'){
$view->{pkit_pk}->{browser_cache} = 'no';
Apache2::PageKit::Edit::add_edit_links($view, $record, \$output);
}
return \$output;
}
# gets static gzipped file, creating it if necessary
sub get_static_gzip {
my ($view, $filename) = @_;
my ($gzip_mtime, $gzipped_content);
(my $relative_filename = $filename) =~ s!^$view->{view_dir}/!!;
lib/Apache2/PageKit/View.pm view on Meta::CPAN
# expand PKIT_MACRO tags
$template =~ s!<\s*PKIT_MACRO$key_value_pattern\s*/?>!$component_params->{uc($+)} || ''!egi;
$template_ref = \$template;
my $mtime = (stat(_))[9];
$view->{include_mtimes}->{$template_file} = $mtime;
}
if($view->{can_edit} eq 'yes'){
Apache2::PageKit::Edit::add_component_edit_stubs($view, $page_id, $template_ref, $pkit_view);
}
$view->_include_components($page_id,$template_ref,$pkit_view);
return $template_ref;
}
sub _load_page {
my ($view, $page_id, $pkit_view) = @_;
lib/Apache2/PageKit/View.pm view on Meta::CPAN
Encode::_utf8_off($output);
$fif = HTML::FillInForm->new();
$output = $fif->fill(
scalarref => \$output,
fobject => $view->{fillinform_objects},
ignore_fields => $view->{ignore_fillinform_fields}
);
Encode::_utf8_on($output);
}
}
if ( $view->{can_edit} eq 'yes' ) {
$view->{pkit_pk}->{browser_cache} = 'no';
Apache2::PageKit::Edit::add_edit_links( $view, $record, \$output );
}
return \$output;
}
######################################################
sub _load_page {
my ( $view, $page_id, $pkit_view ) = @_;
# solange HTML::Template::XPath noch nichts mit Tempate Toolkit anfangen kann,