NAME Dancer::Plugin::Nitesi - Nitesi Shop Machine plugin for Dancer VERSION Version 0.0099 SYNOPSIS use Dancer::Plugin::Nitesi; cart->add({sku => 'ABC', name => 'Foobar', quantity => 1, price => 42}); cart->items(); cart->clear(); account->login(username => 'frank@nitesi.com', password => 'nevairbe'); account->acl(check => 'view_prices'); account->logout(); DESCRIPTION This dancer plugin gives you access to the products, cart and account functions of the Nitesi shop machine. PRODUCTS CARTS The cart keyword returns a Nitesi::Cart object with the corresponding methods. You can use multiple carts like that: cart('wishlist')->add({sku => 'ABC', name => 'Foobar', quantity => 1, price => 42}); cart('wishlist')->total; The DBI backend (Dancer::Plugin::Nitesi::Cart::DBI) allows you to load carts of arbitrary users. cart('', 123)->items; PAYMENT Card payments can be processed by one of the various providers supported by Business::OnlinePayment with the charge keyword. $tx = charge(provider => 'Braintree', amount => cart->total, first_name => 'Test', last_name => 'Tester', card_number => '4111111111111111', expiration => '0714', cvc => '222'); ACCOUNTS The account keyword returns a Nitesi::Account::Manager object with the corresponding methods. Login to an account: account->login(username => 'frank@nitesi.com', password => 'nevairbe'); Logout: account->logout(); Check permissions: account->acl(check => 'view_prices'); Change password for current account: account->password('nevairbe'); Change password for other account: account->password(username => 'frank@nitesi.com', password => 'nevairbe'); Create account: account->create(email => 'fina@nitesi.com'); ROUTES Standard routes can be registered by including the Dancer::Plugin::Nitesi::Routes module and calling `shop_set_routes' at the end of your main application module: package MyShopApp; use Dancer ':syntax'; use Dancer::Plugin::Nitesi; use Dancer::Plugin::Nitesi::Routes; ... shop_setup_routes; 1; VIEWS The following views (template files) are needed for your shopping cart application: product Product detail page, with product description, product price and "Add to cart" button. cart Cart page. 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. CONFIGURATION The default configuration is as follows: plugins: Nitesi: Account: Session: Key: account Provider: DBI Cart: Backend: Session Product: backend: DBI table: products key: sku Query: log: 0 ACCOUNT Connection The connection used by Dancer::Plugin::Database can be set as follows: plugins: Nitesi: Account: Provider: DBI Connection: shop Fields Extra fields can be retrieved from the account provider and put into the session after a successful login: plugins: Nitesi: Account: Provider: DBI Fields: first_name,last_name,city PRODUCTS If your products table slightly varies from our default schema in Nitesi::Database::Schema, you can adjust this in your configuration: plugins: Nitesi: Product: attributes: name: description short_description: comment_short This directs Dancer::Plugin::Nitesi to use the description field instead of the name field and the comment_short field instead of the short_description field. QUERY DBI queries can be logged with debug level as follows: plugins: Nitesi: Query: log: 1 CAVEATS Please anticipate API changes in this early state of development. AUTHOR Stefan Hornburg (Racke), `racke@linuxia.de' BUGS Please report any bugs or feature requests to `bug-nitesi at rt.cpan.org', or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Dancer-Plugin-Nitesi. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes. SUPPORT You can find documentation for this module with the perldoc command. perldoc Dancer-Plugin-Nitesi You can also look for information at: * RT: CPAN's request tracker (report bugs here) http://rt.cpan.org/NoAuth/Bugs.html?Dist=Dancer-Plugin-Nitesi * AnnoCPAN: Annotated CPAN documentation http://annocpan.org/dist/Dancer-Plugin-Nitesi * CPAN Ratings http://cpanratings.perl.org/d/Dancer-Plugin-Nitesi * Search CPAN http://search.cpan.org/dist/Dancer-Plugin-Nitesi/ ACKNOWLEDGEMENTS The Dancer developers and community for their great application framework and for their quick and competent support. LICENSE AND COPYRIGHT Copyright 2010-2013 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 Nitesi