NAME
    Dancer2::Plugin::Interchange6 - Interchange6 Shop Plugin for Dancer2

VERSION
    Version 0.201

REQUIREMENTS
    All Interchange6 Dancer2 applications need to use the
    Dancer2::Session::DBIC engine.

    The easiest way to configure this is in your "config.yml" (or whatever
    other configuration file you prefer):

      plugins
        DBIC:
          default:
            schema_class: Interchange6::Schema
            # ... other DBIC plugin config here
      engines:
        session:
          DBIC:
            db_connection_name: default # connection name from DBIC plugin
      session: DBIC

CONFIGURATION
    Available configuration options:

      plugins:
        Interchange6:
          cart_class: MyApp::Cart
          carts_var_name: some_other_var

    *   cart_class

        If you wish to subclass the cart you can have "shop_cart" return
        your subclassed cart instead. You set the cart class via
        "cart_class". Defaults to Dancer2::Plugin::Interchange6::Cart.

    *   carts_var_name

        The plugin caches carts in a "var" in Dancer2 and the name of the
        var used can be set via "carts_var_name". Defaults to "ic6_carts".

ROUTES
    You can use the Dancer2::Plugin::Interchange6::Routes plugin bundled
    with this plugin to setup standard routes for:

    product listing
    product display
    cart display
    checkout form

    To enable these routes, you put the "shop_setup_routes" keyword at the
    end of your main module:

        package MyShop;

        use Dancer2;
        use Dancer2::Plugin::Interchange6;
        use Dancer2::Plugin::Interchange6::Routes;

        get '/shop' => sub {
            ...
        };

        ...

        shop_setup_routes;

        true;

    Please refer to Dancer2::Plugin::Interchange6::Routes for configuration
    options and further information.

KEYWORDS
  shop_cart
    Returns Dancer2::Plugin::Interchange6::Cart object.

  shop_charge
    Creates payment order and authorizes amount.

  shop_redirect
    Calls "redirect" in Interchange6::Schema::ResultSet::UriRedirect with
    given args.

  shop_schema
    Returns Interchange6::Schema object.

  shop_...
    Accessors for Interchange6::Schema result classes. You can use it to
    retrieve a single object or the corresponding result set.

        shop_product('F0001')->uri;

        shop_navigation->search({type => 'manufacturer',
                                 active => 1});

    Available accessors are:

    "shop_address"
    "shop_attribute"
    "shop_country"
    "shop_message"
    "shop_navigation"
    "shop_order"
    "shop_product"
    "shop_state"
    "shop_user"

HOOKS
    This plugin installs the following hooks:

  Add to cart
    The functions registered for these hooks receive the cart object and the
    item to be added as parameters.

    before_cart_add_validate
        Triggered before item is validated for adding to the cart.

    before_cart_add
        Triggered before item is added to the cart.

    after_cart_add
        Triggered after item is added to the cart. Used by DBI backend to
        save item to the database.

  Update cart
    The functions registered for these hooks receive the cart object, the
    current item in the cart and the updated item.

    before_cart_update
        Triggered before cart item is updated (changing quantity).

    after_cart_update
        Triggered after cart item is updated (changing quantity). Used by
        DBI backend to update item to the database.

  Remove from cart
    The functions registered for these hooks receive the cart object and the
    item to be added as parameters.

    before_cart_remove_validate
        Triggered before item is validated for removal. Receives cart object
        and item SKU.

    before_cart_remove
        Triggered before item is removed from the cart. Receives cart object
        and item.

    after_cart_remove
        Triggered after item is removed from the cart. Used by DBI backend
        to delete item from the database. Receives cart object and item.

  Clear cart
    before_cart_clear
        Triggered before cart is cleared.

    after_cart_clear
        Triggered after cart is cleared.

  Rename cart
    The functions registered for these hooks receive the cart object, the
    old name and the new name.

    before_cart_rename
        Triggered before cart is renamed.

    after_cart_rename
        Triggered after cart is renamed.

    before_cart_set_users_id
        Triggered before users_id is set for the cart.

    after_cart_set_users_id
        Triggered after users_id is set for the cart.

    before_cart_set_sessions_id
        Triggered before sessions_id is set for the cart.

    after_cart_set_sessions_id
        Triggered after sessions_id is set for the cart.

EXPIRE DBIC SESSIONS
    This command expires/manages DBIC sessions and carts. NOTE: For proper
    functionality please copy/link to Dancer2 App/bin directory.

        interchange6-expire-sessions

ACKNOWLEDGEMENTS
    The Dancer2 developers and community for their great application
    framework and for their quick and competent support.

    Peter Mottram for his patches and conversion of this plugin to Dancer2.

LICENSE AND COPYRIGHT
    Copyright 2010-2016 Stefan Hornburg (Racke).

    This program is free software; you can redistribute it and/or modify it
    under the terms of either: the GNU General Public License as published
    by the Free Software Foundation; or the Artistic License.

    See http://dev.perl.org/licenses/ for more information.

SEE ALSO
    Interchange6, Interchange6::Schema

