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 4 append_view_path File.join(File.dirname(__FILE__) + '/../views')
5 5  
6 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 9 @settings = Noosfero::Plugin::Settings.new(profile, ShoppingCartPlugin, params[:settings])
15 10 if request.post?
... ... @@ -57,6 +52,15 @@ class ShoppingCartPluginMyprofileController < MyProfileController
57 52  
58 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 64 def treat_delivery_options(params)
61 65 result = {}
62 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 39 if settings.free_delivery_price && get_total(items) >= settings.free_delivery_price
40 40 delivery = Product.new(:name => _('Free delivery'), :price => 0)
41 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 43 end
44 44 delivery.save(false)
45 45 items << [delivery.id, '']
... ... @@ -82,8 +82,10 @@ module ShoppingCartPlugin::CartHelper
82 82 end
83 83  
84 84 def select_delivery_options(options, environment)
85   - options.map do |option, price|
  85 + result = options.map do |option, price|
86 86 ["#{option} (#{float_to_currency_cart(price, environment)})", option]
87 87 end
  88 + result << ["#{_('Delivery')} (#{float_to_currency_cart(0, environment)})", 'delivery'] if result.empty?
  89 + result
88 90 end
89 91 end
... ...
plugins/shopping_cart/views/shopping_cart_plugin_profile/buy.html.erb
... ... @@ -6,7 +6,7 @@
6 6 <%= labelled_form_field('* ' + _("Name"), f.text_field(:name, :class => 'required') ) %>
7 7 <%= labelled_form_field('* ' + _("Email"), f.text_field(:email, :class => 'required email') ) %>
8 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 10 </div>
11 11 <% if @settings.delivery %>
12 12 <fieldset><legend><%=_('Delivery Address')%></legend>
... ... @@ -19,7 +19,8 @@
19 19 <%= submit_button(:send, _('Send buy request')) %>
20 20 </div>
21 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 24 <%= link_to '', '#', :onclick => "Cart.colorbox_close(this);", :class => 'cart-box-close icon-cancel' %>
24 25 </div>
25 26  
... ...