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