solidus_subscription_boxes 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/solidus_subscription_boxes/subscription_selection.js +43 -7
  3. data/app/assets/stylesheets/solidus_subscription_boxes/application.css +2 -0
  4. data/app/assets/stylesheets/solidus_subscription_boxes/subscription_box.css.scss +36 -0
  5. data/app/controllers/solidus_subscription_boxes/subscription_boxes_controller.rb +2 -2
  6. data/app/decorators/solidus_subscriptions/models/checkout/update_preference_decorator.rb +15 -0
  7. data/app/decorators/spree/controllers/api/v1/subscriptions/meal_preference_decorator.rb +21 -0
  8. data/app/decorators/spree/controllers/users/set_box_preference_decorator.rb +30 -0
  9. data/app/decorators/spree/products/boxable_decorator.rb +11 -0
  10. data/app/helpers/solidus_subscription_boxes/application_helper.rb +7 -0
  11. data/app/models/solidus_subscription_boxes/subscription_period.rb +7 -2
  12. data/app/models/solidus_subscription_boxes/subscription_periods_variant.rb +1 -1
  13. data/app/overrides/views/admin_boxable_checkbox.rb +6 -0
  14. data/app/views/solidus_subscription_boxes/subscription_boxes/_box_variants.html.erb +13 -0
  15. data/app/views/solidus_subscription_boxes/subscription_boxes/_manage.html.erb +34 -0
  16. data/app/views/solidus_subscription_boxes/subscription_boxes/get_started.html.erb +44 -0
  17. data/app/views/spree/admin/products/_boxable_checkbox.html.erb +8 -0
  18. data/app/views/spree/admin/variants/_boxable_checkbox.html.erb +8 -0
  19. data/config/routes.rb +2 -1
  20. data/db/migrate/20170919054537_add_boxable_to_spree_variants.rb +5 -0
  21. data/db/migrate/20170919063437_add_boxable_variant_id_to_solidus_subscription_boxes_subscription_periods.rb +5 -0
  22. data/lib/solidus_subscription_boxes/version.rb +1 -1
  23. metadata +16 -108
  24. data/app/views/solidus_subscription_boxes/subscription_boxes/get_started.html.slim +0 -41
  25. data/test/dummy/README.rdoc +0 -28
  26. data/test/dummy/Rakefile +0 -6
  27. data/test/dummy/app/assets/config/manifest.js +0 -5
  28. data/test/dummy/app/assets/javascripts/application.js +0 -13
  29. data/test/dummy/app/assets/javascripts/cable.js +0 -13
  30. data/test/dummy/app/assets/stylesheets/application.css +0 -15
  31. data/test/dummy/app/channels/application_cable/channel.rb +0 -4
  32. data/test/dummy/app/channels/application_cable/connection.rb +0 -4
  33. data/test/dummy/app/controllers/application_controller.rb +0 -5
  34. data/test/dummy/app/helpers/application_helper.rb +0 -2
  35. data/test/dummy/app/jobs/application_job.rb +0 -2
  36. data/test/dummy/app/mailers/application_mailer.rb +0 -4
  37. data/test/dummy/app/models/application_record.rb +0 -3
  38. data/test/dummy/app/views/layouts/application.html.erb +0 -14
  39. data/test/dummy/app/views/layouts/mailer.html.erb +0 -13
  40. data/test/dummy/app/views/layouts/mailer.text.erb +0 -1
  41. data/test/dummy/bin/bundle +0 -3
  42. data/test/dummy/bin/rails +0 -4
  43. data/test/dummy/bin/rake +0 -4
  44. data/test/dummy/bin/setup +0 -29
  45. data/test/dummy/bin/update +0 -29
  46. data/test/dummy/bin/yarn +0 -11
  47. data/test/dummy/config.ru +0 -4
  48. data/test/dummy/config/application.rb +0 -29
  49. data/test/dummy/config/boot.rb +0 -5
  50. data/test/dummy/config/cable.yml +0 -10
  51. data/test/dummy/config/database.yml +0 -25
  52. data/test/dummy/config/environment.rb +0 -5
  53. data/test/dummy/config/environments/development.rb +0 -41
  54. data/test/dummy/config/environments/production.rb +0 -79
  55. data/test/dummy/config/environments/test.rb +0 -42
  56. data/test/dummy/config/initializers/application_controller_renderer.rb +0 -8
  57. data/test/dummy/config/initializers/assets.rb +0 -11
  58. data/test/dummy/config/initializers/backtrace_silencers.rb +0 -7
  59. data/test/dummy/config/initializers/cookies_serializer.rb +0 -3
  60. data/test/dummy/config/initializers/filter_parameter_logging.rb +0 -4
  61. data/test/dummy/config/initializers/inflections.rb +0 -16
  62. data/test/dummy/config/initializers/mime_types.rb +0 -4
  63. data/test/dummy/config/initializers/session_store.rb +0 -3
  64. data/test/dummy/config/initializers/wrap_parameters.rb +0 -14
  65. data/test/dummy/config/locales/en.yml +0 -23
  66. data/test/dummy/config/puma.rb +0 -56
  67. data/test/dummy/config/routes.rb +0 -3
  68. data/test/dummy/config/secrets.yml +0 -22
  69. data/test/dummy/config/spring.rb +0 -6
  70. data/test/dummy/package.json +0 -5
  71. data/test/dummy/public/404.html +0 -67
  72. data/test/dummy/public/422.html +0 -67
  73. data/test/dummy/public/500.html +0 -66
  74. data/test/dummy/public/apple-touch-icon-precomposed.png +0 -0
  75. data/test/dummy/public/apple-touch-icon.png +0 -0
  76. data/test/dummy/public/favicon.ico +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bad5a503566baf04da9924b0ac7fa639742b7c4f
