Commit 05d3db06b176c6ec85731c76b03235ed64a3134c

Authored by Rodrigo Souto
1 parent a2369d89

Fixing some problems on Shopping Cart delivery

plugins/shopping_cart/controllers/shopping_cart_plugin_myprofile_controller.rb
@@ -4,12 +4,7 @@ class ShoppingCartPluginMyprofileController < MyProfileController @@ -4,12 +4,7 @@ class ShoppingCartPluginMyprofileController < MyProfileController
4 append_view_path File.join(File.dirname(__FILE__) + '/../views') 4 append_view_path File.join(File.dirname(__FILE__) + '/../views')
5 5
6 def edit 6 def edit
7 - if params[:settings]  
8 - params[:settings][:enabled] = params[:settings][:enabled] == '1'  
9 - params[:settings][:delivery] = params[:settings][:delivery] == '1'  
10 - params[:settings][:free_delivery_price] = params[:settings][:free_delivery_price].to_d  
11 - params[:settings][:delivery_options] = treat_delivery_options(params[:settings][:delivery_options])  
12 - end 7 + params[:settings] = treat_cart_options(params[:settings])
13 8
14 @settings = Noosfero::Plugin::Settings.new(profile, ShoppingCartPlugin, params[:settings]) 9 @settings = Noosfero::Plugin::Settings.new(profile, ShoppingCartPlugin, params[:settings])
15 if request.post? 10 if request.post?
@@ -57,6 +52,15 @@ class ShoppingCartPluginMyprofileController < MyProfileController @@ -57,6 +52,15 @@ class ShoppingCartPluginMyprofileController < MyProfileController
57 52
58 private 53 private
59 54
  55 + def treat_cart_options(settings)
  56 + return if settings.blank?
  57 + settings[:enabled] = settings[:enabled] == '1'
  58 + settings[:delivery] = settings[:delivery] == '1'
  59 + settings[:free_delivery_price] = settings[:free_delivery_price].blank? ? nil : settings[:free_delivery_price].to_d
  60 + settings[:delivery_options] = treat_delivery_options(settings[:delivery_options])
  61 + settings
  62 + end
  63 +
60 def treat_delivery_options(params) 64 def treat_delivery_options(params)
61 result = {} 65 result = {}
62 params[:options].size.times do |counter| 66 params[:options].size.times do |counter|
plugins/shopping_cart/lib/shopping_cart_plugin/cart_helper.rb
@@ -39,7 +39,7 @@ module ShoppingCartPlugin::CartHelper @@ -39,7 +39,7 @@ module ShoppingCartPlugin::CartHelper
39 if settings.free_delivery_price && get_total(items) >= settings.free_delivery_price 39 if settings.free_delivery_price && get_total(items) >= settings.free_delivery_price
40 delivery = Product.new(:name => _('Free delivery'), :price => 0) 40 delivery = Product.new(:name => _('Free delivery'), :price => 0)
41 else 41 else
42 - delivery = Product.new(:name => delivery_option, :price => settings.delivery_options[delivery_option]) 42 + delivery = Product.new(:name => delivery_option || _('Delivery'), :price => settings.delivery_options[delivery_option])
43 end 43 end
44 delivery.save(false) 44 delivery.save(false)
45 items << [delivery.id, ''] 45 items << [delivery.id, '']
@@ -82,8 +82,10 @@ module ShoppingCartPlugin::CartHelper @@ -82,8 +82,10 @@ module ShoppingCartPlugin::CartHelper
82 end 82 end
83 83
84 def select_delivery_options(options, environment) 84 def select_delivery_options(options, environment)
85 - options.map do |option, price| 85 + result = options.map do |option, price|
86 ["#{option} (#{float_to_currency_cart(price, environment)})", option] 86 ["#{option} (#{float_to_currency_cart(price, environment)})", option]
87 end 87 end
  88 + result << ["#{_('Delivery')} (#{float_to_currency_cart(0, environment)})", 'delivery'] if result.empty?
  89 + result
88 end 90 end
89 end 91 end
plugins/shopping_cart/views/shopping_cart_plugin_profile/buy.html.erb
@@ -6,7 +6,7 @@ @@ -6,7 +6,7 @@
6 <%= labelled_form_field('* ' + _("Name"), f.text_field(:name, :class => 'required') ) %> 6 <%= labelled_form_field('* ' + _("Name"), f.text_field(:name, :class => 'required') ) %>
7 <%= labelled_form_field('* ' + _("Email"), f.text_field(:email, :class => 'required email') ) %> 7 <%= labelled_form_field('* ' + _("Email"), f.text_field(:email, :class => 'required email') ) %>
8 <%= labelled_form_field('* ' + _("Contact phone"), f.text_field(:contact_phone, :class => 'required') ) %> 8 <%= labelled_form_field('* ' + _("Contact phone"), f.text_field(:contact_phone, :class => 'required') ) %>
9 - <%= labelled_form_field(_('Delivery option'), select_tag(:delivery_option, options_for_select(select_delivery_options(@settings.delivery_options, environment)), 'data-profile-identifier' => profile.identifier)) if @settings.delivery && @settings.free_delivery_price && get_total(session[:cart][:items]) < @settings.free_delivery_price %> 9 + <%= labelled_form_field(_('Delivery option'), select_tag(:delivery_option, options_for_select(select_delivery_options(@settings.delivery_options, environment)), 'data-profile-identifier' => profile.identifier)) unless !@settings.delivery || (@settings.free_delivery_price && get_total(session[:cart][:items]) >= @settings.free_delivery_price) %>
10 </div> 10 </div>
11 <% if @settings.delivery %> 11 <% if @settings.delivery %>
12 <fieldset><legend><%=_('Delivery Address')%></legend> 12 <fieldset><legend><%=_('Delivery Address')%></legend>
@@ -19,7 +19,8 @@ @@ -19,7 +19,8 @@
19 <%= submit_button(:send, _('Send buy request')) %> 19 <%= submit_button(:send, _('Send buy request')) %>
20 </div> 20 </div>
21 <% end %> 21 <% end %>
22 - <%= items_table(session[:cart][:items], profile, @settings.delivery_options.first.first) %> 22 + <% delivery_option = @settings.delivery_options.first && @settings.delivery_options.first.first %>
  23 + <%= items_table(session[:cart][:items], profile, delivery_option) %>
23 <%= link_to '', '#', :onclick => "Cart.colorbox_close(this);", :class => 'cart-box-close icon-cancel' %> 24 <%= link_to '', '#', :onclick => "Cart.colorbox_close(this);", :class => 'cart-box-close icon-cancel' %>
24 </div> 25 </div>
25 26