From fa48f2eca9dee4428a6bc5d345be76eebb841175 Mon Sep 17 00:00:00 2001 From: Colin Kuskie Date: Mon, 26 Apr 2010 14:55:43 -0700 Subject: [PATCH] Remove old form JS. Display shipping information, but not the address. Do not format currency unless it exists. Template support. --- .../default-shopping-cart-template.wgpkg | Bin 3984 -> 4005 bytes lib/WebGUI/Shop/Cart.pm | 106 ++++++++---------- 2 files changed, 47 insertions(+), 59 deletions(-) diff --git a/docs/upgrades/packages-7.9.4/default-shopping-cart-template.wgpkg b/docs/upgrades/packages-7.9.4/default-shopping-cart-template.wgpkg index ea1c4339e3fda178cc336ae9638205cea59a9b11..ebef63d3b7ef976c7bb7d2967d427061272d7086 100644 GIT binary patch literal 4005 zcmV;W4_fdaiwFP!00000|Lq)WZxcx}pZ8acf^-52Cw891$wh)>bL5U?(E^Kfms@M> zY1<9snPH}#2Z;ZERn_l#IF4fnbixQorn~E1)zvlC-dJ1xr`>Mv@9(aywcDNj-8TN; z?(FQWtp(=OUh8zW_jY&MyL&rZYeA>e-h%&N$?8ATLWDVxG)QBfd}_uwEm&SO43xA)>lt|J{B@KksdPEYf62gaX99JSK%!@IL>|nyKKJX+; zuV_`<4zO#Hhc8(ey$eUhn{e<6Rw3Y{LfphG5H}h7`vq`!Ej9;5aj|~$j63oQyoh_L2ZIvA&E!JbD^&Whs2RERWr`e-m_gHP#H z$lt$03`_Iw)tC!**avBh@^qR+E%|tqGnUkF6vhHcsLX$K*2X`LD>fn)Gr_(pE?Y4h zif*S3e6}X(msUT`K~SwcjQF%@i8OmPYrLNVLlZkit%hX;SAmh>)tFpT9j@w3a=1~9 zIjP=IOj?>n@*kw!CY~e#&K!qm0zHH3>UfoGlo?OJileWSFdy**rRa$Oe=lI)ih_d2 zmtdBiS}QB2698~iujS!3{xP-+b{ZhVXt4A{S^pav+6Kf7aZ|M$@W`ad!W?4Ap^^xB zV>d|?)(j1~1q*TDbstIEf@vN<{_Bj#>^=OT9k?|B4@T3*xRr--3ygkJYyucEiH(oh z=*i)e0Dce9GJ_;-B#en04Ptv(Pxy9`_z!%P?mikc;di%I9~hG8sGQ8_usWr@{rWR*CsA$A zbp);ed)@vXls5P}Qsm|y$W7m85#?0b)&rRb;8^+NuLc3R6Dk^%yJ{Ut6`VSi@FC8J zK&2UVc&eF)j{wQPEf<+yVN;;FmPnpvu5x5W1kKGFbg>$VlQNy|p^Izg55tSZZv_-f|m&%TWkokxkN zj*^NG1u7ew5$JTvW^=bYP*lq6=A+5Y^?Y28=A7)$pEFZJmL60YW^gqdg_TlQ%V*iy z;-Vyz3#^J}@&cXHVTwx+oa}NTs%@BC1>H`x)0E3cx&2d%*jS5{q<+e^s;hlTt|WzfV+V_a60Mo-O$Yrz)pB|5K($vLE}Gw z{G^h62i5GmjzOI$I>|Vlq*^7#w2^a-%n3_y<<4az;bEt$F6+sI;wSg`p?-Uy)^otR}a=@z)*&KG|gG` zj*A%l!UN%06p5&Q7~F~%?-Txc3hRwCYE7s|EH3Is&p3-C1grRN#IJSr22G(vhY^rg zijkf)NfkqQ@fM>qI;pZ&9LA5O8X>$(wY&85U~}eFEaI!8iZf4wBaZ#(U9$fq6+xI~ zF&`jJ%988~D;4EizE4V-p^-`RQUpM>IR0DGFEZ^@07gcq)yESQ^fZYf#s>JN^1S$y z7aZQ&NCK^zWGUEai2|IC>R8W36ZZ_!ELCYZOz?P=N_4~I)=U_bqBR1kC&kLqP@_&y z0LVr^vpvmbYPK=T{52Y}^B)n--4pup#e1muf=~K-- z*bw5d&tgokAdjG*dkXq19Dp??=b$;pxac=m2Z$d(7#yvL704bXK zz~bD{@`q>*=J=@~WlLV35%0qMSJh9-cck33*MHMUNL{h!)Sw3M3!SIbCJ> zGP80|d6YKXlD&RjL#Wu~qgX78bMSB-di$*YFgd*JL<;~mH>wHip&z`_wy ztzTIjsh;&TOHO`SW$Qi(tVYmtFnkC8mYKpDmhP9s`h{CnUxT->%cxn)J`ikC0&On- zZbX8)&+8HST1vhJy7zmZV`wJM(_~aG_loe^xSX2Nct)ss6IAntnp#^xbhbJSINTEQ zjF(hKlTyL;FI?`cXH$SDe(J@d?es3P37Uj)2zNOIyqb*Fbs~862J*4zBr7S6_V)~5 z>=$ZISs{?>Qrm|AUW{Z1|0v&}zK60uKuZN(%z@^2L%|GnsAFQ2?eGK?1aIcy78taj z%n()exCx>+;v8GLL3jyAXy?6d*Llm#6YP38Ap)N3dB;ym5^Ge9XQnQ! zQx;7JsDry2ZY2cal@+{fumpKSXHXc=5Ho4gw{DyL;$V{;Pz>7nP1^xs(@g?;)Q8vb zhL$W5?N52}geQD5o#5Nj=M&uj?;XvYE}k7Eo>z<}XP>7W%py?81G>K!goIzo(6OT` ziC{zg-pap&(v7SBF#C_&Hsx=GWd-x%B!tkVdbe^Nw(#vhzr5i{J;3`&W61rAn2inZ zqH?tvWoaQ>@|>+jJxk!#9^k?z6B_|-ScO@y()80b!`Gx5n_1U>uj|ZO_Xc*7E6_+C9bW6sQ5cMKHiUP`7JJS{yZ}xix_!bns}km&_P#~E8P=gt zk~-R?#vAGnq@FsngJYd@(5^|iMMbK zS`Iwh*>Y$?wx)C?Z5>*ua%h5cu4=>8@hSDQ(aI*u;Cd(+AWdnIdAIxW-EXg|8sOlV zc+FehAouQ;^FoQB%#EuD8ap`HKRDRkcbUrBB{WQ>$*I1EUZ)Lcw}o5P#sI9O!C&R= zbM!^Li%w`)Uj*P4Y4a#${MqiO%$7*z>-0JlZiJqc%iF^?(IwDgjBj4 z)a38cw`*XSR$RCH_bxrV*7-5esYtcVZe8r8_0yPpb?NG@V;stkMcW0W!Vw4-zQQ27 zfxvsBF5f$W%D<0a*;-1Sm;>rqdaIhcboewI2J9vfXR*Vjfk}7VWCNy27^EV1u7*So zuL@LyaJexUp_JlurDeBfj&4CUdo~hN1*Ka{t8Ku>1Zy=>rD;}kFvw7C5K5Z(o6{of zo)7115Jr*eTvmP!g2_9uH@(^#j0+IeT1bFKeWW=LSs763UDj7W`LzXd|S!w|G2i=xmIYJIqGSAx9Ue5%`FFcEo20{(J z%GccdRr{dj$#l`8UbP{3jgjs^ZRadaFnOz~l$6%hl!M$EK1vlT3_-RJvw00_vZ10e z?KhtvXHZ{b=G6*Mp@4e^)g;R0^3_zpx-UznXw@w2#TaqUt_u{PoHJ{kgW=T{6Pe0| zl^O20i3{!iVlTMYWOH=CG-#X#xXYbD zi7ROvieyR3j|BPeH#7Stm$WQPz1|@T5L?{cdC%-{cGg=P>;H7S-NVEEjg4-%cevlh zpWWWx-o{3tKi!R9Z}(t-cfWVAcd!xkdfgrP0ZZ2ZnHOc414*Ma=E=uqeDi|kMe{H+ z1s`ILezr{gGYt{dJ@fzWcl7(g)^A0ctcXy6cyIvv_UnJ|V6WS&=zni_x4RL5G}r%G zm;SfbPx>k_eEtTUaI<8yEDlRH2+J}YO=m1Ai_M@P{PSPWX}l=YJe)B5QI@9}%S+B^ zB7s3jqnrVp==(dIySckb>v13si}HutEX`r`jMgOcIM&19g(bn?%;v+G7gH9QwF$d< z&yy&)ld>}oXFR^^hdB@9V|r5XPpseD$!?FoIP-%t-WIgaoUz2iQ5csce%N2@bc4DJRuyib+dtB>zInZQ@A~V9l|JCeSTZ*T?H*qs({$Rvdkvh53Xh zC`CsE_`QG)EeZ-AUxQipyjE7sX8_>NujTPB{?oP!b{ZhVXt4B4RsUNG+7<+p@~&<- z;E_p@g*gP5V<{2x#(t6}tQi_|3l?I*>pu~+1@k<9`tJ)Kvv=@|a^TJgJQz(I16m%& z9WeS?u?=9zB({FbCeMza1@JvU%M6mVld}w>Rx1gl%~jAq3bu)$2a8Z)T;Z{FSRSG% z5swy@h?u?-p-5sJxkzdj6-@yFXH-_)7XywJK2g_I4MW%#n3Ov?5kz_rxQ_H9&vG59h5t%Xm<+_*j@IIKSIw)EK@ z#7Xs?tznMY>)Z)nJ|yk~7p1)u22J?w&CvyhBw9)%130cvscxX|jQdHH+pCYjHDLGc z&_QL3_K_mC=Rj=RE{iCq+QuA+ogBxiA9pnf$evKspx76EB-L=LWWa^E7y_9n`0&(o z2Nwa7e_uAS&W3Qh@ckUkuE3PcJ5nopR`OY_6e$*Db-mv#Mg5tclLdhs7$Dge3aCDD3JL~ zOQ2Ipm&v{!Kv5+#TZ|?3_Yka%)vYxg^^NU$!FF1-m)Z<3#^M~ z@&c8WVUkJ@to(2(s!f<%2i;b*Q_ zWr{^38nOydSV+k(qaPw((vX$MYxq=mDxttO;NyVhd77V|MEp7!K}oEDDil3}64VLJ zxejwRX&Yvpo@~pdrT2bP}L2n{ig(|m^IGL{3HlQJAakxVEI z2<(2?3`Q)DrNLTH;B|fkg)I4mNAQahGS<<65QK&>(U?zQKZKkX79}w8z#(&b~m83;)Jl|-c9AawMfvsrqr^}nbd zjLU$bjQM1qv*?PKG5Cc8!m=n5k$)K6iWlz^{`(x(YiCrNkdIhg_(m@{iz5Up`EJCo zboB;Jp+biikWz}4o-j!nLwNBPE0*Y_(pqsCKZa_AaFr@|8Ro%u>r||K%M!9RPk~tN&Oii#MoprAsVZ_IcjR;3kv`;(NAwr?Tp-q9L6iw@;#5?sC5!ZdvgPi7J#H3mJ2Hc=OnK{3%i8C zRa_>x#Z-ZlXLz8K2UzYA&R|awW&g86QdETnst*d7sAFUh7Qs+ZZ>aVRqAOwS7V+RHi8$Ex_a>Gvbw>w>!g_4OX?)k<7H{4#p@(`lt!Lticgm%8P~3t;(1c$KHGqP z6Bt;YZd$%h(z7XaA-tZ?hAgk!2@M7bjV{ZBgaG?16@`sFqPZ3#W(* zjY@>-9H^0{8BhS$O23@~)p@W-m*&F;vQ}PHHdN~QV0eXhP86C%A`vZ|Cp?+=^VmeY=+H~4kF!3?`rGB;z%94JwVrf zGW5}4OU+w=c}&?`h(=WRv7TRya-Nm&+xE9~Sow&;>nU_;=4mpi7Lv>GRy(4cA?v*& zjk>4a?>UF0o&gY~DLDWRyIk0E6tN<`y4vzHu57u={h|j|CwNvIDE`eIjHB!pm^W_@ zLX22X#=~rd^-NTfta;E+008BKHWg@`*4Zz~{203FOE~9><%JG7$8jhz3Q<)2oZ%^P z(SY=!t_P>`bRhzojy2vET}%6FGE5G_g=6agZtXw^Lsd(bfV_69g;Z6{(@F_CyoPsD z>u9iV>7OTfaDGk%oT+)I&n(=?o-%=&IvgLcVZC6{e1wvJv{&F&0c`SKfxMxKB#c|c zOqz5Z%cQ_2 zRwKwB63Lh{<@kcBF0ZP}>_|t54cIS<|=T;TW zi}MfymTdn~6&J9$)01I!Hxqh*vamMfVNJ~1hWAmqs{WIug}C!z?OXC$0w+g+3;Ps+ zHgz(nO&MmrO4E;f8<6gJI-O|O$$s2Lg}^$bbq!MEG^Rqy{aCQDZ)j02yui!_CH zAF_Gr5VfuVY}En)nZ;S0!qqIKS2k8vg5rMn`Fl3}+q+9>8q$2~H7F;N$%mx6uGhBi z4Wx26pdlX}PB+L&7)*0EhQmpNJ!cbM0H+Y`K4Rxi1@m6_(4gK9eJG@)PPVC+gIdmP zkz)&+)mN8HSQ=v%yEf4v#1a zi4cCje})}}{r;7_0&AvYN$ICF;$to^kM?#BcXqpQMSb5)f*!3{z{B7eJbfX04WF4A zvPJM$&cyZALo>t+Y#c z92%^wOSNDqtb7YMS_SOG?+&cKM!2R221p|fa_aYAUj6i{E;SC0iq~z$4PfVvFE6BY zs@&L0rm>@=!=t19!ySvFoLxf?PMW+>_k?}g;B?nlTZARgX?k->&M3rTi5gs4To6V# z#p}XEfrS~}5E~tZpfFq6Mu8jP(2YX3r|o;jD&#$)-&2Q8-NI>ijXtE;(|9;WGZ~In z+2x6qU^jPpRClKm-ZT`QZl-%g#vEt{f_vuC9Yoi2dDGd7M(*Y3+I~{$;2Tk=%UjtD zq++DrF<=XUV2bSp4NThOIt9?prL=|86n_?rUETFaTWu&sD3xGbYxVTZQLT%5qozaZ z8YtD0SZ^QICg{~f4Nz-SDacT5>q46N&1x;R^U1{;OUdHo3zWEXu9FRX4Xn46;sVc` zgw%oY5^pmp%GXS>+DOg7${R=xXle_WZN4g{*8~Axzk;+qs+UnMAR?8Fo-!W87|yIT zj=F<(tEdJ84xuXn4}ym#A0on~Xi+?YN`~I$70q zr^-4{xyhd4^zbc7rha{^$g!9Yn_n7RsP~w8y=J6+Qo4sPlk0e^WX-Fsovf*hM2p+^tj1H4 zX2jC+FphY3U9nHY^%zwqQXBLG%0n*Q>njYYh~#I*)=VX6{y)C6$Yv}P-K~0-d4pxi zD8I|fH=Z}=GMvckmT~8%_tW0%LH6U1`~2<8;(f%fhSqgUxR!JW)uUPU{h8j}RY730 zXRt!~gZ?0xuK+@SN6dZQ?;aiP^m<2D{Y3mRA$1${^=y)KN6|qUN3-+ZMfQI0@53{L qO~2<$`tT2%efj3gD*lMtR~TO<@Kpj|CGbBef&TzEmbfqgRsaC6ShlforceSecureConnection()){ return "redirect"; } - # set up html header - $session->style->setRawHeadTags(q| - - |); my @cartItems = @{$self->getItems}; if(scalar(@cartItems) < 1) { @@ -886,7 +874,7 @@ sub www_view { my %properties = ( %{$item->get}, url => $sku->getUrl("shop=cart;method=viewItem;itemId=".$item->getId), - quantityField => WebGUI::Form::integer($session, {name=>"quantity-".$item->getId, value=>$item->get("quantity")}), + quantityField => WebGUI::Form::integer($session, {name=>"quantity-".$item->getId, value=>$item->get("quantity"), size=>5,}), isUnique => ($sku->getMaxAllowedInCart == 1), isShippable => $sku->isShippingRequired, extendedPrice => $self->formatCurrency($sku->getPrice * $item->get("quantity")), @@ -912,18 +900,14 @@ sub www_view { %{$self->get}, items => \@items, formHeader => WebGUI::Form::formHeader($session) - . WebGUI::Form::hidden($session, {name=>"shop", value=>"cart"}) - . WebGUI::Form::hidden($session, {name=>"method", value=>"update"}) - . WebGUI::Form::hidden($session, {name=>"itemId", value=>""}) - . WebGUI::Form::hidden($session, {name=>"callback", value=>""}), + . WebGUI::Form::hidden($session, {name=>"shop", value=>"cart"}) + . WebGUI::Form::hidden($session, {name=>"method", value=>"update"}) + . WebGUI::Form::hidden($session, {name=>"itemId", value=>""}) + , formFooter => WebGUI::Form::formFooter($session), updateButton => WebGUI::Form::submit($session, {value=>$i18n->get("update cart button"), extras=>q|id="updateCartButton"|}), continueShoppingButton => WebGUI::Form::submit($session, {value=>$i18n->get("continue shopping button"), extras=>q|onclick="this.form.method.value='continueShopping';this.form.submit;" id="continueShoppingButton"|}), -# chooseShippingButton => WebGUI::Form::submit($session, {value=>$i18n->get("choose shipping button"), -# extras=>q|onclick="setCallbackForAddressChooser(this.form);" id="chooseAddressButton"|}), -# shipToButton => WebGUI::Form::submit($session, {value=>$i18n->get("ship to button"), -# extras=>q|onclick="setCallbackForAddressChooser(this.form);"|}), subtotalPrice => $self->formatCurrency($self->calculateSubtotal()), minimumCartAmount => $session->setting->get( 'shopCartCheckoutMinimum' ) > 0 ? sprintf( '%.2f', $session->setting->get( 'shopCartCheckoutMinimum' ) ) @@ -931,50 +915,54 @@ sub www_view { , shippableItemsInCart => $shippableItemsInCart, ); + $session->log->warn('after item loop'); # if there is no shipping address we can't check out # if (WebGUI::Error->caught) { # $var{shippingPrice} = $var{tax} = $self->formatCurrency(0); # } # -# # if there is a shipping address calculate tax and shipping options -# if ($address) { -# $var{hasShippingAddress} = 1; -# $var{shippingAddress} = $address->getHtmlFormatted; -# my $ship = WebGUI::Shop::Ship->new($self->session); -# my $options = $ship->getOptions($self); -# my $numberOfOptions = scalar keys %{ $options }; -# if ($numberOfOptions < 1) { -# $var{shippingOptions} = ''; -# $var{shippingPrice} = 0; -# $error{id $self} = $i18n->get("No shipping plugins configured"); -# } -# elsif ($numberOfOptions == 1) { -# my ($option) = keys %{ $options }; -# $self->update({ shipperId => $option }); -# $var{shippingPrice} = $options->{$self->get("shipperId")}->{price}; -# $var{shippingPrice} = $self->formatCurrency($var{shippingPrice}); -# } -# else { -# tie my %formOptions, 'Tie::IxHash'; -# $formOptions{''} = $i18n->get('Choose a shipping method'); -# foreach my $option (keys %{$options}) { -# $formOptions{$option} = $options->{$option}{label}." (".$self->formatCurrency($options->{$option}{price}).")"; -# } -# $var{shippingOptions} = WebGUI::Form::selectBox($session, {name=>"shipperId", options=>\%formOptions, value=>$self->get("shipperId")}); -# if (!exists $options->{$self->get('shipperId')}) { -# $self->update({shipperId => ''}); -# } -# if (my $shipperId = $self->get('shipperId')) { -# $var{shippingPrice} = $options->{$shipperId}->{price}; -# } -# else { -# $var{shippingPrice} = 0; -# $error{id $self} = ($i18n->get('Choose a shipping method and update the cart to checkout')); -# } -# $var{shippingPrice} = $self->formatCurrency($var{shippingPrice}); -# } -# } + # if there is a shipping address calculate tax and shipping options + if ($address) { + $session->log->warn('has address'); + my $ship = WebGUI::Shop::Ship->new($self->session); + my $options = $ship->getOptions($self); + my $numberOfOptions = scalar keys %{ $options }; + if ($numberOfOptions < 1) { + $session->log->warn('no shipping plugins'); + $var{shippingOptions} = ''; + $var{shippingPrice} = 0; + $error{id $self} = $i18n->get("No shipping plugins configured"); + } + elsif ($numberOfOptions == 1) { + $session->log->warn('only 1 shipping plugin'); + my ($option) = keys %{ $options }; + $self->update({ shipperId => $option }); + $session->log->warn('shipping price: '. $options->{$options}->{price}); + $var{shippingPrice} = $options->{$option}->{hasPrice} ? $self->formatCurrency($options->{$option}->{price}) : ''; + $var{shippingOptions} = $options->{$option}->{label}; + } + else { + $session->log->warn('building dropdown'); + tie my %formOptions, 'Tie::IxHash'; + $formOptions{''} = $i18n->get('Choose a shipping method'); + foreach my $option (keys %{$options}) { + $formOptions{$option} = $options->{$option}{label}." (".$self->formatCurrency($options->{$option}{price} || 0).")"; + } + $var{shippingOptions} = WebGUI::Form::selectBox($session, {name=>"shipperId", options=>\%formOptions, value=>$self->get("shipperId") || ''}); + if (!exists $options->{$self->get('shipperId')}) { + $self->update({shipperId => ''}); + } + if (my $shipperId = $self->get('shipperId')) { + $var{shippingPrice} = $options->{$shipperId}->{price}; + } + else { + $var{shippingPrice} = 0; + $error{id $self} = ($i18n->get('Choose a shipping method and update the cart to checkout')); + } + $var{shippingPrice} = $options->{$shipperId}->{hasPrice} ? $self->formatCurrency($var{shippingPrice}) : ''; + } + } # # # Tax variables # $var{tax} = $self->calculateTaxes;