4
- data.tar.gz: c157d9f6caf3deb72923c500dbf46153d3656662
3
+ metadata.gz: 19d70a2f190a741ce51914cc242c60656f13fdf0
4
+ data.tar.gz: e2838ccaa1bb385fb93f4345a211e4fd2420142a
5
5
  SHA512:
6
- metadata.gz: 4f7fecf3715c09ef68f06260982373f10074bb83469e1029a2b3968d884208afa6090fd8b717ab09bd92dc63439c494145894ae0109e3c212dc1965d5c5d7e6d
7
- data.tar.gz: 8d14d44c1ad4148a5c15911cb62e7561e9f4a5d8f596c9c8e29196c1779297195f31b3a575bbbce613d6aafaca6a95d95d06ff0cb4b71ab65a688d40496722eb
6
+ metadata.gz: af355b4a5280c981971007a90ed0cf2e13500bfa8454514e3e241f1fd08f0848e49c9e0616092519793f40430c8af8ffde7abce34478bc23b2a9d9f968d280a5
7
+ data.tar.gz: 4340de2b00ad8f8a05aebdaad9c4aee83f1db6eaddae42442f070ad82b68a304a7d8a6371281403e7d9505bd202fb869c7beed52810cfa3b44425f681ae40260
@@ -1,18 +1,54 @@
1
1
  // Meal Selection Page
