workarea-slick_slider 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. checksums.yaml +7 -0
  2. data/.editorconfig +15 -0
  3. data/.eslintrc +34 -0
  4. data/.gitignore +10 -0
  5. data/.rubocop.yml +8 -0
  6. data/.scss-lint.yml +188 -0
  7. data/CHANGELOG.md +52 -0
  8. data/Gemfile +5 -0
  9. data/README.md +284 -0
  10. data/Rakefile +63 -0
  11. data/app/assets/images/workarea/storefront/icons/arrow_left.svg +4 -0
  12. data/app/assets/images/workarea/storefront/icons/arrow_right.svg +4 -0
  13. data/app/assets/javascripts/workarea/storefront/slick_slider/config.js +17 -0
  14. data/app/assets/javascripts/workarea/storefront/slick_slider/modules/slick_slider.js +71 -0
  15. data/app/assets/javascripts/workarea/storefront/slick_slider/modules/slick_slider_analytics.js +88 -0
  16. data/app/assets/javascripts/workarea/storefront/slick_slider/templates/slick_slider_nav_next.jst.ejs.ruby +5 -0
  17. data/app/assets/javascripts/workarea/storefront/slick_slider/templates/slick_slider_nav_prev.jst.ejs.ruby +5 -0
  18. data/app/assets/stylesheets/workarea/storefront/slick_slider/components/_slick_slider.scss +132 -0
  19. data/app/helpers/workarea/storefront/slider_helper.rb +57 -0
  20. data/app/views/workarea/storefront/style_guides/components/_slick_slider.html.haml +48 -0
  21. data/bin/rails +18 -0
  22. data/config/initializers/appends.rb +33 -0
  23. data/config/locales/en.yml +6 -0
  24. data/lib/workarea/slick_slider/engine.rb +12 -0
  25. data/lib/workarea/slick_slider/version.rb +5 -0
  26. data/lib/workarea/slick_slider.rb +13 -0
  27. data/script/admin_ci +9 -0
  28. data/script/ci +11 -0
  29. data/script/core_ci +9 -0
  30. data/script/plugins_ci +9 -0
  31. data/script/storefront_ci +9 -0
  32. data/test/dummy/Rakefile +6 -0
  33. data/test/dummy/app/assets/config/manifest.js +4 -0
  34. data/test/dummy/app/assets/images/.keep +0 -0
  35. data/test/dummy/app/assets/javascripts/application.js +13 -0
  36. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  37. data/test/dummy/app/controllers/application_controller.rb +3 -0
  38. data/test/dummy/app/controllers/concerns/.keep +0 -0
  39. data/test/dummy/app/helpers/application_helper.rb +2 -0
  40. data/test/dummy/app/jobs/application_job.rb +2 -0
  41. data/test/dummy/app/mailers/application_mailer.rb +4 -0
  42. data/test/dummy/app/models/concerns/.keep +0 -0
  43. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  44. data/test/dummy/app/views/layouts/mailer.html.erb +13 -0
  45. data/test/dummy/app/views/layouts/mailer.text.erb +1 -0
  46. data/test/dummy/bin/bundle +3 -0
  47. data/test/dummy/bin/rails +4 -0
  48. data/test/dummy/bin/rake +4 -0
  49. data/test/dummy/bin/setup +34 -0
  50. data/test/dummy/bin/update +29 -0
  51. data/test/dummy/config/application.rb +28 -0
  52. data/test/dummy/config/boot.rb +5 -0
  53. data/test/dummy/config/cable.yml +9 -0
  54. data/test/dummy/config/environment.rb +5 -0
  55. data/test/dummy/config/environments/development.rb +54 -0
  56. data/test/dummy/config/environments/production.rb +86 -0
  57. data/test/dummy/config/environments/test.rb +43 -0
  58. data/test/dummy/config/initializers/application_controller_renderer.rb +6 -0
  59. data/test/dummy/config/initializers/assets.rb +11 -0
  60. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  61. data/test/dummy/config/initializers/cookies_serializer.rb +5 -0
  62. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  63. data/test/dummy/config/initializers/inflections.rb +16 -0
  64. data/test/dummy/config/initializers/mime_types.rb +4 -0
  65. data/test/dummy/config/initializers/new_framework_defaults.rb +21 -0
  66. data/test/dummy/config/initializers/session_store.rb +3 -0
  67. data/test/dummy/config/initializers/workarea.rb +5 -0
  68. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  69. data/test/dummy/config/locales/en.yml +23 -0
  70. data/test/dummy/config/puma.rb +47 -0
  71. data/test/dummy/config/routes.rb +5 -0
  72. data/test/dummy/config/secrets.yml +22 -0
  73. data/test/dummy/config/spring.rb +6 -0
  74. data/test/dummy/config.ru +5 -0
  75. data/test/dummy/lib/assets/.keep +0 -0
  76. data/test/dummy/log/.keep +0 -0
  77. data/test/dummy/public/404.html +67 -0
  78. data/test/dummy/public/422.html +67 -0
  79. data/test/dummy/public/500.html +66 -0
  80. data/test/dummy/public/apple-touch-icon-precomposed.png +0 -0
  81. data/test/dummy/public/apple-touch-icon.png +0 -0
  82. data/test/dummy/public/favicon.ico +0 -0
  83. data/test/javascripts/fixtures/slick_slider.html.haml +3 -0
  84. data/test/javascripts/fixtures/slick_slider_with_options.html.haml +3 -0
  85. data/test/javascripts/slick_slider_spec.js +37 -0
  86. data/test/javascripts/spec_helper.js +2 -0
  87. data/test/teaspoon_env.rb +10 -0
  88. data/test/test_helper.rb +10 -0
  89. data/workarea-slick_slider.gemspec +23 -0
  90. metadata +159 -0
