created donation asset

This commit is contained in:
JT Smith 2008-02-27 02:44:33 +00:00
parent a61ab090ee
commit 4a73cadf64
12 changed files with 353 additions and 22 deletions

View file

@ -17,7 +17,6 @@ package WebGUI::Asset::Sku;
use strict;
use Tie::IxHash;
use base 'WebGUI::Asset';
use WebGUI::Utility;
@ -68,7 +67,7 @@ sub addToCart {
my ($self, $options) = @_;
$self->applyOptions($options);
my $cart = WebGUI::Shop::Cart->create($self->session);
my $cart->addItem($self, 1);
my $cart->addItem($self);
}
#-------------------------------------------------------------------
@ -104,6 +103,13 @@ sub definition {
tie %properties, 'Tie::IxHash';
my $i18n = WebGUI::International->new($session, "Asset_Sku");
%properties = (
description => {
tab=>"properties",
fieldType=>"HTMLArea",
defaultValue=>undef,
label=>$i18n->get("description"),
hoverHelp=>$i18n->get("description help")
},
sku => {
tab=>"commerce",
fieldType=>"text",
@ -111,10 +117,17 @@ sub definition {
label=>$i18n->get("sku"),
hoverHelp=>$i18n->get("sku help")
},
displayTitle => {
tab=>"display",
fieldType=>"yesNo",
defaultValue=>1,
label=>$i18n->get("display title"),
hoverHelp=>$i18n->get("display title")
},
overrideTaxRate => {
tab=>"commerce",
fieldType=>"text",
defaultValue=>$session->id->generate,
fieldType=>"yesNo",
defaultValue=>0,
label=>$i18n->get("override tax rate"),
hoverHelp=>$i18n->get("override tax rate help")
},
@ -145,6 +158,20 @@ sub definition {
}
#-------------------------------------------------------------------
=head2 getConfiguredTitle ( )
Returns a configured title like "Red XL T-Shirt" rather than just "T-Shirt". Needs to be overridden by subclasses to support this. Defaultly just returns getTitle().
=cut
sub getConfiguredTitle {
my $self = shift;
return $self->getTitle;
}
#-------------------------------------------------------------------
=head2 getEditTabs ( )
@ -169,7 +196,10 @@ Returns a hash reference of configuration data that can return this sku to a con
sub getOptions {
my $self = shift;
return $self->{_skuOptions};
if (ref $self->{_skuOptions} eq "HASH") {
return $self->{_skuOptions};
}
return {};
}
#-------------------------------------------------------------------
@ -280,21 +310,6 @@ sub processStyle {
#-------------------------------------------------------------------
=head2 www_edit ( )
Web facing method which is the default edit page
=cut
sub www_edit {
my $self = shift;
return $self->session->privilege->insufficient() unless $self->canEdit;
return $self->session->privilege->locked() unless $self->canEditIfLocked;
return $self->getAdminConsole->render($self->getEditForm->print,WebGUI::International::get('edit asset',"Asset_NewAsset"));
}
#-------------------------------------------------------------------
=head2 www_view ( )
Renders self->view based upon current style, subject to timeouts. Returns Privilege::noAccess() if canView is False.

View file

@ -0,0 +1,137 @@
package WebGUI::Asset::Sku::Donation;
=head1 LEGAL
-------------------------------------------------------------------
WebGUI is Copyright 2001-2008 Plain Black Corporation.
-------------------------------------------------------------------
Please read the legal notices (docs/legal.txt) and the license
(docs/license.txt) that came with this distribution before using
this software.
-------------------------------------------------------------------
http://www.plainblack.com info@plainblack.com
-------------------------------------------------------------------
=cut
use strict;
use Tie::IxHash;
use base 'WebGUI::Asset::Sku';
use WebGUI::Asset::Template;
use WebGUI::Form;
=head1 NAME
Package WebGUI::Asset::Sku::Donation
=head1 DESCRIPTION
This asset makes donations possible.
=head1 SYNOPSIS
use WebGUI::Asset::Sku::Dnoation;
=head1 METHODS
These methods are available from this class:
=cut
#-------------------------------------------------------------------
sub definition {
my $class = shift;
my $session = shift;
my $definition = shift;
my %properties;
tie %properties, 'Tie::IxHash';
my $i18n = WebGUI::International->new($session, "Asset_Donation");
%properties = (
templateId => {
tab => "display",
fieldType => "template",
namespace => "Donation",
defaultValue => "vrKXEtluIhbmAS9xmPukDA",
label => $i18n->get("template"),
hoverHelp => $i18n->get("template help"),
},
thankYouMessage => {
tab => "properties",
defaultValue => $i18n->get("default thank you message"),
fieldType => "HTMLArea",
label => $i18n->get("thank you message"),
hoverHelp => $i18n->get("thank you message"),
},
defaultPrice => {
tab => "commerce",
fieldType => "float",
defaultValue => 100.00,
label => $i18n->get("default price"),
hoverHelp => $i18n->get("default price help"),
},
);
push(@{$definition}, {
assetName => $i18n->get('assetName'),
icon => 'Donation.gif',
autoGenerateForms => 1,
tableName => 'donation',
className => 'WebGUI::Asset::Sku::Donation',
properties => \%properties
});
return $class->SUPER::definition($session, $definition);
}
#-------------------------------------------------------------------
sub getConfiguredTitle {
my $self = shift;
return $self->getTitle." (".$self->getOptions->{price}.")";
}
#-------------------------------------------------------------------
sub getPrice {
my $self = shift;
return $self->getOptions->{price} || $self->get("defaultPrice") || 100.00;
}
#-------------------------------------------------------------------
sub prepareView {
my $self = shift;
$self->SUPER::prepareView();
my $templateId = $self->get("templateId");
my $template = WebGUI::Asset::Template->new($self->session, $templateId);
$template->prepare;
$self->{_viewTemplate} = $template;
}
#-------------------------------------------------------------------
sub view {
my ($self) = @_;
my $session = $self->session;
my $i18n = WebGUI::International->new($session, "Asset_Donation");
my %var = (
formHeader => WebGUI::Form::formHeader($session, { action=>$self->getUrl })
. WebGUI::Form::hidden( $session, { name=>"func", value=>"donate" }),
formFooter => WebGUI::Form::formFooter($session),
donateButton => WebGUI::Form::submit( $session, { value => $i18n->get("donate button") }),
priceField => WebGUI::Form::float($session, { name => "price", defaultValue => $self->getPrice }),
hasAddedToCart => $self->{_hasAddedToCart},
);
return $self->processTemplate(\%var,undef,$self->{_viewTemplate});
}
#-------------------------------------------------------------------
sub www_donate {
my $self = shift;
if ($self->canView) {
$self->{_hasAddedToCart} = 1;
$self->addToCart({price => ($self->session->form->get("price") || $self->getPrice) });
}
return $self->www_view;
}
1;