Update AdSku for Moose. Something funny about the karma option.
This commit is contained in:
parent
967d307912
commit
005af2d4bd
1 changed files with 93 additions and 115 deletions
|
|
@ -16,7 +16,81 @@ package WebGUI::Asset::Sku::Ad;
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use Tie::IxHash;
|
use Tie::IxHash;
|
||||||
use base 'WebGUI::Asset::Sku';
|
use WebGUI::Definition::Asset;
|
||||||
|
extends 'WebGUI::Asset::Sku';
|
||||||
|
aspect assetName => ['assetName', 'Asset_WikiMaster'];
|
||||||
|
aspect icon => 'adsku.gif';
|
||||||
|
aspect tableName => 'AdSku';
|
||||||
|
|
||||||
|
property purchaseTemplate => (
|
||||||
|
tab => "display",
|
||||||
|
fieldType => "template",
|
||||||
|
namespace => "AdSku/Purchase",
|
||||||
|
default => 'AldPGu0u-jm_5xK13atCSQ',
|
||||||
|
label => ["property purchase template", 'Asset_WikiMaster'],
|
||||||
|
hoverHelp => ["property purchase template help", 'Asset_WikiMaster'],
|
||||||
|
);
|
||||||
|
property manageTemplate => (
|
||||||
|
tab => "display",
|
||||||
|
fieldType => "template",
|
||||||
|
namespace => "AdSku/Manage",
|
||||||
|
default => 'ohjyzab5i-yW6GOWTeDUHg',
|
||||||
|
label => ["property manage template", 'Asset_WikiMaster'],
|
||||||
|
hoverHelp => ["property manage template help", 'Asset_WikiMaster'],
|
||||||
|
);
|
||||||
|
property adSpace => (
|
||||||
|
tab => "properties",
|
||||||
|
fieldType => "AdSpace",
|
||||||
|
label => ["property ad space", 'Asset_WikiMaster'],
|
||||||
|
hoverHelp => ["property ad Space help", 'Asset_WikiMaster'],
|
||||||
|
);
|
||||||
|
property priority => (
|
||||||
|
tab => "properties",
|
||||||
|
default => '1',
|
||||||
|
fieldType => "integer",
|
||||||
|
label => ["property priority", 'Asset_WikiMaster'],
|
||||||
|
hoverHelp => ["property priority help", 'Asset_WikiMaster'],
|
||||||
|
);
|
||||||
|
property pricePerClick => (
|
||||||
|
tab => "shop",
|
||||||
|
default => '0.00',
|
||||||
|
fieldType => "float",
|
||||||
|
label => ["property price per click", 'Asset_WikiMaster'],
|
||||||
|
hoverHelp => ["property price per click help", 'Asset_WikiMaster'],
|
||||||
|
);
|
||||||
|
property pricePerImpression => (
|
||||||
|
tab => "shop",
|
||||||
|
default => '0.00',
|
||||||
|
fieldType => "float",
|
||||||
|
label => ["property price per impression", 'Asset_WikiMaster'],
|
||||||
|
hoverHelp => ["property price per impression help", 'Asset_WikiMaster'],
|
||||||
|
);
|
||||||
|
property clickDiscounts => (
|
||||||
|
tab => "shop",
|
||||||
|
fieldType => 'textarea',
|
||||||
|
label => ['property click discounts', 'Asset_WikiMaster'],
|
||||||
|
hoverHelp => ['property click discounts help', 'Asset_WikiMaster'],
|
||||||
|
default => '',
|
||||||
|
);
|
||||||
|
property impressionDiscounts => (
|
||||||
|
tab => "shop",
|
||||||
|
fieldType => 'textarea',
|
||||||
|
label => ['property impression discounts', 'Asset_WikiMaster'],
|
||||||
|
hoverHelp => ['property impression discounts help', 'Asset_WikiMaster'],
|
||||||
|
default => '',
|
||||||
|
);
|
||||||
|
property karma => (
|
||||||
|
fieldType => \&_karma_fieldType,
|
||||||
|
label => ['property adsku karma', 'Asset_WikiMaster'],
|
||||||
|
hoverHelp => ['property adsku karma description', 'Asset_WikiMaster'],
|
||||||
|
defaultvalue => 0,
|
||||||
|
);
|
||||||
|
sub _karma_fieldType {
|
||||||
|
my $session = shift->session;
|
||||||
|
return $session->setting->get('useKarma') ? 'integer' : 'hidden';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
use WebGUI::Asset::Template;
|
use WebGUI::Asset::Template;
|
||||||
use WebGUI::Form;
|
use WebGUI::Form;
|
||||||
use WebGUI::Storage;
|
use WebGUI::Storage;
|
||||||
|
|
@ -46,102 +120,6 @@ These methods are available from this class:
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
=head2 definition
|
|
||||||
|
|
||||||
Adds purchaseTemplate, manageTemplate, adSpace, priority, pricePerClick, pricePerImpression, clickDiscounts, impresisonDiscounts
|
|
||||||
|
|
||||||
=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_AdSku");
|
|
||||||
%properties = (
|
|
||||||
purchaseTemplate => {
|
|
||||||
tab => "display",
|
|
||||||
fieldType => "template",
|
|
||||||
namespace => "AdSku/Purchase",
|
|
||||||
defaultValue => 'AldPGu0u-jm_5xK13atCSQ',
|
|
||||||
label => $i18n->get("property purchase template"),
|
|
||||||
hoverHelp => $i18n->get("property purchase template help"),
|
|
||||||
},
|
|
||||||
manageTemplate => {
|
|
||||||
tab => "display",
|
|
||||||
fieldType => "template",
|
|
||||||
namespace => "AdSku/Manage",
|
|
||||||
defaultValue => 'ohjyzab5i-yW6GOWTeDUHg',
|
|
||||||
label => $i18n->get("property manage template"),
|
|
||||||
hoverHelp => $i18n->get("property manage template help"),
|
|
||||||
},
|
|
||||||
adSpace => {
|
|
||||||
tab => "properties",
|
|
||||||
fieldType => "AdSpace",
|
|
||||||
label => $i18n->get("property ad space"),
|
|
||||||
hoverHelp => $i18n->get("property ad Space help"),
|
|
||||||
},
|
|
||||||
priority => {
|
|
||||||
tab => "properties",
|
|
||||||
defaultValue => '1',
|
|
||||||
fieldType => "integer",
|
|
||||||
label => $i18n->get("property priority"),
|
|
||||||
hoverHelp => $i18n->get("property priority help"),
|
|
||||||
},
|
|
||||||
pricePerClick => {
|
|
||||||
tab => "shop",
|
|
||||||
defaultValue => '0.00',
|
|
||||||
fieldType => "float",
|
|
||||||
label => $i18n->get("property price per click"),
|
|
||||||
hoverHelp => $i18n->get("property price per click help"),
|
|
||||||
},
|
|
||||||
pricePerImpression => {
|
|
||||||
tab => "shop",
|
|
||||||
defaultValue => '0.00',
|
|
||||||
fieldType => "float",
|
|
||||||
label => $i18n->get("property price per impression"),
|
|
||||||
hoverHelp => $i18n->get("property price per impression help"),
|
|
||||||
},
|
|
||||||
clickDiscounts => {
|
|
||||||
tab => "shop",
|
|
||||||
fieldType => 'textarea',
|
|
||||||
label => $i18n->get('property click discounts'),
|
|
||||||
hoverHelp => $i18n->get('property click discounts help'),
|
|
||||||
defaultValue => '',
|
|
||||||
},
|
|
||||||
impressionDiscounts => {
|
|
||||||
tab => "shop",
|
|
||||||
fieldType => 'textarea',
|
|
||||||
label => $i18n->get('property impression discounts'),
|
|
||||||
hoverHelp => $i18n->get('property impression discounts help'),
|
|
||||||
defaultValue => '',
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
# Show the karma field only if karma is enabled
|
|
||||||
if ($session->setting->get("useKarma")) {
|
|
||||||
$properties{ karma } = {
|
|
||||||
type => 'integer',
|
|
||||||
label => $i18n->get('property adsku karma'),
|
|
||||||
hoverHelp => $i18n->get('property adsku karma description'),
|
|
||||||
defaultvalue => 0,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
push(@{$definition}, {
|
|
||||||
assetName => $i18n->get('assetName'),
|
|
||||||
icon => 'adsku.gif',
|
|
||||||
autoGenerateForms => 1,
|
|
||||||
tableName => 'AdSku',
|
|
||||||
className => 'WebGUI::Asset::Sku::AdSku',
|
|
||||||
properties => \%properties,
|
|
||||||
});
|
|
||||||
return $class->SUPER::definition($session, $definition);
|
|
||||||
}
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
|
||||||
|
|
||||||
=head2 getAddToCartForm
|
=head2 getAddToCartForm
|
||||||
|
|
||||||
Returns an empty string, since the add to cart form is complex.
|
Returns an empty string, since the add to cart form is complex.
|
||||||
|
|
@ -162,7 +140,7 @@ Returns an AdSpace object for this Ad Sku.
|
||||||
|
|
||||||
sub getAdSpace {
|
sub getAdSpace {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $adSpace = WebGUI::AdSpace->new($self->session,$self->get('adSpace'));
|
my $adSpace = WebGUI::AdSpace->new($self->session,$self->adSpace);
|
||||||
return $adSpace;
|
return $adSpace;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -177,7 +155,7 @@ returns the text to display the number of clicks purchasaed where discounts appl
|
||||||
sub getClickDiscountText {
|
sub getClickDiscountText {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
return getDiscountText($self->i18n->get('click discount'),
|
return getDiscountText($self->i18n->get('click discount'),
|
||||||
$self->get('clickDiscounts'));
|
$self->clickDiscounts);
|
||||||
}
|
}
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
@ -190,7 +168,7 @@ combines the adSKu title with the customers ad title
|
||||||
|
|
||||||
sub getConfiguredTitle {
|
sub getConfiguredTitle {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
return $self->get('title') . ' (' . $self->getOptions->{'adtitle'} . ')';
|
return $self->title . ' (' . $self->getOptions->{'adtitle'} . ')';
|
||||||
}
|
}
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
@ -236,7 +214,7 @@ returns the text to display the number of impressions purchased where discounts
|
||||||
sub getImpressionDiscountText {
|
sub getImpressionDiscountText {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
return getDiscountText($self->i18n->get('impression discount'),
|
return getDiscountText($self->i18n->get('impression discount'),
|
||||||
$self->get('impressionDiscounts'));
|
$self->impressionDiscounts);
|
||||||
}
|
}
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
@ -252,10 +230,10 @@ sub getPrice {
|
||||||
my $options = $self->getOptions;
|
my $options = $self->getOptions;
|
||||||
my $impressionCount = $options->{impressions} || $self->{formImpressions};
|
my $impressionCount = $options->{impressions} || $self->{formImpressions};
|
||||||
my $clickCount = $options->{clicks};
|
my $clickCount = $options->{clicks};
|
||||||
my $impressionDiscount = getDiscountAmount($self->get('impressionDiscounts'),$impressionCount );
|
my $impressionDiscount = getDiscountAmount($self->impressionDiscounts,$impressionCount );
|
||||||
my $clickDiscount = getDiscountAmount($self->get('clickDiscounts'),$clickCount );
|
my $clickDiscount = getDiscountAmount($self->clickDiscounts,$clickCount );
|
||||||
my $impressionPrice = $self->get('pricePerImpression') * ( 100 - $impressionDiscount ) / 100 ;
|
my $impressionPrice = $self->pricePerImpression * ( 100 - $impressionDiscount ) / 100 ;
|
||||||
my $clickPrice = $self->get('pricePerClick') * ( 100 - $clickDiscount ) / 100 ;
|
my $clickPrice = $self->pricePerClick * ( 100 - $clickDiscount ) / 100 ;
|
||||||
return sprintf "%.2f", $impressionPrice * $impressionCount + $clickPrice * $clickCount;
|
return sprintf "%.2f", $impressionPrice * $impressionCount + $clickPrice * $clickCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -335,7 +313,7 @@ sub onCompletePurchase {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$ad = WebGUI::AdSpace::Ad->create($self->session,$self->get('adSpace'),{
|
$ad = WebGUI::AdSpace::Ad->create($self->session,$self->adSpace,{
|
||||||
title => $options->{'adtitle'},
|
title => $options->{'adtitle'},
|
||||||
clicksBought => $options->{'clicks'},
|
clicksBought => $options->{'clicks'},
|
||||||
impressionsBought => $options->{'impressions'},
|
impressionsBought => $options->{'impressions'},
|
||||||
|
|
@ -344,8 +322,8 @@ sub onCompletePurchase {
|
||||||
ownerUserId => $self->session->user->userId,
|
ownerUserId => $self->session->user->userId,
|
||||||
isActive => 1,
|
isActive => 1,
|
||||||
type => 'image',
|
type => 'image',
|
||||||
priority => $self->get('priority'),
|
priority => $self->priority,
|
||||||
adSpace => $self->get('adSpace'),
|
adSpace => $self->adSpace,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -437,7 +415,7 @@ Prepares the template.
|
||||||
sub prepareManage {
|
sub prepareManage {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
$self->SUPER::prepareView();
|
$self->SUPER::prepareView();
|
||||||
my $templateId = $self->get("manageTemplate");
|
my $templateId = $self->manageTemplate;
|
||||||
my $template = WebGUI::Asset::Template->new($self->session, $templateId);
|
my $template = WebGUI::Asset::Template->new($self->session, $templateId);
|
||||||
$template->prepare($self->getMetaDataAsTemplateVariables);
|
$template->prepare($self->getMetaDataAsTemplateVariables);
|
||||||
$self->{_viewTemplate} = $template;
|
$self->{_viewTemplate} = $template;
|
||||||
|
|
@ -454,7 +432,7 @@ Prepares the template.
|
||||||
sub prepareView {
|
sub prepareView {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
$self->SUPER::prepareView();
|
$self->SUPER::prepareView();
|
||||||
my $templateId = $self->get("purchaseTemplate");
|
my $templateId = $self->purchaseTemplate;
|
||||||
my $template = WebGUI::Asset::Template->new($self->session, $templateId);
|
my $template = WebGUI::Asset::Template->new($self->session, $templateId);
|
||||||
$template->prepare($self->getMetaDataAsTemplateVariables);
|
$template->prepare($self->getMetaDataAsTemplateVariables);
|
||||||
$self->{_viewTemplate} = $template;
|
$self->{_viewTemplate} = $template;
|
||||||
|
|
@ -485,8 +463,8 @@ sub view {
|
||||||
hasAddedToCart => $self->{_hasAddedToCart},
|
hasAddedToCart => $self->{_hasAddedToCart},
|
||||||
continueShoppingUrl => $self->getUrl,
|
continueShoppingUrl => $self->getUrl,
|
||||||
manageLink => $self->getUrl("func=manage"),
|
manageLink => $self->getUrl("func=manage"),
|
||||||
adSkuTitle => $self->get('title'),
|
adSkuTitle => $self->title,
|
||||||
adSkuDescription => $self->get('description'),
|
adSkuDescription => $self->description,
|
||||||
formTitle => WebGUI::Form::text($session, {
|
formTitle => WebGUI::Form::text($session, {
|
||||||
-name => "formTitle",
|
-name => "formTitle",
|
||||||
-value => $options->{adtitle},
|
-value => $options->{adtitle},
|
||||||
|
|
@ -518,8 +496,8 @@ sub view {
|
||||||
-name=>"formAdId",
|
-name=>"formAdId",
|
||||||
-value=>$options->{adId} || '',
|
-value=>$options->{adId} || '',
|
||||||
}),
|
}),
|
||||||
clickPrice => $self->get('pricePerClick'),
|
clickPrice => $self->pricePerClick,
|
||||||
impressionPrice => $self->get('pricePerImpression'),
|
impressionPrice => $self->pricePerImpression,
|
||||||
minimumClicks => $adSpace->get('minimumClicks'),
|
minimumClicks => $adSpace->get('minimumClicks'),
|
||||||
minimumImpressions => $adSpace->get('minimumImpressions'),
|
minimumImpressions => $adSpace->get('minimumImpressions'),
|
||||||
clickDiscount => $self->getClickDiscountText,
|
clickDiscount => $self->getClickDiscountText,
|
||||||
|
|
@ -573,7 +551,7 @@ sub www_addToCart {
|
||||||
push @errors, $i18n->get('form error no link');
|
push @errors, $i18n->get('form error no link');
|
||||||
}
|
}
|
||||||
my $adSpace = $self->getAdSpace;
|
my $adSpace = $self->getAdSpace;
|
||||||
my $adId = $self->get('adId');
|
my $adId = $self->adId;
|
||||||
my $clicks = $form->process('formClicks','integer');
|
my $clicks = $form->process('formClicks','integer');
|
||||||
if($clicks < $adSpace->get('minimumClicks') ) {
|
if($clicks < $adSpace->get('minimumClicks') ) {
|
||||||
push @errors, sprintf($i18n->get('form error min clicks'), $adSpace->get('minimumClicks'));
|
push @errors, sprintf($i18n->get('form error min clicks'), $adSpace->get('minimumClicks'));
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue