NAME
Handel::Manual::About - A few words about the Handel Framework.
DESCRIPTION
Handel is a ecommerce framework with AxKit taglib support , TT2 (Template Toolkit) support and Catalyst::Helper support. It was created for the conversion of an IIS/ASP based commerce site to Apache/ModPerl, but I decided that it might be useful to others so here it is.
For the curious, Handel is German for commerce.
WEBSITE
You can get the latest news, source, documentation and wiki help at http://handelframework.com/.
SOURCE
You can browse the latest source code at http://handelframework.com/source/, or get the latest version of the source code from the Handel subversion repository at http://svn.handelframework.com/CPAN/Handel/.
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.
IRC
I can be found most nights on IRC in the following channels:
claco@#handel@irc.perl.org
claco@#dbix-class@irc.perl.org
claco@#catalyst@irc.perl.org
GOALS
Database Agnostic
Thanks to DBIx::Class and a general avoidance of auto incrementing ids, Handel should run in any database that DBIx::Class supports.
Schema Agnostic
The default schema isn't enough for everyone. Some have existing schemas in place, and some just need to add a field or two. Handel aims to have the ability to use as many disparate schema configurations as possible through a storage layer to abstract schema access without hardcoding specifics in the top level Cart/Order/Item classes.
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, browsers, cookies, etc is the responsibility of the consumer/programmer.
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. Instead, it's 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 its own unique order processing pipeline.
Easy Integration
Handel aims to provide as much glue as possible for existing application and page templating systems.
FEATURES
Basic Add/Edit/Delete/Save/Restore Cart Operations
What cart would be complete without the usual operations: add, update, delete, save, and restore.
Plugin Based Order Processing Pipeline
With just a few lines of code, you can utilize the power of CPAN to add address validation, credit card authorization, or even email confirmations to your checkout process. With a building block style order processing pipeline, your checkout process can be as easy or as complex as you need it to be.
Runs On Any Database
Handel runs on any database that DBIx::Class supports. That list includes, but is not limited to SQLite, MySQL, Postgres, DB2, MSSQL, and Oracle. In theory, it should also work and any generic DBI driver that can handle table relations and join statements.
Currency Conversion and Formatting
Handel includes support for currency conversion and formatting on all currency related fields.
Highly Customizable
Choose your level of dragons. You can use the default schema, adding column or two, or go full tilt and use a completely different schema.
Easy Integration with Catalyst
Handel includes Catalyst::Helper modules to make adding Handel functionality into a Catalyst website as easy as possible.
Easy Integration with AxKit
Handel includes basic Cart/Order/Checkout taglibs for use inside of AxKit XSP pages.
Easy Integration with Template Toolkit
Handel includes Cart/Order/Checkout plugins for those who use Template Toolkit as their page language of choice.
WHAT HANDEL IS
Handel is a framework to enable simple cart and order record maintenance with a plugin based checkout process.
WHAT HANDEL ISN'T
Handel is not Intershop, Cart32, WebGUI, a CMS or a complete web commerce package(1).
(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. There is also a Catalyst/Handel commerce project in the works called Mango.
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.
DBIx::Class
Version 0.07 or greater.
DBIx::Class::UUIDColumns
DBIx::Class::Validation
Class::Accessor::Grouped
Version 0.02 or greater.
Class::ISA
Class::Inspector
Clone
Error
Version 0.14 or greater.
Locale::Maketext
Version 1.06 or greater.
Module::Pluggable
Version 2.95 or greater.
Scalar::Util
Tie::Hash
DateTime
DateTime::Format::MySQL
Optional Modules
The following modules are not required for Handel to run, although some features may be unavailable without them.
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
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
Version 0.03 or greater.
When present, this module allows all prices to be converted from one currency to another.
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 Toolkit
Version 2.07 or greater.
Template ToolKit is only required if you plan on using Handel within TT2 based websites.
Test Modules
The following modules are only required for the test suite when running make test
.
Apache::Test
Version 1.27 or greater.
Apache::Test is used to test the AxKit XSP taglib modules.
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 DBIx:ContextualFetch
. The errors usual mention "attempt to free unreferenced scalar". If you receive these during make test
, try upgrading Test::More
.
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
Version 1.00 or greater.
Test::Pod 1.00 added the all_pod_files_ok()
method which makes my life easier. :-)
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
Version 0.01 or greater.
This keeps me honest and makes sure I always use strict
.
Test::Spelling
Version 0.10 or greater.
I can't type, or spell. This keeps the pod somewhat readable.
MAD PROPAGE
I big shout at to the DBix::Class folk for all the support. Without the flexibility that DBIx::Class provides, Handel would be a much less flexible.
AUTHOR
Christopher H. Laco
CPAN ID: CLACO
claco@chrislaco.com
http://today.icantfocus.com/blog/