From 10697fc17aa90c5c258ba544e4e5bd2d63747730 Mon Sep 17 00:00:00 2001 From: rishabh gupta Date: Wed, 24 Jun 2020 21:59:13 +0530 Subject: [PATCH 1/4] upgraded spree to 4.1 --- .gitignore | 3 +++ Appraisals | 6 ++++++ Gemfile | 4 ++-- .../backend/spree_one_page_stock_management.js | 5 +++++ .../spree/backend/stock_management.js | 16 ++++++++++++++++ .../spree/backend/stock_management.js.coffee | 9 --------- .../spree_one_page_stock_management.css.scss | 3 --- .../spree/admin/stock_items_controller.rb | 2 +- app/models/spree/app_configuration_decorator.rb | 3 --- .../spree/backend_configuration_decorator.rb | 1 - .../spree_one_page_stock_management_setting.rb | 5 +++++ app/models/spree/stock_item_decorator.rb | 3 --- .../backend_configuration_decorator.rb | 4 ++++ .../stock_item_decorator.rb | 9 +++++++++ .../stock_items/_custom_table_options.html.erb | 10 +++++----- app/views/spree/admin/stock_items/index.html.erb | 8 ++++++-- lib/spree_one_page_stock_management/engine.rb | 4 ++++ spec/models/spree/app_configuration_spec.rb | 2 +- spree_one_page_stock_management.gemspec | 10 +++++++--- 19 files changed, 74 insertions(+), 33 deletions(-) create mode 100644 app/assets/javascripts/spree/backend/stock_management.js delete mode 100644 app/assets/javascripts/spree/backend/stock_management.js.coffee delete mode 100644 app/models/spree/app_configuration_decorator.rb delete mode 100644 app/models/spree/backend_configuration_decorator.rb create mode 100644 app/models/spree/spree_one_page_stock_management_setting.rb delete mode 100644 app/models/spree/stock_item_decorator.rb create mode 100644 app/models/spree_one_page_stock_management/backend_configuration_decorator.rb create mode 100644 app/models/spree_one_page_stock_management/stock_item_decorator.rb diff --git a/.gitignore b/.gitignore index e62f78e..984395a 100644 --- a/.gitignore +++ b/.gitignore @@ -46,4 +46,7 @@ bower.json # Ignore node_modules node_modules/ +spec/dummy +Gemfile.lock +gemfiles/*.gemfile.lock diff --git a/Appraisals b/Appraisals index 650ddfd..1c14f32 100644 --- a/Appraisals +++ b/Appraisals @@ -28,6 +28,12 @@ appraise 'spree-3-5' do gem 'rails-controller-testing' end +appraise 'spree-4-1' do + gem 'spree', '~> 4.1' + gem 'spree_auth_devise', '~> 4.1' + gem 'rails-controller-testing', '~> 1.0.2' +end + appraise 'spree-master' do gem 'spree', github: 'spree/spree', branch: 'master' gem 'spree_auth_devise', github: 'spree/spree_auth_devise', branch: 'master' diff --git a/Gemfile b/Gemfile index 9f81963..c1eda2d 100644 --- a/Gemfile +++ b/Gemfile @@ -1,8 +1,8 @@ source 'https://rubygems.org' -gem 'spree', github: 'spree/spree', branch: 'master' +gem 'spree', '~> 4.1' # Provides basic authentication functionality for testing parts of your engine -gem 'spree_auth_devise', github: 'spree/spree_auth_devise', branch: 'master' +gem 'spree_auth_devise', '~> 4.1' gem 'rails-controller-testing' gemspec diff --git a/app/assets/javascripts/spree/backend/spree_one_page_stock_management.js b/app/assets/javascripts/spree/backend/spree_one_page_stock_management.js index f92aca7..5c57362 100644 --- a/app/assets/javascripts/spree/backend/spree_one_page_stock_management.js +++ b/app/assets/javascripts/spree/backend/spree_one_page_stock_management.js @@ -1,3 +1,8 @@ // Placeholder manifest file. // the installer will append this file to the app vendored assets here: vendor/assets/javascripts/spree/backend/all.js' //= require spree/backend/per_page_selector +//= require jquery3 + +//= require popper + +//= require bootstrap-sprockets diff --git a/app/assets/javascripts/spree/backend/stock_management.js b/app/assets/javascripts/spree/backend/stock_management.js new file mode 100644 index 0000000..9d82310 --- /dev/null +++ b/app/assets/javascripts/spree/backend/stock_management.js @@ -0,0 +1,16 @@ +(function() { + jQuery(function() { + $('[data-hook="admin_stock_inventory_management"]').on('click', '.stock_item_backorderable', function() { + return $(this).parent('form').submit(); + }); + return $('[data-hook="admin_stock_inventory_management"]').on('submit', '.toggle_stock_item_backorderable', function() { + $.ajax({ + type: this.method, + url: this.action, + data: $(this).serialize() + }); + return false; + }); + }); + +}).call(this); \ No newline at end of file diff --git a/app/assets/javascripts/spree/backend/stock_management.js.coffee b/app/assets/javascripts/spree/backend/stock_management.js.coffee deleted file mode 100644 index 910522c..0000000 --- a/app/assets/javascripts/spree/backend/stock_management.js.coffee +++ /dev/null @@ -1,9 +0,0 @@ -jQuery -> - $('[data-hook="admin_stock_inventory_management"]').on 'click', '.stock_item_backorderable', -> - $(@).parent('form').submit() - $('[data-hook="admin_stock_inventory_management"]').on 'submit', '.toggle_stock_item_backorderable', -> - $.ajax - type: @method - url: @action - data: $(@).serialize() - false diff --git a/app/assets/stylesheets/spree/backend/spree_one_page_stock_management.css.scss b/app/assets/stylesheets/spree/backend/spree_one_page_stock_management.css.scss index 2d9488a..f7d56cb 100644 --- a/app/assets/stylesheets/spree/backend/spree_one_page_stock_management.css.scss +++ b/app/assets/stylesheets/spree/backend/spree_one_page_stock_management.css.scss @@ -4,6 +4,3 @@ the installer will append this file to the app vendored assets here: 'vendor/ass */ @import 'global/variables'; -@import 'bootstrap-sprockets'; -@import 'bootstrap'; -@import 'shared/base'; diff --git a/app/controllers/spree/admin/stock_items_controller.rb b/app/controllers/spree/admin/stock_items_controller.rb index fd510ec..f047c6d 100644 --- a/app/controllers/spree/admin/stock_items_controller.rb +++ b/app/controllers/spree/admin/stock_items_controller.rb @@ -86,7 +86,7 @@ def collection @search = @collection.ransack(params[:q]) @collection = @search.result. page(params[:page]). - per(params[:per_page] || Spree::Config[:stock_items_per_page]) + per(params[:per_page] || SpreeOnePageStockManagement::Config[:stock_items_per_page]) end def stock_item_params diff --git a/app/models/spree/app_configuration_decorator.rb b/app/models/spree/app_configuration_decorator.rb deleted file mode 100644 index 4a13bfc..0000000 --- a/app/models/spree/app_configuration_decorator.rb +++ /dev/null @@ -1,3 +0,0 @@ -Spree::AppConfiguration.class_eval do - preference :stock_items_per_page, :integer, default: 15 -end diff --git a/app/models/spree/backend_configuration_decorator.rb b/app/models/spree/backend_configuration_decorator.rb deleted file mode 100644 index dad3c6d..0000000 --- a/app/models/spree/backend_configuration_decorator.rb +++ /dev/null @@ -1 +0,0 @@ -Spree::BackendConfiguration::STOCKS_TABS ||= [:stock_items] diff --git a/app/models/spree/spree_one_page_stock_management_setting.rb b/app/models/spree/spree_one_page_stock_management_setting.rb new file mode 100644 index 0000000..a6b7416 --- /dev/null +++ b/app/models/spree/spree_one_page_stock_management_setting.rb @@ -0,0 +1,5 @@ +module Spree + class SpreeOnePageStockManagementSetting < Preferences::Configuration + preference :stock_items_per_page, :integer, default: 15 + end +end \ No newline at end of file diff --git a/app/models/spree/stock_item_decorator.rb b/app/models/spree/stock_item_decorator.rb deleted file mode 100644 index 886f225..0000000 --- a/app/models/spree/stock_item_decorator.rb +++ /dev/null @@ -1,3 +0,0 @@ -Spree::StockItem.class_eval do - self.whitelisted_ransackable_associations = ['variant'] -end diff --git a/app/models/spree_one_page_stock_management/backend_configuration_decorator.rb b/app/models/spree_one_page_stock_management/backend_configuration_decorator.rb new file mode 100644 index 0000000..bc0977c --- /dev/null +++ b/app/models/spree_one_page_stock_management/backend_configuration_decorator.rb @@ -0,0 +1,4 @@ +module SpreeOnePageStockManagement::BackendConfigurationDecorator +end + +Spree::BackendConfiguration::STOCKS_TABS ||= [:stock_items] diff --git a/app/models/spree_one_page_stock_management/stock_item_decorator.rb b/app/models/spree_one_page_stock_management/stock_item_decorator.rb new file mode 100644 index 0000000..59a2462 --- /dev/null +++ b/app/models/spree_one_page_stock_management/stock_item_decorator.rb @@ -0,0 +1,9 @@ +module SpreeOnePageStockManagement::StockItemDecorator + + def self.prepended(base) + base.whitelisted_ransackable_associations = ['variant'] + end + +end + +Spree::StockItem.prepend SpreeOnePageStockManagement::StockItemDecorator \ No newline at end of file diff --git a/app/views/spree/admin/stock_items/_custom_table_options.html.erb b/app/views/spree/admin/stock_items/_custom_table_options.html.erb index 389e03f..12846fb 100644 --- a/app/views/spree/admin/stock_items/_custom_table_options.html.erb +++ b/app/views/spree/admin/stock_items/_custom_table_options.html.erb @@ -1,10 +1,10 @@ -
-
- <%= paginate collection, params: { stock_location: params[:stock_location] || @stock_location.id } %> +
+
+ <%= paginate collection, params: { stock_location: params[:stock_location] || @stock_location.id }, theme: 'twitter-bootstrap-4' %>
-
+
- <%= form_tag(per_page_dropdown_params(params), { method: :get, class: 'js-per-page-form form-inline' }) do %> + <%= form_tag(per_page_dropdown_params(params), { method: :get, class: 'js-per-page-form form-inline justify-content-end' }) do %> <%= per_page_dropdown %> <% end %>
diff --git a/app/views/spree/admin/stock_items/index.html.erb b/app/views/spree/admin/stock_items/index.html.erb index 9dc4650..629d8ad 100644 --- a/app/views/spree/admin/stock_items/index.html.erb +++ b/app/views/spree/admin/stock_items/index.html.erb @@ -28,8 +28,12 @@
- <%= label_tag Spree.t(:select_stock_location) %> - <%= select_tag :stock_location, options_for_select(Spree::StockLocation.all.map { |stock_location| [stock_location.name, stock_location.id, data: { url: admin_stock_items_url(q: search_params, per_page: params[:per_page], stock_location: stock_location.name) }] }, @stock_location.id), class: 'select2', id: 'stock-location-selector', data: { hook: 'stock-location-selector' } %> +
+ <%= label_tag Spree.t(:select_stock_location) %> +
+
+ <%= select_tag :stock_location, options_for_select(Spree::StockLocation.all.map { |stock_location| [stock_location.name, stock_location.id, data: { url: admin_stock_items_url(q: search_params, per_page: params[:per_page], stock_location: stock_location.name) }] }, @stock_location.id), class: 'select2', id: 'stock-location-selector', data: { hook: 'stock-location-selector' } %> +
diff --git a/lib/spree_one_page_stock_management/engine.rb b/lib/spree_one_page_stock_management/engine.rb index 45040f0..fa15a80 100644 --- a/lib/spree_one_page_stock_management/engine.rb +++ b/lib/spree_one_page_stock_management/engine.rb @@ -15,6 +15,10 @@ def self.activate end end + initializer "spree_one_page_stock_management.preferences", before: :load_config_initializers do + SpreeOnePageStockManagement::Config = Spree::SpreeOnePageStockManagementSetting.new + end + config.to_prepare &method(:activate).to_proc end end diff --git a/spec/models/spree/app_configuration_spec.rb b/spec/models/spree/app_configuration_spec.rb index dd2fa1e..de56ee1 100644 --- a/spec/models/spree/app_configuration_spec.rb +++ b/spec/models/spree/app_configuration_spec.rb @@ -2,6 +2,6 @@ describe Spree::AppConfiguration, type: :model do describe 'per_page preferences' do - it { expect(Spree::Config.stock_items_per_page).to eq(15) } + it { expect(SpreeOnePageStockManagement::Config.stock_items_per_page).to eq(15) } end end diff --git a/spree_one_page_stock_management.gemspec b/spree_one_page_stock_management.gemspec index b2e7bf8..e32d446 100644 --- a/spree_one_page_stock_management.gemspec +++ b/spree_one_page_stock_management.gemspec @@ -10,7 +10,7 @@ Gem::Specification.new do |s| s.version = SpreeOnePageStockManagement.version s.summary = 'Add extension summary here' s.description = 'Add (optional) extension description here' - s.required_ruby_version = '>= 2.2.7' + s.required_ruby_version = '>= 2.5' s.author = 'You' s.email = 'you@example.com' @@ -21,7 +21,7 @@ Gem::Specification.new do |s| s.require_path = 'lib' s.requirements << 'none' - s.add_dependency 'spree_core', '>= 3.1.0', '< 4.0' + s.add_dependency 'spree_core', '>= 4.1' s.add_dependency 'spree_extension' s.add_development_dependency 'capybara' @@ -34,8 +34,12 @@ Gem::Specification.new do |s| s.add_development_dependency 'sass-rails' s.add_development_dependency 'selenium-webdriver' s.add_development_dependency 'simplecov' - s.add_development_dependency 'pg', '~> 0.18' + s.add_development_dependency 'pg', '>= 0.18' s.add_development_dependency 'mysql2' s.add_development_dependency 'sqlite3' s.add_development_dependency 'appraisal' + s.add_development_dependency 'bootstrap', '~> 4.3.1' + s.add_development_dependency 'jquery-rails' + s.add_development_dependency 'kaminari', '~> 1.2.1' + s.add_development_dependency 'bootstrap4-kaminari-views' end From 369a37ca8fa0046aec1ff739b7d2e2e24a0f313b Mon Sep 17 00:00:00 2001 From: Rishabh Gupta <55984752+rishabhguptarishi@users.noreply.github.com> Date: Tue, 30 Jun 2020 17:11:18 +0530 Subject: [PATCH 2/4] added heroku button for spree 4-1 --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 93ab310..93be51e 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,12 @@ Introduction goes here. 4. Restart your server If your server was running, restart it so that it can find the assets properly. + +Demo +---- +Try Spree One Page Stock Management for Spree 4.1 with direct deployment on Heroku: + +[![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/vinsol-spree-contrib/spree-demo-heroku/tree/spree-one-page-stock-management-4-1) ## Testing From b732f20de8007f22deb781f4e3e4f3b0e63734c2 Mon Sep 17 00:00:00 2001 From: rishabh gupta Date: Thu, 2 Jul 2020 14:22:10 +0530 Subject: [PATCH 3/4] fixed admin sidebar tab --- app/overrides/spree/admin/add_stock_item_tab.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/overrides/spree/admin/add_stock_item_tab.rb b/app/overrides/spree/admin/add_stock_item_tab.rb index 16e5b1f..6a12fb3 100644 --- a/app/overrides/spree/admin/add_stock_item_tab.rb +++ b/app/overrides/spree/admin/add_stock_item_tab.rb @@ -1,10 +1,10 @@ Deface::Override.new( - virtual_path: 'spree/layouts/admin', + virtual_path: 'spree/admin/shared/_main_menu', name: 'add_stock_item_tab', - insert_bottom: "[data-hook='admin_tabs']", + insert_bottom: "nav", text: %q{ <% if can? :admin, Spree::StockItem %> -