spree_rejoiner 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +22 -0
  3. data/.rspec +3 -0
  4. data/.rubocop.yml +24 -0
  5. data/.travis.yml +36 -0
  6. data/Appraisals +27 -0
  7. data/Gemfile +19 -0
  8. data/LICENSE +26 -0
  9. data/README.md +24 -0
  10. data/Rakefile +21 -0
  11. data/app/assets/javascripts/spree/backend/spree_rejoiner.js +2 -0
  12. data/app/assets/javascripts/spree/frontend/spree_rejoiner.js +4 -0
  13. data/app/assets/stylesheets/spree/backend/spree_rejoiner.css +4 -0
  14. data/app/assets/stylesheets/spree/frontend/spree_rejoiner.css +4 -0
  15. data/app/controllers/spree/admin/rejoiner_settings_controller.rb +20 -0
  16. data/app/controllers/spree/checkout_controller_decorator.rb +5 -0
  17. data/app/controllers/spree/store_controller_decorator.rb +5 -0
  18. data/app/helpers/spree/rejoiner_helper.rb +45 -0
  19. data/app/models/spree/app_configuration_decorator.rb +8 -0
  20. data/app/models/spree/rejoiner.rb +17 -0
  21. data/app/overrides/rejoiner_admin_sidebar.rb +6 -0
  22. data/app/overrides/rejoiner_base.rb +6 -0
  23. data/app/overrides/rejoiner_cart_view.rb +6 -0
  24. data/app/overrides/rejoiner_checkout_view.rb +6 -0
  25. data/app/overrides/rejoiner_conversion.rb +6 -0
  26. data/app/overrides/rejoiner_product_view.rb +6 -0
  27. data/app/views/spree/admin/rejoiner_settings/edit.html.erb +42 -0
  28. data/app/views/spree/shared/_rejoiner_base.js.erb +14 -0
  29. data/app/views/spree/shared/_rejoiner_cart.js.erb +18 -0
  30. data/app/views/spree/shared/_rejoiner_conversion.js.erb +18 -0
  31. data/app/views/spree/shared/_rejoiner_product.js.erb +5 -0
  32. data/bin/rails +8 -0
  33. data/config/locales/en.yml +8 -0
  34. data/config/routes.rb +5 -0
  35. data/gemfiles/spree_3_2.gemfile +10 -0
  36. data/gemfiles/spree_3_5.gemfile +10 -0
  37. data/gemfiles/spree_3_7.gemfile +10 -0
  38. data/gemfiles/spree_master.gemfile +10 -0
  39. data/lib/generators/spree_rejoiner/install/install_generator.rb +28 -0
  40. data/lib/spree_rejoiner.rb +4 -0
  41. data/lib/spree_rejoiner/engine.rb +20 -0
  42. data/lib/spree_rejoiner/factories.rb +2 -0
  43. data/lib/spree_rejoiner/version.rb +17 -0
  44. data/spree_rejoiner.gemspec +46 -0
  45. metadata +393 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 59ecf69900545e53dfbe228398c8262e9c6417005c4d0821d3d4ba4aab88feb3
