package WebGUI::Shop::Admin; use strict; use Moose; has session => ( is => 'ro', required => 1, ); around BUILDARGS => sub { my $orig = shift; my $className = shift; ##Original arguments start here. my $protoSession = $_[0]; if (blessed $protoSession && $protoSession->isa('WebGUI::Session')) { return $className->$orig(session => $protoSession); } return $className->$orig(@_); }; use WebGUI::AdminConsole; use WebGUI::Exception::Shop; use WebGUI::HTMLForm; use WebGUI::International; =head1 NAME Package WebGUI::Shop::Admin =head1 DESCRIPTION All the admin stuff that didn't fit elsewhere. =head1 SYNOPSIS use WebGUI::Shop::Admin; my $admin = WebGUI::Shop::Admin->new($session); =head1 METHODS These subroutines are available from this package: =cut #------------------------------------------------------------------- =head2 canManage ( [ $user ] ) Determine whether or not a user can manage commerce functions =head3 $user An optional WebGUI::User object to check for permission to do commerce functions. If this is not used, it uses the current session user object. =cut sub canManage { my $self = shift; my $user = shift || $self->session->user; return $user->isInGroup( $self->session->setting->get('groupIdAdminCommerce')); } #------------------------------------------------------------------- =head2 getAdminConsole () Returns a reference to the admin console with all submenu items already added. =cut sub getAdminConsole { my $self = shift; my $ac = WebGUI::AdminConsole->new($self->session, 'shop'); my $i18n = WebGUI::International->new($self->session, "Shop"); my $url = $self->session->url; $ac->addSubmenuItem($url->page("shop=admin"), $i18n->get("shop settings")); $ac->addSubmenuItem($url->page("shop=tax;method=manage"), $i18n->get("taxes")); $ac->addSubmenuItem($url->page("shop=pay;method=manage"), $i18n->get("payment methods")); $ac->addSubmenuItem($url->page("shop=ship;method=manage"), $i18n->get("shipping methods")); $ac->addSubmenuItem($url->page("shop=transaction;method=manage"), $i18n->get("transactions")); $ac->addSubmenuItem($url->page("shop=vendor;method=manage"), $i18n->get("vendors")); $ac->addSubmenuItem($url->page("shop=vendor;method=managePayouts"), $i18n->get("vendor payouts")); $ac->addSubmenuItem($url->page("shop=credit;method=manage"), $i18n->get("in shop credit")); return $ac; } #------------------------------------------------------------------- =head2 isCashier ( [ $user ] ) Determine whether or not a user is a cashier =head3 $user An optional WebGUI::User object. If this is not used, it uses the current session user object. =cut sub isCashier { my $self = shift; my $user = shift || $self->session->user; return $user->isInGroup( $self->session->setting->get('groupIdCashier')); } #------------------------------------------------------------------- =head2 new ( session ) Constructor. =head3 session A reference to the current session. =cut #------------------------------------------------------------------- =head2 session () Returns a reference to the current session. =cut #------------------------------------------------------------------- =head2 www_editSettings () Displays the general commerce settings. =cut sub www_editSettings { my $self = shift; return $self->session->privilege->adminOnly() unless ($self->canManage); my $i18n = WebGUI::International->new($self->session, "Shop"); my $ac = $self->getAdminConsole; my $setting = $self->session->setting; my $form = WebGUI::HTMLForm->new($self->session); $form->submit; $form->hidden(name=>"shop", value=>"admin"); $form->hidden(name=>"method", value=>"editSettingsSave"); $form->group( name => "groupIdAdminCommerce", value => $setting->get("groupIdAdminCommerce"), label => $i18n->get('who can manage'), hoverHelp => $i18n->get('who can manage help'), ); $form->group( name => "groupIdCashier", value => $setting->get("groupIdCashier"), label => $i18n->get('who is a cashier'), hoverHelp => $i18n->get('who is a cashier help'), ); $form->float( name => 'shopCartCheckoutMinimum', value => $setting->get('shopCartCheckoutMinimum'), defaultValue=> '0.00', label => $i18n->get('cart checkout minimum'), hoverHelp => $i18n->get('cart checkout minimum help'), ); $form->template( name => "shopCartTemplateId", value => $setting->get("shopCartTemplateId"), label => $i18n->get("cart template"), namespace => "Shop/Cart", hoverHelp => $i18n->get("cart template help"), ); $form->template( name => "shopAddressBookTemplateId", value => $setting->get("shopAddressBookTemplateId"), label => $i18n->get("address book template"), namespace => "Shop/AddressBook", hoverHelp => $i18n->get("address book template help"), ); $form->template( name => "shopAddressTemplateId", value => $setting->get("shopAddressTemplateId"), namespace => "Shop/Address", label => $i18n->get("edit address template"), hoverHelp => $i18n->get("edit address template help"), ); $form->template( name => "selectGatewayTemplateId", value => $setting->get("selectGatewayTemplateId"), label => $i18n->get("select gateway template"), namespace => "Shop/selectGateway", hoverHelp => $i18n->get("select gateway template help"), ); $form->template( name => "shopMyPurchasesTemplateId", value => $setting->get("shopMyPurchasesTemplateId"), namespace => "Shop/MyPurchases", label => $i18n->get("my purchases template"), hoverHelp => $i18n->get("my purchases template help"), ); $form->template( name => "shopMyPurchasesDetailTemplateId", value => $setting->get("shopMyPurchasesDetailTemplateId"), namespace => "Shop/MyPurchasesDetail", label => $i18n->get("my purchases detail template"), hoverHelp => $i18n->get("my purchases detail template help"), ); $form->template( name => 'shopReceiptEmailTemplateId', namespace => "Shop/EmailReceipt", label => $i18n->get("receipt email template"), hoverHelp => $i18n->get("receipt email template help"), defaultValue => 'bPz1yk6Y9uwMDMBcmMsSCg', value => $setting->get("shopReceiptEmailTemplateId"), ); $form->group( name => 'shopSaleNotificationGroupId', label => $i18n->get("sale notification group"), hoverHelp => $i18n->get("sale notification group help"), defaultValue => '3', value => $setting->get("shopSaleNotificationGroupId"), ); $form->submit; return $ac->render($form->print, $i18n->get("shop settings")); } #------------------------------------------------------------------- =head2 www_editSettingsSave () Saves the general commerce settings. =cut sub www_editSettingsSave { my $self = shift; return $self->session->privilege->adminOnly() unless ($self->session->user->isAdmin); my ($setting, $form) = $self->session->quick(qw(setting form)); # Save shop templates foreach my $template (qw(shopMyPurchasesDetailTemplateId shopMyPurchasesTemplateId shopCartTemplateId shopAddressBookTemplateId shopAddressTemplateId selectGatewayTemplateId shopReceiptEmailTemplateId)) { $setting->set($template, $form->get($template, "template")); } # Save group settings foreach my $group (qw(groupIdCashier groupIdAdminCommerce shopSaleNotificationGroupId)) { $setting->set($group, $form->get($group, "group")); } # Save mininmum cart checkout $setting->set( 'shopCartCheckoutMinimum', $form->get( 'shopCartCheckoutMinimum', 'float' ) ); return $self->www_editSettings(); } 1;