beyond_canvas 0.16.2.pre → 0.17.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.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/config/beyond_canvas_manifest.js +1 -0
  3. data/app/assets/images/icons/arrow_right.svg +1 -0
  4. data/app/assets/images/icons/close.svg +1 -0
  5. data/app/assets/images/icons/home.svg +1 -0
  6. data/app/assets/javascripts/beyond_canvas/base.js +120 -246
  7. data/app/assets/stylesheets/beyond_canvas/base.scss +8 -1
  8. data/app/assets/stylesheets/beyond_canvas/components/_action_bar.scss +28 -0
  9. data/app/assets/stylesheets/beyond_canvas/components/_breadcrumbs.scss +29 -0
  10. data/app/assets/stylesheets/beyond_canvas/components/_buttons.scss +1 -1
  11. data/app/assets/stylesheets/beyond_canvas/components/_debug.scss +10 -0
  12. data/app/assets/stylesheets/beyond_canvas/components/_forms.scss +11 -14
  13. data/app/assets/stylesheets/beyond_canvas/components/_main.scss +12 -13
  14. data/app/assets/stylesheets/beyond_canvas/components/_margins.scss +8 -0
  15. data/app/assets/stylesheets/beyond_canvas/components/_menu.scss +40 -0
  16. data/app/assets/stylesheets/beyond_canvas/components/_modals.scss +27 -0
  17. data/app/assets/stylesheets/beyond_canvas/components/_sidebar.scss +53 -0
  18. data/app/assets/stylesheets/beyond_canvas/components/_titles.scss +7 -0
  19. data/app/assets/stylesheets/beyond_canvas/settings/_variables.scss +64 -9
  20. data/app/controllers/beyond_canvas/application_controller.rb +2 -0
  21. data/app/controllers/beyond_canvas/authentications_controller.rb +37 -30
  22. data/app/controllers/concerns/beyond_canvas/authentication.rb +1 -12
  23. data/app/controllers/concerns/beyond_canvas/locale_management.rb +5 -4
  24. data/app/helpers/beyond_canvas/authentications_helper.rb +28 -0
  25. data/app/helpers/beyond_canvas/cockpit_app_helper.rb +17 -0
  26. data/app/helpers/beyond_canvas/debug_helper.rb +9 -0
  27. data/app/helpers/beyond_canvas/locale_switch_helper.rb +5 -1
  28. data/app/javascript/beyond_canvas/base.js +3 -0
  29. data/app/javascript/beyond_canvas/initializers/buttons.js +65 -19
  30. data/app/javascript/beyond_canvas/initializers/flash.js +9 -2
  31. data/app/javascript/beyond_canvas/initializers/inputs.js +4 -1
  32. data/app/javascript/beyond_canvas/initializers/modals.js +14 -0
  33. data/app/views/beyond_canvas/authentications/new.html.erb +19 -10
  34. data/app/views/beyond_canvas/shared/_action_bar.html.erb +15 -0
  35. data/app/views/beyond_canvas/shared/_breadcrumbs.html.erb +14 -0
  36. data/app/views/beyond_canvas/shared/_flash.html.erb +22 -12
  37. data/app/views/beyond_canvas/shared/_locales.html.erb +8 -0
  38. data/app/views/beyond_canvas/shared/_menu.html.erb +31 -0
  39. data/app/views/beyond_canvas/shared/_modal.html.erb +6 -0
  40. data/app/views/beyond_canvas/shared/_sidebar.html.erb +16 -0
  41. data/app/views/layouts/beyond_canvas/application.html.erb +31 -0
  42. data/app/views/layouts/beyond_canvas/public.html.erb +11 -4
  43. data/config/locales/en.yml +5 -0
  44. data/config/routes.rb +5 -4
  45. data/lib/beyond_canvas.rb +12 -12
  46. data/lib/beyond_canvas/configuration.rb +11 -6
  47. data/lib/beyond_canvas/engine.rb +4 -2
  48. data/lib/beyond_canvas/menu_item_registration.rb +19 -0
  49. data/lib/beyond_canvas/parameter_sanitizer.rb +1 -1
  50. data/lib/beyond_canvas/rails/routes.rb +8 -7
  51. data/lib/beyond_canvas/version.rb +1 -1
  52. data/lib/generators/beyond_canvas/controller/controller_generator.rb +1 -2
  53. data/lib/generators/beyond_canvas/controller/templates/controller.erb +2 -19
  54. data/lib/generators/beyond_canvas/custom_menu/custom_menu_generator.rb +13 -0
  55. data/lib/generators/beyond_canvas/custom_menu/templates/beyond_canvas_custom_menu.html.erb +32 -0
  56. data/lib/generators/beyond_canvas/custom_styles/custom_styles_generator.rb +1 -1
  57. data/lib/generators/beyond_canvas/custom_styles/templates/beyond_canvas_custom_styles.scss +55 -9
  58. data/lib/generators/beyond_canvas/install/install_generator.rb +3 -5
  59. data/lib/generators/beyond_canvas/install/templates/beyond_canvas.rb.erb +51 -13
  60. data/lib/generators/beyond_canvas/{auth_model/auth_model_generator.rb → model/model_generator.rb} +4 -5
  61. data/lib/generators/beyond_canvas/{auth_model → model}/templates/migration.erb +2 -4
  62. data/lib/generators/beyond_canvas/{auth_model → model}/templates/model.erb +0 -0
  63. data/lib/generators/beyond_canvas/views/views_generator.rb +4 -6
  64. data/lib/models/concerns/authentication.rb +57 -0
  65. data/lib/models/concerns/utils.rb +79 -0
  66. data/lib/models/shop.rb +12 -0
  67. metadata +69 -30
  68. data/app/controllers/concerns/beyond_canvas/resource_management.rb +0 -33
  69. data/app/javascript/beyond_canvas/initializers/functions.js +0 -41
  70. data/app/views/beyond_canvas/locales/_edit.html.erb +0 -8
  71. data/lib/beyond_canvas/models/authentication.rb +0 -66
  72. data/lib/beyond_canvas/models/shop.rb +0 -28
  73. data/lib/beyond_canvas/models/utils.rb +0 -55
