Commit 05d3db06b176c6ec85731c76b03235ed64a3134c
1 parent
a2369d89
Exists in
master
and in
29 other branches
Fixing some problems on Shopping Cart delivery
Showing
3 changed files
with
17 additions
and
10 deletions
Show diff stats
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 | ... | ... |