Index: openacs-4/packages/ecommerce/ecommerce.info =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ecommerce/ecommerce.info,v diff -u -r1.52 -r1.53 --- openacs-4/packages/ecommerce/ecommerce.info 13 Oct 2010 09:59:24 -0000 1.52 +++ openacs-4/packages/ecommerce/ecommerce.info 15 Oct 2010 05:25:32 -0000 1.53 @@ -7,7 +7,7 @@ <initial-install-p>f</initial-install-p> <singleton-p>t</singleton-p> - <version name="5.17" url="http://openacs.org/repository/download/apm/ecommerce-5.17.apm"> + <version name="5.18" url="http://openacs.org/repository/download/apm/ecommerce-5.18.apm"> <owner url="mailto:janine@furfly.net">Janine Sisk</owner> <owner url="mailto:bart.teeuwisse@7-sisters.com">Bart Teeuwisse</owner> <owner url="mailto:alfred@thunderstick.com">Alfred Werner</owner> @@ -17,7 +17,7 @@ <description format="text/plain">This module implements a standard business-to-consumer Web store service. A feature summary is included with the documentaion.</description> <maturity>0</maturity> - <provides url="ecommerce" version="5.17"/> + <provides url="ecommerce" version="5.18"/> <requires url="acs-datetime" version="4.0"/> <requires url="acs-kernel" version="5.0"/> <requires url="ref-countries" version="0.1d"/> @@ -92,7 +92,8 @@ <parameter datatype="number" min_n_values="1" max_n_values="1" name="UserClassUserViewP" default="1" description="whether users can see what user classes they are in" section_name="display"/> <parameter datatype="string" min_n_values="1" max_n_values="1" name="WeightUnits" default="lbs" description="weight units such as pounds, carats, ounces, etc. If using PayPal, must comply with PayPal choices." section_name="units"/> <parameter datatype="string" min_n_values="1" max_n_values="1" name="PayPalBusiness" default="" description="email associated with paypal account." section_name="PayPal"/> - <parameter datatype="string" min_n_values="1" max_n_values="1" name="PayPalStandardMode" default="0" description="PayPal Standard mode: 0 = not used, 1 = shipping by weight, 2 = shipping calculated by price, 3 = custom shipping (as a line item)." section_name="PayPal"/> + <parameter datatype="string" min_n_values="1" max_n_values="1" name="PayPalBusinessRef" default="" description="PayPal Secure Merchant Account ID for building forms/buttons with paypal account." section_name="PayPal"/> + <parameter datatype="string" min_n_values="1" max_n_values="1" name="PayPalStandardMode" default="0" description="PayPal Standard mode: 0 = not used, 1 = shipping by weight, 2 = shipping calculated by price, 3 = custom shipping (as a line item), 5 = use PayPal AddtoCart and ViewCart buttons" section_name="PayPal"/> </parameters> </version> Index: openacs-4/packages/ecommerce/lib/toolbar.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ecommerce/lib/toolbar.adp,v diff -u -r1.2 -r1.3 --- openacs-4/packages/ecommerce/lib/toolbar.adp 10 Aug 2008 10:53:36 -0000 1.2 +++ openacs-4/packages/ecommerce/lib/toolbar.adp 15 Oct 2010 05:25:32 -0000 1.3 @@ -2,7 +2,18 @@ [ <a href="@ec_gift_cert_order_link@">gift certificates</a> ] </if> <if @current_location@ ne "shopping-cart"> + <if @use_paypal_shopping_cart_p@ true> + [ +<form name="_xclick" target="paypal" action="https://www.paypal.com/us/cgi-bin/webscr" method="post"> +<input type="hidden" name="cmd" value="_cart"> +<input type="hidden" name="business" value="@paypal_business_ref@"> +<input type="image" src="https://www.paypal.com/en_US/i/btn/view_cart_new.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!"> +<input type="hidden" name="display" value="1"> +</form> + ] + </if><else> [ <a href="@ec_cart_link@" title="View the contents of your shopping cart">shopping cart</a> ] + </else> </if> <if @current_location@ ne "your-account"> [ <a href="@ec_account_link@" title="View your @ec_system_name@ account">your @ec_system_name@ account</a> ] Index: openacs-4/packages/ecommerce/lib/toolbar.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ecommerce/lib/toolbar.tcl,v diff -u -r1.2 -r1.3 --- openacs-4/packages/ecommerce/lib/toolbar.tcl 10 Aug 2008 10:53:36 -0000 1.2 +++ openacs-4/packages/ecommerce/lib/toolbar.tcl 15 Oct 2010 05:25:32 -0000 1.3 @@ -19,3 +19,14 @@ # Check if gift certificates can be bought. set gift_certificates_are_allowed [parameter::get -package_id [ec_id] -parameter SellGiftCertificatesP -default 0] + +set paypal_standard_mode [parameter::get -parameter PayPalStandardMode] +set user_session_id [ec_get_user_session_id] +set n_items_in_cart [db_string get_n_items "select count(*) from ec_orders o, ec_items i + where o.order_id=i.order_id and o.user_session_id=:user_session_id and o.order_state='in_basket'"] +if { $paypal_standard_mode == 5 && $n_items_in_cart == 0 } { + set paypal_business_ref [parameter::get -parameter PayPalBusinessRef] + set use_paypal_shopping_cart_p 1 +} else { + set use_paypal_shopping_cart_p 0 +} \ No newline at end of file Index: openacs-4/packages/ecommerce/tcl/ecommerce-procs-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ecommerce/tcl/ecommerce-procs-postgresql.xql,v diff -u -r1.12 -r1.13 --- openacs-4/packages/ecommerce/tcl/ecommerce-procs-postgresql.xql 28 Aug 2003 09:41:53 -0000 1.12 +++ openacs-4/packages/ecommerce/tcl/ecommerce-procs-postgresql.xql 15 Oct 2010 05:25:32 -0000 1.13 @@ -51,7 +51,7 @@ <fullquery name="ec_add_to_cart_link.get_product_info_1"> <querytext> select case when current_timestamp > available_date then 1 when current_timestamp-available_date is NULL then 1 else 0 end as available_p, - color_list, size_list, style_list, no_shipping_avail_p + color_list, size_list, style_list, no_shipping_avail_p, product_name, one_line_description, sku, weight, shipping, shipping_additional from ec_products where product_id = :product_id </querytext> Index: openacs-4/packages/ecommerce/tcl/ecommerce-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/ecommerce/tcl/ecommerce-procs.tcl,v diff -u -r1.35 -r1.36 --- openacs-4/packages/ecommerce/tcl/ecommerce-procs.tcl 9 May 2009 18:33:10 -0000 1.35 +++ openacs-4/packages/ecommerce/tcl/ecommerce-procs.tcl 15 Oct 2010 05:25:32 -0000 1.36 @@ -574,68 +574,100 @@ } { Returns cart link } { - db_1row get_product_info_1 " - select decode(sign(sysdate-available_date),1,1,null,1,0) as available_p, color_list, size_list, style_list, no_shipping_avail_p + select decode(sign(sysdate-available_date),1,1,null,1,0) as available_p, color_list, size_list, style_list, no_shipping_avail_p, product_name, one_line_description, sku, weight, shipping, shipping_additional from ec_products where product_id = :product_id" if { ![empty_string_p $color_list] } { - set color_widget "Color: <select name=color_choice>" - foreach color [split $color_list ","] { - append color_widget "<option value=\"[ad_quotehtml $color]\">$color\n" - } - append color_widget "\n</select>\n<br>\n" + set color_widget "Color: <select name=color_choice>" + foreach color [split $color_list ","] { + append color_widget "<option value=\"[ad_quotehtml $color]\">$color\n" + } + append color_widget "\n</select>\n<br>\n" } else { - set color_widget [ec_hidden_input color_choice ""] + set color_widget [ec_hidden_input color_choice ""] } - + if { ![empty_string_p $size_list] } { - set size_widget "Size: <select name=size_choice> + set size_widget "Size: <select name=size_choice> " - foreach size [split $size_list ","] { - append size_widget "<option value=\"[ad_quotehtml $size]\">$size\n" - } - append size_widget "\n</select>\n<br>\n" + foreach size [split $size_list ","] { + append size_widget "<option value=\"[ad_quotehtml $size]\">$size\n" + } + append size_widget "\n</select>\n<br>\n" } else { - set size_widget [ec_hidden_input size_choice ""] + set size_widget [ec_hidden_input size_choice ""] } - + if { ![empty_string_p $style_list] } { - set style_widget "Style: <select name=style_choice> + set style_widget "Style: <select name=style_choice> " - foreach style [split $style_list ","] { - append style_widget "<option value=\"[ad_quotehtml $style]\">$style\n" - } - append style_widget "\n</select>\n<br>\n" + foreach style [split $style_list ","] { + append style_widget "<option value=\"[ad_quotehtml $style]\">$style\n" + } + append style_widget "\n</select>\n<br>\n" } else { - set style_widget [ec_hidden_input style_choice ""] + set style_widget [ec_hidden_input style_choice ""] } - + set warnings "" - + if { $no_shipping_avail_p == "t" } { - append warnings "(This item does not require shipping.)" + append warnings "(This item does not require shipping.)" } if { $available_p } { - set r " + set paypal_standard_mode [parameter::get -parameter PayPalStandardMode] + set user_session_id [ec_get_user_session_id] + set n_items_in_cart [db_string get_n_items "select count(*) from ec_orders o, ec_items i + where o.order_id=i.order_id and o.user_session_id=:user_session_id and o.order_state='in_basket'"] + if { $paypal_standard_mode == 5 && $n_items_in_cart == 0 } { + set currency [parameter::get -parameter Currency] + set weight_unit [parameter::get -parameter WeightUnits] + set paypal_business_ref [parameter::get -parameter PayPalBusinessRef] + set user_id [ad_get_user_id] + # actual example from paypal.com: + set r "<form target=\"paypal\" action=\"https://www.paypal.com/cgi-bin/webscr\" method=\"post\"> +<input type=\"hidden\" name=\"cmd\" value=\"_cart\"> +<input type=\"hidden\" name=\"business\" value=\"${paypal_business_ref}\"> +<input type=\"hidden\" name=\"lc\" value=\"US\"> +<input type=\"hidden\" name=\"item_name\" value=\"${product_name}\"> +<input type=\"hidden\" name=\"item_number\" value=\"$sku\"> +<input type=\"hidden\" name=\"weight\" value=\"$weight\"> +<input type=\"hidden\" name=\"weight_unit\" value=\"${weight_unit}\"> +<input type=\"hidden\" name=\"shipping\" value=\"$shipping\"> +<input type=\"hidden\" name=\"shipping2\" value=\"${shipping_additional}\"> +<input type=\"hidden\" name=\"amount\" value=\"[lindex [ec_lowest_price_and_price_name_for_an_item $product_id $user_id] 0]\"> +<input type=\"hidden\" name=\"currency_code\" value=\"$currency\"> +<input type=\"hidden\" name=\"button_subtype\" value=\"products\"> +<input type=\"hidden\" name=\"no_note\" value=\"0\"> +<input type=\"hidden\" name=\"cn\" value=\"Add special instructions to the seller\"> +<input type=\"hidden\" name=\"no_shipping\" value=\"2\"> +<input type=\"hidden\" name=\"add\" value=\"1\"> +<input type=\"hidden\" name=\"bn\" value=\"PP-ShopCartBF:btn_cart_LG.gif:NonHosted\"> +<input type=\"image\" src=\"https://www.paypal.com/en_US/i/btn/btn_cart_LG.gif\" border=\"0\" name=\"submit\" alt=\"PayPal - The safer, easier way to pay online!\"> +<img alt=\"\" border=\"0\" src=\"https://www.paypal.com/en_US/i/scr/pixel.gif\" width=\"1\" height=\"1\"> + </form>" + + } else { + set r " <form method=post action=\"[ec_url]$form_action\"> [export_form_vars product_id] [ec_decode $order_id "" "" [export_form_vars order_id]] $color_widget $size_widget $style_widget - <input type=submit value=\"[ad_quotehtml $add_to_cart_button_text]\"><br> + <input type=submit value=\"[ad_quotehtml $add_to_cart_button_text]\"><br> $warnings - </form> - " + </form>" + } } else { - set available_date [db_string available_date_select " + set available_date [db_string available_date_select " select to_char(available_date,'Month DD, YYYY') available_date from ec_products where product_id = :product_id "] - if { [ad_parameter -package_id [ec_id] AllowPreOrdersP ecommerce] } { - set r " + if { [ad_parameter -package_id [ec_id] AllowPreOrdersP ecommerce] } { + set r " <form method=post action=\"[ec_url]$form_action\"> [export_form_vars product_id] [ec_decode $order_id "" "" [export_form_vars order_id]] @@ -644,9 +676,9 @@ $warnings </form> " - } else { - set r "This item cannot yet be ordered.<br>(Available $available_date)" - } + } else { + set r "This item cannot yet be ordered.<br>(Available $available_date)" + } } return $r }