@@ -0,0 +1,6 @@
1
+ <div class="modal__background" id="modal">
2
+ <div class="relative card card--padding">
3
+ <span onClick= "$.closeModal()"><%= inline_svg_tag 'icons/close.svg', class: 'modal__close' %></span>
4
+ <div id="modal__content"></div>
5
+ </div>
6
+ </div>
@@ -0,0 +1,16 @@
1
+ <% if is_cockpit_app? && Rails.env.development? %>
2
+ <div class="sidebar">
3
+ <div class="sidebar__header">
4
+ <div class="sidebar__logo"></div>
5
+ </div>
6
+ <div class="sidebar__item sidebar__item--selected"></div>
7
+ <div class="sidebar__item"></div>
8
+ <div class="sidebar__item"></div>
9
+ <div class="sidebar__item"></div>
10
+ <div class="sidebar__footer">
11
+ <div class="sidebar__icon"></div>
12
+ <div class="sidebar__icon"></div>
13
+ <div class="sidebar__icon"></div>
14
+ </div>
15
+ </div>
16
+ <% end %>
@@ -0,0 +1,31 @@
1
+ <!DOCTYPE html>
2
+
3
+ <html>
4
+ <%= render 'beyond_canvas/shared/head' %>
5
+
6
+ <body class="body--application"<% if is_cockpit_app? && Rails.env.development? %> style="display: flex;"<% end %>>
7
+
8
+ <%= render 'beyond_canvas/shared/sidebar' %>
9
+
10
+ <main class="main <%= params[:controller].gsub(/[\/_]/, "-") %>--<%= params[:action] %>">
11
+
12
+ <%= render 'beyond_canvas/shared/flash' %>
13
+ <%= render 'beyond_canvas/shared/locales' %>
14
+ <%= render 'beyond_canvas/shared/modal' %>
15
+ <%= render 'beyond_canvas/shared/menu' %>
16
+ <%= render 'beyond_canvas/shared/action_bar' %>
17
+
18
+ <div class="main-wrapper<% if action_bar_content? %> main-wrapper--action_bar<% end %>"<% if content_for?(:max_width)%> style="max-width: <%= yield :max_width %>"<% end %>>
19
+
20
+ <%= render 'beyond_canvas/shared/breadcrumbs' %>
21
+
22
+ <%= yield %>
23
+
24
+ <%= debug(params) if debug_mode? %>
25
+
26
+ </div>
27
+
28
+ </main>
29
+
30
+ </body>
31
+ </html>
@@ -4,15 +4,22 @@
4
4
  <%= render 'beyond_canvas/shared/head' %>
