diff --git a/app/controllers/spree/admin/variants_controller_decorator.rb b/app/controllers/spree/admin/variants_controller_decorator.rb index cabc7e5eec..c422ae8b44 100644 --- a/app/controllers/spree/admin/variants_controller_decorator.rb +++ b/app/controllers/spree/admin/variants_controller_decorator.rb @@ -3,6 +3,18 @@ require 'open_food_network/scope_variants_for_search' Spree::Admin::VariantsController.class_eval do helper 'spree/products' + def create + on_demand = params[:variant].delete(:on_demand) + on_hand = params[:variant].delete(:on_hand) + + super + + if @object.present? && @object.valid? + @object.on_demand = on_demand if on_demand.present? + @object.on_hand = on_hand.to_i if on_hand.present? + end + end + def search scoper = OpenFoodNetwork::ScopeVariantsForSearch.new(params) @variants = scoper.search diff --git a/app/overrides/spree/admin/shared/_product_tabs/add_distributions.html.haml.deface b/app/overrides/spree/admin/shared/_product_tabs/add_distributions.html.haml.deface deleted file mode 100644 index ef4d2260c1..0000000000 --- a/app/overrides/spree/admin/shared/_product_tabs/add_distributions.html.haml.deface +++ /dev/null @@ -1,5 +0,0 @@ -/ insert_bottom "[data-hook='admin_product_tabs']" - -- klass = current == 'Product Distributions' ? 'active' : '' -%li{:class => klass} - = link_to_with_icon 'icon-tasks', t('admin.products.product_distributions'), product_distributions_admin_product_url(@product) \ No newline at end of file diff --git a/app/overrides/spree/admin/shared/_product_tabs/add_group_buy.html.haml.deface b/app/overrides/spree/admin/shared/_product_tabs/add_group_buy.html.haml.deface deleted file mode 100644 index 5b02383b13..0000000000 --- a/app/overrides/spree/admin/shared/_product_tabs/add_group_buy.html.haml.deface +++ /dev/null @@ -1,5 +0,0 @@ -/ insert_bottom "[data-hook='admin_product_tabs']" - -- klass = current == 'Group Buy Options' ? 'active' : '' -%li{:class => klass} - = link_to_with_icon 'icon-tasks', t('admin.products.group_buy_options'), group_buy_options_admin_product_url(@product) diff --git a/app/overrides/spree/admin/shared/_product_tabs/add_seo.html.haml.deface b/app/overrides/spree/admin/shared/_product_tabs/add_seo.html.haml.deface deleted file mode 100644 index 84ad95e062..0000000000 --- a/app/overrides/spree/admin/shared/_product_tabs/add_seo.html.haml.deface +++ /dev/null @@ -1,5 +0,0 @@ -/ insert_bottom "[data-hook='admin_product_tabs']" - -- klass = current == t(:Search) ? 'active' : '' -%li{:class => klass} - = link_to_with_icon 'icon-tasks', t(:Search), seo_admin_product_url(@product) diff --git a/app/overrides/spree/admin/variants/_form/add_stock_management.html.haml.deface b/app/overrides/spree/admin/variants/_form/add_stock_management.html.haml.deface new file mode 100644 index 0000000000..e899da406c --- /dev/null +++ b/app/overrides/spree/admin/variants/_form/add_stock_management.html.haml.deface @@ -0,0 +1,11 @@ +/ insert_bottom "[data-hook='admin_variant_form_fields']" + +- if Spree::Config[:track_inventory_levels] + .field.checkbox + %label + = f.check_box :on_demand + = t(:on_demand) + .field + = f.label :on_hand, t(:on_hand) + .fullwidth + = f.text_field :on_hand diff --git a/app/overrides/spree/admin/variants/_form/on_demand_script.html.haml.deface b/app/overrides/spree/admin/variants/_form/on_demand_script.html.haml.deface index 6bd45a0d49..fe3448e332 100644 --- a/app/overrides/spree/admin/variants/_form/on_demand_script.html.haml.deface +++ b/app/overrides/spree/admin/variants/_form/on_demand_script.html.haml.deface @@ -6,23 +6,28 @@ var on_demand = $('input#variant_on_demand'); var on_hand = $('input#variant_on_hand'); - on_hand.attr('disabled', on_demand.attr('checked')); + disableOnHandIfOnDemand = function() { + on_demand_checked = on_demand.attr('checked') + if ( on_demand_checked == undefined ) + on_demand_checked = false; + + on_hand.attr('disabled', on_demand_checked); + if(on_demand_checked) { + on_hand.attr('data-stock', on_hand.val()); + on_hand.val("Infinity"); + } + } + + disableOnHandIfOnDemand(); on_demand.change(function(){ - - on_hand.attr('disabled', this.checked); - - if(this.checked) { - on_hand.attr('data-stock', on_hand.val()); - on_hand.val("Infinity"); - } else { + disableOnHandIfOnDemand(); + if(!this.checked) { if(on_hand.attr('data-stock') !== undefined) { on_hand.val(on_hand.attr('data-stock')); } else { on_hand.val("0"); } } - }); - }); diff --git a/app/views/spree/admin/shared/_product_tabs.html.haml b/app/views/spree/admin/shared/_product_tabs.html.haml new file mode 100644 index 0000000000..37762df346 --- /dev/null +++ b/app/views/spree/admin/shared/_product_tabs.html.haml @@ -0,0 +1,36 @@ += content_for :page_title do + = Spree.t(:editing_product) + = "\"#{@product.name}\"" + += content_for :sidebar_title do + %span.sku + = @product.sku + += content_for :sidebar do + %nav.menu + %ul + - if can?(:admin, Spree::Product) + - klass = current == 'Product Details' ? 'active' : '' + %li{:class => klass} + = link_to_with_icon 'icon-edit', Spree.t(:product_details), edit_admin_product_url(@product) + - if can?(:admin, Spree::Image) + - klass = current == 'Images' ? 'active' : '' + %li{:class => klass} + = link_to_with_icon 'icon-picture', Spree.t(:images), admin_product_images_url(@product) + - if can?(:admin, Spree::Variant) + - klass = current == 'Variants' ? 'active' : '' + %li{:class => klass} + = link_to_with_icon 'icon-th-large', Spree.t(:variants), admin_product_variants_url(@product) + - if can?(:admin, Spree::ProductProperty) + - klass = current == 'Product Properties' ? 'active' : '' + %li{:class => klass} + = link_to_with_icon 'icon-tasks', Spree.t(:product_properties), admin_product_product_properties_url(@product) + - klass = current == 'Product Distributions' ? 'active' : '' + %li{:class => klass} + = link_to_with_icon 'icon-tasks', t('admin.products.product_distributions'), product_distributions_admin_product_url(@product) + - klass = current == 'Group Buy Options' ? 'active' : '' + %li{:class => klass} + = link_to_with_icon 'icon-tasks', t('admin.products.group_buy_options'), group_buy_options_admin_product_url(@product) + - klass = current == t(:Search) ? 'active' : '' + %li{:class => klass} + = link_to_with_icon 'icon-tasks', t(:Search), seo_admin_product_url(@product)