beyond_canvas 0.22.0.pre → 0.23.0.pre
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.
- checksums.yaml +4 -4
- data/app/assets/images/icons/adblocker.svg +5 -0
- data/app/assets/images/icons/checkbox_checked.svg +1 -1
- data/app/assets/images/icons/checkbox_unchecked.svg +1 -1
- data/app/assets/images/icons/external_link.svg +1 -0
- data/app/assets/images/icons/toggle.svg +1 -0
- data/app/assets/images/icons/toggle_checked.svg +3 -0
- data/app/assets/images/icons/toggle_unchecked.svg +3 -0
- data/app/assets/javascripts/beyond_canvas/base.js +77 -31
- data/app/assets/stylesheets/beyond_canvas/base.scss +19 -18
- data/app/assets/stylesheets/beyond_canvas/components/_action_bar.scss +11 -6
- data/app/assets/stylesheets/beyond_canvas/components/_breadcrumbs.scss +5 -5
- data/app/assets/stylesheets/beyond_canvas/components/_buttons.scss +45 -95
- data/app/assets/stylesheets/beyond_canvas/components/_cards.scss +20 -12
- data/app/assets/stylesheets/beyond_canvas/components/_collapse.scss +6 -3
- data/app/assets/stylesheets/beyond_canvas/components/_flash.scss +11 -11
- data/app/assets/stylesheets/beyond_canvas/components/_forms.scss +2 -2
- data/app/assets/stylesheets/beyond_canvas/components/_inputs.scss +182 -40
- data/app/assets/stylesheets/beyond_canvas/components/_links.scss +51 -3
- data/app/assets/stylesheets/beyond_canvas/components/_main.scss +3 -3
- data/app/assets/stylesheets/beyond_canvas/components/_menu.scss +13 -0
- data/app/assets/stylesheets/beyond_canvas/components/_modals.scss +48 -18
- data/app/assets/stylesheets/beyond_canvas/components/_notices.scss +11 -11
- data/app/assets/stylesheets/beyond_canvas/components/_scrollbox.scss +5 -4
- data/app/assets/stylesheets/beyond_canvas/components/_select2.scss +13 -13
- data/app/assets/stylesheets/beyond_canvas/components/_statuses.scss +9 -8
- data/app/assets/stylesheets/beyond_canvas/components/_step_list.scss +67 -0
- data/app/assets/stylesheets/beyond_canvas/components/_tables.scss +10 -5
- data/app/assets/stylesheets/beyond_canvas/components/_titles.scss +1 -1
- data/app/assets/stylesheets/beyond_canvas/mailer.scss +2 -1
- data/app/assets/stylesheets/beyond_canvas/settings/_base_variables.scss +241 -0
- data/app/assets/stylesheets/beyond_canvas/settings/{_variables.scss → _constant_variables.scss} +30 -64
- data/app/assets/stylesheets/beyond_canvas/settings/_custom_variables.scss +233 -0
- data/app/assets/stylesheets/beyond_canvas/settings/_typography.scss +7 -3
- data/app/assets/stylesheets/beyond_canvas/utilities/_mixins.scss +30 -3
- data/app/controllers/beyond_canvas/authentications_controller.rb +18 -2
- data/app/controllers/beyond_canvas/system_controller.rb +3 -1
- data/app/controllers/beyond_canvas/webhooks_controller.rb +49 -0
- data/app/controllers/concerns/beyond_canvas/add_blocker_check.rb +17 -0
- data/app/controllers/concerns/beyond_canvas/custom_styles.rb +54 -0
- data/app/controllers/concerns/beyond_canvas/locale_management.rb +31 -8
- data/app/controllers/concerns/beyond_canvas/request_validation.rb +6 -0
- data/app/form_builders/beyond_canvas/form_builder.rb +62 -49
- data/app/helpers/beyond_canvas/application_helper.rb +27 -4
- data/app/helpers/beyond_canvas/form_tag_helper.rb +130 -0
- data/app/javascript/beyond_canvas/base.js +0 -1
- data/app/javascript/beyond_canvas/initializers/buttons.js +10 -2
- data/app/javascript/beyond_canvas/initializers/flash.js +32 -10
- data/app/javascript/beyond_canvas/initializers/inputs.js +9 -4
- data/app/javascript/beyond_canvas/initializers/modals.js +46 -10
- data/app/views/beyond_canvas/mailer/_header.html.erb +2 -2
- data/app/views/beyond_canvas/shared/_flash.html.erb +14 -10
- data/app/views/beyond_canvas/shared/_head.html.erb +4 -0
- data/app/views/beyond_canvas/shared/_locales.html.erb +1 -1
- data/app/views/layouts/beyond_canvas/application.html.erb +0 -1
- data/app/views/layouts/beyond_canvas/public.html.erb +1 -1
- data/config/initializers/beyond_canvas/constants.rb +13 -0
- data/config/initializers/beyond_canvas/session_store.rb +8 -0
- data/lib/beyond_canvas/configuration.rb +9 -1
- data/lib/beyond_canvas/engine.rb +7 -0
- data/lib/beyond_canvas/rails/routes.rb +27 -7
- data/lib/beyond_canvas/version.rb +1 -1
- data/lib/beyond_canvas/webhook_event_registration.rb +19 -0
- data/lib/beyond_canvas.rb +6 -4
- data/lib/generators/beyond_canvas/install/install_generator.rb +6 -0
- data/lib/generators/beyond_canvas/install/templates/beyond_canvas.rb.erb +38 -1
- data/lib/generators/beyond_canvas/model/model_generator.rb +3 -0
- data/lib/generators/beyond_canvas/webhook/templates/webhooks_controller.rb +22 -0
- data/lib/generators/beyond_canvas/webhook/webhook_generator.rb +15 -0
- data/lib/models/concerns/authentication.rb +10 -3
- data/lib/models/concerns/utils.rb +1 -1
- data/lib/models/concerns/webhook.rb +123 -0
- data/lib/models/shop.rb +1 -0
- metadata +68 -39
- data/app/assets/stylesheets/beyond_canvas/components/_comments.scss +0 -6
- data/app/views/beyond_canvas/shared/_modal.html.erb +0 -6
- data/config/routes.rb +0 -12
@@ -23,13 +23,15 @@ const BUTTON_SELECTORS = '[class^="button"]';
|
|
23
23
|
});
|
24
24
|
};
|
25
25
|
|
26
|
-
$(document).on('confirm:complete', function ()
|
26
|
+
$(document).on('confirm:complete', function () {
|
27
27
|
$.restoreActionElements();
|
28
28
|
});
|
29
29
|
|
30
|
-
$(document).on('click', BUTTON_SELECTORS, function () {
|
30
|
+
$(document).on('click', BUTTON_SELECTORS, function (e) {
|
31
31
|
var button = $(this);
|
32
32
|
|
33
|
+
if(e.target.attributes.getNamedItem('target')?.value === '_blank') return;
|
34
|
+
|
33
35
|
$.disableActionElements();
|
34
36
|
|
35
37
|
if (!button.hasClass('button--no-spinner')) {
|
@@ -38,10 +40,15 @@ const BUTTON_SELECTORS = '[class^="button"]';
|
|
38
40
|
});
|
39
41
|
|
40
42
|
$(document).on('ready page:load turbolinks:load', onDOMReady);
|
43
|
+
|
44
|
+
$(document).on('beforeunload turbolinks:before-visit', function () {
|
45
|
+
$.restoreActionElements();
|
46
|
+
});
|
41
47
|
})(jQuery);
|
42
48
|
|
43
49
|
$.extend({
|
44
50
|
restoreActionElements: function () {
|
51
|
+
setTimeout(function () {
|
45
52
|
// Hide spinners
|
46
53
|
$(BUTTON_SELECTORS).each(function (_, button) {
|
47
54
|
setTimeout(function () {
|
@@ -56,6 +63,7 @@ $.extend({
|
|
56
63
|
$('a, input[type="submit"], input[type="button"], input[type="reset"], button').each(function () {
|
57
64
|
$(this).removeClass('actions--disabled');
|
58
65
|
});
|
66
|
+
}, 100);
|
59
67
|
},
|
60
68
|
disableActionElements: function () {
|
61
69
|
$('a, input[type="submit"], input[type="button"], input[type="reset"], button').each(function () {
|
@@ -10,17 +10,39 @@
|
|
10
10
|
};
|
11
11
|
|
12
12
|
$(document).on('click', '.flash__close', function () {
|
13
|
-
closeAlert();
|
13
|
+
$.closeAlert();
|
14
14
|
});
|
15
15
|
|
16
|
-
$(document).on('ready page:load turbolinks:load', onDOMReady);
|
16
|
+
$(document).on('ready page:load turbolinks:load bc.flash.shown', onDOMReady);
|
17
17
|
})(jQuery);
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
19
|
+
$.extend({
|
20
|
+
showFlash: function(status, message) {
|
21
|
+
const flash = `
|
22
|
+
<div class="flash">
|
23
|
+
<div class="flash__icon flash__icon--${status}">
|
24
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M12 2c5.514 0 10 4.486 10 10s-4.486 10-10 10-10-4.486-10-10 4.486-10 10-10zm0-2c-6.627 0-12 5.373-12 12s5.373 12 12 12 12-5.373 12-12-5.373-12-12-12zm6 16.538l-4.592-4.548 4.546-4.587-1.416-1.403-4.545 4.589-4.588-4.543-1.405 1.405 4.593 4.552-4.547 4.592 1.405 1.405 4.555-4.596 4.591 4.55 1.403-1.416z"></path></svg>
|
25
|
+
</div>
|
26
|
+
<div class="flash__message">
|
27
|
+
${message}
|
28
|
+
</div>
|
29
|
+
<div class="flash__close">
|
30
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path d="M24 20.188l-8.315-8.209 8.2-8.282-3.697-3.697-8.212 8.318-8.31-8.203-3.666 3.666 8.321 8.24-8.206 8.313 3.666 3.666 8.237-8.318 8.285 8.203z"></path></svg>
|
31
|
+
</div>
|
32
|
+
</div>`;
|
33
|
+
|
34
|
+
$(document).trigger('bc.flash.show');
|
35
|
+
$('#flash').html(flash);
|
36
|
+
$(document).trigger('bc.flash.shown');
|
37
|
+
},
|
38
|
+
closeAlert: function() {
|
39
|
+
$(document).trigger('bc.flash.hide');
|
40
|
+
$('.flash')
|
41
|
+
.removeClass('flash--shown')
|
42
|
+
.delay(700)
|
43
|
+
.queue(function () {
|
44
|
+
$(this).remove();
|
45
|
+
});
|
46
|
+
$(document).trigger('bc.flash.hidden');
|
47
|
+
}
|
48
|
+
});
|
@@ -1,15 +1,15 @@
|
|
1
1
|
(function ($) {
|
2
2
|
const onDOMReady = function () {
|
3
3
|
$('input[type="file"]').each(function () {
|
4
|
-
|
4
|
+
const $input = $(this),
|
5
5
|
$label = $(`.input__file__text.${$input.attr('id')}`),
|
6
6
|
labelVal = $label.html();
|
7
7
|
|
8
8
|
$input.on('change', function (e) {
|
9
|
-
|
9
|
+
let fileName = '';
|
10
10
|
|
11
11
|
if (this.files && this.files.length > 1)
|
12
|
-
fileName = (this.getAttribute('data-multiple-caption') || '').replace(
|
12
|
+
fileName = (this.getAttribute('data-multiple-caption') || '{count} files selected').replace(
|
13
13
|
'{count}',
|
14
14
|
this.files.length
|
15
15
|
);
|
@@ -33,5 +33,10 @@
|
|
33
33
|
});
|
34
34
|
};
|
35
35
|
|
36
|
-
$(document).on('ready page:load turbolinks:load',
|
36
|
+
$(document).on('ready page:load turbolinks:load', () => {
|
37
|
+
const observer = new MutationObserver(() => onDOMReady());
|
38
|
+
|
39
|
+
onDOMReady();
|
40
|
+
observer.observe(document.body, { childList: true, subtree: true });
|
41
|
+
});
|
37
42
|
})(jQuery);
|
@@ -1,14 +1,50 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
$('
|
4
|
-
|
1
|
+
(function ($) {
|
2
|
+
const onDOMReady = function () {
|
3
|
+
$('.modal').each(function () {
|
4
|
+
$(this).hide().css('visibility', 'visible');
|
5
|
+
});
|
6
|
+
};
|
7
|
+
|
8
|
+
$(document).on('click', '[data-toggle="modal"]', function (e) {
|
9
|
+
e.preventDefault();
|
10
|
+
|
11
|
+
const dataTarget = $(this).attr('data-target');
|
12
|
+
|
5
13
|
$.restoreActionElements();
|
6
|
-
$(
|
14
|
+
$(dataTarget).showModal();
|
15
|
+
});
|
16
|
+
|
17
|
+
$(document).on('click', '[data-dismiss="modal"]', function (e) {
|
18
|
+
e.preventDefault();
|
19
|
+
|
20
|
+
const dataTarget = $(this).closest('.modal');
|
21
|
+
|
22
|
+
$.restoreActionElements();
|
23
|
+
$(dataTarget).hideModal();
|
24
|
+
});
|
25
|
+
|
26
|
+
$(document).on('ready page:load turbolinks:load', onDOMReady);
|
27
|
+
})(jQuery);
|
28
|
+
|
29
|
+
$.fn.extend({
|
30
|
+
showModal: function () {
|
31
|
+
const modal = $(this);
|
32
|
+
|
33
|
+
modal.trigger('bc.modal.show');
|
34
|
+
|
35
|
+
$.restoreActionElements();
|
36
|
+
modal.css('display', 'flex');
|
37
|
+
|
38
|
+
modal.trigger('bc.modal.shown');
|
7
39
|
},
|
8
|
-
|
9
|
-
$(
|
10
|
-
|
40
|
+
hideModal: function () {
|
41
|
+
const modal = $(this);
|
42
|
+
|
43
|
+
modal.trigger('bc.modal.hide');
|
44
|
+
|
11
45
|
$.restoreActionElements();
|
12
|
-
|
13
|
-
|
46
|
+
modal.hide();
|
47
|
+
|
48
|
+
modal.trigger('bc.modal.hidden');
|
49
|
+
},
|
14
50
|
});
|
@@ -1,8 +1,8 @@
|
|
1
1
|
<!-- Email Header : BEGIN -->
|
2
2
|
<tr>
|
3
3
|
<td style="padding: 20px 0; text-align: center">
|
4
|
-
<% if BeyondCanvas.configuration.
|
5
|
-
<%= image_tag BeyondCanvas.configuration.
|
4
|
+
<% if BeyondCanvas.configuration.email_logo.present? %>
|
5
|
+
<%= image_tag BeyondCanvas.configuration.email_logo, width: "200", height: "50", border: "0", style: "height: auto; font-family: sans-serif; font-size: 15px; line-height: 15px; color: #555555;" %>
|
6
6
|
<% end %>
|
7
7
|
</td>
|
8
8
|
</tr>
|
@@ -2,21 +2,25 @@
|
|
2
2
|
|
3
3
|
<% flash.each do |key, value| %>
|
4
4
|
|
5
|
-
|
5
|
+
<% unless value.blank? %>
|
6
6
|
|
7
|
-
<div class="
|
8
|
-
<%= get_flash_icon(key) %>
|
9
|
-
</div>
|
7
|
+
<div class="flash">
|
10
8
|
|
11
|
-
|
12
|
-
|
13
|
-
|
9
|
+
<div class="flash__icon flash__icon--<%= key %>">
|
10
|
+
<%= get_flash_icon(key) %>
|
11
|
+
</div>
|
12
|
+
|
13
|
+
<div class="flash__message">
|
14
|
+
<%= value %>
|
15
|
+
</div>
|
16
|
+
|
17
|
+
<div class="flash__close">
|
18
|
+
<%= inline_svg_tag 'icons/flash_close.svg' %>
|
19
|
+
</div>
|
14
20
|
|
15
|
-
<div class="flash__close">
|
16
|
-
<%= inline_svg_tag 'icons/flash_close.svg' %>
|
17
21
|
</div>
|
18
22
|
|
19
|
-
|
23
|
+
<% end %>
|
20
24
|
|
21
25
|
<% end %>
|
22
26
|
|
@@ -16,6 +16,10 @@
|
|
16
16
|
<% end %>
|
17
17
|
<% end %>
|
18
18
|
|
19
|
+
<% if BeyondCanvas.configuration.cockpit_app %>
|
20
|
+
<%= stylesheet_link_tag cookies[:custom_styles_url] %>
|
21
|
+
<% end %>
|
22
|
+
|
19
23
|
<% BeyondCanvas.configuration.javascripts.each do |path| %>
|
20
24
|
<% if BeyondCanvas.configuration.skip_webpacker %>
|
21
25
|
<%= javascript_include_tag path %>
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<% if show_locale_switch? && !is_cockpit_app? %>
|
2
|
-
<%= form_for :system, url:
|
2
|
+
<%= form_for :system, url: update_locale_path, method: :put do |f| %>
|
3
3
|
<%= f.select :locale, I18n.available_locales.collect { |l| [translate_locale(l), l] },
|
4
4
|
{ selected: cookies[:locale] },
|
5
5
|
class: 'select--locale',
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
if BeyondCanvas.configuration.cockpit_app == true && !Rails.env.development?
|
4
|
+
COOKIES_ATTRIBUTES = {
|
5
|
+
expires: 1.year.from_now,
|
6
|
+
same_site: :none,
|
7
|
+
secure: true
|
8
|
+
}.freeze
|
9
|
+
else
|
10
|
+
COOKIES_ATTRIBUTES = {
|
11
|
+
expires: 1.year.from_now
|
12
|
+
}.freeze
|
13
|
+
end
|
@@ -3,26 +3,30 @@
|
|
3
3
|
module BeyondCanvas
|
4
4
|
class Configuration # :nodoc:
|
5
5
|
attr_accessor :site_title, :site_logo, :favicon, :skip_webpacker, :encryption_key, :namespace, :cockpit_app,
|
6
|
-
:open_app_url, :preinstalled, :debug_mode
|
6
|
+
:open_app_url, :preinstalled, :debug_mode, :webhook_site_url, :email_logo, :client_credentials
|
7
7
|
|
8
8
|
include AssetRegistration
|
9
9
|
include MenuItemRegistration
|
10
|
+
include WebhookEventRegistration
|
10
11
|
|
11
12
|
def initialize
|
12
13
|
@cockpit_app = false
|
13
14
|
@debug_mode = false
|
15
|
+
@client_credentials = false
|
14
16
|
@encryption_key = nil
|
15
17
|
@favicon = nil
|
16
18
|
@namespace = '/'
|
17
19
|
@open_app_url = nil
|
18
20
|
@preinstalled = false
|
19
21
|
@site_logo = nil
|
22
|
+
@email_logo = nil
|
20
23
|
@site_title = ::Rails.application.class.name.split('::').first.humanize
|
21
24
|
@skip_webpacker = false
|
22
25
|
end
|
23
26
|
|
24
27
|
def setup!
|
25
28
|
register_default_assets
|
29
|
+
register_default_webhook_events
|
26
30
|
end
|
27
31
|
|
28
32
|
private
|
@@ -31,5 +35,9 @@ module BeyondCanvas
|
|
31
35
|
register_stylesheet 'beyond_canvas.css', media: 'screen'
|
32
36
|
register_javascript 'beyond_canvas.js'
|
33
37
|
end
|
38
|
+
|
39
|
+
def register_default_webhook_events
|
40
|
+
register_webhook_event('app.uninstalled')
|
41
|
+
end
|
34
42
|
end
|
35
43
|
end
|
data/lib/beyond_canvas/engine.rb
CHANGED
@@ -21,6 +21,7 @@ module BeyondCanvas
|
|
21
21
|
ActiveSupport.on_load :action_controller do
|
22
22
|
include ::BeyondCanvas::LocaleManagement
|
23
23
|
include ::BeyondCanvas::RequestValidation
|
24
|
+
include ::BeyondCanvas::CustomStyles
|
24
25
|
include ::BeyondCanvas::StatusCodes
|
25
26
|
include ::BeyondCanvas::AuthenticationsHelper
|
26
27
|
include ::BeyondCanvas::DebugHelper
|
@@ -29,5 +30,11 @@ module BeyondCanvas
|
|
29
30
|
::ActionController::Base.helper BeyondCanvas::Engine.helpers
|
30
31
|
end
|
31
32
|
end
|
33
|
+
|
34
|
+
config.after_initialize do
|
35
|
+
ActiveSupport.on_load :action_controller do
|
36
|
+
include ::BeyondCanvas::AddBlockerCheck
|
37
|
+
end
|
38
|
+
end
|
32
39
|
end
|
33
40
|
end
|
@@ -3,18 +3,38 @@
|
|
3
3
|
module ActionDispatch
|
4
4
|
module Routing
|
5
5
|
class Mapper # :nodoc:
|
6
|
-
def beyond_canvas_routes(
|
7
|
-
|
6
|
+
def beyond_canvas_routes(*resources)
|
7
|
+
scope BeyondCanvas.configuration.namespace do
|
8
|
+
put 'locale', to: 'beyond_canvas/system#update_locale', as: :update_locale
|
9
|
+
end
|
10
|
+
|
11
|
+
resources = resources.extract_options!
|
12
|
+
|
13
|
+
beyond_canvas_for_controllers(resources[:controllers] || {})
|
14
|
+
end
|
8
15
|
|
9
|
-
|
16
|
+
protected
|
10
17
|
|
11
|
-
|
18
|
+
def beyond_canvas_for_controllers(controllers)
|
19
|
+
[:authentications, :webhooks].each do |method|
|
20
|
+
controllers.key?(method) ? send("set_#{method}_routes", controllers[method]) : send("set_#{method}_routes")
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def set_webhooks_routes(controller = 'beyond_canvas/webhooks')
|
25
|
+
scope BeyondCanvas.configuration.namespace do
|
26
|
+
resources :shops, only: [] do
|
27
|
+
member do
|
28
|
+
post :beyond_webhook, controller: controller, action: :webhook
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
12
32
|
end
|
13
33
|
|
14
|
-
def
|
34
|
+
def set_authentications_routes(controller = 'beyond_canvas/authentications')
|
15
35
|
scope BeyondCanvas.configuration.namespace do
|
16
|
-
get 'callback', controller:
|
17
|
-
post 'callback', controller:
|
36
|
+
get 'callback', controller: controller, action: :new
|
37
|
+
post 'callback', controller: controller, action: :install
|
18
38
|
end
|
19
39
|
end
|
20
40
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module BeyondCanvas
|
4
|
+
module WebhookEventRegistration # :nodoc:
|
5
|
+
def register_webhook_event(event)
|
6
|
+
event.is_a?(Array) ? webhook_events.merge(event) : webhook_events.add(event)
|
7
|
+
end
|
8
|
+
|
9
|
+
def webhook_events
|
10
|
+
@webhook_events ||= Set.new
|
11
|
+
end
|
12
|
+
|
13
|
+
def clear_webhook_events!
|
14
|
+
webhook_events.clear
|
15
|
+
end
|
16
|
+
|
17
|
+
alias register_webhook_events register_webhook_event
|
18
|
+
end
|
19
|
+
end
|
data/lib/beyond_canvas.rb
CHANGED
@@ -16,10 +16,11 @@ require 'beyond_api'
|
|
16
16
|
require 'attr_encrypted'
|
17
17
|
|
18
18
|
module BeyondCanvas # :nodoc:
|
19
|
-
autoload :AssetRegistration,
|
20
|
-
autoload :Configuration,
|
21
|
-
autoload :MenuItemRegistration,
|
22
|
-
autoload :ParameterSanitizer,
|
19
|
+
autoload :AssetRegistration, 'beyond_canvas/asset_registration'
|
20
|
+
autoload :Configuration, 'beyond_canvas/configuration'
|
21
|
+
autoload :MenuItemRegistration, 'beyond_canvas/menu_item_registration'
|
22
|
+
autoload :ParameterSanitizer, 'beyond_canvas/parameter_sanitizer'
|
23
|
+
autoload :WebhookEventRegistration, 'beyond_canvas/webhook_event_registration'
|
23
24
|
|
24
25
|
module Models # :nodoc:
|
25
26
|
autoload :Shop, 'models/shop'
|
@@ -27,6 +28,7 @@ module BeyondCanvas # :nodoc:
|
|
27
28
|
module Concerns
|
28
29
|
autoload :Authentication, 'models/concerns/authentication'
|
29
30
|
autoload :Utils, 'models/concerns/utils'
|
31
|
+
autoload :Webhook, 'models/concerns/webhook'
|
30
32
|
end
|
31
33
|
end
|
32
34
|
|