5
5
 
6
6
  <body class="body--public">
7
+
7
8
  <main class="main <%= params[:controller].gsub(/[\/_]/, "-") %>--<%= params[:action] %>">
8
- <div id="flash">
9
- <%= render 'beyond_canvas/shared/flash' %>
10
- </div>
11
- <%= render 'beyond_canvas/locales/edit' %>
9
+
10
+ <%= render 'beyond_canvas/shared/flash' %>
11
+ <%= render 'beyond_canvas/shared/locales' %>
12
+
12
13
  <div class="main-wrapper">
14
+
13
15
  <%= render 'beyond_canvas/shared/logo' %>
16
+
14
17
  <%= yield %>
18
+
15
19
  </div>
20
+
21
+ <%= debug(params) if debug_mode? %>
22
+
16
23
  </main>
17
24
  </body>
18
25
  </html>
@@ -1,4 +1,9 @@
1
1
  en:
2
2
  beyond_canvas:
3
3
  authentications:
4
+ new:
5
+ headline: Install %{app_name} in your shop
6
+ body: You are about to install %{app_name} in your shop. For continuing with this process, press the install button below.
7
+ actions:
8
+ install: Install
4
9
  failure: Shop could not be saved
@@ -1,11 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  BeyondCanvas::Engine.routes.draw do
4
- put '/locale', to: 'system#update_locale', as: :update_locale
4
+ put 'locale', to: 'system#update_locale', as: :update_locale
5
5
 
6
- def create_default_routes(resource_name)
7
- resources resource_name, controller: 'authentications', except: :destroy
6
+ def create_default_routes
7
+ get 'callback', to: 'authentications#new'
8
+ post 'callback', to: 'authentications#install'
8
9
  end
9
10
 
10
- create_default_routes(BeyondCanvas.auth_model.pluralize.to_sym) unless BeyondCanvas.use_rails_app_controller
11
+ create_default_routes unless BeyondCanvas.use_rails_app_controller
11
12
  end
@@ -8,30 +8,30 @@ require 'jquery-rails'
8
8
  require 'bourbon'
9
9
  require 'sassc-rails'
10
10
  require 'inline_svg'
11
+ require 'loaf'
11
12
  require 'http/accept'
12
13
  require 'premailer/rails'
13
14
 
14
15
  require 'beyond_api'
15
16
  require 'attr_encrypted'
16
- require 'blind_index'
17
17
 
18
18
  module BeyondCanvas # :nodoc:
19
- autoload :AssetRegistration, 'beyond_canvas/asset_registration'
20
- autoload :Configuration, 'beyond_canvas/configuration'
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'
21
23
 
22
24
  module Models # :nodoc:
23
- autoload :Authentication, 'beyond_canvas/models/authentication'
24
- autoload :Shop, 'beyond_canvas/models/shop'
25
- autoload :Utils, 'beyond_canvas/models/utils'
26
- end
25
+ autoload :Shop, 'models/shop'
27
26
 
28
- autoload :ParameterSanitizer, 'beyond_canvas/parameter_sanitizer'
27
+ module Concerns
28
+ autoload :Authentication, 'models/concerns/authentication'
29
+ autoload :Utils, 'models/concerns/utils'
30
+ end
31
+ end
29
32
 
