spree_sort_products 1.3.4 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6f56278874c1902f37f9fb4b165a07b3f23fa68b
4
- data.tar.gz: a5355dc4f14271109ea4e16664149bfdf38ce213
3
+ metadata.gz: c63721d253244793555b960086794f415a2627fd
4
+ data.tar.gz: 12485436443ed2a249dfb2fe7fdbbdeda7a3f18b
5
5
  SHA512:
6
- metadata.gz: 16ae4a4dd1d29ba46cf86c1bfe05524b1a8b47bd1e170c2300278ef23afe487a09b17ce3790e86da6b0e1bd5f6054228d16453d730e15826e92d5a67c37f1c21
7
- data.tar.gz: a56152c5bd2bd7354ccc9bac2365dce902a5516c996a21c16c195da69a78a671a5d0c63cd00d071700847f7edfcd8abe2166392146bd5c75f1fa85c4497409db
6
+ metadata.gz: 709af048a998c55d602851130cb435a3e11bc0bfa8e680966c43e2901675a1af069ba6d031135f50a906af5f047579715d91c7f8eced3d2c0ee953eba16138c7
7
+ data.tar.gz: 812c5e11507cec8e72d800ec816af082fce03e43c99292e5289e569f919e27a31a434e30f2470c3d103f354bd10632152a3ad3e41bc96046c3f134e2dc6debfb
data/.gitignore ADDED
@@ -0,0 +1,14 @@
1
+ \#*
2
+ *~
3
+ .#*
4
+ .DS_Store
5
+ .idea
6
+ .project
7
+ .sass-cache
8
+ coverage
9
+ Gemfile.lock
10
+ tmp
11
+ nbproject
12
+ pkg
13
+ *.swp
14
+ spec/dummy
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --colour
data/.travis.yml ADDED
@@ -0,0 +1,13 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.0.0
4
+ - 1.9.3
5
+ - 1.9.2
6
+ gemfile:
7
+ - Gemfile
8
+ script:
9
+ - bundle exec rake test_app
10
+ - bundle exec rspec spec
11
+ notifications:
12
+ email:
13
+ - raj.surya19@gmail.com
data/Gemfile ADDED
@@ -0,0 +1,10 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Provides basic authentication functionality for testing parts of your engine
4
+ gem 'spree_auth_devise', :git => "git://github.com/spree/spree_auth_devise", :branch => '2-0-stable'
5
+
6
+ gem 'jquery-dragsort-rails', '~> 1.0.0'
7
+
8
+ gem 'coveralls', require: false
9
+
10
+ gemspec
data/README.md CHANGED
@@ -12,18 +12,18 @@ Spree Sort Products extends the ability of a taxon on its products to be sorted
12
12
  gem 'spree_sort_products' , :git => 'git://github.com/suryart/spree_sort_products.git'
13
13
  ```
14
14
 
15
- * Get the 1-3-stable branch for Spree 1.3.x from github:
15
+ * Get the 2-0-stable branch for Spree 2.0.x from github:
16
16
 
17
17
  ```ruby
18
18
  gem 'jquery-dragsort-rails', '~> 1.0.0'
19
- gem 'spree_sort_products' , :git => 'git://github.com/suryart/spree_sort_products.git', :branch => '1-3-stable'
19
+ gem 'spree_sort_products' , :git => 'git://github.com/suryart/spree_sort_products.git', :branch => '2-0-stable'
20
20
  ```
21
21
 
22
22
  * Or get it from rubygems.org by mentioning the following line in your Gemfile:
23
23
 
24
24
  ```ruby
25
25
  gem 'jquery-dragsort-rails', '~> 1.0.0'
