Apache::PageKit
===============
Status
------
Version: 1.17
Description
-----------
PageKit is a web applications framework that is based on mod_perl.
This framework is distinguished from others such as Embperl and Mason
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
- Automatic Dispatching of URIs
- Easy Error Handling
- Online Editing Tools
- Page based sessions
- Localized error/messages
Requirements
------------
- perl 5.006001 or greater
- mod_perl 1.9916
- Apache 2
- libapreq2
- Apache::SessionX
- Compress::Zlib
- Data::FormValidator
- Digest::MD5
- HTML::FillInForm 0.12
- HTML::Template 2.2
- HTML::Template::XPath
- HTML::Clean
- Text::Iconv
- libxml2 library - download from http://www.xmlsoft.org
- XML::LibXML 1.31
Required for example web site located in eg/ directory
----------------------
- DBD::SQLite
- HTTP::Headers
- Apache::Reload
Recommended
-----------
- Mail::Mailer (needed if you use Apache::ErrorReport)
- Apache::DBI (*strongly* recommended if you use DBI)
- MIME::Types (needed if you want to serve static files from
View/Default directory)
- XML::LibXSLT 1.31 (needed if you want to use XSLT tranformations)
- Apache XML FOP - need for generating PDF
- Locale::gettext 1.01 (needed if you want to localize pkit messages)
Installation
------------
You must have a mod_perl enabled apache server. That's all.
After installing the requirements, you can use the standard
perl Makefile.PL
make
make test
make install
Setting up Included Example PageKit Site
----------------------------------------
An example web site is included in the eg/ directory. This is an
good starting point for building your own website. See eg/README
for more details.
Make sure httpd is found in your PATH.
To setup and configure, run
./t/TEST -start-httpd
This will be used to configure and start a PageKit enabled
web server on port 8529.
and killed by
./t/TEST -stop-httpd
To view the site, point your browser to http://localhost:8529/
(Replace localhost with the name of the server, if necessary)
If this page fails to load, you may find the error in t/logs/error_log.
Note that to test the PDF generation, you will have to download the
Apache XML FOP Processor from http://xml.apache.org/fop/ and
configure the path to the processor using fop_command configuration
directive in Config.xml.
Please note that the above is only for a quick test.
If you like to start on a new application take a look into
./t/conf/httpd.conf.
To start a new application read Setup and Configuration in this
README
Upgrading
---------
To upgrade from an earlier version of PageKit see migration/README.
You may have to change your Model, View, Content, or Config files.
Setup
-----
You should use the directories and files contained in the eg/
directory of the distribution as a starting point for your own
application.
Note that the example application uses DBD::SQLite to store the
login data. This is choosen because it will work on any platform
and support a resonable part of SQL.
However, when building your own application you can change to
whartever database you like.
Just provide a database with the tables 'pkit_user' and 'session'
CREATE
TABLE pkit_user (
user_id CHAR(8), login CHAR(255), email CHAR(255), passwd CHAR(255)
);
CREATE
TABLE sessions (
id char(32) not null primary key, a_session text
);
You can adjust or remove database fields from these tables as you like,
just supply the fields you use. My pkit_user table is typical larger and I
like to use VARCHAR on some fields.
Note for Win32 user:
On Win32 you should use a session_lock_class => 'Null'
in the eg site if you encount any problems. At least for me
session_lock_class => 'File' is not working.
For the example application to work on a real database you must
create the above table on it as well.
For sessions to work, you will have
to manually create a database 'sessions', and include a table (this
example is for MySQL/PostgreSQL/SQLite, adjust as needed for your
target database)
CREATE TABLE sessions (
id char(32) not null primary key,
a_session text
);
A MySQL configuration inside Common.pm might look like:
sub pkit_session_setup {
my $model = shift;
my $dbh = $model->dbh;
my %session_setup = (
session_store_class => 'MySQL',
session_lock_class => 'MySQL',
session_args => {
Handle => $dbh,
LockHandle => $dbh,
}
);
return \%session_setup;
}
A PostgreSQL configuration inside Common.pm might look like:
sub pkit_session_setup {
my $model = shift;
my $dbh = $model->dbh;
my %session_setup = (
session_store_class => 'Postgres',
session_lock_class => 'Null',
session_serialize_class => 'Base64',
session_args => {
Handle => $dbh,
IDLength => 32,
Commit => 0,
}
);
return \%session_setup;
}
Postgres user MUST use the Commit parameter in the session_args no
matter if it is on or off.
Look in Apache::Session::Postgres and Apache::Session.
A SQLite configuration inside Common.pm might look like:
sub pkit_session_setup {
my $model = shift;
my $dbh = $model->dbh;
my %session_setup = (
session_store_class => 'MySQL',
session_lock_class => 'Null',
session_serialize_class => 'Base64',
session_args => {
Handle => $dbh,
},
);
return \%session_setup;
}
For more information look in Apache::Session::SQLite,
Apache::Session::Flex and Apache::Session.
Configuration
-------------
PageKit >= 1.09 with mod_perl >= 1.26
If you use PageKit >= 1.09 and mod_perl < 1.26, the follow the instructions
for PageKit < 1.09.
Configuring PageKit is as easy as adding the following
to your httpd.conf
SetHandler perl-script
PerlSetVar PKIT_ROOT /path/to/pagekit/files
PerlSetVar PKIT_SERVER staging
PerlHandler +Apache::PageKit
Apache::PageKit->startup;
# Optional
PerlRequire /path/to/startup.pl
PerlModule Apache::ErrorReport
PerlSetVar ErrorReportHandler display
and changing the settings in
/path/to/pagekit/files/Config/Config.xml
PageKit < 1.09
Configuring PageKit is as easy as adding the following
to your httpd.conf
SetHandler perl-script
PerlSetVar PKIT_ROOT /path/to/pagekit/files
PerlSetVar PKIT_SERVER staging
PerlHandler +Apache::PageKit
Apache::PageKit->startup("/path/to/pagekit/files","staging");
# Optional
PerlRequire /path/to/startup.pl
PerlModule Apache::ErrorReport
PerlSetVar ErrorReportHandler display
and changing the settings in
/path/to/pagekit/files/Config/Config.xml
Bugs
----
There is a bug in Perl 5.6.1 that causes weirdness with the templates
are encoded in UTF-8.
Please submit any bug reports, comments, or suggestions to the Apache::PageKit
mailing list at http://lists.sourceforge.net/mailman/listinfo/pagekit-users
Copyright
---------
Copyright (c) 2000, 2001, 2002, 2003, 2004, 2005 AnIdea Corporation. All rights Reserved.
PageKit is a trademark of AnIdea Corporation.
License
-------
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
Ricoh Source Code Public License for more details.
You can redistribute this module and/or modify it only under the
terms of the Ricoh Source Code Public License.
You should have received a copy of the Ricoh Source Code Public
License along with this program; if not, obtain one at
http://www.pagekit.org/license.html