30
33
  mattr_accessor :use_rails_app_controller
31
- @@use_rails_app_controller = false # rubocop:disable Style/ClassVars
32
-
33
- mattr_accessor :auth_model
34
- @@auth_model = 'shop' # rubocop:disable Style/ClassVars
34
+ @@use_rails_app_controller = false
35
35
 
36
36
  class << self
37
37
  def configuration
@@ -2,18 +2,23 @@
2
2
 
3
3
  module BeyondCanvas
4
4
  class Configuration # :nodoc:
5
- attr_accessor :site_title, :site_logo, :favicon, :skip_webpacker, :encryption_key, :blind_index_key, :namespace
5
+ attr_accessor :site_title, :site_logo, :favicon, :skip_webpacker, :encryption_key, :namespace, :cockpit_app,
6
+ :open_app_url, :preinstalled, :debug_mode
6
7
 
7
8
  include AssetRegistration
9
+ include MenuItemRegistration
8
10
 
9
11
  def initialize
10
- @site_title = ::Rails.application.class.name.split('::').first.humanize
11
- @site_logo = nil
12
- @favicon = nil
13
- @skip_webpacker = false
12
+ @cockpit_app = false
13
+ @debug_mode = false
14
14
  @encryption_key = nil
15
- @blind_index_key = nil
15
+ @favicon = nil
16
16
  @namespace = '/'
17
+ @open_app_url = nil
18
+ @preinstalled = false
19
+ @site_logo = nil
20
+ @site_title = ::Rails.application.class.name.split('::').first.humanize
21
+ @skip_webpacker = false
17
22
  end
18
23
 
19
24
  def setup!
@@ -13,15 +13,17 @@ module BeyondCanvas
13
13
  BeyondCanvas.configuration.javascripts.each do |path|
14
14
  app.config.assets.precompile << path
15
15
  end
16
+
17
+ app.config.assets.precompile << 'beyond_canvas_manifest.js'
16
18
  end
17
19
 
18
20
  config.before_initialize do
19
21
  ActiveSupport.on_load :action_controller do
20
- include ::BeyondCanvas::Authentication
21
22
  include ::BeyondCanvas::LocaleManagement
22
- include ::BeyondCanvas::ResourceManagement
23
23
  include ::BeyondCanvas::RequestValidation
24
24
  include ::BeyondCanvas::StatusCodes
25
+ include ::BeyondCanvas::AuthenticationsHelper
26
+ include ::BeyondCanvas::DebugHelper
25
27
 
26
28
  ::ActionController::Base.helper BeyondCanvas::Engine.helpers
27
29
  end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BeyondCanvas
4
+ module MenuItemRegistration # :nodoc:
5
+ MenuItem = Struct.new(:name, :url, :options)
6
+
7
+ def register_menu_item(name, url, options = {})
8
+ menu_items.add MenuItem.new(name, url, options)
9
+ end
10
+
11
+ def menu_items
12
+ @menu_items ||= Set.new
13
+ end
14
+
15
+ def clear_menu_items!
16
+ menu_items.clear
17
+ end
18
+ end
19
+ end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module BeyondCanvas
4
4
  class ParameterSanitizer # :nodoc:
5
- DEFAULT_PERMITTED_ATTRIBUTES = %i[code signature return_url api_url access_token_url].freeze
5
+ DEFAULT_PERMITTED_ATTRIBUTES = %i[code signature return_url api_url access_token_url]
6
6
 
7
7
  def initialize(resource_name, params)
8
8
  @params = params
@@ -3,18 +3,19 @@
3
3
  module ActionDispatch
4
4
  module Routing
5
5
  class Mapper # :nodoc:
6
- def beyond_canvas_for(*resources)
6
+ def beyond_canvas_routes(options = nil)
7
7
  mount BeyondCanvas::Engine => BeyondCanvas.configuration.namespace
8
8
 