26
- gem 'spree_sort_products', '1.3.4'
26
+ gem 'spree_sort_products', '2.0.0'
27
27
  ```
28
28
 
29
29
  ### Then run the following commands:
@@ -38,9 +38,9 @@ Please note that this extension uses [jquery-dragsort-rails](https://github.com/
38
38
 
39
39
  ## Caution
40
40
 
41
- Just make sure that you have **admin/taxonomy_overrides** and **admin/sort_products** files precompiled. If it's not happening by default then please add/edit this in your **config/environments/production.rb** file:
41
+ Just make sure that you have **admin/taxon_tree_menu_overrides** and **admin/sort_products** files precompiled. If it's not happening by default then please add/edit this in your **config/environments/production.rb** file:
42
42
 
43
- Rails.application.config.assets.precompile += %w(admin/taxonomy_overrides admin/sort_products)
43
+ Rails.application.config.assets.precompile += %w(admin/taxon_tree_menu_overrides admin/sort_products)
44
44
 
45
45
  ## TODOs
46
46
 
@@ -50,15 +50,24 @@ Just make sure that you have **admin/taxonomy_overrides** and **admin/sort_produ
50
50
 
51
51
  * Dependency status: [![Dependency Status](https://gemnasium.com/suryart/spree_sort_products.png)](https://gemnasium.com/suryart/spree_sort_products)
52
52
  * Code climate: [![Code Climate](https://codeclimate.com/github/suryart/spree_sort_products.png)](https://codeclimate.com/github/suryart/spree_sort_products)
53
- * Issues: [Project issues](https://github.com/suryart/spree_active_sale/issues)
53
+ * Issues: [Project issues](https://github.com/suryart/spree_sort_products/issues)
54
54
 
55
55
  ## Testing
56
56
 
57
57
  Be sure to bundle your dependencies and then create a dummy test app for the specs to run against.
58
58
 
59
- $ bundle
60
- $ bundle exec rake test_app
61
- $ bundle exec rspec spec
59
+ ```shell
60
+ bundle
61
+ bundle exec rake test_app
62
+ bundle exec rspec spec
63
+ ```
64
+
65
+ When testing your applications integration with this extension you may use it's factories.
66
+ Simply add this require statement to your spec_helper:
67
+
68
+ ```ruby
69
+ require 'spree_sort_products/factories'
70
+ ```
62
71
 
63
72
  ## Contributing
64
73
 
data/Rakefile ADDED
@@ -0,0 +1,15 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require 'rspec/core/rake_task'
5
+ require 'spree/testing_support/extension_rake'
6
+
7
+ RSpec::Core::RakeTask.new
8
+
9
+ task :default => [:spec]
10
+
11
+ desc 'Generates a dummy app for testing'
12
+ task :test_app do
13
+ ENV['LIB_NAME'] = 'spree_sort_products'
14
+ Rake::Task['extension:test_app'].invoke
15
+ end
data/Versionfile ADDED
@@ -0,0 +1,13 @@
1
+ # This file is used to designate compatibilty with different versions of Spree
2
+ # Please see http://spreecommerce.com/documentation/extensions.html#versionfile for details
3
+
4
+ # Examples
5
+ #
6
+ # '1.2.x' => { :branch => 'master' }
7
+ # '1.1.x' => { :branch => '1-1-stable' }
8
+ # '1.0.x' => { :branch => '1-0-stable' }
9
+ # '0.70.x' => { :branch => '0-70-stable' }
10
+ # '0.40.x' => { :tag => 'v1.0.0', :version => '1.0.0' }
11
+
12
+ '1.3.x' => { :branch => '1-3-stable' }
13
+ '2.0.x' => { :branch => '2-0-stable' }
@@ -1,2 +1,2 @@
1
- //= require admin/spree_core
1
+ //= require admin/spree_backend
2
2
  //= require jquery-dragsort
@@ -0,0 +1,28 @@
1
+ root = exports ? this
2
+
3
+ root.taxon_tree_menu = (obj, context) ->
4
+
5
+ base_url = Spree.url(Spree.routes.taxonomy_taxons_path)
6
+ admin_base_url = Spree.url(Spree.routes.admin_taxonomy_taxons_path)
7
+ edit_url = admin_base_url.clone()
8
+ edit_url.setPath(edit_url.path() + '/' + obj.attr("id") + "/edit");
9
+ sort_url = admin_base_url.clone()
10
+ sort_url.setPath(sort_url.path() + '/' + obj.attr("id") + "/sort_products");
11
+
12
+ create:
13
+ label: "<i class='icon-plus'></i> " + Spree.translations.add,
14
+ action: (obj) -> context.create(obj)
15
+ rename:
16
+ label: "<i class='icon-pencil'></i> " + Spree.translations.rename,
17
+ action: (obj) -> context.rename(obj)
18
+ remove:
19
+ label: "<i class='icon-trash'></i> " + Spree.translations.remove,
20
+ action: (obj) -> context.remove(obj)
21
+ sort:
22
+ separator_before: true,
23
+ label: "<i class='icon-th'></i> " + Spree.taxonomy_translations.sort_products,
24
+ action: (obj) -> window.location = sort_url
25
+ edit:
26
+ separator_before: true,
27
+ label: "<i class='icon-edit'></i> " + Spree.translations.edit,
28
+ action: (obj) -> window.location = edit_url.toString()
@@ -1,3 +1,3 @@
1
1
  /*
2
- *= require admin/spree_core
2
+ *= require admin/spree_backend
3
3
  */
@@ -1,6 +1,6 @@
1
1
  module Spree
2
2
  module Admin
3
- class TaxonsController < Spree::Admin::BaseController
3
+ TaxonsController.class_eval do
4
4
  before_filter :load_taxon, :only => [:sort_products, :update_products]
5
5
 
6
6
  def sort_products
@@ -8,13 +8,13 @@ module Spree
8
8
  end
9
9
 
10
10
  def update_products
11
- products = @taxon.products_taxons
12
- product_ids_positions = params[:product_positions].split(",").map(&:to_i)
11
+ products = @taxon.classifications
12
+ product_ids_positions = params[:product_positions].split(",").reject(&:blank?).map(&:to_i)
13
13
  product_ids_positions.each_with_index do |id, index|
14
14
  product = products.detect{|p| p.product_id == id }
15
15
  product.update_attributes(:position => index) unless product.nil?
16
16
  end
17
- redirect_to sort_products_taxons_path(@taxonomy, @taxon.id), :notice => t(:sort_products_taxons_update_message)
17
+ redirect_to sort_products_taxons_path(@taxonomy.id, @taxon.id), :notice => t(:sort_products_taxons_update_message)
18
18
  end
19
19
 
20
20
  def load_taxon
@@ -0,0 +1,5 @@
1
+ module Spree
2
+ Classification.class_eval do
3
+ attr_accessible :position
4
+ end
5
+ end
@@ -1,8 +1,5 @@
1
- module Spree
2
- class ProductsTaxon < ActiveRecord::Base
1
+ module Spree
2
+ Classification.class_eval do
3
3
  attr_accessible :position
4
-
5
- belongs_to :product
6
- belongs_to :taxon
7
4
  end
8
5
  end
@@ -1,6 +1,5 @@
1
1
  module Spree
2
2
  Taxon.class_eval do
3
- has_many :products_taxons, :dependent => :destroy
4
- has_many :products, :through => :products_taxons, :order => 'spree_products_taxons.position'
3
+ has_many :products, :through => :classifications, :order => 'spree_products_taxons.position'
5
4
  end
6
5
  end
@@ -0,0 +1,4 @@
1
+ Deface::Override.new( :name => "add_sort_products_link",
2
+ :virtual_path => "spree/admin/taxonomies/edit",
3
+ :insert_after => "fieldset",
4
+ :text => "<%= render 'spree/admin/taxonomies/sort_products_js' %>")
@@ -0,0 +1,26 @@
1
+ <% content_for :head do %>
2
+ <%= javascript_include_tag 'admin/taxon_tree_menu_overrides' %>
3
+ <%= render :partial => 'spree/admin/shared/taxonomy_translations' %>
4
+
5
+ <%= javascript_tag do -%>
6
+ var initial = [
7
+ { "attr" :
8
+ { "id" : "<%= @taxonomy.root.id %>", "rel" : "root" },
9
+ "data" : "<%= escape_javascript(raw(@taxonomy.root.name)) %>",
10
+ "state" : "open",
11
+ "children" : [
12
+ <% @taxonomy.root.children.each_with_index do |taxon,i| %>
13
+ {
14
+ "attr" :
15
+ { "id" : "<%= taxon.id %>"},
16
+ "data" : "<%= escape_javascript(raw(taxon.name)) %>"
17
+ <% unless taxon.children.empty? %>
18
+ ,"state" : "closed"
19
+ <% end %>
20
+ }<%= ',' if i < (@taxonomy.root.children.size - 1) %>
21
+ <% end %>
22
+ ]
23
+ }
24
+ ];
25
+ <% end -%>
26
+ <% end %>
data/config/routes.rb CHANGED
@@ -1,7 +1,6 @@
1
1
  Spree::Core::Engine.routes.draw do
2
2
  # Add extension routes here
3
-
4
- match 'admin/taxonomies/:taxonomy_id/taxons/:id/sort_products/' => 'admin/taxons#sort_products', :as => :sort_products_taxons
5
- match 'admin/taxonomies/:taxonomy_id/taxons/:id/update_products/' => 'admin/taxons#update_products', :as => :update_products_admin_taxonomy_taxon, :method => :post
3
+ get '/admin/taxonomies/:taxonomy_id/taxons/:id/sort_products' => 'admin/taxons#sort_products', :as => :sort_products_taxons
4
+ post '/admin/taxonomies/:taxonomy_id/taxons/:id/update_products' => 'admin/taxons#update_products', :as => :update_products_admin_taxonomy_taxon
6
5
 
7
6
  end
@@ -2,6 +2,8 @@ module SpreeSortProducts
2
2
  module Generators
3
3
  class InstallGenerator < Rails::Generators::Base
4
4
 
5
+ class_option :auto_run_migrations, :type => :boolean, :default => false
6
+
5
7
  def add_javascripts
6
8
  append_file 'app/assets/javascripts/admin/all.js', "//= require admin/spree_sort_products\n"
7
9
  end
@@ -15,12 +17,12 @@ module SpreeSortProducts
15
17
  end
16
18
 
17
19
  def run_migrations
18
- res = ask 'Would you like to run the migrations now? [Y/n]'
19
- if res == '' || res.downcase == 'y'
20
- run 'bundle exec rake db:migrate'
21
- else
22
- puts 'Skipping rake db:migrate, don\'t forget to run it!'
23
- end
20
+ run_migrations = options[:auto_run_migrations] || ['', 'y', 'Y'].include?(ask 'Would you like to run the migrations now? [Y/n]')
21
+ if run_migrations
22
+ run 'bundle exec rake db:migrate'
23
+ else
24
+ puts 'Skipping rake db:migrate, don\'t forget to run it!'
25
+ end
24
26
  end
25
27
  end
26
28
  end
@@ -12,7 +12,7 @@ module SpreeSortProducts
12
12
  end
13
13
 
14
14
  initializer :assets do |config|
15
- Rails.application.config.assets.precompile += %w(admin/taxonomy_overrides admin/sort_products)
15
+ Rails.application.config.assets.precompile += %w(admin/taxon_tree_menu_overrides admin/sort_products)
16
16
  end
17
17
 
18
18
  def self.activate
@@ -0,0 +1,19 @@
1
+ FactoryGirl.define do
2
+ # Example adding this to your spec_helper will load these Factories for use:
3
+ # require 'spree_sort_products/factories'
4
+
5
+ sequence :name do |n|
6
+ "Taxon #{n}"
7
+ end
8
+
9
+ factory :products_with_taxon, :class => Spree::Taxonomy do
10
+ name
11
+ after(:create) do |taxonomy|
12
+ taxon = taxonomy.root
13
+ 1.upto(10).each do |i|
14
+ product = FactoryGirl.create(:product)
15
+ taxon.products << product unless taxon.products.include? product
16
+ end
17
+ end
18
+ end
19
+ end
data/script/rails ADDED
@@ -0,0 +1,7 @@
1
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
2
+
3
+ ENGINE_ROOT = File.expand_path('../..', __FILE__)
4
+ ENGINE_PATH = File.expand_path('../../lib/spree_sort_products/engine', __FILE__)
5
+
6
+ require 'rails/all'
7
+ require 'rails/engine/commands'
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Taxon' do
4
+ stub_authorization!
5
+
6
+ context 'admin should be able sort products within a taxon' do
7
+ it 'goes in a taxon and sort products' do
8
+ create_list(:products_with_taxon, 4)
9
+
10
+ visit spree.admin_path
11
+
12
+ click_link "Configuration"
13
+
14
+ click_link "Taxonomies"
15
+
16
+ # sleep(10)
17
+ # need to write drag and drop and expected result check here
18
+
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,94 @@
1
+ # Run Coverage report
2
+ require 'coveralls'
3
+ Coveralls.wear!
4
+
5
+ require 'simplecov'
6
+ SimpleCov.start do
7
+ add_group 'Controllers', 'app/controllers'
8
+ add_group 'Helpers', 'app/helpers'
9
+ add_group 'Mailers', 'app/mailers'
10
+ add_group 'Models', 'app/models'
11
+ add_group 'Views', 'app/views'
12
+ add_group 'Libraries', 'lib'
13
+ end
14
+
15
+ # Configure Rails Environment
16
+ ENV['RAILS_ENV'] = 'test'
17
+
18
+ require File.expand_path('../dummy/config/environment.rb', __FILE__)
19
+
20
+ require 'rspec/rails'
21
+ require 'database_cleaner'
22
+ require 'ffaker'
23
+ require 'factory_girl'
24
+ FactoryGirl.find_definitions
25
+
26
+ # Requires supporting ruby files with custom matchers and macros, etc,
27
+ # in spec/support/ and its subdirectories.
28
+ Dir[File.join(File.dirname(__FILE__), 'support/**/*.rb')].each { |f| require f }
29
+
30
+ # Requires factories defined in spree_core
31
+ require 'spree/testing_support/factories'
32
+ require 'spree/testing_support/controller_requests'
33
+ require 'spree/testing_support/authorization_helpers'
34
+ require 'spree/testing_support/url_helpers'
35
+ require 'spree/testing_support/order_walkthrough'
36
+
37
+ # Requires factories defined in lib/spree_sort_products/factories.rb
38
+ require 'spree_sort_products/factories'
39
+
40
+ RSpec.configure do |config|
41
+ config.include FactoryGirl::Syntax::Methods
42
+
43
+ # == URL Helpers
44
+ #
45
+ # Allows access to Spree's routes in specs:
46
+ #
47
+ # visit spree.admin_path
48
+ # current_path.should eql(spree.products_path)
49
+ # config.include Spree::TestingSupport::UrlHelpers
50
+ config.include Spree::TestingSupport::AuthorizationHelpers
51
+ config.include Spree::TestingSupport::UrlHelpers
52
+ config.include Spree::TestingSupport::ControllerRequests
53
+ config.include Spree::TestingSupport::Preferences
54
+ config.include Spree::TestingSupport::Flash
55
+ config.include Capybara::DSL
56
+
57
+ # == Mock Framework
58
+ #
59
+ # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
60
+ #
61
+ # config.mock_with :mocha
62
+ # config.mock_with :flexmock
63
+ # config.mock_with :rr
64
+ config.mock_with :rspec
65
+ config.color = true
66
+
67
+ # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
68
+ config.fixture_path = "#{::Rails.root}/spec/fixtures"
69
+
70
+ # Capybara javascript drivers require transactional fixtures set to false, and we use DatabaseCleaner
71
+ # to cleanup after each test instead. Without transactional fixtures set to false the records created
72
+ # to setup a test will be unavailable to the browser, which runs under a seperate server instance.
73
+ config.use_transactional_fixtures = false
74
+
75
+ # Ensure Suite is set to use transactions for speed.
76
+ config.before :suite do
77
+ DatabaseCleaner.strategy = :transaction
78
+ DatabaseCleaner.clean_with :truncation
79
+ end
80
+
81
+ # Before each spec check if it is a Javascript test and switch between using database transactions or not where necessary.
82
+ config.before :each do
83
+ DatabaseCleaner.strategy = example.metadata[:js] ? :truncation : :transaction
84
+ DatabaseCleaner.start
85
+ reset_spree_preferences
86
+ end
87
+
88
+ # After each spec clean the database.
89
+ config.after :each do
90
+ DatabaseCleaner.clean
91
+ end
92
+
93
+ config.fail_fast = ENV['FAIL_FAST'] || false
94
+ end
@@ -0,0 +1,32 @@
1
+ # encoding: UTF-8
2
+ Gem::Specification.new do |s|
3
+ s.platform = Gem::Platform::RUBY
4
+ s.name = 'spree_sort_products'
5
+ s.version = '2.0.0'
6
+ s.summary = 'Spree Sort Products gives you ability to sort products with in a taxon for spree.'
7
+ s.description = 'Spree Sort Products extends the ability of a taxon on its products to be sorted from the web interface using the drag and drop behavior.'
8
+ s.required_ruby_version = '>= 1.9.2'
9
+
10
+ s.author = 'Surya Tripathi'
11
+ s.email = 'raj.surya19@gmail.com'
12
+ s.homepage = 'https://github.com/suryart/spree_sort_products'
13
+
14
+ s.files = `git ls-files`.split("\n")
15
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
+ s.require_path = 'lib'
17
+ s.requirements << 'none'
18
+
19
+ s.add_dependency 'spree_core', '~> 2.0.0'
20
+ s.add_dependency 'jquery-dragsort-rails', '~> 1.0.0'
21
+
22
+ s.add_development_dependency 'capybara', '~> 2.1'
23
+ s.add_development_dependency 'coffee-rails'
24
+ s.add_development_dependency 'database_cleaner', '1.0.1'
25
+ s.add_development_dependency 'factory_girl', '~> 4.2'
26
+ s.add_development_dependency 'ffaker'
27
+ s.add_development_dependency 'rspec-rails', '~> 2.13'
28
+ s.add_development_dependency 'sass-rails'
29
+ s.add_development_dependency 'selenium-webdriver'
30
+ s.add_development_dependency 'simplecov'
31
+ s.add_development_dependency 'sqlite3'
32
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spree_sort_products
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.4
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Surya Tripathi
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ~>
18
18
  - !ruby/object:Gem::Version
19
- version: 1.3.0
19
+ version: 2.0.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ~>
25
25
  - !ruby/object:Gem::Version
26
- version: 1.3.0
26
+ version: 2.0.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: jquery-dragsort-rails
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - ~>
46
46
  - !ruby/object:Gem::Version
47
- version: 2.0.2
47
+ version: '2.1'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ~>
53
53
  - !ruby/object:Gem::Version
54
- version: 2.0.2
54
+ version: '2.1'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: coffee-rails
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -67,19 +67,33 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: factory_girl_rails
70
+ name: database_cleaner
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '='
74
+ - !ruby/object:Gem::Version
75
+ version: 1.0.1
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '='
81
+ - !ruby/object:Gem::Version
82
+ version: 1.0.1
83
+ - !ruby/object:Gem::Dependency
84
+ name: factory_girl
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
87
  - - ~>
74
88
  - !ruby/object:Gem::Version
75
- version: 4.2.0
89
+ version: '4.2'
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
94
  - - ~>
81
95
  - !ruby/object:Gem::Version
82
- version: 4.2.0
96
+ version: '4.2'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: ffaker
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -100,30 +114,44 @@ dependencies:
100
114
  requirements:
101
115
  - - ~>
102
116
  - !ruby/object:Gem::Version
103
- version: '2.9'
117
+ version: '2.13'
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
122
  - - ~>
109
123
  - !ruby/object:Gem::Version
110
- version: '2.9'
124
+ version: '2.13'
111
125
  - !ruby/object:Gem::Dependency
112
- name: guard-rspec
126
+ name: sass-rails
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
- - - ~>
129
+ - - '>='
116
130
  - !ruby/object:Gem::Version
117
- version: '2.3'
131
+ version: '0'
118
132
  type: :development
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
- - - ~>
136
+ - - '>='
123
137
  - !ruby/object:Gem::Version
124
- version: '2.3'
138
+ version: '0'
125
139
  - !ruby/object:Gem::Dependency
126
- name: sass-rails
140
+ name: selenium-webdriver
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - '>='
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - '>='
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: simplecov
127
155
  requirement: !ruby/object:Gem::Requirement
128
156
  requirements:
129
157
  - - '>='
@@ -157,26 +185,38 @@ executables: []
157
185
  extensions: []
158
186
  extra_rdoc_files: []
159
187
  files:
188
+ - .gitignore
189
+ - .rspec
190
+ - .travis.yml
191
+ - Gemfile
160
192
  - LICENSE
161
193
  - README.md
162
- - app/models/spree/product_decorator.rb
163
- - app/models/spree/taxon_decorator.rb
164
- - app/models/spree/products_taxon.rb
165
- - app/assets/stylesheets/admin/spree_sort_products.css
166
- - app/assets/javascripts/admin/taxonomy_overrides.js
167
- - app/assets/javascripts/admin/spree_sort_products.js
194
+ - Rakefile
195
+ - Versionfile
168
196
  - app/assets/javascripts/admin/sort_products.js.coffee.erb
197
+ - app/assets/javascripts/admin/spree_sort_products.js
198
+ - app/assets/javascripts/admin/taxon_tree_menu_overrides.js.coffee
199
+ - app/assets/stylesheets/admin/spree_sort_products.css
200
+ - app/controllers/spree/admin/taxons_controller_decorator.rb
201
+ - app/models/spree/classification_decorator.rb
202
+ - app/models/spree/products_taxon.rb
203
+ - app/models/spree/taxon_decorator.rb
204
+ - app/overrides/add_sort_products_link.rb
169
205
  - app/spree.rb
170
206
  - app/views/spree/admin/shared/_taxonomy_translations.html.erb
207
+ - app/views/spree/admin/taxonomies/_sort_products_js.erb
171
208
  - app/views/spree/admin/taxons/sort_products.html.erb
172
- - app/views/spree/admin/taxonomies/edit.erb
173
- - app/controllers/spree/admin/taxons_controller_decorator.rb
174
- - config/routes.rb
175
209
  - config/locales/en.yml
176
- - lib/spree_sort_products/engine.rb
210
+ - config/routes.rb
211
+ - db/migrate/20130417071146_create_products_taxons.rb
177
212
  - lib/generators/spree_sort_products/install/install_generator.rb
178
213
  - lib/spree_sort_products.rb
179
- - db/migrate/20130417071146_create_products_taxons.rb
214
+ - lib/spree_sort_products/engine.rb
215
+ - lib/spree_sort_products/factories.rb
216
+ - script/rails
217
+ - spec/features/sort_products_spec.rb
218
+ - spec/spec_helper.rb
219
+ - spree_sort_products.gemspec
180
220
  homepage: https://github.com/suryart/spree_sort_products
181
221
  licenses: []
182
222
  metadata: {}
@@ -197,7 +237,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
197
237
  requirements:
198
238
  - none
199
239
  rubyforge_project:
200
- rubygems_version: 2.0.0.rc.2
240
+ rubygems_version: 2.0.3
201
241
  signing_key:
202
242
  specification_version: 4
203
243
  summary: Spree Sort Products gives you ability to sort products with in a taxon for
@@ -1,137 +0,0 @@
1
- var taxonomy_id;
2
-
3
- $(document).ready(function(){
4
- if(taxonomy_id!=undefined){
5
-
6
- base_url = $("#taxonomy_tree").data("url").split("?")[0] + "/" ;
7
- child_url = base_url.replace("/taxons", "/get_children.json");
8
-
9
- is_cut = false;
10
- last_rollback = null;
11
-
12
- var conf = {
13
- json_data : {
14
- "data" : initial,
15
- "ajax" : {
16
- "url" : child_url,
17
- "data" : function (n) {
18
- return { parent_id : n.attr ? n.attr("id") : 0 };
19
- }
20
- }
21
- },
22
- "themes" : {
23
- "theme" : "apple",
24
- "url" : "/assets/jquery.jstree/themes/apple/style.css"
25
- },
26
- "strings" : {
27
- "new_node" : new_taxon,
28
- "loading" : Spree.translations.loading + "..."
29
- },
30
- "crrm" : {
31
- "move" : {
32
- "check_move" : function (m) {
33
- var position = m.cp;
34
- var node = m.o;
35
- var new_parent = m.np;
36
-
37
- if(!new_parent) return false; //no parent
38
-
39
- if(node.attr("rel")=="root") return false; //can't drag root
40
-
41
- if(new_parent.attr("id")=="taxonomy_tree" && position==0) return false; // can't drop before root
42
-
43
- return true;
44
-
45
- }
46
- }
47
- },
48
- "contextmenu" : {
49
- "items" : function(obj) {
50
- var id_of_node = obj.attr("id");
51
- var type_of_node = obj.attr("rel");
52
- var menu = {};
53
- if(type_of_node == "root") {
54
- menu = {
55
- "create" : {
56
- "label" : "<i class='icon-plus'></i> " + Spree.translations.add,
57
- "action" : function (obj) { this.create(obj); }
58
- },
59
- "paste" : {
60
- "separator_before" : true,
61
- "label" : "<i class='icon-paste'></i> " + Spree.translations.paste,
62
- "action" : function (obj) { is_cut = false; this.paste(obj); },
63
- "_disabled" : is_cut == false
64
- },
65
- "edit" : {
66
- "separator_before" : true,
67
- "label" : "<i class='icon-edit'></i> " + Spree.translations.edit,
68
- "action" : function (obj) { window.location = base_url + obj.attr("id") + "/edit/"; }
69
- },
70
- "sort" : {
71
- "separator_before" : true,
72
- "label" : "<i class='icon-th'></i> " + Spree.taxonomy_translations.sort_products,
73
- "action" : function (obj) { window.location = base_url + obj.attr("id") + "/sort_products/"; }
74
- }
75
- }
76
- } else {
77
- menu = {
78
- "create" : {
79
- "label" : "<i class='icon-plus'></i> " + Spree.translations.add,
80
- "action" : function (obj) { this.create(obj); }
81
- },
82
- "rename" : {
83
- "label" : "<i class='icon-pencil'></i> " + Spree.translations.rename,
84
- "action" : function (obj) { this.rename(obj); }
85
- },
86
- "remove" : {
87
- "label" : "<i class='icon-trash'></i> " + Spree.translations.remove,
88
- "action" : function (obj) { this.remove(obj); }
89
- },
90
- "cut" : {
91
- "separator_before" : true,
92
- "label" : "<i class='icon-cut'></i> " + Spree.translations.cut,
93
- "action" : function (obj) { is_cut = true; this.cut(obj); }
94
- },
95
- "paste" : {
96
- "label" : "<i class='icon-paste'></i> " + Spree.translations.paste,
97
- "action" : function (obj) { is_cut = false; this.paste(obj); },
98
- "_disabled" : is_cut == false
99
- },
100
- "edit" : {
101
- "separator_before" : true,
102
- "label" : "<i class='icon-edit'></i> " + Spree.translations.edit,
103
- "action" : function (obj) { window.location = base_url + obj.attr("id") + "/edit/"; }
104
- },
105
- "sort" : {
106
- "separator_before" : true,
107
- "label" : "<i class='icon-th'></i> " + Spree.taxonomy_translations.sort_products,
108
- "action" : function (obj) { window.location = base_url + obj.attr("id") + "/sort_products/"; }
109
- }
110
- }
111
- }
112
- return menu;
113
- }
114
- },
115
-
116
- "plugins" : [ "themes", "json_data", "dnd", "crrm", "contextmenu"]
117
- }
118
-
119
- $("#taxonomy_tree").jstree(conf)
120
- .bind("move_node.jstree", handle_move)
121
- .bind("remove.jstree", handle_delete)
122
- .bind("create.jstree", handle_create)
123
- .bind("rename.jstree", handle_rename);
124
-
125
- $("#taxonomy_tree a").on("dblclick", function (e) {
126
- $("#taxonomy_tree").jstree("rename", this)
127
- });
128
-
129
-
130
- $(document).keypress(function(e){
131
- //surpress form submit on enter/return
132
- if (e.keyCode == 13){
133
- e.preventDefault();
134
- }
135
- });
136
- }
137
- });
@@ -1,6 +0,0 @@
1
- module Spree
2
- Product.class_eval do
3
- has_many :products_taxons, :dependent => :destroy
4
- has_many :taxons, :through => :products_taxons
5
- end
6
- end
@@ -1,65 +0,0 @@
1
- <%= render :partial => 'spree/admin/shared/configuration_menu' %>
2
-
3
- <%= render :partial => 'js_head' %>
4
-
5
- <% content_for :page_title do %>
6
- <%= t(:taxonomy_edit) %>
7
- <% end %>
8
-
9
- <% content_for :page_actions do %>
10
- <li>
11
- <%= button_link_to t(:back_to_taxonomies_list), spree.admin_taxonomies_path, :icon => 'icon-arrow-left' %>
12
- </li>
13
- <% end %>
14
-
15
- <div id="ajax_error" class="errorExplanation" style="display:none;"></div>
16
-
17
- <%= form_for [:admin, @taxonomy] do |f| %>
18
- <fieldset class="no-border-top">
19
- <%= render :partial => 'form', :locals => { :f => f } %>
20
- <div>
21
- <%= label_tag nil, t(:tree) %><br />
22
- <div id="taxonomy_tree" class="tree" data-url="<%= admin_taxonomy_taxons_path @taxonomy %>"></div>
23
- </div>
24
- <div id="progress" style="display:none;">
25
- <%= image_tag 'spinner.gif', :title => 'Spinner', :style => "vertical-align:bottom;" %> <%= t(:updating) %>..
26
- </div>
27
-
28
- <div class="info"><%= t(:taxonomy_tree_instruction) %></div>
29
-
30
- <br>
31
-
32
- <div class="filter-actions actions">
33
- <%= button t(:update), 'icon-refresh' %>
34
- <span class="or"><%= t(:or) %></span>
35
- <%= button_link_to t(:cancel), admin_taxonomies_path, :icon => 'icon-remove' %>
36
- </div>
37
- </fieldset>
38
- <% end %>
39
-
40
- <% content_for :head do %>
41
- <%= javascript_include_tag 'admin/taxonomy_overrides' %>
42
- <%= render :partial => 'spree/admin/shared/taxonomy_translations' %>
43
-
44
- <%= javascript_tag do -%>
45
- var initial = [
46
- { "attr" :
47
- { "id" : "<%= @taxonomy.root.id %>", "rel" : "root" },
48
- "data" : "<%= escape_javascript(raw(@taxonomy.root.name)) %>",
49
- "state" : "open",
50
- "children" : [
51
- <% @taxonomy.root.children.each_with_index do |taxon,i| %>
52
- {
53
- "attr" :
54
- { "id" : "<%= taxon.id %>"},
55
- "data" : "<%= escape_javascript(raw(taxon.name)) %>"
56
- <% unless taxon.children.empty? %>
57
- ,"state" : "closed"
58
- <% end %>
59
- }<%= ',' if i < (@taxonomy.root.children.size - 1) %>
60
- <% end %>
61
- ]
62
- }
63
- ];
64
- <% end -%>
65
- <% end %>