The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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
    claco@chrislaco.com
    http://today.icantfocus.com/blog/