Commit 05d3db06b176c6ec85731c76b03235ed64a3134c
1 parent
a2369d89
Exists in
master
and in
28 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 | ... | ... |