@@ -0,0 +1,17 @@
1
+ (function () {
2
+ 'use strict';
3
+
4
+ /**
5
+ * Config Variables
6
+ */
7
+
8
+ WORKAREA.config.slickSlider = {
9
+ options: {
10
+ prevArrow: JST['workarea/storefront/slick_slider/templates/slick_slider_nav_prev'](),
11
+ nextArrow: JST['workarea/storefront/slick_slider/templates/slick_slider_nav_next'](),
12
+ dotsClass: 'slick-slider__dots'
13
+ },
14
+ stopOnInteraction: false,
15
+ waitForImages: false
16
+ };
17
+ })();
@@ -0,0 +1,71 @@
1
+ /**
2
+ * @namespace WORKAREA.slickSlider
3
+ */
4
+ WORKAREA.registerModule('slickSlider', (function () {
5
+ 'use strict';
6
+
7
+ var checkImagesAndLoad = function(loadCount, imageCount, $slider, options) {
8
+ if (loadCount === imageCount) {
9
+ $slider.slick(options)
10
+ .addClass('slick-slider--images-loaded')
11
+ .removeClass('slick-slider--waiting-for-images');
12
+ }
13
+ },
14
+
15
+ waitForImages = function($slider, options) {
16
+ var $images = $('img', $slider),
17
+ imageCount = $images.length,
18
+ loadCount = 0;
19
+
20
+ $slider.addClass('slick-slider--waiting-for-images');
21
+ $images.each(function(index, image){
22
+ if ( $(image).prop('complete') ) {
23
+ loadCount ++;
24
+ checkImagesAndLoad(loadCount, imageCount, $slider, options);
25
+ } else {
26
+ $(image).on('load', function() {
27
+ loadCount ++;
28
+ checkImagesAndLoad(loadCount, imageCount, $slider, options);
29
+ });
30
+ }
31
+ });
32
+ },
33
+
34
+ getConfig = function(options) {
35
+ return _.merge({}, WORKAREA.config.slickSlider, options);
36
+ },
37
+
38
+ stopAutoplay = function(event) {
39
+ $(event.currentTarget).slick('slickPause');
40
+ },
41
+
42
+ initSlider = function(index, slider) {
43
+ var $slider = $(slider),
44
+ slickSettings = getConfig($slider.data('slickSlider'));
45
+
46
+ if ( slickSettings.waitForImages ) {
47
+ waitForImages($slider, slickSettings.options);
48
+ } else {
49
+ $slider.slick(slickSettings.options);
50
+ }
51
+
52
+ if (slickSettings.stopOnInteraction) {
53
+ $slider.on('click swipe', stopAutoplay);
54
+ }
55
+
56
+ WORKAREA.slickSliderAnalytics.initSliderAnalytics($slider);
57
+ },
58
+
59
+ /**
60
+ * @method
61
+ * @name init
62
+ * @memberof WORKAREA.slickSlider
63
+ */
64
+ init = function ($scope) {
65
+ $('[data-slick-slider]', $scope).each(initSlider);
66
+ };
67
+
68
+ return {
69
+ init: init
70
+ };
71
+ }()));
@@ -0,0 +1,88 @@
1
+ /**
2
+ * @namespace WORKAREA.slickSliderAnalytics
3
+ */
4
+ WORKAREA.registerModule('slickSliderAnalytics', (function () {
5
+ 'use strict';
6
+
7
+ var sendSwipeAnalyticsEvent = function (changeEvent, direction, currentSlide) {
8
+ WORKAREA.analytics.fireCallback('sliderSwipeEvent', {
9
+ domEvent: 'swipe',
10
+ payload: {
11
+ eventAction: 'swipe',
12
+ eventCategory: 'swipe',
13
+ eventTarget: changeEvent.delegateTarget,
14
+ eventDirection: direction,
15
+ eventCurrentSlide: currentSlide
16
+ }
17
+ });
18
+ },
19
+
20
+ swipeAnalyticsHandler = function(event, slider, direction) {
21
+ // Using one here allows each slide to be bound to the event only the first time the slide changes
22
+ // rather than continuing to be bound for later changes resulting in resending the analytics event
23
+ // multiple times as the slides keep changing
24
+ $(event.currentTarget).one('afterChange', function(changeEvent, slick, currentSlide) {
25
+ sendSwipeAnalyticsEvent(changeEvent, direction, currentSlide);
26
+ });
27
+ },
28
+
29
+ sendAnalytics = function(analytics) {
30
+ WORKAREA.analytics.fireCallback('sliderClickEvent', analytics);
31
+ },
32
+
33
+ setUpAnalyticsData = function(event) {
34
+ var analytics = {
35
+ domEvent: 'click',
36
+ payload: {
37
+ eventCategory: 'click'
38
+ }
39
+ };
40
+
41
+ if (event.data.target === '.slick-current') {
42
+ _.merge(analytics.payload, {
43
+ eventTarget: event.delegateTarget,
44
+ eventCurrentSlide: $(event.currentTarget).data('slickIndex')
45
+ });
46
+ } else {
47
+ // Using one here allows each slide to be bound to the event only the first time the slide changes
48
+ // rather than continuing to be bound for later changes resulting in resending the analytics event
49
+ // multiple times as the slides keep changing
50
+ $(event.delegateTarget).one('afterChange', { eventTarget: event.currentTarget, target: event.data.target }, function(changeEvent, slick, currentSlide) {
51
+ analytics.payload.eventAction = 'dots click';
52
+
53
+ if (changeEvent.data.target === '.slick-slider__nav') {
54
+ analytics.payload.eventAction = 'navigation click';
55
+ analytics.payload.direction = 'left';
56
+
57
+ if ($(changeEvent.data.eventTarget).hasClass('slick-slider__nav--prev')) {
58
+ analytics.payload.direction = 'right';
59
+ }
60
+ }
61
+
62
+ _.merge(analytics.payload, {
63
+ eventTarget: changeEvent.delegateTarget,
64
+ eventClickTarget: changeEvent.data.eventTarget,
65
+ eventCurrentSlide: currentSlide
66
+ });
67
+ });
68
+ }
69
+
70
+ sendAnalytics(analytics);
71
+ },
72
+
73
+ /**
74
+ * @method
75
+ * @name init
76
+ * @memberof WORKAREA.slickSliderAnalytics
77
+ */
78
+ initSliderAnalytics = function ($slider) {
79
+ $slider.on('swipe', swipeAnalyticsHandler)
80
+ .on('click', '.slick-slider__nav', { target: '.slick-slider__nav' }, setUpAnalyticsData)
81
+ .on('click', '.slick-slider__dots button', { target: '.slick-slider__dots button' }, setUpAnalyticsData)
82
+ .on('click', '.slick-current', { target: '.slick-current' }, setUpAnalyticsData);
83
+ };
84
+
85
+ return {
86
+ initSliderAnalytics: initSliderAnalytics
87
+ };
88
+ }()));
@@ -0,0 +1,5 @@
1
+ %Q{
2
+ <button type="button" class="slick-slider__nav slick-slider__nav--next">
3
+ #{ inline_svg("workarea/storefront/icons/arrow_right.svg", class: 'slick-slider__nav-icon slick-slider__nav-icon--right', title: I18n.t('workarea.storefront.slick_slider.next')) }
4
+ </button>
5
+ }
@@ -0,0 +1,5 @@
1
+ %Q{
2
+ <button type="button" class="slick-slider__nav slick-slider__nav--prev">
3
+ #{ inline_svg("workarea/storefront/icons/arrow_left.svg", class: 'slick-slider__nav-icon slick-slider__nav-icon--left', title: I18n.t('workarea.storefront.slick_slider.previous')) }
4
+ </button>
5
+ }
@@ -0,0 +1,132 @@
1
+ /*------------------------------------*\
2
+ #SLICK-SLIDER
3
+ \*------------------------------------*/
4
+
5
+ $slick-slider-elements: (
6
+ slick-list,
7
+ slick-slider__nav,
8
+ slick-slider__dots
9
+ ) !default;
10
+
11
+ $slick-slider-dots-width: $font-size !default;
12
+ $slick-slider-dots-color: $link-color !default;
13
+ $slick-slider-dots-bg-color: $background-color !default;
14
+ $slick-slider-dots-border-width: 2px !default;
15
+ $slick-slider-dots-spacing: 2 * $spacing-unit !default;
16
+
17
+ $slick-slider-nav-color: $font-color !default;
18
+ $slick-slider-nav-bg-color: $transparent !default;
19
+ $slick-slider-arrow-size: 24px !default;
20
+ $slick-slider-arrows-offset: 0 !default;
21
+
22
+ $slick-slider-active-color: $slick-slider-dots-color !default;
23
+
24
+ .slick-slider {}
25
+
26
+ .slick-slider--waiting-for-images {
27
+ opacity: 0;
28
+ }
29
+
30
+ .slick-slider--images-loaded {
31
+ opacity: 1;
32
+ transition: opacity 0.15s ease-in;
33
+ }
34
+
35
+ .slick-slider__image-wrapper {}
36
+
37
+ .slick-slider__image {}
38
+
39
+ .slick-slider__nav {
40
+ @extend %button-reset;
41
+ @include center('vertical');
42
+ z-index: index($slick-slider-elements, slick-slider__nav);
43
+ background: $slick-slider-nav-bg-color;
44
+ cursor: pointer;
45
+ }
46
+
47
+ .slick-slider__nav--prev {
48
+ left: $slick-slider-arrows-offset;
49
+
50
+ .slick-vertical & {
51
+ top: $slick-slider-arrows-offset;
52
+ right: 50%;
53
+ left: auto;
54
+ transform: translateX(50%) rotate(90deg);
55
+ }
56
+ }
57
+
58
+ .slick-slider__nav--next {
59
+ right: $slick-slider-arrows-offset;
60
+
61
+ .slick-vertical & {
62
+ top: auto;
63
+ right: 50%;
64
+ bottom: $slick-slider-arrows-offset;
65
+ transform: translateX(50%) rotate(90deg);
66
+ }
67
+ }
68
+
69
+ .slick-slider__nav-icon {
70
+ width: $slick-slider-arrow-size;
71
+ height: $slick-slider-arrow-size;
72
+ fill: $slick-slider-nav-color;
73
+ }
74
+
75
+ .slick-slider__nav-icon--left {}
76
+ .slick-slider__nav-icon--right { background-image: image-url('workarea/storefront/icons/arrow_right.svg'); }
77
+
78
+
79
+ .slick-slider__dots {
80
+ @extend %inline-list;
81
+ z-index: index($slick-slider-elements, slick-slider__dots);
82
+ text-align: center;
83
+
84
+ .slick-vertical & {
85
+ @include center($to: vertical);
86
+ left: -100%;
87
+ }
88
+
89
+ li {
90
+ margin: $slick-slider-dots-spacing;
91
+
92
+ .slick-vertical & {
93
+ display: block;
94
+ }
95
+ }
96
+
97
+ button {
98
+ display: block;
99
+ padding: 0;
100
+ width: $slick-slider-dots-width;
101
+ height: $slick-slider-dots-width;
102
+ font-size: 0;
103
+ background: $slick-slider-dots-bg-color;
104
+ border: $slick-slider-dots-border-width solid $slick-slider-dots-color;
105
+ border-radius: 50%;
106
+ cursor: pointer;
107
+ outline: 0;
108
+
109
+ &:hover,
110
+ &:focus {
111
+ outline: 0;
112
+ }
113
+ }
114
+ }
115
+
116
+
117
+ /*------------------------------------*\
118
+ #SLICK-LIST
119
+ \*------------------------------------*/
120
+
121
+ .slick-list { z-index: index($slick-slider-elements, slick-list); }
122
+
123
+
124
+ /*------------------------------------*\
125
+ #SLICK-ACTIVE
126
+ \*------------------------------------*/
127
+
128
+ .slick-active {
129
+ button {
130
+ background: $slick-slider-active-color;
131
+ }
132
+ }
@@ -0,0 +1,57 @@
1
+ module Workarea
2
+ module Storefront
3
+ module SliderHelper
4
+ def style_guide_slider_options
5
+ {
6
+ options: {
7
+ slidesToShow: 1,
8
+ slidesToScroll: 1,
9
+ autoplay: true,
10
+ mobileFirst: true,
11
+ responsive: [
12
+ {
13
+ breakpoint: Workarea.config.storefront_break_points[:medium] - 1,
14
+ settings: {
15
+ arrows: false,
16
+ dots: true,
17
+ slidesToShow: 2,
18
+ slidesToScroll: 2
19
+ }
20
+ },
21
+ {
22
+ breakpoint: Workarea.config.storefront_break_points[:wide] - 1,
23
+ settings: {
24
+ arrows: false,
25
+ dots: true,
26
+ slidesToShow: 4,
27
+ slidesToScroll: 4
28
+ }
29
+ }
30
+ ]
31
+ }
32
+ }.to_json
33
+ end
34
+
35
+ def style_guide_autoplay_stop_options
36
+ {
37
+ options: {
38
+ autoplay: true,
39
+ autoplaySpeed: 2000,
40
+ pauseOnHover: false
41
+ },
42
+ stopOnInteraction: true
43
+ }.to_json
44
+ end
45
+
46
+ def style_guide_slider_wait_for_images
47
+ {
48
+ options: {
49
+ slidesToShow: 1,
50
+ slidesToScroll: 1
51
+ },
52
+ waitForImages: true
53
+ }.to_json
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,48 @@
1
+ #slick-slider.style-guide__subsection
2
+
3
+ %h3= link_to_style_guide('components', 'slick_slider')
4
+
5
+ %p Displays a set of images as a slider
6
+ %p
7
+ Use
8
+ = link_to 'Ken Wheeler\'s Slick', 'http://kenwheeler.github.io/slick/'
9
+ to see additional options
10
+
11
+ %p Default Slider Options:
12
+
13
+ .style-guide__example-block
14
+
15
+ .slick-slider{ data: { slick_slider: '' } }
16
+
17
+ - (1..4).each do |i|
18
+ .slick-slider__image-wrapper= image_tag('workarea/storefront/style_guide_light_banner.png', alt: "Image #{i}", class: 'slick-slider__image')
19
+
20
+
21
+ %p Custom Slider Options added inside of helper:
22
+
23
+ .style-guide__example-block
24
+
25
+ .slick-slider{ data: { slick_slider: style_guide_slider_options } }
26
+
27
+ - (1..8).each do |i|
28
+ .slick-slider__image-wrapper= image_tag('workarea/storefront/style_guide_product.jpg', alt: "Image #{i}", class: 'slick-slider__image')
29
+
30
+
31
+ %p Slider Options with Stop Autoplay on Interaction (click or slide):
32
+
33
+ .style-guide__example-block
34
+
35
+ .slick-slider{ data: { slick_slider: style_guide_autoplay_stop_options } }
36
+
37
+ - (1..4).each do |i|
38
+ .slick-slider__image-wrapper= image_tag('workarea/storefront/style_guide_light_banner.png', alt: "Image #{i}", class: 'slick-slider__image')
39
+
40
+
41
+ %p Custom Slider That Waits for Images
42
+
43
+ .style-guide__example-block
44
+
45
+ .slick-slider{ data: { slick_slider: style_guide_slider_wait_for_images } }
46
+
47
+ - (1..4).each do |i|
48
+ .slick-slider__image-wrapper= image_tag('workarea/storefront/style_guide_light_banner.png', alt: "Image #{i}", class: 'slick-slider__image')
data/bin/rails ADDED
@@ -0,0 +1,18 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails gems
3
+ # installed from the root of your application.
4
+
5
+ ENGINE_ROOT = File.expand_path('../..', __FILE__)
6
+ ENGINE_PATH = File.expand_path('../../lib/slick_slider/engine', __FILE__)
7
+
8
+ # Set up gems listed in the Gemfile.
9
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
10
+ require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
11
+
12
+ require "action_controller/railtie"
13
+ require "action_view/railtie"
14
+ require "action_mailer/railtie"
15
+ require "rails/test_unit/railtie"
16
+ require "sprockets/railtie"
17
+
18
+ require 'rails/engine/commands'
@@ -0,0 +1,33 @@
1
+ module Workarea
2
+ Plugin.append_javascripts(
3
+ 'storefront.templates',
4
+ 'workarea/storefront/slick_slider/templates/slick_slider_nav_prev',
5
+ 'workarea/storefront/slick_slider/templates/slick_slider_nav_next'
6
+ )
7
+
8
+ Plugin.append_javascripts(
9
+ 'storefront.config',
10
+ 'workarea/storefront/slick_slider/config'
11
+ )
12
+
13
+ Plugin.append_javascripts(
14
+ 'storefront.dependencies',
15
+ 'jquery.slick'
16
+ )
17
+
18
+ Plugin.append_javascripts(
19
+ 'storefront.modules',
20
+ 'workarea/storefront/slick_slider/modules/slick_slider',
21
+ 'workarea/storefront/slick_slider/modules/slick_slider_analytics'
22
+ )
23
+
24
+ Plugin.append_stylesheets(
25
+ 'storefront.dependencies',
26
+ 'slick'
27
+ )
28
+
29
+ Plugin.append_stylesheets(
30
+ 'storefront.components',
31
+ 'workarea/storefront/slick_slider/components/slick_slider'
32
+ )
33
+ end
@@ -0,0 +1,6 @@
1
+ en:
2
+ workarea:
3
+ storefront:
4
+ slick_slider:
5
+ previous: Previous
6
+ next: Next
@@ -0,0 +1,12 @@
1
+ module Workarea
2
+ module SlickSlider
3
+ class Engine < ::Rails::Engine
4
+ include Workarea::Plugin
5
+ isolate_namespace Workarea::SlickSlider
6
+
7
+ config.to_prepare do
8
+ Storefront::ApplicationController.helper(Storefront::SliderHelper)
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,5 @@
1
+ module Workarea
2
+ module SlickSlider
3
+ VERSION = "1.0.2"
4
+ end
5
+ end
@@ -0,0 +1,13 @@
1
+ require 'workarea'
2
+ require 'workarea/storefront'
3
+ require 'workarea/admin'
4
+
5
+ require 'workarea/slick_slider/engine'
6
+ require 'workarea/slick_slider/version'
7
+
8
+ require 'jquery-slick-rails'
9
+
10
+ module Workarea
11
+ module SlickSlider
12
+ end
13
+ end
data/script/admin_ci ADDED
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env bash
2
+
3
+ gem install bundler
4
+ bundle update
5
+
6
+ CI_GEM_PATH="$(bundle show workarea-ci)"
7
+ . ${CI_GEM_PATH}/exe/workarea-set-ci-env
8
+
9
+ bin/rails app:workarea:test:admin
data/script/ci ADDED
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env bash
2
+
3
+ gem install bundler
4
+ bundle update
5
+
6
+ CI_GEM_PATH="$(bundle show workarea-ci)"
7
+ . ${CI_GEM_PATH}/exe/workarea-set-ci-env
8
+
9
+ bundle exec workarea-lint
10
+ bundle exec workarea-audit
11
+ bin/rails test test/**/*_test.rb
data/script/core_ci ADDED
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env bash
2
+
3
+ gem install bundler
4
+ bundle update
5
+
6
+ CI_GEM_PATH="$(bundle show workarea-ci)"
7
+ . ${CI_GEM_PATH}/exe/workarea-set-ci-env
8
+
9
+ bin/rails app:workarea:test:core
data/script/plugins_ci ADDED
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env bash
2
+
3
+ gem install bundler
4
+ bundle update
5
+
6
+ CI_GEM_PATH="$(bundle show workarea-ci)"
7
+ . ${CI_GEM_PATH}/exe/workarea-set-ci-env
8
+
9
+ bin/rails app:workarea:test:plugins
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env bash
2
+
3
+ gem install bundler
4
+ bundle update
5
+
6
+ CI_GEM_PATH="$(bundle show workarea-ci)"
7
+ . ${CI_GEM_PATH}/exe/workarea-set-ci-env
8
+
9
+ bin/rails app:workarea:test:storefront
@@ -0,0 +1,6 @@
1
+ # Add your own tasks in files placed in lib/tasks ending in .rake,
2
+ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3
+
4
+ require_relative 'config/application'
5
+
6
+ Rails.application.load_tasks
@@ -0,0 +1,4 @@
1
+
2
+ //= link_tree ../images
3
+ //= link_directory ../javascripts .js
4
+ //= link_directory ../stylesheets .css
File without changes
@@ -0,0 +1,13 @@
1
+ // This is a manifest file that'll be compiled into application.js, which will include all the files
2
+ // listed below.
3
+ //
4
+ // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
5
+ // or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
6
+ //
7
+ // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
8
+ // compiled file. JavaScript code in this file should be added after the last require_* statement.
9
+ //
10
+ // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
11
+ // about supported directives.
12
+ //
13
+ //= require_tree .
@@ -0,0 +1,15 @@
1
+ /*
2
+ * This is a manifest file that'll be compiled into application.css, which will include all the files
3
+ * listed below.
4
+ *
5
+ * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
6
+ * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
7
+ *
8
+ * You're free to add application-wide styles to this file and they'll appear at the bottom of the
9
+ * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
10
+ * files in this directory. Styles in this file should be added after the last require_* statement.
11
+ * It is generally better to create a new file per style scope.
12
+ *
13
+ *= require_tree .
14
+ *= require_self
15
+ */
@@ -0,0 +1,3 @@
1
+ class ApplicationController < ActionController::Base
2
+ protect_from_forgery with: :exception
3
+ end
File without changes
@@ -0,0 +1,2 @@
1
+ module ApplicationHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ class ApplicationJob < ActiveJob::Base
2
+ end
@@ -0,0 +1,4 @@
1
+ class ApplicationMailer < ActionMailer::Base
2
+ default from: 'from@example.com'
3
+ layout 'mailer'
4
+ end
File without changes
@@ -0,0 +1,14 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Dummy</title>
5
+ <%= csrf_meta_tags %>
6
+
7
+ <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
8
+ <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
9
+ </head>
10
+
11
+ <body>
12
+ <%= yield %>
13
+ </body>
14
+ </html>