diff --git a/app/controllers/spree/admin/products_controller_decorator.rb b/app/controllers/spree/admin/products_controller_decorator.rb index a6c2967b87..d185f4f85d 100644 --- a/app/controllers/spree/admin/products_controller_decorator.rb +++ b/app/controllers/spree/admin/products_controller_decorator.rb @@ -5,6 +5,13 @@ Spree::Admin::ProductsController.class_eval do respond_to :json, :only => :clone + respond_override create: { html: { success: lambda { + if params[:button] == "add_another" + redirect_to new_admin_product_path + else + redirect_to '/admin/products/bulk_edit' + end + } } } #respond_override :clone => { :json => {:success => lambda { redirect_to bulk_index_admin_products_url+"?q[id_eq]=#{@new.id}" } } } def product_distributions diff --git a/app/overrides/spree/admin/products/new/replace_form.html.haml.deface b/app/overrides/spree/admin/products/new/replace_form.html.haml.deface index 2d2fccc630..4421819fb6 100644 --- a/app/overrides/spree/admin/products/new/replace_form.html.haml.deface +++ b/app/overrides/spree/admin/products/new/replace_form.html.haml.deface @@ -68,7 +68,14 @@ .row = button "Select An image" .sixteen.columns.alpha - = render :partial => 'spree/admin/shared/new_resource_links' + .form-buttons.filter-actions.actions{ 'data-hook' => "buttons" } + = button t('actions.create'), 'icon-ok', :submit, value: "create" + %span.or + = t(:or) + = button "Create And Add Another", 'icon-repeat', :submit, value: 'add_another' + %span.or + = t(:or) + = link_to_with_icon 'icon-remove', t('actions.cancel'), collection_url, :class => 'button' diff --git a/spec/controllers/spree/admin/products_controller_spec.rb b/spec/controllers/spree/admin/products_controller_spec.rb new file mode 100644 index 0000000000..e55d5e5e0e --- /dev/null +++ b/spec/controllers/spree/admin/products_controller_spec.rb @@ -0,0 +1,51 @@ +require 'spec_helper' + +describe Spree::Admin::ProductsController do + context "Creating a new product" do + let(:user) do + user = create(:user) + user.spree_roles << Spree::Role.find_or_create_by_name!('admin') + user + end + + before do + controller.stub spree_current_user: user + end + + it "redirects to bulk_edit when the user hits 'create'" do + s = create(:supplier_enterprise) + spree_post :create, { + product: { + name: "Product1", + supplier_id: s.id, + price: 5.0, + on_hand: 5, + variant_unit: 'weight', + variant_unit_scale: 1000, + unit_value: 10, + unit_description: "" + }, + button: 'create' + } + response.should redirect_to "/admin/products/bulk_edit" + end + + it "redirects to new when the user hits 'add_another'" do + s = create(:supplier_enterprise) + spree_post :create, { + product: { + name: "Product1", + supplier_id: s.id, + price: 5.0, + on_hand: 5, + variant_unit: 'weight', + variant_unit_scale: 1000, + unit_value: 10, + unit_description: "" + }, + button: 'add_another' + } + response.should redirect_to "/admin/products/new" + end + end +end \ No newline at end of file