NAME
Handel - Simple commerce framework with AxKit/TT/Catalyst support
DESCRIPTION
Handel is a quick and not-so-dirty ecommerce framework with AxKit taglib
support and TT2 (Template Toolkit) support. It was started for the
conversion of an IIS/ASP based commerce site to Apache/ModPerl, but I
decided that is might be useful to others so here it is on CPAN.
For the curious, Handel is German for commerce.
WEBSITE
You can get the latest news, source, documentation and wiki help at
http://handelframework.com/.
MAILING LIST
Join the mailing list at
http://lists.rawmode.org/cgi-bin/mailman/listinfo/handel. Big thanks to
gabb@#catalyst for the list space.
GOALS
Database agnostic. Thanks to Class::DBI and staying away from auto
incrementing ids, Handel should run in any database that Class::DBI
supports.
Implementation agnostic. Handel should be able to be used from the
command line, from a web page, from a SOAP service, or from a GUI
application. It's simply a data access mechanism. Any interaction with
forms, web pages, browser, cookies, etc is the responsibility of the
consumer
Checkout agnostic. A checkout process means different things to
different people in different situations. The Handel checkout pipeline
by itself does absolutely nothing with an order. It is instead a plugin
manager that allows you to specify and build plugins to do various
actions (payment authorization, address validation, fax delivery, etc).
Each site, server, page, even process() call can have it's own unique
order processing pipeline.
Easy integration into AxKit using taglibs.
Easy integration into TT2 using plugins.
Easy integration into Catalyst using plugins.
Easy integration into other systems using SOAP.
Feature complete demo site in AxKit.
Feature complete demo site in TT2.
Feature complete demo site in Catalyst.
Public Subversion repository.
Public Wiki/Docs site.
Get someone to actually use the damn thing. :-)
Abstract schema into SQL::Translator scripts
WHAT HANDEL IS
Simple cart and order record maintenance.
Plugin based checkout pipeline processing framework.
WHAT HANDEL ISN'T
Intershop, Cart32, WebGUI, CMS, complete web commerce package(1). Handel
is a simple framework to load/upload cart/order data and shove that data
through a plugin based pipeline.
(1) While it is not a complete web based commerce system, I do plan on
having feature complete working demos sites so people can still
quick-start their own projects.
FEATURES
Add/Update/Delete/Save/Restore Cart Contents
Full AxKit XSP Taglib Support
Template Toolkit 2 Plugin Support
Currency Conversion
Currency Formatting
Basic Localization Support
Multiple Database Support
REQUIREMENTS
Prerequisites
The following modules are required for Handel to work properly. Older
versions may work fine, but these are the versions I have installed and
verified to work correctly. If you have older versions and all tests
pass, send me an email and I'll lower the version requirements.
Class::DBI
"Class::DBI" version 0.96 or greater.
DBI "DBI" version 1.36 or greater.
Error
"Error" version 0.14 or greater.
Locale::Maketext
"Locale::Maketext" version 1.06 or greater.
Data::UUID
At least one of the following modules are required to create uuids:
"UUID" 0.02, "Win32::Guidgen" 0.04, "Win32API::GUID" 0.02, or
"Data::UUID" 0.10.
Optional Modules
The following modules are not required for Handel to run, although some
features may be unavailable without them.
AxKit
"AxKit" version 1.61 or greater.
"AxKit" is only required if you plan on using "Handel" within XSP
using the supplied taglibs.
Locale::Currency::Format
"Locale::Currency::Format" version 1.22 or greater.
When present, this module allows all prices to be formatted to
specific currency codes and formats.
Finance::Currency::Convert::WebserviceX
"Finance::Currency::Convert::WebserviceX" version 0.03 or greater.
When present, this module allows all prices to be converted from one
currency to another.
Locale::Currency
"Locale::Currency" version 2.07 or greater.
When present, this module allows all conversion and currency codes
to be verified as real 3 letter ISO currency codes.
Template
"Template" version 2.07 or greater.
"Template" (TT2/Template ToolKit) is only required if you plan on
using Handel within TT2 based websites.
Build/Test Modules
The following modules are only required for the test suite when running
"make test".
Test::More
"Test::More" version 0.48 or greater.
The "Test::More" included with perl 5.8.4 and "Test::More" <= 0.48
have issues with ithreads that usually cause crashes in tests that
use "Class::DBI" or "DBIx:ContextualFetch". The errors usual mention
"attempt to free unreferenced scalar". If you receive these during
"make test", try upgrading "Test::More".
Pod::Coverage
"Pod::Coverage" version 0.14 or greater.
The pod coverage tests may fail complaining about missing pod for
methods if Pod::Coverage < 0.14 is installed. This is due to certain
syntax variations of the pod with escaped gt/lt. I may just alter
the pod and bump this version down if there is enough feedback to do
so.
Test::Pod
"Test::Pod" version 1.00 or greater.
"Test::Pod" 1.00 added the "all_pod_files_ok()" method which makes
my life easier. :-)
Test::Pod::Coverage
"Test::Pod::Coverage" version 1.04 or greater.
"Test::Pod::Coverage" 1.04 was made taint safe, and we run the tests
with -wT like good girls and boys.
Test:Strict
"Test::Strict" version 0.01 or greater.
This keeps me honest and makes sure I always "use strict".
CAVEATS
When using item_class to specify the item class returned from add/items
in your subclass under Class::DBI < 3.0.8, the item_class specified will
be returned from all cart classes, including Handel::Cart itself. In
most cases, people are only using one subclass of Handel::Cart so this
won't effect them.
If you plan on using multiple subclasses of Handel::Cart that may or may
not return custom items, upgrade your Class::DBI to version 3.0.8 or
greater.
SEE ALSO
Handel::Cart
AUTHOR
Christopher H. Laco
CPAN ID: CLACO
[email protected]
http://today.icantfocus.com/blog/