4
+ data.tar.gz: 3be7d3e06f078afc4c79455c125b4fcff7a8ab3ae46ec2dd7e561ba6d85a803b
5
+ SHA512:
6
+ metadata.gz: 6181cfdc0113f4c21d071339047ae13c3486d76185d9654624c0076134075de2f9ae74d27a2e7c29870d837d8ce4ebfe89ccb815d7e0912847b23d1674f89d7d
7
+ data.tar.gz: ab0f8e762943a46479bd8cb353dc2bc93b1da7f8ab42f761d0dee2e3dc6d9dc57054f4ef4497768a558e7f40741dee998753098b13b0c434d8e4af03ef3427ba
data/.gitignore ADDED
@@ -0,0 +1,22 @@
1
+ \#*
2
+ *~
3
+ .#*
4
+ .DS_Store
5
+ .idea
6
+ .localeapp/locales
7
+ .project
8
+ .vscode
9
+ coverage
10
+ default
11
+ Gemfile.lock
12
+ tmp
13
+ nbproject
14
+ pkg
15
+ *.sw?
16
+ spec/dummy
17
+ .rvmrc
18
+ .sass-cache
19
+ public/spree
20
+ .ruby-version
21
+ .ruby-gemset
22
+ gemfiles/*.gemfile.lock
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --color
2
+ -r spec_helper
3
+ -f documentation
data/.rubocop.yml ADDED
@@ -0,0 +1,24 @@
1
+ AllCops:
2
+ DisplayCopNames: true
3
+ TargetRubyVersion: 2.3
4
+ Include:
5
+ - '**/Gemfile'
6
+ - '**/Rakefile'
7
+ - '**/Appraisals'
8
+ Exclude:
9
+ - 'spec/dummy/**/*'
10
+ - 'lib/generators/**/*'
11
+
12
+ Rails:
13
+ Enabled: true
14
+
15
+ Metrics/LineLength:
16
+ Max: 150
17
+
18
+ # DISABLED
19
+
20
+ Style/Documentation:
21
+ Enabled: false
22
+
23
+ Style/FrozenStringLiteralComment:
24
+ Enabled: false
data/.travis.yml ADDED
@@ -0,0 +1,36 @@
1
+ sudo: required
2
+ dist: trusty
3
+
4
+ language: ruby
5
+
6
+ env:
7
+ - DB=postgres
8
+ - DB=mysql
9
+
10
+ gemfile:
11
+ - gemfiles/spree_3_2.gemfile
12
+ - gemfiles/spree_3_5.gemfile
13
+ - gemfiles/spree_3_7.gemfile
14
+ - gemfiles/spree_master.gemfile
15
+
16
+ script:
17
+ - bundle exec rake test_app
18
+ - bundle exec rake spec
19
+
20
+ rvm:
21
+ - 2.5.1
22
+ - 2.4.2
23
+ - 2.3.1
24
+
25
+ matrix:
26
+ allow_failures:
27
+ - gemfile: gemfiles/spree_master.gemfile
28
+
29
+ before_install:
30
+ - mysql -u root -e "GRANT ALL ON *.* TO 'travis'@'%';"
31
+ - wget -N https://chromedriver.storage.googleapis.com/2.35/chromedriver_linux64.zip -P ~/
32
+ - unzip ~/chromedriver_linux64.zip -d ~/
33
+ - rm ~/chromedriver_linux64.zip
34
+ - sudo mv -f ~/chromedriver /usr/local/share/
35
+ - sudo chmod +x /usr/local/share/chromedriver
36
+ - sudo ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver
data/Appraisals ADDED
@@ -0,0 +1,27 @@
1
+ appraise 'spree-3-2' do
2
+ gem 'spree_core', '~> 3.2.0'
3
+ gem 'spree_backend', '~> 3.2.0'
4
+ gem 'spree_auth_devise', '~> 3.4.0'
5
+ gem 'rails-controller-testing'
6
+ end
7
+
8
+ appraise 'spree-3-5' do
9
+ gem 'spree_core', '~> 3.5.0'
10
+ gem 'spree_backend', '~> 3.5.0'
11
+ gem 'spree_auth_devise', '~> 3.4.0'
12
+ gem 'rails-controller-testing'
13
+ end
14
+
15
+ appraise 'spree-3-7' do
16
+ gem 'spree_core', '~> 3.7.0'
17
+ gem 'spree_backend', '~> 3.7.0'
18
+ gem 'spree_auth_devise', '~> 3.5.0'
19
+ gem 'rails-controller-testing'
20
+ end
21
+
22
+ appraise 'spree-master' do
23
+ gem 'spree_core', github: 'spree/spree', branch: 'master'
24
+ gem 'spree_backend', github: 'spree/spree', branch: 'master'
25
+ gem 'spree_auth_devise', github: 'spree/spree_auth_devise', branch: 'master'
26
+ gem 'rails-controller-testing'
27
+ end
data/Gemfile ADDED
@@ -0,0 +1,19 @@
1
+ source 'https://rubygems.org'
2
+
3
+ git_source(:github) do |repo_name|
4
+ repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?('/')
5
+ "https://github.com/#{repo_name}.git"
6
+ end
7
+
8
+ gem 'spree_core', github: 'spree/spree', branch: 'master'
9
+ gem 'spree_backend', github: 'spree/spree', branch: 'master'
10
+ # Provides basic authentication functionality for testing parts of your engine
11
+ gem 'spree_auth_devise', github: 'spree/spree_auth_devise', branch: 'master'
12
+ gem 'rails-controller-testing'
13
+
14
+ gem 'public_suffix'
15
+
16
+ gem 'rubocop', require: false
17
+ gem 'rubocop-rspec', require: false
18
+
19
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,26 @@
1
+ Copyright (c) 2019 [name of plugin creator]
2
+ All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without modification,
5
+ are permitted provided that the following conditions are met:
6
+
7
+ * Redistributions of source code must retain the above copyright notice,
8
+ this list of conditions and the following disclaimer.
9
+ * Redistributions in binary form must reproduce the above copyright notice,
10
+ this list of conditions and the following disclaimer in the documentation
11
+ and/or other materials provided with the distribution.
12
+ * Neither the name Spree nor the names of its contributors may be used to
13
+ endorse or promote products derived from this software without specific
14
+ prior written permission.
15
+
16
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
20
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
21
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
23
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
24
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
25
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
data/README.md ADDED
@@ -0,0 +1,24 @@
1
+ # SpreeRejoiner
2
+
3
+ Introduction goes here.
4
+
5
+ ## Installation
6
+
7
+ 1. Add this extension to your Gemfile with this line:
8
+ ```ruby
9
+ gem 'spree_rejoiner', github: 'rejoiner/spree_rejoiner'
10
+ ```
11
+
12
+ 2. Install the gem using Bundler:
13
+ ```ruby
14
+ bundle install
15
+ ```
16
+
17
+ 3. Copy & run migrations
18
+ ```ruby
19
+ bundle exec rails g spree_rejoiner:install
20
+ ```
21
+
22
+ 4. Restart your server
23
+
24
+ If your server was running, restart it so that it can find the assets properly.
data/Rakefile ADDED
@@ -0,0 +1,21 @@
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 do
10
+ if Dir['spec/dummy'].empty?
11
+ Rake::Task[:test_app].invoke
12
+ Dir.chdir('../../')
13
+ end
14
+ Rake::Task[:spec].invoke
15
+ end
16
+
17
+ desc 'Generates a dummy app for testing'
18
+ task :test_app do
19
+ ENV['LIB_NAME'] = 'spree_rejoiner'
20
+ Rake::Task['extension:test_app'].invoke
21
+ end
@@ -0,0 +1,2 @@
1
+ // Placeholder manifest file.
2
+ // the installer will append this file to the app vendored assets here: vendor/assets/javascripts/spree/backend/all.js'
@@ -0,0 +1,4 @@
1
+ // Placeholder manifest file.
2
+ // the installer will append this file to the app vendored assets here: vendor/assets/javascripts/spree/frontend/all.js'
3
+
4
+ console.log('Spree / Rejoiner test...');
@@ -0,0 +1,4 @@
1
+ /*
2
+ Placeholder manifest file.
3
+ the installer will append this file to the app vendored assets here: 'vendor/assets/stylesheets/spree/backend/all.css'
4
+ */
@@ -0,0 +1,4 @@
1
+ /*
2
+ Placeholder manifest file.
3
+ the installer will append this file to the app vendored assets here: 'vendor/assets/stylesheets/spree/frontend/all.css'
4
+ */
@@ -0,0 +1,20 @@
1
+ module Spree
2
+ module Admin
3
+ class RejoinerSettingsController < Spree::Admin::BaseController
4
+ def edit
5
+ @site_settings = %w[rejoiner_site_id rejoiner_domain rejoiner_api_key]
6
+ end
7
+
8
+ def update
9
+ params.each do |name, value|
10
+ next unless Spree::Config.has_preference? name
11
+
12
+ Spree::Config[name] = value
13
+ end
14
+
15
+ flash[:success] = Spree.t(:successfully_updated, resource: Spree.t(:rejoiner_settings))
16
+ redirect_to edit_admin_rejoiner_settings_path
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,5 @@
1
+ if defined?(Spree::CheckoutController)
2
+ Spree::CheckoutController.class_eval do
3
+ helper Spree::RejoinerHelper
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ if defined?(Spree::StoreController)
2
+ Spree::StoreController.class_eval do
3
+ helper Spree::RejoinerHelper
4
+ end
5
+ end
@@ -0,0 +1,45 @@
1
+ module Spree
2
+ module RejoinerHelper
3
+ def convert_price_to_cents(price)
4
+ (price * 100).round
5
+ end
6
+
7
+ def get_image_path(image)
8
+ if defined?(ActiveStorage) && !Rails.application.config.use_paperclip
9
+ Rails.application.routes.url_helpers.rails_blob_path(image.attachment, only_path: true)
10
+ else
11
+ asset_url(image.attachment)
12
+ end
13
+ end
14
+
15
+ def get_image_url(image)
16
+ request.base_url + get_image_path(image)
17
+ end
18
+
19
+ def get_base_product(product)
20
+ {
21
+ product_id: product.id,
22
+ name: product.name,
23
+ category: product.try(:category).try(:name),
24
+ price: convert_price_to_cents(product.price),
25
+ product_url: product_url(product)
26
+ }
27
+ end
28
+
29
+ def get_rejoiner_product(product, opts = {})
30
+ base_product = get_base_product product
31
+ base_product[:sku] = product.sku if product.sku
32
+ base_product[:image_url] = get_image_url(opts.delete(:image)) if opts[:image]
33
+ base_product[:qty_price] = base_product[:price] * opts[:item_qty] if opts[:item_qty]
34
+ base_product.merge(opts).to_json.html_safe
35
+ end
36
+
37
+ def get_rejoiner_cart_data(order)
38
+ {
39
+ cart_value: convert_price_to_cents(order.item_total),
40
+ cart_item_count: order.item_count,
41
+ order_number: order.number
42
+ }.to_json.html_safe
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,8 @@
1
+ if defined?(Spree::AppConfiguration)
2
+ Spree::AppConfiguration.class_eval do
3
+ preference :rejoiner_active, :boolean, default: false
4
+ preference :rejoiner_site_id, :string
5
+ preference :rejoiner_domain, :string
6
+ preference :rejoiner_api_key, :string
7
+ end
8
+ end
@@ -0,0 +1,17 @@
1
+ require 'public_suffix'
2
+
3
+ module Spree
4
+ class Rejoiner < Spree::Base
5
+ def self.active?
6
+ Spree::Config.rejoiner_site_id.present?
7
+ end
8
+
9
+ def self.site_id
10
+ Spree::Config.rejoiner_site_id
11
+ end
12
+
13
+ def self.domain
14
+ PublicSuffix.domain(Spree::Config.rejoiner_domain)
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,6 @@
1
+ Deface::Override.new(
2
+ virtual_path: 'spree/admin/shared/sub_menu/_configuration',
3
+ name: 'rejoiner_admin_sidebar',
4
+ insert_bottom: '[data-hook="admin_configurations_sidebar_menu"]',
5
+ text: '<%= configurations_sidebar_menu_item(Spree.t(:rejoiner_settings), spree.edit_admin_rejoiner_settings_path) %>'
6
+ )
@@ -0,0 +1,6 @@
1
+ Deface::Override.new(
2
+ virtual_path: 'spree/layouts/spree_application',
3
+ name: 'rejoiner_base',
4
+ insert_top: "[data-hook='body']",
5
+ partial: 'spree/shared/rejoiner_base.js'
6
+ )
@@ -0,0 +1,6 @@
1
+ Deface::Override.new(
2
+ virtual_path: 'spree/orders/edit',
3
+ name: 'rejoiner_cart_view',
4
+ insert_top: "[data-hook='cart_container']",
5
+ partial: 'spree/shared/rejoiner_cart.js'
6
+ )
@@ -0,0 +1,6 @@
1
+ Deface::Override.new(
2
+ virtual_path: 'spree/checkout/edit',
3
+ name: 'rejoiner_checkout_view',
4
+ insert_before: '#checkout',
5
+ partial: 'spree/shared/rejoiner_cart.js'
6
+ )
@@ -0,0 +1,6 @@
1
+ Deface::Override.new(
2
+ virtual_path: 'spree/orders/show',
3
+ name: 'rejoiner_conversion',
4
+ insert_before: "#order_summary",
5
+ partial: 'spree/shared/rejoiner_conversion.js'
6
+ )
@@ -0,0 +1,6 @@
1
+ Deface::Override.new(
2
+ virtual_path: 'spree/products/show',
3
+ name: 'rejoiner_product_view',
4
+ insert_before: "[data-hook='product_show']",
5
+ partial: 'spree/shared/rejoiner_product.js'
6
+ )
@@ -0,0 +1,42 @@
1
+ <% content_for :page_title do %>
2
+ <%= Spree.t(:rejoiner_settings) %>
3
+ <% end %>
4
+
5
+ <%= form_tag admin_rejoiner_settings_path, method: :put do %>
6
+ <div id="rejoiner-settings" data-hook>
7
+ <fieldset class="general no-border-top">
8
+ <div class="row">
9
+ <div class="col-xs-12 col-md-6">
10
+ <div class="panel panel-default">
11
+ <div class="panel-heading">
12
+ <h1 class="panel-title">
13
+ <%= Spree.t(:rejoiner_site_settings) %>
14
+ </h1>
15
+ </div>
16
+
17
+ <div class="panel-body">
18
+ <% @site_settings.each do |key|
19
+ type = Spree::Config.preference_type(key) %>
20
+ <div class="form-group">
21
+ <%= label_tag key do %>
22
+ <%= Spree.t(key) %>
23
+ <% end %>
24
+ <%= preference_field_tag(key, Spree::Config[key], type: type) %>
25
+ </div>
26
+ <% end %>
27
+ </div>
28
+ </div>
29
+ </div>
30
+ </div>
31
+ <div class="row">
32
+ <div class="col-xs-12 col-md-6">
33
+ <div class="form-actions" data-hook="buttons">
34
+ <%= button Spree.t('actions.update'), 'save' %>
35
+ <span class="or"><%= Spree.t(:or) %></span>
36
+ <%= button_link_to Spree.t('actions.cancel'), edit_admin_rejoiner_settings_url, icon: 'delete' %>
37
+ </div>
38
+ </div>
39
+ </div>
40
+ </fieldset>
41
+ </div>
42
+ <% end %>
@@ -0,0 +1,14 @@
1
+ <% if Spree::Rejoiner.active? %>
2
+ <script>
3
+ var _rejoiner = _rejoiner || [];
4
+ _rejoiner.push(['setAccount', '<%= Spree::Rejoiner.site_id %>']);
5
+ _rejoiner.push(['setDomain', '<%= Spree::Rejoiner.domain %>' || document.location.hostname]);
6
+ (function() {
7
+ var s = document.createElement('script');
8
+ s.async = true;
9
+ s.src = 'https://cdn.rejoiner.com/js/v4/rj2.lib.js';
10
+ var x = document.getElementsByTagName('script')[0];
11
+ x.parentNode.insertBefore(s, x);
12
+ })();
13
+ </script>
14
+ <% end %>
@@ -0,0 +1,18 @@
1
+ <script>
2
+ var _rejoiner = _rejoiner || [];
3
+
4
+ <% if @order.email.present? %>
5
+ _rejoiner.push(['setCustomerEmail', { email: '<%= @order.email %>'}])
6
+ <% end %>
7
+
8
+ <% if @order.line_items.empty? %>
9
+ _rejoiner.push(['clearCartData']);
10
+ <% else %>
11
+ _rejoiner.push(['setCartData', <%= get_rejoiner_cart_data(@order) %>]);
12
+
13
+ <% @order.line_items.each do |line_item| %>
14
+ <% product = line_item.variant.product %>
15
+ _rejoiner.push(['setCartItem', <%= get_rejoiner_product(product, image: product.images.first, item_qty: line_item.quantity) %>]);
16
+ <% end %>
17
+ <% end %>
18
+ </script>
@@ -0,0 +1,18 @@
1
+ <script>
2
+ var _rejoiner = _rejoiner || [];
3
+ var _rejoinerCartItems = [];
4
+
5
+ <% if @order.email.present? %>
6
+ _rejoiner.push(['setCustomerEmail', { email: '<%= @order.email %>'}])
7
+ <% end %>
8
+
9
+ <% @order.line_items.each do |line_item| %>
10
+ <% product = line_item.variant.product %>
11
+ _rejoinerCartItems.push(<%= get_rejoiner_product(product, image: product.images.first, item_qty: line_item.quantity) %>);
12
+ <% end %>
13
+
14
+ _rejoiner.push(['sendConversion', {
15
+ cart_data: <%= get_rejoiner_cart_data(@order) %>,
16
+ cart_items: _rejoinerCartItems,
17
+ }]);
18
+ </script>
@@ -0,0 +1,5 @@
1
+ <script>
2
+ var _rejoiner = _rejoiner || [];
3
+
4
+ _rejoiner.push(['trackProductView', <%= get_rejoiner_product(@product, image: @product.images.first) %>]);
5
+ </script>
data/bin/rails ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" from the root of your extension
3
+
4
+ ENGINE_ROOT = File.expand_path('../..', __FILE__)
5
+ ENGINE_PATH = File.expand_path('../../lib/spree_rejoiner/engine', __FILE__)
6
+
7
+ require 'rails/all'
8
+ require 'rails/engine/commands'
@@ -0,0 +1,8 @@
1
+ en:
2
+ spree:
3
+ rejoiner_settings: Rejoiner Configuration
4
+ rejoiner_site_settings: Site Settings
5
+ rejoiner_active: Active
6
+ rejoiner_site_id: Site ID
7
+ rejoiner_domain: Domain
8
+ rejoiner_api_key: API Key
data/config/routes.rb ADDED
@@ -0,0 +1,5 @@
1
+ Spree::Core::Engine.add_routes do
2
+ namespace :admin, path: Spree.admin_path do
3
+ resource :rejoiner_settings
4
+ end
5
+ end
@@ -0,0 +1,10 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ gem 'rails-controller-testing'
6
+ gem 'spree_core', '~> 3.2.0'
7
+ gem 'spree_backend', '~> 3.2.0'
8
+ gem 'spree_auth_devise', '~> 3.4.0'
9
+
10
+ gemspec path: '../'
@@ -0,0 +1,10 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ gem 'rails-controller-testing'
6
+ gem 'spree_core', '~> 3.5.0'
7
+ gem 'spree_backend', '~> 3.5.0'
8
+ gem 'spree_auth_devise', '~> 3.4.0'
9
+
10
+ gemspec path: '../'
@@ -0,0 +1,10 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ gem 'rails-controller-testing'
6
+ gem 'spree_core', '~> 3.7.0'
7
+ gem 'spree_backend', '~> 3.7.0'
8
+ gem 'spree_auth_devise', '~> 3.5.0'
9
+
10
+ gemspec path: '../'
@@ -0,0 +1,10 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ gem 'rails-controller-testing'
6
+ gem 'spree_core', github: 'spree/spree', branch: 'master'
7
+ gem 'spree_backend', github: 'spree/spree', branch: 'master'
8
+ gem 'spree_auth_devise', github: 'spree/spree_auth_devise', branch: 'master'
9
+
10
+ gemspec path: '../'
@@ -0,0 +1,28 @@
1
+ module SpreeRejoiner
2
+ module Generators
3
+ class InstallGenerator < Rails::Generators::Base
4
+ class_option :auto_run_migrations, type: :boolean, default: false
5
+
6
+ def add_javascripts
7
+ append_file 'vendor/assets/javascripts/spree/backend/all.js', "//= require spree/backend/spree_rejoiner\n"
8
+ end
9
+
10
+ def add_stylesheets
11
+ inject_into_file 'vendor/assets/stylesheets/spree/backend/all.css', " *= require spree/backend/spree_rejoiner\n", before: %r{\*\/}, verbose: true
12
+ end
13
+
14
+ def add_migrations
15
+ run 'bundle exec rake railties:install:migrations FROM=spree_rejoiner'
16
+ end
17
+
18
+ def run_migrations
19
+ run_migrations = options[:auto_run_migrations] || ['', 'y', 'Y'].include?(ask('Would you like to run the migrations now? [Y/n]'))
20
+ if run_migrations
21
+ run 'bundle exec rake db:migrate'
22
+ else
23
+ puts 'Skipping rake db:migrate, don\'t forget to run it!'
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,4 @@
1
+ require 'spree_core'
2
+ require 'spree_extension'
3
+ require 'spree_rejoiner/engine'
4
+ require 'spree_rejoiner/version'
@@ -0,0 +1,20 @@
1
+ module SpreeRejoiner
2
+ class Engine < Rails::Engine
3
+ require 'spree/core'
4
+ isolate_namespace Spree
5
+ engine_name 'spree_rejoiner'
6
+
7
+ # use rspec for tests
8
+ config.generators do |g|
9
+ g.test_framework :rspec
10
+ end
11
+
12
+ def self.activate
13
+ Dir.glob(File.join(File.dirname(__FILE__), '../../app/**/*_decorator*.rb')) do |c|
14
+ Rails.configuration.cache_classes ? require(c) : load(c)
15
+ end
16
+ end
17
+
18
+ config.to_prepare(&method(:activate).to_proc)
19
+ end
20
+ end
@@ -0,0 +1,2 @@
1
+ FactoryBot.define do
2
+ end
@@ -0,0 +1,17 @@
1
+ module SpreeRejoiner
2
+ module_function
3
+
4
+ # Returns the version of the currently loaded SpreeRejoiner as a
5
+ # <tt>Gem::Version</tt>.
6
+ def version
7
+ Gem::Version.new VERSION::STRING
8
+ end
9
+
10
+ module VERSION
11
+ MAJOR = 1
12
+ MINOR = 0
13
+ TINY = 1
14
+
15
+ STRING = [MAJOR, MINOR, TINY].compact.join('.')
16
+ end
17
+ end
@@ -0,0 +1,46 @@
1
+ lib = File.expand_path('lib', __dir__)
2
+ $LOAD_PATH.unshift lib unless $LOAD_PATH.include?(lib)
3
+
4
+ require 'spree_rejoiner/version'
5
+
6
+ Gem::Specification.new do |s|
7
+ s.platform = Gem::Platform::RUBY
8
+ s.name = 'spree_rejoiner'
9
+ s.version = SpreeRejoiner.version
10
+ s.summary = 'Adds Rejoiner tracking snippets'
11
+ s.description = 'Supports Rejoiner2'
12
+ s.required_ruby_version = '>= 2.3.3'
13
+
14
+ s.author = 'Sascha Bratton'
15
+ s.email = 'sascha@rejoiner.com'
16
+ s.homepage = 'https://github.com/rejoiner/spree-plugin'
17
+ s.license = 'BSD-3-Clause'
18
+
19
+ s.files = `git ls-files`.split("\n").reject { |f| f.match(/^spec/) && !f.match(/^spec\/fixtures/) }
20
+ s.require_path = 'lib'
21
+ s.requirements << 'none'
22
+
23
+ spree_version = '>= 3.5.0', '< 5.0'
24
+ s.add_dependency 'spree_core', spree_version
25
+ s.add_dependency 'spree_backend', spree_version
26
+ s.add_dependency 'spree_extension'
27
+ s.add_dependency 'public_suffix'
28
+
29
+ s.add_development_dependency 'appraisal'
30
+ s.add_development_dependency 'awesome_print'
31
+ s.add_development_dependency 'capybara'
32
+ s.add_development_dependency 'capybara-screenshot'
33
+ s.add_development_dependency 'chromedriver-helper'
34
+ s.add_development_dependency 'coffee-rails'
35
+ s.add_development_dependency 'database_cleaner'
36
+ s.add_development_dependency 'factory_bot', '~> 4.7'
37
+ s.add_development_dependency 'ffaker'
38
+ s.add_development_dependency 'mysql2'
39
+ s.add_development_dependency 'pg'
40
+ s.add_development_dependency 'pry'
41
+ s.add_development_dependency 'rspec-rails'
42
+ s.add_development_dependency 'sass-rails'
43
+ s.add_development_dependency 'selenium-webdriver'
44
+ s.add_development_dependency 'simplecov'
45
+ s.add_development_dependency 'sqlite3'
46
+ end
metadata ADDED
@@ -0,0 +1,393 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: spree_rejoiner
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Sascha Bratton
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-03-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: spree_core
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 3.5.0
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '5.0'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 3.5.0
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '5.0'
33
+ - !ruby/object:Gem::Dependency
34
+ name: spree_backend
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: 3.5.0
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '5.0'
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 3.5.0
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '5.0'
53
+ - !ruby/object:Gem::Dependency
54
+ name: spree_extension
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: '0'
60
+ type: :runtime
61
+ prerelease: false
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ - !ruby/object:Gem::Dependency
68
+ name: public_suffix
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ type: :runtime
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ - !ruby/object:Gem::Dependency
82
+ name: appraisal
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: awesome_print
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ - !ruby/object:Gem::Dependency
110
+ name: capybara
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ type: :development
117
+ prerelease: false
118
+ version_requirements: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ - !ruby/object:Gem::Dependency
124
+ name: capybara-screenshot
125
+ requirement: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ type: :development
131
+ prerelease: false
132
+ version_requirements: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
137
+ - !ruby/object:Gem::Dependency
138
+ name: chromedriver-helper
139
+ requirement: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - ">="
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
144
+ type: :development
145
+ prerelease: false
146
+ version_requirements: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - ">="
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
151
+ - !ruby/object:Gem::Dependency
152
+ name: coffee-rails
153
+ requirement: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - ">="
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ type: :development
159
+ prerelease: false
160
+ version_requirements: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - ">="
163
+ - !ruby/object:Gem::Version
164
+ version: '0'
165
+ - !ruby/object:Gem::Dependency
166
+ name: database_cleaner
167
+ requirement: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - ">="
170
+ - !ruby/object:Gem::Version
171
+ version: '0'
172
+ type: :development
173
+ prerelease: false
174
+ version_requirements: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - ">="
177
+ - !ruby/object:Gem::Version
178
+ version: '0'
179
+ - !ruby/object:Gem::Dependency
180
+ name: factory_bot
181
+ requirement: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - "~>"
184
+ - !ruby/object:Gem::Version
185
+ version: '4.7'
186
+ type: :development
187
+ prerelease: false
188
+ version_requirements: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - "~>"
191
+ - !ruby/object:Gem::Version
192
+ version: '4.7'
193
+ - !ruby/object:Gem::Dependency
194
+ name: ffaker
195
+ requirement: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - ">="
198
+ - !ruby/object:Gem::Version
199
+ version: '0'
200
+ type: :development
201
+ prerelease: false
202
+ version_requirements: !ruby/object:Gem::Requirement
203
+ requirements:
204
+ - - ">="
205
+ - !ruby/object:Gem::Version
206
+ version: '0'
207
+ - !ruby/object:Gem::Dependency
208
+ name: mysql2
209
+ requirement: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - ">="
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ type: :development
215
+ prerelease: false
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - ">="
219
+ - !ruby/object:Gem::Version
220
+ version: '0'
221
+ - !ruby/object:Gem::Dependency
222
+ name: pg
223
+ requirement: !ruby/object:Gem::Requirement
224
+ requirements:
225
+ - - ">="
226
+ - !ruby/object:Gem::Version
227
+ version: '0'
228
+ type: :development
229
+ prerelease: false
230
+ version_requirements: !ruby/object:Gem::Requirement
231
+ requirements:
232
+ - - ">="
233
+ - !ruby/object:Gem::Version
234
+ version: '0'
235
+ - !ruby/object:Gem::Dependency
236
+ name: pry
237
+ requirement: !ruby/object:Gem::Requirement
238
+ requirements:
239
+ - - ">="
240
+ - !ruby/object:Gem::Version
241
+ version: '0'
242
+ type: :development
243
+ prerelease: false
244
+ version_requirements: !ruby/object:Gem::Requirement
245
+ requirements:
246
+ - - ">="
247
+ - !ruby/object:Gem::Version
248
+ version: '0'
249
+ - !ruby/object:Gem::Dependency
250
+ name: rspec-rails
251
+ requirement: !ruby/object:Gem::Requirement
252
+ requirements:
253
+ - - ">="
254
+ - !ruby/object:Gem::Version
255
+ version: '0'
256
+ type: :development
257
+ prerelease: false
258
+ version_requirements: !ruby/object:Gem::Requirement
259
+ requirements:
260
+ - - ">="
261
+ - !ruby/object:Gem::Version
262
+ version: '0'
263
+ - !ruby/object:Gem::Dependency
264
+ name: sass-rails
265
+ requirement: !ruby/object:Gem::Requirement
266
+ requirements:
267
+ - - ">="
268
+ - !ruby/object:Gem::Version
269
+ version: '0'
270
+ type: :development
271
+ prerelease: false
272
+ version_requirements: !ruby/object:Gem::Requirement
273
+ requirements:
274
+ - - ">="
275
+ - !ruby/object:Gem::Version
276
+ version: '0'
277
+ - !ruby/object:Gem::Dependency
278
+ name: selenium-webdriver
279
+ requirement: !ruby/object:Gem::Requirement
280
+ requirements:
281
+ - - ">="
282
+ - !ruby/object:Gem::Version
283
+ version: '0'
284
+ type: :development
285
+ prerelease: false
286
+ version_requirements: !ruby/object:Gem::Requirement
287
+ requirements:
288
+ - - ">="
289
+ - !ruby/object:Gem::Version
290
+ version: '0'
291
+ - !ruby/object:Gem::Dependency
292
+ name: simplecov
293
+ requirement: !ruby/object:Gem::Requirement
294
+ requirements:
295
+ - - ">="
296
+ - !ruby/object:Gem::Version
297
+ version: '0'
298
+ type: :development
299
+ prerelease: false
300
+ version_requirements: !ruby/object:Gem::Requirement
301
+ requirements:
302
+ - - ">="
303
+ - !ruby/object:Gem::Version
304
+ version: '0'
305
+ - !ruby/object:Gem::Dependency
306
+ name: sqlite3
307
+ requirement: !ruby/object:Gem::Requirement
308
+ requirements:
309
+ - - ">="
310
+ - !ruby/object:Gem::Version
311
+ version: '0'
312
+ type: :development
313
+ prerelease: false
314
+ version_requirements: !ruby/object:Gem::Requirement
315
+ requirements:
316
+ - - ">="
317
+ - !ruby/object:Gem::Version
318
+ version: '0'
319
+ description: Supports Rejoiner2
320
+ email: sascha@rejoiner.com
321
+ executables: []
322
+ extensions: []
323
+ extra_rdoc_files: []
324
+ files:
325
+ - ".gitignore"
326
+ - ".rspec"
327
+ - ".rubocop.yml"
328
+ - ".travis.yml"
329
+ - Appraisals
330
+ - Gemfile
331
+ - LICENSE
332
+ - README.md
333
+ - Rakefile
334
+ - app/assets/javascripts/spree/backend/spree_rejoiner.js
335
+ - app/assets/javascripts/spree/frontend/spree_rejoiner.js
336
+ - app/assets/stylesheets/spree/backend/spree_rejoiner.css
337
+ - app/assets/stylesheets/spree/frontend/spree_rejoiner.css
338
+ - app/controllers/spree/admin/rejoiner_settings_controller.rb
339
+ - app/controllers/spree/checkout_controller_decorator.rb
340
+ - app/controllers/spree/store_controller_decorator.rb
341
+ - app/helpers/spree/rejoiner_helper.rb
342
+ - app/models/spree/app_configuration_decorator.rb
343
+ - app/models/spree/rejoiner.rb
344
+ - app/overrides/rejoiner_admin_sidebar.rb
345
+ - app/overrides/rejoiner_base.rb
346
+ - app/overrides/rejoiner_cart_view.rb
347
+ - app/overrides/rejoiner_checkout_view.rb
348
+ - app/overrides/rejoiner_conversion.rb
349
+ - app/overrides/rejoiner_product_view.rb
350
+ - app/views/spree/admin/rejoiner_settings/edit.html.erb
351
+ - app/views/spree/shared/_rejoiner_base.js.erb
352
+ - app/views/spree/shared/_rejoiner_cart.js.erb
353
+ - app/views/spree/shared/_rejoiner_conversion.js.erb
354
+ - app/views/spree/shared/_rejoiner_product.js.erb
355
+ - bin/rails
356
+ - config/locales/en.yml
357
+ - config/routes.rb
358
+ - gemfiles/spree_3_2.gemfile
359
+ - gemfiles/spree_3_5.gemfile
360
+ - gemfiles/spree_3_7.gemfile
361
+ - gemfiles/spree_master.gemfile
362
+ - lib/generators/spree_rejoiner/install/install_generator.rb
363
+ - lib/spree_rejoiner.rb
364
+ - lib/spree_rejoiner/engine.rb
365
+ - lib/spree_rejoiner/factories.rb
366
+ - lib/spree_rejoiner/version.rb
367
+ - spree_rejoiner.gemspec
368
+ homepage: https://github.com/rejoiner/spree-plugin
369
+ licenses:
370
+ - BSD-3-Clause
371
+ metadata: {}
372
+ post_install_message:
373
+ rdoc_options: []
374
+ require_paths:
375
+ - lib
376
+ required_ruby_version: !ruby/object:Gem::Requirement
377
+ requirements:
378
+ - - ">="
379
+ - !ruby/object:Gem::Version
380
+ version: 2.3.3
381
+ required_rubygems_version: !ruby/object:Gem::Requirement
382
+ requirements:
383
+ - - ">="
384
+ - !ruby/object:Gem::Version
385
+ version: '0'
386
+ requirements:
387
+ - none
388
+ rubyforge_project:
389
+ rubygems_version: 2.7.8
390
+ signing_key:
391
+ specification_version: 4
392
+ summary: Adds Rejoiner tracking snippets
393
+ test_files: []