2
+ function subscriptionFormatDate(date) {
3
+ var monthNames = [
4
+ "January", "February", "March",
5
+ "April", "May", "June", "July",
6
+ "August", "September", "October",
7
+ "November", "December"
8
+ ];
9
+
10
+ var day = date.getDate();
11
+ var monthIndex = date.getMonth();
12
+
13
+ return monthNames[monthIndex] + ' ' + day;
14
+ }
15
+
16
+
2
17
  $('.meal-selection').click( function(event) {
3
- if( $('.meal-selection input:checked').length > 3) {
4
- alert("Please only pick 3 feals");
18
+ if( $('body.get_started').length > 0 ) {
19
+ var submitButtonText = "Subscribe Now";
20
+ } else {
21
+ var submitButtonText = "Update My Order";
22
+ }
23
+
24
+ if( $('.meal-selection input:checked').length > 3 ) {
25
+ alert("Please only pick 3 meals");
5
26
  event.target.checked = false;
6
27
  event.preventDefault();
7
28
  }
8
29
 
9
- if( $('.meal-selection input:checked').length == 3) {
10
- $('input[type=submit]').removeAttr('disabled');
11
- $('input[type=submit]').attr("value","Subscribe Now");
30
+ if( $('.meal-selection input:checked').length == 3 ) {
31
+ $('input[type=submit].meal-update').removeAttr('disabled');
32
+ $('input[type=submit].meal-update').attr("value",submitButtonText);
12
33
  } else {
13
- $('input[type=submit]').attr("disabled","disabled");
14
- $('input[type=submit]').attr("value","Choose " + (3 - $('.meal-selection input:checked').length).toString() + " More");
34
+ $('input[type=submit].meal-update').attr("disabled","disabled");
35
+ $('input[type=submit].meal-update').attr("value","Choose " + (3 - $('.meal-selection input:checked').length).toString() + " More");
15
36
  }
16
37
 
17
38
  $('.number_more_meals').text(3 - $('.meal-selection input:checked').length);
18
39
  });
40
+
41
+ $(document).ajaxSuccess(function( event, xhr, settings ) {
42
+ if( settings.url.match(/\/api\/v1\/subscriptions\/\d*\/skip/) ) {
43
+ var actionableDate = new Date(Date.parse(xhr.responseJSON.actionable_date));
44
+ $('.actionable-date-update').text(subscriptionFormatDate(actionableDate));
45
+ }
46
+ if( settings.url.match(/\/api\/v1\/subscriptions\/\d*\/cancel/) ) {
47
+ $('.manage-subscription').remove();
48
+ }
49
+ if( settings.url.match(/\/api\/v1\/subscriptions\/\d*$/)) {
50
+ alert("You've updated your subscription.")
51
+ }
52
+ });
53
+
54
+
@@ -13,3 +13,5 @@
13
13
  *= require_tree .
14
14
  *= require_self
15
15
  */
16
+
17
+ @import "subscription_box"
@@ -0,0 +1,36 @@
1
+ $color-disabled: #283428;
2
+
3
+ .meal img {
4
+ width: 100%;
5
+ }
6
+ .row-centered {
7
+ text-align: center;
8
+ -webkit-justify-content: center; /* Safari */
9
+ justify-content: center;
10
+ }
11
+ .col-centered {
12
+ display: inline-block;
13
+ float: none;
14
+ /* reset the text-align */
15
+ text-align: left;
16
+ /* inline-block space fix */
17
+ margin-right: -4px;
18
+ }
19
+ .flash.notice {
20
+ background-color: green;
21
+ }
22
+ .flash.success {
23
+ background-color: green;
24
+ }
25
+ .meal-selector .meal-selection, {
26
+ .image {
27
+ border: 4px transparent solid;
28
+ cursor: pointer;
29
+ &:hover {
30
+ border: 4px $color-disabled solid;
31
+ }
32
+ }
33
+ input:checked + .image {
34
+ border: 4px green solid;
35
+ }
36
+ }
@@ -1,6 +1,6 @@
1
1
  class SolidusSubscriptionBoxes::SubscriptionBoxesController < Spree::StoreController
2
2
  def get_started
3
- @box_variants = SolidusSubscriptionBoxes::SubscriptionPeriod.current.variants
4
- @variant_id = Spree::Variant.first.id
3
+ @variant = Spree::Product.find_by_slug(params[:product_id]).master
4
+ @box_variants = SolidusSubscriptionBoxes::SubscriptionPeriod.where(boxable_variant_id: @variant.id).current.variants
5
5
  end
6
6
  end
@@ -0,0 +1,15 @@
1
+ module SolidusSubscriptions
2
+ module Models
3
+ module Checkout
4
+ module UpdatePreferenceDecorator
5
+ def order
6
+ byebug
7
+ order = super
8
+ order.box_preference = subscription.box_preference unless order.box_preference.present?
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
14
+
15
+ SolidusSubscriptions::Checkout.prepend(SolidusSubscriptions::Models::Checkout::UpdatePreferenceDecorator)
@@ -0,0 +1,21 @@
1
+ module Spree
2
+ module Controllers
3
+ module Api
4
+ module V1
5
+ module Subscriptions
6
+ module MealPreferenceDecorator
7
+ def subscription_params
8
+ params.require(:subscription).permit(
9
+ line_items_attributes: line_item_attributes,
10
+ shipping_address_attributes: Spree::PermittedAttributes.address_attributes,
11
+ box_preference_attributes: {}
12
+ )
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+
21
+ SolidusSubscriptions::Api::V1::SubscriptionsController.prepend(Spree::Controllers::Api::V1::Subscriptions::MealPreferenceDecorator)
@@ -0,0 +1,30 @@
1
+ module Spree
2
+ module Controllers
3
+ module Users
4
+ module SetBoxPreferenceDecorator
5
+ def self.prepended(base)
6
+ base.before_action(
7
+ :set_box_preferences,
8
+ only: :show
9
+ )
10
+ end
11
+
12
+ private
13
+ def set_box_preferences
14
+ @user.generate_spree_api_key! unless @user.spree_api_key
15
+
16
+ must_change_subscriptions = @user.subscriptions.find_all do |subscription|
17
+ subscription.box_preference.nil?
18
+ end
19
+
20
+ must_change_subscriptions.each do |subscription|
21
+ potential_variants = SolidusSubscriptionBoxes::SubscriptionPeriod.period_for_date(subscription.actionable_date).variants
22
+ subscription.box_preference = SolidusSubscriptionBoxes::BoxPreference.new(preference: potential_variants.sample(3).map(&:id))
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+
30
+ Spree::UsersController.prepend(Spree::Controllers::Users::SetBoxPreferenceDecorator)
@@ -0,0 +1,11 @@
1
+ module Spree
2
+ module Products
3
+ module Boxable
4
+ def self.prepended(klass)
5
+ klass.delegate :"boxable", :"boxable=", to: :find_or_build_master
6
+ end
7
+ end
8
+ end
9
+ end
10
+
11
+ Spree::Product.prepend Spree::Products::Boxable
@@ -1,4 +1,11 @@
1
1
  module SolidusSubscriptionBoxes
2
2
  module ApplicationHelper
3
+ def is_checked(preferable, variant)
4
+ if preferable.present? && preferable.box_preference.preference.map(&:to_i).include?(variant.id)
5
+ "checked"
6
+ else
7
+ ""
8
+ end
9
+ end
3
10
  end
4
11
  end
@@ -1,10 +1,15 @@
1
1
  module SolidusSubscriptionBoxes
2
2
  class SubscriptionPeriod < ApplicationRecord
3
- has_many :subscription_periods_variants, class_name: 'SolidusSubscriptionBoxes::SubscriptionPeriodsVariant', foreign_key: 'solidus_subscription_boxes_subscription_period_id'
3
+ has_many :subscription_periods_variants, foreign_key: :solidus_subscription_boxes_subscription_period_id, class_name: 'SolidusSubscriptionBoxes::SubscriptionPeriodsVariant'
4
4
  has_many :variants, through: :subscription_periods_variants, class_name: 'Spree::Variant'
5
+ belongs_to :boxable_variant, class_name: 'Spree::Variant', foreign_key: 'boxable_variant_id'
5
6
 
6
7
  def self.current
7
- SubscriptionPeriod.where('start_date <= ?', Date.today).order('start_date desc').last
8
+ period_for_date(Date.today)
9
+ end
10
+
11
+ def self.period_for_date(date)
12
+ SubscriptionPeriod.where('start_date <= ?', date).order('start_date desc').last
8
13
  end
9
14
  end
10
15
  end
@@ -1,6 +1,6 @@
1
1
  module SolidusSubscriptionBoxes
2
2
  class SubscriptionPeriodsVariant < ApplicationRecord
3
3
  belongs_to :variant, class_name: 'Spree::Variant', foreign_key: :spree_variant_id
4
- belongs_to :subscription_period, class_name: 'SolidusSubscriptionBoxes::SubscriptionPeriod', foreign_key: 'solidus_subscription_boxes_subscription_period_id'
4
+ belongs_to :subscription_period, foreign_key: :solidus_subscription_boxes_subscription_period_id, class_name: 'SolidusSubscriptionBoxes::SubscriptionPeriod'
5
5
  end
6
6
  end
@@ -0,0 +1,6 @@
1
+ Deface::Override.new(
2
+ virtual_path: "spree/admin/products/_form",
3
+ name: "solidus_subscriptions_product_boxable_checkbox",
4
+ insert_after: "[data-hook='admin_product_form_meta']",
5
+ partial: "spree/admin/products/boxable_checkbox"
6
+ )
@@ -0,0 +1,13 @@
1
+ <div class="meal-selector row row-centered">
2
+ <%- box_variants.each do |variant| %>
3
+ <div class="col-xs-12 col-md-4 col-centered text-center meal">
4
+ <label class="meal-selection">
5
+ <input class="hidden" type="checkbox" name="<%= preference_scope %>" value="<%= variant.id %>" <%= is_checked(preferable, variant) %>>
6
+ <div class="image">
7
+ <%= image_tag variant.display_image.attachment.url(:large) %>
8
+ </div>
9
+ <h4><%= variant.name %></h4>
10
+ </label>
11
+ </div>
12
+ <% end %>
13
+ </div>
@@ -0,0 +1,34 @@
1
+ <% @user.subscriptions.where(state: 'active').each do |subscription| %>
2
+ <div class="manage-subscription">
3
+ <h2>My Next Order (<span class="actionable-date-update"><%= subscription.actionable_date.strftime("%B %d") %></span>)</h2>
4
+ <%= form_with url: "/api/v1/subscriptions/#{subscription.id}", method: 'put', class: 'menu meal-selector' do |form| %>
5
+ <%= hidden_field_tag(:token, @user.spree_api_key) %>
6
+ <%= render partial: 'solidus_subscription_boxes/subscription_boxes/box_variants',
7
+ locals: {
8
+ box_variants: SolidusSubscriptionBoxes::SubscriptionPeriod.period_for_date(subscription.actionable_date).variants,
9
+ preference_scope: "subscription[box_preference_attributes][preference][]",
10
+ preferable: subscription
11
+ }
12
+ %>
13
+ <div class="row">
14
+ <div class="col-xs-12 content text-center">
15
+ <%= form.submit 'Update My Order', class: "btn btn-primary btn-large purchase-link meal-update" %>
16
+ </div>
17
+ </div>
18
+ <% end %>
19
+ <div class="row">
20
+ <div class="col-xs-12 col-md-3 col-md-push-3 content text-center">
21
+ <%= form_with url: "/api/v1/subscriptions/#{subscription.id}/skip", class: 'menu' do |form| %>
22
+ <%= hidden_field_tag(:token, @user.spree_api_key) %>
23
+ <%= form.submit 'Skip My Next Order', class: "btn btn-primary btn-large purchase-link" %>
24
+ <% end %>
25
+ </div>
26
+ <div class="col-xs-12 col-md-3 col-md-push-3 content text-center">
27
+ <%= form_with url: "/api/v1/subscriptions/#{subscription.id}/cancel", class: 'menu' do |form| %>
28
+ <%= hidden_field_tag(:token, @user.spree_api_key) %>
29
+ <%= form.submit 'Cancel', class: "btn btn-primary btn-large purchase-link" %>
30
+ <% end %>
31
+ </div>
32
+ </div>
33
+ </div>
34
+ <% end %>
@@ -0,0 +1,44 @@
1
+ <div class="container-fluid">
2
+ <section class="how-it-works">
3
+ <div class="row text-center how-it-works background-grey">
4
+ <h1>Here's How It Works</h1>
5
+ <div class="col-xs-12 col-sm-3">
6
+ <h2 class="statistic">3</h2>
7
+ <h4>Delicious vegetarian lunches delivered every week</h4>
8
+ </div>
9
+ <div class="col-xs-12 col-sm-3 border-right">
10
+ <h2 class="statistic">Sunday</h2>
11
+ <h4>Food shows up at your door</h4>
12
+ </div>
13
+ <div class="col-xs-12 col-sm-3 border-right">
14
+ <h2 class="statistic">$36</h2>
15
+ <h4>Paid Weekly<h4>
16
+ </div>
17
+ <div class="col-xs-12 col-sm-3 border-right">
18
+ <h2 class="statistic">20</h2>
19
+ <h4>Pounds of greenhouse emissions potentially saved every week</h4>
20
+ </div>
21
+ </div>
22
+ </section>
23
+ </div>
24
+
25
+ <div class="menu">
26
+ <h1 class="text-center">Select your first three meals</h1>
27
+ <div>
28
+ <%= form_for :order, url: '/orders/populate' do |f| %>
29
+ <%= render partial: 'box_variants', locals: {box_variants: @box_variants, preference_scope: "box_preference_attributes[preference][]", preferable: f.object} %>
30
+ <div class="row">
31
+ <div class="col-xs-12 content text-center">
32
+ <%= hidden_field_tag :variant_id, @variant.id %>
33
+ <%= hidden_field_tag :quantity, 1 %>
34
+ <%= hidden_field_tag :'subscription_line_item[quantity]', 1 %>
35
+ <%= hidden_field_tag :'subscription_line_item[subscribable_id]', 1 %>
36
+ <%= hidden_field_tag :'subscription_line_item[interval_length]', 1 %>
37
+ <%= hidden_field_tag :'subscription_line_item[interval_units]', 'week' %>
38
+ <%= f.submit 'Choose 3 More', onclick: "window.dataLayer.push({event: 'click', clickAction:'selectorPurchase'})", class: "btn btn-primary btn-large purchase-link meal-update", disabled: 'disabled', :'data-disable-with' => 'Submitting...' %>
39
+ </div>
40
+ </div>
41
+ <% end %>
42
+ </div>
43
+ </div>
44
+
@@ -0,0 +1,8 @@
1
+ <% if !@product.has_variants? && @product.subscribable then %>
2
+ <div class="field four columns checkbox" data-hook="boxable">
3
+ <%= f.label :boxable do %>
4
+ <%= f.check_box :boxable %>
5
+ <%= Spree::Product.human_attribute_name(:boxable) %>
6
+ <% end %>
7
+ </div>
8
+ <% end %>
@@ -0,0 +1,8 @@
1
+ <% if @variant.subscribable then %>
2
+ <div class="field four columns checkbox" data-hook="boxable">
3
+ <%= f.label :boxable do %>
4
+ <%= f.check_box :boxable %>
5
+ <%= Spree::Variant.human_attribute_name(:boxable) %>
6
+ <% end %>
7
+ </div>
8
+ <% end %>
@@ -1,3 +1,4 @@
1
1
  SolidusSubscriptionBoxes::Engine.routes.draw do
2
- get '/get-started' => 'subscription_boxes#get_started'
2
+ mount SolidusSubscriptions::Engine, at: '/'
3
+ get '/get-started/:product_id' => 'subscription_boxes#get_started'
3
4
  end
@@ -0,0 +1,5 @@
1
+ class AddBoxableToSpreeVariants < ActiveRecord::Migration[5.1]
2
+ def change
3
+ add_column :spree_variants, :boxable, :boolean
4
+ end
5
+ end
@@ -0,0 +1,5 @@
1
+ class AddBoxableVariantIdToSolidusSubscriptionBoxesSubscriptionPeriods < ActiveRecord::Migration[5.1]
2
+ def change
3
+ add_column :solidus_subscription_boxes_subscription_periods, :boxable_variant_id, :integer
4
+ end
5
+ end
@@ -1,3 +1,3 @@
1
1
  module SolidusSubscriptionBoxes
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: solidus_subscription_boxes
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joel Jackson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-09-16 00:00:00.000000000 Z
11
+ date: 2017-10-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: solidus
@@ -135,10 +135,15 @@ files:
135
135
  - app/assets/javascripts/solidus_subscription_boxes/application.js
136
136
  - app/assets/javascripts/solidus_subscription_boxes/subscription_selection.js
137
137
  - app/assets/stylesheets/solidus_subscription_boxes/application.css
138
+ - app/assets/stylesheets/solidus_subscription_boxes/subscription_box.css.scss
138
139
  - app/controllers/solidus_subscription_boxes/application_controller.rb
139
140
  - app/controllers/solidus_subscription_boxes/subscription_boxes_controller.rb
141
+ - app/decorators/solidus_subscriptions/models/checkout/update_preference_decorator.rb
142
+ - app/decorators/spree/controllers/api/v1/subscriptions/meal_preference_decorator.rb
140
143
  - app/decorators/spree/controllers/orders/meal_preference_decorator.rb
144
+ - app/decorators/spree/controllers/users/set_box_preference_decorator.rb
141
145
  - app/decorators/spree/orders/preference_decorator.rb
146
+ - app/decorators/spree/products/boxable_decorator.rb
142
147
  - app/helpers/solidus_subscription_boxes/application_helper.rb
143
148
  - app/jobs/solidus_subscription_boxes/application_job.rb
144
149
  - app/mailers/solidus_subscription_boxes/application_mailer.rb
@@ -146,68 +151,23 @@ files:
146
151
  - app/models/solidus_subscription_boxes/box_preference.rb
147
152
  - app/models/solidus_subscription_boxes/subscription_period.rb
148
153
  - app/models/solidus_subscription_boxes/subscription_periods_variant.rb
154
+ - app/overrides/views/admin_boxable_checkbox.rb
149
155
  - app/views/layouts/solidus_subscription_boxes/application.html.erb
150
- - app/views/solidus_subscription_boxes/subscription_boxes/get_started.html.slim
156
+ - app/views/solidus_subscription_boxes/subscription_boxes/_box_variants.html.erb
157
+ - app/views/solidus_subscription_boxes/subscription_boxes/_manage.html.erb
158
+ - app/views/solidus_subscription_boxes/subscription_boxes/get_started.html.erb
159
+ - app/views/spree/admin/products/_boxable_checkbox.html.erb
160
+ - app/views/spree/admin/variants/_boxable_checkbox.html.erb
151
161
  - config/routes.rb
152
162
  - db/migrate/20170609065436_create_solidus_subscription_boxes_box_preferences.rb
153
163
  - db/migrate/20170906015531_create_solidus_subscription_boxes_subscription_periods.rb
154
164
  - db/migrate/20170906021159_create_solidus_subscription_boxes_subscription_periods_variants.rb
165
+ - db/migrate/20170919054537_add_boxable_to_spree_variants.rb
166
+ - db/migrate/20170919063437_add_boxable_variant_id_to_solidus_subscription_boxes_subscription_periods.rb
155
167
  - lib/solidus_subscription_boxes.rb
156
168
  - lib/solidus_subscription_boxes/engine.rb
157
169
  - lib/solidus_subscription_boxes/version.rb
158
170
  - lib/tasks/solidus_subscription_boxes_tasks.rake
159
- - test/dummy/README.rdoc
160
- - test/dummy/Rakefile
161
- - test/dummy/app/assets/config/manifest.js
162
- - test/dummy/app/assets/javascripts/application.js
163
- - test/dummy/app/assets/javascripts/cable.js
164
- - test/dummy/app/assets/stylesheets/application.css
165
- - test/dummy/app/channels/application_cable/channel.rb
166
- - test/dummy/app/channels/application_cable/connection.rb
167
- - test/dummy/app/controllers/application_controller.rb
168
- - test/dummy/app/helpers/application_helper.rb
169
- - test/dummy/app/jobs/application_job.rb
170
- - test/dummy/app/mailers/application_mailer.rb
171
- - test/dummy/app/models/application_record.rb
172
- - test/dummy/app/views/layouts/application.html.erb
173
- - test/dummy/app/views/layouts/mailer.html.erb
174
- - test/dummy/app/views/layouts/mailer.text.erb
175
- - test/dummy/bin/bundle
176
- - test/dummy/bin/rails
177
- - test/dummy/bin/rake
178
- - test/dummy/bin/setup
179
- - test/dummy/bin/update
180
- - test/dummy/bin/yarn
181
- - test/dummy/config.ru
182
- - test/dummy/config/application.rb
183
- - test/dummy/config/boot.rb
184
- - test/dummy/config/cable.yml
185
- - test/dummy/config/database.yml
186
- - test/dummy/config/environment.rb
187
- - test/dummy/config/environments/development.rb
188
- - test/dummy/config/environments/production.rb
189
- - test/dummy/config/environments/test.rb
190
- - test/dummy/config/initializers/application_controller_renderer.rb
191
- - test/dummy/config/initializers/assets.rb
192
- - test/dummy/config/initializers/backtrace_silencers.rb
193
- - test/dummy/config/initializers/cookies_serializer.rb
194
- - test/dummy/config/initializers/filter_parameter_logging.rb
195
- - test/dummy/config/initializers/inflections.rb
196
- - test/dummy/config/initializers/mime_types.rb
197
- - test/dummy/config/initializers/session_store.rb
198
- - test/dummy/config/initializers/wrap_parameters.rb
199
- - test/dummy/config/locales/en.yml
200
- - test/dummy/config/puma.rb
201
- - test/dummy/config/routes.rb
202
- - test/dummy/config/secrets.yml
203
- - test/dummy/config/spring.rb
204
- - test/dummy/package.json
205
- - test/dummy/public/404.html
206
- - test/dummy/public/422.html
207
- - test/dummy/public/500.html
208
- - test/dummy/public/apple-touch-icon-precomposed.png
209
- - test/dummy/public/apple-touch-icon.png
210
- - test/dummy/public/favicon.ico
211
171
  - test/integration/navigation_test.rb
212
172
  - test/solidus_subscription_boxes_test.rb
213
173
  - test/test_helper.rb
@@ -231,63 +191,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
231
191
  version: '0'
232
192
  requirements: []
233
193
  rubyforge_project:
234
- rubygems_version: 2.4.6
194
+ rubygems_version: 2.6.11
235
195
  signing_key:
236
196
  specification_version: 4
237
197
  summary: Add subscription box support to Solidus
238
198
  test_files:
239
- - test/dummy/app/assets/config/manifest.js
240
- - test/dummy/app/assets/javascripts/application.js
241
- - test/dummy/app/assets/javascripts/cable.js
242
- - test/dummy/app/assets/stylesheets/application.css
243
- - test/dummy/app/channels/application_cable/channel.rb
244
- - test/dummy/app/channels/application_cable/connection.rb
245
- - test/dummy/app/controllers/application_controller.rb
246
- - test/dummy/app/helpers/application_helper.rb
247
- - test/dummy/app/jobs/application_job.rb
248
- - test/dummy/app/mailers/application_mailer.rb
249
- - test/dummy/app/models/application_record.rb
250
- - test/dummy/app/views/layouts/application.html.erb
251
- - test/dummy/app/views/layouts/mailer.html.erb
252
- - test/dummy/app/views/layouts/mailer.text.erb
253
- - test/dummy/bin/bundle
254
- - test/dummy/bin/rails
255
- - test/dummy/bin/rake
256
- - test/dummy/bin/setup
257
- - test/dummy/bin/update
258
- - test/dummy/bin/yarn
259
- - test/dummy/config/application.rb
260
- - test/dummy/config/boot.rb
261
- - test/dummy/config/cable.yml
262
- - test/dummy/config/database.yml
263
- - test/dummy/config/environment.rb
264
- - test/dummy/config/environments/development.rb
265
- - test/dummy/config/environments/production.rb
266
- - test/dummy/config/environments/test.rb
267
- - test/dummy/config/initializers/application_controller_renderer.rb
268
- - test/dummy/config/initializers/assets.rb
269
- - test/dummy/config/initializers/backtrace_silencers.rb
270
- - test/dummy/config/initializers/cookies_serializer.rb
271
- - test/dummy/config/initializers/filter_parameter_logging.rb
272
- - test/dummy/config/initializers/inflections.rb
273
- - test/dummy/config/initializers/mime_types.rb
274
- - test/dummy/config/initializers/session_store.rb
275
- - test/dummy/config/initializers/wrap_parameters.rb
276
- - test/dummy/config/locales/en.yml
277
- - test/dummy/config/puma.rb
278
- - test/dummy/config/routes.rb
279
- - test/dummy/config/secrets.yml
280
- - test/dummy/config/spring.rb
281
- - test/dummy/config.ru
282
- - test/dummy/package.json
283
- - test/dummy/public/404.html
284
- - test/dummy/public/422.html
285
- - test/dummy/public/500.html
286
- - test/dummy/public/apple-touch-icon-precomposed.png
287
- - test/dummy/public/apple-touch-icon.png
288
- - test/dummy/public/favicon.ico
289
- - test/dummy/Rakefile
290
- - test/dummy/README.rdoc
291
199
  - test/integration/navigation_test.rb
292
200
  - test/solidus_subscription_boxes_test.rb
293
201
  - test/test_helper.rb