9
- resource_name, options = resources
10
- BeyondCanvas.auth_model = resource_name.to_s.singularize
11
- BeyondCanvas.use_rails_app_controller = options.present? && options[:controller].present?
9
+ BeyondCanvas.use_rails_app_controller = options.present? && options[:custom_controller].present?
12
10
 
13
- set_routes(resource_name, options[:controller]) if BeyondCanvas.use_rails_app_controller
11
+ set_routes if BeyondCanvas.use_rails_app_controller
14
12
  end
15
13
 
16
- def set_routes(resource_name, controller)
17
- resources resource_name, controller: controller
14
+ def set_routes
15
+ scope BeyondCanvas.configuration.namespace do
16
+ get 'callback', controller: :authentications, action: :new
17
+ post 'callback', controller: :authentications, action: :install
18
+ end
18
19
  end
19
20
  end
20
21
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module BeyondCanvas
4
- VERSION = '0.16.2.pre'
4
+ VERSION = '0.17.0.pre'
5
5
  end
@@ -12,8 +12,7 @@ module BeyondCanvas
12
12
  source_root File.expand_path('templates', __dir__)
13
13
 
14
14
  def create_controller
15
- template 'controller.erb',
16
- "app/controllers/#{scope}_controller.rb"
15
+ template 'controller.erb', "app/controllers/#{scope}_controller.rb"
17
16
  end
18
17
  end
19
18
  end
@@ -1,13 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class <%= scope.camelize %>Controller < BeyondCanvas::AuthenticationsController
4
- # before_action :configure_params, only: [:create]
4
+ # before_action :configure_params, only: [:install]
5
5
 
6
6
  # def new
7
7
  # super
8
8
  # end
9
9
 
10
- # def create
10
+ # def install
11
11
  # super
12
12
  # end
13
13
 
@@ -17,21 +17,4 @@ class <%= scope.camelize %>Controller < BeyondCanvas::AuthenticationsController
17
17
  # def configure_params
18
18
  # beyond_canvas_parameter_sanitizer.permit(:attribute1, :attribute2)
19
19
  # end
20
-
21
- # The path used after creating the shop in the database
22
- # def after_create_path
23
- # resource.return_url
24
- # end
25
-
26
- # def handle_active_record_exception(exception)
27
- # super
28
- # end
29
-
30
- # def handle_beyond_api_exception(exception)
31
- # super
32
- # end
33
-
34
- # def handle_standard_error_exception(exception)
35
- # super
36
- # end
37
20
  end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BeyondCanvas
4
+ module Generators
5
+ class CustomMenuGenerator < Rails::Generators::Base # :nodoc:
6
+ source_root File.expand_path('templates', __dir__)
7
+
8
+ def copy_initializer
9
+ copy_file 'beyond_canvas_custom_menu.html.erb', 'app/views/beyond_canvas/shared/_menu.html.erb'
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,32 @@
1
+ <div class="menu">
2
+
3
+ <div class="menu--left">
4
+ <%= render 'beyond_canvas/shared/logo' %>
5
+ </div>
6
+
7
+ <div class="menu--center">
8
+
9
+ <%
10
+ =begin
11
+ Add here your menu links. You can use `menu__item` as class name and add
12
+ `menu__item--selected` as secondary class for selected menu item. E.g:
13
+
14
+ <%= link_to 'About us', about_us_path, class: "menu__item #{ 'menu__item--selected' if params[:controller] == 'about_us' }" %>
15
+ <%= link_to 'Support', support_path, class: "menu__item #{ 'menu__item--selected' if params[:controller] == 'support' }" %>
16
+ =end
17
+ %>
18
+
19
+ </div>
20
+
21
+ <div class="menu--right">
22
+
23
+ <%
24
+ =begin
25
+ You can also add here some content that will be right-aligned, like a user
26
+ avatar image or a dropdown account menu.
27
+ =end
28
+ %>
29
+
30
+ </div>
31
+
32
+ </div>
@@ -6,7 +6,7 @@ module BeyondCanvas
6
6
  source_root File.expand_path('templates', __dir__)
7
7
 
8
8
  def copy_initializer
