From dd89a77ba8f7ae90a4e28b6b6b0ac9589e474086 Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Fri, 28 Aug 2009 00:17:08 +0000 Subject: [PATCH] Display the minimum number of clicks and impressions that must be bought by the user, in the buy ad space form. tidy up code. Fixes bug #10843 --- docs/changelog/7.x.x.txt | 1 + ...sku_default-purchase-ad-sku-template.wgpkg | Bin 0 -> 1620 bytes lib/WebGUI/Asset/Sku/Ad.pm | 276 ++++++++++-------- lib/WebGUI/i18n/English/Asset_AdSku.pm | 12 + 4 files changed, 161 insertions(+), 128 deletions(-) create mode 100644 docs/upgrades/packages-7.7.19/root_import_ad-sku_default-purchase-ad-sku-template.wgpkg diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index b8dc4f954..0d80333f5 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -1,4 +1,5 @@ 7.7.19 + - fixed #10843: Ad Sales: how many do I have to buy? - fixed #10835: Ad Sales: Ad Space field not user-friendly - fixed #10841: Ad Sales: hover help spelling error - fixed #10833: Calendar feeds not versioned, not duplicated diff --git a/docs/upgrades/packages-7.7.19/root_import_ad-sku_default-purchase-ad-sku-template.wgpkg b/docs/upgrades/packages-7.7.19/root_import_ad-sku_default-purchase-ad-sku-template.wgpkg new file mode 100644 index 0000000000000000000000000000000000000000..8f1312722bb36c97ed9dac177c92a4a9bdc3fede GIT binary patch literal 1620 zcmV-a2CMlWiwFP!00000|Ls^?Z`(E$&U1eS;im?uW6QB~aXbTF(lkad^N_T~wyXgy z(KZ{26i6y*HuS&mkdjR5VmE1GU=Q&_?1<-l=SH6MQ9E0k|Fqlf{r%q7mj2%Bns2WQ z-)Q-1Z+Tv)+uQ4OymoI3d0yMw+d`nS`A;Gh7T}uCL&~mK+e;)7a`mzf4n8J0^Sws& z|FmSh_Nsq(zDmxX$WcJw%j#ZJf3MT-bxQT`cJ{kl2(r2P&!+0Xvw7E_!ot5V;1D(x ziQ*6|a)p(`{vskw$p-49zy5w@)}`VC&x!je7Ca_GQDOuQj7IVW0i591J1yJTZ5VyM z5Mrrbe~Y<*)sfL*Nf<7d;S?%^--wfGNacbAR+o|6&y)rH)_}I{g1loqmb3~-zA1sv z2o5grTu!im4RGL4!6d(BM0|u}JvM8uvjz2vB9@YD3djs6p=!p7@E2H;X8OFD7sG;3c}9bPuyXiRP6St6 z-Nk9@oXpGxPvUX#I-tsEc^wP4G@wf~z=+|9{Bqf#!9c+_xVpgtWg!kP8;Axg*M@@@ z9$vCbmMYR2l0-_%*$!ar;2@&xHwFTEpC80SYr^MD2_8xSi9u%2GREml|IU6QA_Ny# zk(|3A0lh&!Y$pkR8G*}&18Y?VEs$J=3<)1WN`ni2jD^bK2aDa|moZaBFsvXB9KM`! z5h1Kak>bb)VWbwAUCUP^y$!BL!TEKveKcr+YVJ7+CCMQnc8zM|##-Tms*phBMyWPE zM(l)0U(i^)lBH=WyXX#~bPGXdkOqq$VFm~F9gH%lU2QC>1k%&490JxJbzRSw8$zc+ zpC=+#E{}q7P*}v%kf13Spaed)VK4b43}Z+pWpjA4n>~>+_R}XIQ$U#V;I8nXXg#P6 zFh5UFHKcT&%VDabn}Jgt9cEseqF756Z5RLhu_tx;E?R*9Y#p^DriySb3hqAE4;sP# zcwk1xS_k&V6MDjuXi5a)GdRlBub!r&sY+^&jnew^!+1);-DqFg6dS`6L47hr+ec29 z%DaydIHA(#2~)$tRG^kqq0*|;zLsY+2ZBCGqa@0lPJv2oCKIX2hU0M&M>n0!!lr5i z152bGz0&S}P@u8Z{Fy2tTPEwnx>{MOl?AI4SthWi{8_f$NY<9l;un%tt)Gkdh$14m zvOw!(&`CScNpVQ$`nRC-g({3h-Am4sX+&WYuRp^rRqnVgrMq~c2j?6?!=3`IF(bil z#Y^_(6D7BLtiIenLNCAQUt{1L$NCr@ZCf5f*@6hFK8o;E@MwYs(9SZ&F}&~?2JXC; zR8mGVUfQVMVbUkoo*@k%fb19}pUL#i$8o=J#(2Mfkx^hPt{Lll9?%(0$z#Lo^t`Tj z2sc$LWCo1EJ4xvrnq+hijRFLd9#w%eZl<$jH1{nWm71~Xl$#aLuE=W|f8Ywd@eMU8 zuLEaKS;YgL(Fslrfo|X!Nd1jVybTRJr~jnh>>eCAEHcIdxU;dgB9;CA*~R;J)%dA= z$2B8QF9`)sPGy$Ha(M1OFl&d0`-g|U{f@(V1-YS`eV*i3iMoOTXNK#*a?>~oUhvy7 zJB3Z1X2Z!n-2Kx#M1G?%9ypdYgVro2&6A;ot$ZI?3vdR^Ei1(`7>{P(S)*J*y;l=% zdtTE{3jhvtei+5B!79<~NAl{_MZ>DsbLm37wG4W&LEdau1L!_PSL+u2a_B7-PNUz?!U_UgHDGD$gYZ`o)2ac7j^5wGJqTyjQpVWO z+U(c!Oozc3rnn?8z#*K9R9GaG>)utdF|FVphF$0lP~HSC1$kt2*7S-Ht$?LwnufS> z{xp|KK{DO~{}{GX-0new($self->session,$self->get('adSpace')); + return $adSpace; +} + +#------------------------------------------------------------------- + =head2 getClickDiscountText returns the text to display the number of clicks purchasaed where discounts apply @@ -458,56 +472,56 @@ sub view { my $session = $self->session; my $options = $self->getOptions(); - my $i18n = WebGUI::International->new($session, "Asset_AdSku"); + my $i18n = WebGUI::International->new($session, "Asset_AdSku"); + my $adSpace = $self->getAdSpace; my %var = ( formHeader => WebGUI::Form::formHeader($session, { action=>$self->getUrl }) - . WebGUI::Form::hidden( $session, { name=>"func", value=>"addToCart" }), + . WebGUI::Form::hidden( $session, { name=>"func", value=>"addToCart" }), formFooter => WebGUI::Form::formFooter($session), formSubmit => WebGUI::Form::submit( $session, { value => $i18n->get("form purchase button") }), - error_msg => $options->{error_msg}, + error_msg => $options->{error_msg}, hasAddedToCart => $self->{_hasAddedToCart}, continueShoppingUrl => $self->getUrl, - manageLink => $self->getUrl("func=manage"), - adSkuTitle => $self->get('title'), - adSkuDescription => $self->get('description'), - formTitle => WebGUI::Form::text($session, { - -name=>"formTitle", - -value=>$options->{adtitle}, - -size=>40 - -default=>'untitled', - }), - formLink => WebGUI::Form::Url($session, { - -name=>"formLink", - -value=>$options->{link}, - -size=>40 - -required=>1, - }), - formImage => WebGUI::Form::File($session, { - -name=>"formImage", - -value=>$options->{image}, - -size=>40 - -forceImageOnly=>1, - }), + manageLink => $self->getUrl("func=manage"), + adSkuTitle => $self->get('title'), + adSkuDescription => $self->get('description'), + formTitle => WebGUI::Form::text($session, { + -name => "formTitle", + -value => $options->{adtitle}, + -size => 40 + -defaultValue => 'untitled', + }), + formLink => WebGUI::Form::Url($session, { + -name=>"formLink", + -value=>$options->{link}, + -size=>40 + }), + formImage => WebGUI::Form::File($session, { + -name=>"formImage", + -value=>$options->{image}, + -size=>40 + -forceImageOnly=>1, + }), formClicks => WebGUI::Form::Integer($session, { - -name=>"formClicks", - -value=>$options->{clicks}, - -size=>40 - -required=>1, - }), - formImpressions => WebGUI::Form::Integer($session, { - -name=>"formImpressions", - -value=>$options->{impressions}, - -size=>40 - -required=>1, - }), - formAdId => WebGUI::Form::Hidden($session, { - -name=>"formAdId", - -value=>$options->{adId} || '', - }), - clickPrice => $self->get('pricePerClick'), - impressionPrice => $self->get('pricePerImpression'), - clickDiscount => $self->getClickDiscountText, - impressionDiscount => $self->getImpressionDiscountText, + -name=>"formClicks", + -value=>$options->{clicks}, + -size=>40 + }), + formImpressions => WebGUI::Form::Integer($session, { + -name=>"formImpressions", + -value=>$options->{impressions}, + -size=>40 + }), + formAdId => WebGUI::Form::Hidden($session, { + -name=>"formAdId", + -value=>$options->{adId} || '', + }), + clickPrice => $self->get('pricePerClick'), + impressionPrice => $self->get('pricePerImpression'), + minimumClicks => $adSpace->get('minimumClicks'), + minimumImpressions => $adSpace->get('minimumImpressions'), + clickDiscount => $self->getClickDiscountText, + impressionDiscount => $self->getImpressionDiscountText, ); return $self->processTemplate(\%var,undef,$self->{_viewTemplate}); } @@ -521,66 +535,72 @@ Add this subscription to the cart. =cut sub www_addToCart { - my $self = shift; + my $self = shift; + return $self->session->privilege->insufficient() unless $self->canView; my $session = $self->session; - my $i18n = $self->i18n; - if ($self->canView) { - my $form = $session->form; - my @errors; - #my $imageStorage = $self->getOptions->{image} || WebGUI::Storage->create($session); # LATER should be createTemp - my $imageStorageId = $form->process('formImage', 'image'); # , $self->getOptions->{image}); - my $imageStorage = WebGUI::Storage->get($session,$imageStorageId); - my $code; - if( not defined $imageStorage ) { $code = 1; } - elsif( $imageStorage->getErrorCount > 0 ) { $code = 2; } - elsif( scalar(@{$imageStorage->getFiles}) == 0 ) { $code = 3; } - elsif( $imageStorage->isImage((@{$imageStorage->getFiles})[0]) ) { $code = 4; } - if( not defined $imageStorage - or $imageStorage->getErrorCount > 0 - or scalar(@{$imageStorage->getFiles}) == 0 - # or $imageStorage->isImage((@{$imageStorage->getFiles})[0]) # not currently working - ) { - push @errors, $i18n->get('form error no image') . $code . eval { (@{$imageStorage->getFiles})[0] } ; - } - my $title = $form->process('formTitle'); - if($title eq '' ) { - push @errors, $i18n->get('form error no title'); - } - my $link = $form->process('formLink','url'); - if($link eq '' ) { - push @errors, $i18n->get('form error no link'); - } - my $adId = $self->get('adSpace'); - my $adSpace = WebGUI::AdSpace->new($session,$adId); - my $clicks = $form->process('formClicks','integer'); - if($clicks < $adSpace->get('minimumClicks') ) { - push @errors, sprintf($i18n->get('form error min clicks'), $adSpace->get('minimumClicks')); - } - my $impressions = $form->process('formImpressions','integer'); - if($impressions < $adSpace->get('minimumImpressions') ) { - push @errors, sprintf($i18n->get('form error min impressions'), $adSpace->get('minimumImpressions')); - } - if( @errors == 0 ) { - $self->{_hasAddedToCart} = 1; - $self->addToCart({ - adtitle => $title, - link => $link, - clicks => $clicks, - impressions => $impressions, - adId => $adId, - image => $imageStorageId, - }); - } else { - $self->applyOptions({ - adtitle => $title, - link => $link, - clicks => $clicks, - impressions => $impressions, - adId => $adId, - image => $imageStorageId, - error_msg => join( '
', @errors ), - }); - } + my $i18n = $self->i18n; + my $form = $session->form; + my @errors; +#my $imageStorage = $self->getOptions->{image} || WebGUI::Storage->create($session); # LATER should be createTemp + my $imageStorageId = $form->process('formImage', 'image'); # , $self->getOptions->{image}); + my $imageStorage = WebGUI::Storage->get($session,$imageStorageId); + my $code; + if( not defined $imageStorage ) { + $code = 1; + } + elsif( $imageStorage->getErrorCount > 0 ) { + $code = 2; + } + elsif( scalar(@{$imageStorage->getFiles}) == 0 ) { + $code = 3; + } + elsif( $imageStorage->isImage((@{$imageStorage->getFiles})[0]) ) { + $code = 4; + } + if( not defined $imageStorage + or $imageStorage->getErrorCount > 0 + or scalar(@{$imageStorage->getFiles}) == 0) { + push @errors, $i18n->get('form error no image') . $code . eval { (@{$imageStorage->getFiles})[0] } ; + } + my $title = $form->process('formTitle'); + if($title eq '' ) { + push @errors, $i18n->get('form error no title'); + } + my $link = $form->process('formLink','url'); + if($link eq '' ) { + push @errors, $i18n->get('form error no link'); + } + my $adSpace = $self->getAdSpace; + my $adId = $self->get('adId'); + my $clicks = $form->process('formClicks','integer'); + if($clicks < $adSpace->get('minimumClicks') ) { + push @errors, sprintf($i18n->get('form error min clicks'), $adSpace->get('minimumClicks')); + } + my $impressions = $form->process('formImpressions','integer'); + if($impressions < $adSpace->get('minimumImpressions') ) { + push @errors, sprintf($i18n->get('form error min impressions'), $adSpace->get('minimumImpressions')); + } + if( @errors == 0 ) { + $self->{_hasAddedToCart} = 1; + $self->addToCart({ + adtitle => $title, + link => $link, + clicks => $clicks, + impressions => $impressions, + adId => $adId, + image => $imageStorageId, + }); + } + else { + $self->applyOptions({ + adtitle => $title, + link => $link, + clicks => $clicks, + impressions => $impressions, + adId => $adId, + image => $imageStorageId, + error_msg => join( '
', @errors ), + }); } return $self->www_view; } @@ -594,18 +614,18 @@ manage previously purchased ads =cut sub www_manage { - my $self = shift; - my $check = $self->checkView; - return $check if (defined $check); - $self->session->http->setLastModified($self->getContentLastModified); - $self->session->http->sendHeader; - $self->prepareManage; - my $style = $self->processStyle($self->getSeparator); - my ($head, $foot) = split($self->getSeparator,$style); - $self->session->output->print($head, 1); - $self->session->output->print($self->manage); - $self->session->output->print($foot, 1); - return "chunked"; + my $self = shift; + my $check = $self->checkView; + return $check if (defined $check); + $self->session->http->setLastModified($self->getContentLastModified); + $self->session->http->sendHeader; + $self->prepareManage; + my $style = $self->processStyle($self->getSeparator); + my ($head, $foot) = split($self->getSeparator,$style); + $self->session->output->print($head, 1); + $self->session->output->print($self->manage); + $self->session->output->print($foot, 1); + return "chunked"; } #------------------------------------------------------------------- @@ -617,20 +637,20 @@ renew an ad =cut sub www_renew { - my $self = shift; - my $session = $self->session; - my $id = $session->form->get('Id'); - my $crud = WebGUI::AssetCollateral::Sku::Ad::Ad->new($session,$id); - my $ad = WebGUI::AdSpace::Ad->new($session,$crud->get('adId')); - $self->applyOptions({ - adtitle => $ad->get('title'), - clicks => $crud->get('clicksPurchased'), - impressions => $crud->get('impressionsPurchased'), - link => $ad->get('url'), - image => $ad->get('storageId'), - adId => $crud->get('adId'), - }); - return $self->www_view; + my $self = shift; + my $session = $self->session; + my $id = $session->form->get('Id'); + my $crud = WebGUI::AssetCollateral::Sku::Ad::Ad->new($session,$id); + my $ad = WebGUI::AdSpace::Ad->new($session,$crud->get('adId')); + $self->applyOptions({ + adtitle => $ad->get('title'), + clicks => $crud->get('clicksPurchased'), + impressions => $crud->get('impressionsPurchased'), + link => $ad->get('url'), + image => $ad->get('storageId'), + adId => $crud->get('adId'), + }); + return $self->www_view; } 1; diff --git a/lib/WebGUI/i18n/English/Asset_AdSku.pm b/lib/WebGUI/i18n/English/Asset_AdSku.pm index 1fdf52d39..41b34e972 100644 --- a/lib/WebGUI/i18n/English/Asset_AdSku.pm +++ b/lib/WebGUI/i18n/English/Asset_AdSku.pm @@ -129,6 +129,18 @@ our $I18N = { context => q|%f is the price charged for each impression of the ad.| }, + 'minimum impressions' => { + message => q|Must buy at least %d impressions|, + lastUpdated => 0, + context => q|%d is the number of impressions that must be bought.| + }, + + 'minimum clicks' => { + message => q|Must buy at least %d clicks|, + lastUpdated => 0, + context => q|%d is the number of clicks that must be bought.| + }, + 'form manage title' => { message => q|Manage My Ads|, lastUpdated => 0,