9
- template 'beyond_canvas_custom_styles.sass', 'app/assets/stylesheets/_beyond_canvas_custom_styles.sass'
9
+ template 'beyond_canvas_custom_styles.scss', 'app/assets/stylesheets/_beyond_canvas_custom_styles.scss'
10
10
  end
11
11
  end
12
12
  end
@@ -11,7 +11,8 @@
11
11
  // General styles
12
12
  // ************************************************************
13
13
 
14
- // $main-background: rgb(233, 232, 220);
14
+ // $main-background-public: rgb(233, 232, 220);
15
+ // $main-background-application: rgb(233, 232, 220);
15
16
 
16
17
  // ************************************************************
17
18
  // Typography
@@ -81,19 +82,19 @@
81
82
  // Checkboxes
82
83
  // ************************************************************
83
84
 
84
- // $checkbox-checked-color: #97C344;
85
- // $checkbox-checked-background: #ffffff;
86
- // $checkbox-unchecked-color: #C2BF9D;
87
- // $checkbox-unchecked-background: #ffffff;
85
+ // $checkbox-checked-color: #97C344; // This value MUST be HEX
86
+ // $checkbox-checked-background: #ffffff; // This value MUST be HEX
87
+ // $checkbox-unchecked-color: #C2BF9D; // This value MUST be HEX
88
+ // $checkbox-unchecked-background: #ffffff; // This value MUST be HEX
88
89
 
89
90
  // ************************************************************
90
91
  // Radiobuttons
91
92
  // ************************************************************
92
93
 
93
- // $radio-checked-color: #97C344;
94
- // $radio-checked-background: #ffffff;
95
- // $radio-unchecked-color: #C2BF9D;
96
- // $radio-unchecked-background: #ffffff;
94
+ // $radio-checked-color: #97C344; // This value MUST be HEX
95
+ // $radio-checked-background: #ffffff; // This value MUST be HEX
96
+ // $radio-unchecked-color: #C2BF9D; // This value MUST be HEX
97
+ // $radio-unchecked-background: #ffffff; // This value MUST be HEX
97
98
 
98
99
  // ************************************************************
99
100
  // Hints
@@ -147,7 +148,52 @@
147
148
  // $notice-border-radius: 4px;
148
149
  // $notice-color: rgb(153, 153, 153);
149
150
 
151
+ // ************************************************************
152
+ // Breadcrums
153
+ // ************************************************************
154
+
155
+ // $breadcrum-color: rgb(122, 118, 76);
156
+ // $breadcrum-color-current: rgb(61, 149, 137);
157
+
158
+ // ************************************************************
159
+ // Titles
160
+ // ************************************************************
161
+
162
+ // $title-color: rgb(122, 118, 76);
163
+
164
+ // ************************************************************
165
+ // Menu
166
+ // ************************************************************
167
+
168
+ // $menu-background: #1c3445;
169
+ // $menu-height: 60px;
170
+ // $menu-logo-height: 30px;
171
+ // $menu-item-color: #9ab5c6;
172
+ // $menu-item-hover-color: lighten($menu-item-color, 13%);
173
+ // $menu-item-selected-color: #4eb7a8;
174
+ // $menu-item-selected-hover-color: lighten($menu-item-selected-color, 13%);
175
+
176
+ // ************************************************************
177
+ // Action bar
178
+ // ************************************************************
179
+
180
+ // $action-bar-background: rgb(255, 255, 255);
181
+ // $action-bar-shadow: 1px solid rgba(0, 0, 0, 0.2);
182
+ // $action-bar-height: 73px;
183
+
150
184
  // ************************************************************
151
185
  // Markdown
152
186
  // ************************************************************
153
187
 
188
+
189
+ // ************************************************************
190
+ // Sidebar
191
+ // ************************************************************
192
+
193
+
194
+ // ************************************************************
195
+ // Modals
196
+ // ************************************************************
197
+
198
+ // $modal-close-icon-color: #8b8b8b;
199
+ // $modal-background-color: rgba(0, 0, 0, 0.5);