spina 2.2.0 → 2.3.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of spina might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/app/assets/config/spina/manifest.js +1 -0
- data/app/assets/javascripts/spina/application.js +2 -0
- data/app/assets/javascripts/spina/controllers/attachment_picker_controller.js +1 -1
- data/app/assets/javascripts/spina/controllers/autofocus_controller.js +1 -1
- data/app/assets/javascripts/spina/controllers/button_controller.js +1 -1
- data/app/assets/javascripts/spina/controllers/confetti_controller.js +2 -2
- data/app/assets/javascripts/spina/controllers/confirm_controller.js +1 -1
- data/app/assets/javascripts/spina/controllers/delegate_click_controller.js +1 -1
- data/app/assets/javascripts/spina/controllers/exists_controller.js +1 -1
- data/app/assets/javascripts/spina/controllers/form_controller.js +2 -2
- data/app/assets/javascripts/spina/controllers/hotkeys_controller.js +2 -2
- data/app/assets/javascripts/spina/controllers/image_collection_controller.js +2 -2
- data/app/assets/javascripts/spina/controllers/image_fade_in_controller.js +1 -1
- data/app/assets/javascripts/spina/controllers/infinite_scroll_controller.js +1 -1
- data/app/assets/javascripts/spina/controllers/loading_button_controller.js +1 -1
- data/app/assets/javascripts/spina/controllers/media_picker_controller.js +1 -1
- data/app/assets/javascripts/spina/controllers/media_picker_modal_controller.js +1 -1
- data/app/assets/javascripts/spina/controllers/modal_controller.js +1 -1
- data/app/assets/javascripts/spina/controllers/navigation_controller.js +1 -1
- data/app/assets/javascripts/spina/controllers/parent_pages_controller.js +1 -1
- data/app/assets/javascripts/spina/controllers/repeater_controller.js +2 -2
- data/app/assets/javascripts/spina/controllers/select_placeholder_controller.js +1 -1
- data/app/assets/javascripts/spina/controllers/selectable_controller.js +1 -1
- data/app/assets/javascripts/spina/controllers/shortcuts_controller.js +1 -1
- data/app/assets/javascripts/spina/controllers/sortable_controller.js +3 -3
- data/app/assets/javascripts/spina/controllers/switch_controller.js +1 -1
- data/app/assets/javascripts/spina/controllers/tabs_controller.js +1 -1
- data/app/assets/javascripts/spina/controllers/toggle_controller.js +1 -1
- data/app/assets/javascripts/spina/controllers/trix_controller.js +1 -1
- data/app/assets/javascripts/spina/controllers/unique_id_controller.js +1 -1
- data/app/assets/javascripts/spina/libraries/stimulus-reveal@1.2.4.js +1 -1
- data/app/assets/stylesheets/spina/_tailwind.css +110078 -105581
- data/app/components/spina/media_picker/modal_component.html.erb +2 -2
- data/app/controllers/concerns/spina/api/paginable.rb +44 -0
- data/app/controllers/spina/api/api_controller.rb +29 -0
- data/app/controllers/spina/api/images_controller.rb +12 -0
- data/app/controllers/spina/api/navigations_controller.rb +20 -0
- data/app/controllers/spina/api/pages_controller.rb +26 -0
- data/app/controllers/spina/api/resources_controller.rb +19 -0
- data/app/helpers/spina/images_helper.rb +1 -5
- data/app/helpers/spina/spina_helper.rb +5 -8
- data/app/models/spina/page.rb +1 -1
- data/app/serializers/spina/api/base_serializer.rb +6 -0
- data/app/serializers/spina/api/image_serializer.rb +20 -0
- data/app/serializers/spina/api/navigation_serializer.rb +30 -0
- data/app/serializers/spina/api/page_serializer.rb +28 -0
- data/app/serializers/spina/api/resource_serializer.rb +12 -0
- data/app/views/layouts/spina/admin/application.html.erb +3 -7
- data/app/views/spina/admin/shared/_navigation.html.erb +2 -2
- data/config/locales/ru.yml +199 -177
- data/config/routes.rb +10 -0
- data/lib/generators/spina/templates/config/initializers/spina.rb +12 -0
- data/lib/spina.rb +12 -2
- data/lib/spina/engine.rb +12 -4
- data/lib/spina/railtie.rb +1 -1
- data/lib/spina/version.rb +1 -1
- data/lib/tasks/spina_tasks.rake +1 -1
- metadata +49 -11
- data/app/assets/javascripts/spina/importmap.json.erb +0 -5
- data/lib/spina/importmap_helper.rb +0 -37
data/config/routes.rb
CHANGED
@@ -11,6 +11,16 @@ Rails.application.routes.draw do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
Spina::Engine.routes.draw do
|
14
|
+
|
15
|
+
# API
|
16
|
+
namespace :api, path: Spina.config.api_path do
|
17
|
+
resources :pages, only: [:index, :show]
|
18
|
+
resources :navigations, only: [:index, :show]
|
19
|
+
resources :resources, only: [:index, :show] do
|
20
|
+
resources :pages, only: [:index, :show]
|
21
|
+
end
|
22
|
+
resources :images, only: [:show]
|
23
|
+
end
|
14
24
|
|
15
25
|
# Backend
|
16
26
|
namespace :admin, path: Spina.config.backend_path do
|
@@ -21,6 +21,11 @@ Spina.configure do |config|
|
|
21
21
|
# You can define your desired dimensions here.
|
22
22
|
# config.embedded_image_size = [2000, 2000]
|
23
23
|
|
24
|
+
# Thumbnail image size
|
25
|
+
# ===============
|
26
|
+
# Thumbnail images for the API are generated using `resize_to_fill`.
|
27
|
+
# config.thumbnail_image_size = [400, 400]
|
28
|
+
|
24
29
|
# Parent controller
|
25
30
|
# ===============
|
26
31
|
# The parent controller all frontend Spina controllers inherit from
|
@@ -34,6 +39,13 @@ Spina.configure do |config|
|
|
34
39
|
# The default is Spina::Authentication::Sessions and includes basic user management
|
35
40
|
# config.authentication = "Spina::Authentication::Sessions"
|
36
41
|
|
42
|
+
# API
|
43
|
+
# ===============
|
44
|
+
# Set an API key to activate Spina's API.
|
45
|
+
# It's highly recommended to use Rails credentials to store this API key.
|
46
|
+
# config.api_key = Rails.application.credentials.spina_api_key
|
47
|
+
# config.api_path = 'api'
|
48
|
+
|
37
49
|
# Background jobs
|
38
50
|
# ===============
|
39
51
|
# By default, all background jobs are queued as :default
|
data/lib/spina.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'spina/importmap_helper'
|
2
1
|
require 'spina/engine'
|
3
2
|
require 'spina/admin_sectionable'
|
4
3
|
require 'spina/railtie'
|
@@ -17,24 +16,31 @@ module Spina
|
|
17
16
|
PLUGINS = []
|
18
17
|
THEMES = []
|
19
18
|
|
20
|
-
config_accessor :
|
19
|
+
config_accessor :api_key,
|
20
|
+
:api_path,
|
21
|
+
:authentication,
|
21
22
|
:backend_path,
|
23
|
+
:importmap,
|
22
24
|
:frontend_parent_controller,
|
23
25
|
:disable_frontend_routes,
|
24
26
|
:disable_decorator_load,
|
25
27
|
:locales,
|
26
28
|
:embedded_image_size,
|
29
|
+
:thumbnail_image_size,
|
27
30
|
:party_pooper,
|
28
31
|
:tailwind_purge_content,
|
29
32
|
:queues,
|
30
33
|
:transliterations
|
31
34
|
|
32
35
|
# Defaults
|
36
|
+
self.api_key = nil
|
37
|
+
self.api_path = "api"
|
33
38
|
self.authentication = "Spina::Authentication::Sessions"
|
34
39
|
self.backend_path = 'admin'
|
35
40
|
self.disable_frontend_routes = false
|
36
41
|
self.disable_decorator_load = false
|
37
42
|
self.embedded_image_size = [2000, 2000]
|
43
|
+
self.thumbnail_image_size = [400, 400]
|
38
44
|
self.frontend_parent_controller = "ApplicationController"
|
39
45
|
self.locales = [I18n.default_locale]
|
40
46
|
self.party_pooper = false
|
@@ -44,6 +50,10 @@ module Spina
|
|
44
50
|
# - config.queues.page_updates
|
45
51
|
self.queues = ActiveSupport::InheritableOptions.new
|
46
52
|
|
53
|
+
# An importmap specifically meant for Spina
|
54
|
+
self.importmap = ActiveSupport::OrderedOptions.new
|
55
|
+
self.importmap.paths = Importmap::Paths.new
|
56
|
+
|
47
57
|
# Tailwind purging
|
48
58
|
# Spina will by default purge all unused Tailwind classes by scanning
|
49
59
|
# the files listed below. You probably don't want to override this in
|
data/lib/spina/engine.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'sass-rails'
|
2
|
+
require 'importmap-rails'
|
2
3
|
require 'turbo-rails'
|
3
4
|
require 'stimulus-rails'
|
4
5
|
require 'ancestry'
|
@@ -9,6 +10,7 @@ require 'rack-rewrite'
|
|
9
10
|
require 'babosa'
|
10
11
|
require 'attr_json'
|
11
12
|
require 'view_component/engine'
|
13
|
+
require 'jsonapi/serializer'
|
12
14
|
|
13
15
|
module Spina
|
14
16
|
class Engine < ::Rails::Engine
|
@@ -36,11 +38,17 @@ module Spina
|
|
36
38
|
Spina::Parts::Attachment
|
37
39
|
)
|
38
40
|
end
|
39
|
-
|
40
|
-
initializer "spina.
|
41
|
-
|
42
|
-
|
41
|
+
|
42
|
+
initializer "spina.importmap" do
|
43
|
+
Spina.config.importmap.paths.tap do |paths|
|
44
|
+
# Stimulus & Turbo
|
45
|
+
paths.asset "@hotwired/stimulus", path: "stimulus"
|
46
|
+
paths.asset "@hotwired/stimulus-autoloader", path: "stimulus-autoloader"
|
47
|
+
paths.asset "@hotwired/turbo-rails", path: "turbo"
|
48
|
+
|
49
|
+
paths.assets_in Spina::Engine.root.join("app/assets/javascripts/spina"), append_base_path: true
|
43
50
|
end
|
44
51
|
end
|
52
|
+
|
45
53
|
end
|
46
54
|
end
|
data/lib/spina/railtie.rb
CHANGED
@@ -2,7 +2,7 @@ module Spina
|
|
2
2
|
class Railtie < Rails::Railtie
|
3
3
|
|
4
4
|
initializer "spina.assets.precompile" do |app|
|
5
|
-
app.config.assets.precompile += %w(spina/manifest
|
5
|
+
app.config.assets.precompile += %w(spina/manifest)
|
6
6
|
end
|
7
7
|
|
8
8
|
ActiveSupport.on_load(:action_controller) do
|
data/lib/spina/version.rb
CHANGED
data/lib/tasks/spina_tasks.rake
CHANGED
@@ -25,7 +25,7 @@ namespace :spina do
|
|
25
25
|
desc "Compile Tailwind.css for Spina"
|
26
26
|
task :compile do
|
27
27
|
Dir.chdir(File.join(__dir__, "../..")) do
|
28
|
-
system "npx tailwindcss-cli@latest build ./app/assets/stylesheets/spina/tailwind/custom.css -o ./app/assets/stylesheets/spina/_tailwind.css -c ./app/assets/config/spina/tailwind.config.js"
|
28
|
+
system "npx tailwindcss-cli@latest build -i ./app/assets/stylesheets/spina/tailwind/custom.css -o ./app/assets/stylesheets/spina/_tailwind.css -c ./app/assets/config/spina/tailwind.config.js"
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spina
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bram Jetten
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-08-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -126,16 +126,16 @@ dependencies:
|
|
126
126
|
name: mobility
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- -
|
129
|
+
- - ">="
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version: 1.1.
|
131
|
+
version: 1.1.3
|
132
132
|
type: :runtime
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
|
-
- -
|
136
|
+
- - ">="
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version: 1.1.
|
138
|
+
version: 1.1.3
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: rack-rewrite
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -178,22 +178,50 @@ dependencies:
|
|
178
178
|
- - "~>"
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: '2.32'
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: importmap-rails
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - ">="
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: 0.1.1
|
188
|
+
type: :runtime
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - ">="
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: 0.1.1
|
181
195
|
- !ruby/object:Gem::Dependency
|
182
196
|
name: turbo-rails
|
183
197
|
requirement: !ruby/object:Gem::Requirement
|
184
198
|
requirements:
|
185
199
|
- - ">="
|
186
200
|
- !ruby/object:Gem::Version
|
187
|
-
version:
|
201
|
+
version: 0.7.0
|
188
202
|
type: :runtime
|
189
203
|
prerelease: false
|
190
204
|
version_requirements: !ruby/object:Gem::Requirement
|
191
205
|
requirements:
|
192
206
|
- - ">="
|
193
207
|
- !ruby/object:Gem::Version
|
194
|
-
version:
|
208
|
+
version: 0.7.0
|
195
209
|
- !ruby/object:Gem::Dependency
|
196
210
|
name: stimulus-rails
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - ">="
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: 0.3.0
|
216
|
+
type: :runtime
|
217
|
+
prerelease: false
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - ">="
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: 0.3.0
|
223
|
+
- !ruby/object:Gem::Dependency
|
224
|
+
name: babosa
|
197
225
|
requirement: !ruby/object:Gem::Requirement
|
198
226
|
requirements:
|
199
227
|
- - ">="
|
@@ -207,7 +235,7 @@ dependencies:
|
|
207
235
|
- !ruby/object:Gem::Version
|
208
236
|
version: '0'
|
209
237
|
- !ruby/object:Gem::Dependency
|
210
|
-
name:
|
238
|
+
name: jsonapi-serializer
|
211
239
|
requirement: !ruby/object:Gem::Requirement
|
212
240
|
requirements:
|
213
241
|
- - ">="
|
@@ -772,6 +800,7 @@ files:
|
|
772
800
|
- app/assets/images/spina/favicon.png
|
773
801
|
- app/assets/images/spina/spina.png
|
774
802
|
- app/assets/images/spina/spina.svg
|
803
|
+
- app/assets/javascripts/spina/application.js
|
775
804
|
- app/assets/javascripts/spina/controllers/attachment_picker_controller.js
|
776
805
|
- app/assets/javascripts/spina/controllers/autofocus_controller.js
|
777
806
|
- app/assets/javascripts/spina/controllers/button_controller.js
|
@@ -801,7 +830,6 @@ files:
|
|
801
830
|
- app/assets/javascripts/spina/controllers/toggle_controller.js
|
802
831
|
- app/assets/javascripts/spina/controllers/trix_controller.js
|
803
832
|
- app/assets/javascripts/spina/controllers/unique_id_controller.js
|
804
|
-
- app/assets/javascripts/spina/importmap.json.erb
|
805
833
|
- app/assets/javascripts/spina/libraries/canvas-confetti.js
|
806
834
|
- app/assets/javascripts/spina/libraries/canvas-confetti@1.3.2.js
|
807
835
|
- app/assets/javascripts/spina/libraries/form-request-submit-polyfill.js
|
@@ -865,6 +893,7 @@ files:
|
|
865
893
|
- app/components/spina/user_interface/modal_component.rb
|
866
894
|
- app/components/spina/user_interface/tab_link_component.html.erb
|
867
895
|
- app/components/spina/user_interface/tab_link_component.rb
|
896
|
+
- app/controllers/concerns/spina/api/paginable.rb
|
868
897
|
- app/controllers/concerns/spina/current_account.rb
|
869
898
|
- app/controllers/concerns/spina/current_theme.rb
|
870
899
|
- app/controllers/concerns/spina/frontend.rb
|
@@ -886,6 +915,11 @@ files:
|
|
886
915
|
- app/controllers/spina/admin/settings_controller.rb
|
887
916
|
- app/controllers/spina/admin/theme_controller.rb
|
888
917
|
- app/controllers/spina/admin/users_controller.rb
|
918
|
+
- app/controllers/spina/api/api_controller.rb
|
919
|
+
- app/controllers/spina/api/images_controller.rb
|
920
|
+
- app/controllers/spina/api/navigations_controller.rb
|
921
|
+
- app/controllers/spina/api/pages_controller.rb
|
922
|
+
- app/controllers/spina/api/resources_controller.rb
|
889
923
|
- app/controllers/spina/application_controller.rb
|
890
924
|
- app/controllers/spina/pages_controller.rb
|
891
925
|
- app/controllers/spina/sitemaps_controller.rb
|
@@ -928,6 +962,11 @@ files:
|
|
928
962
|
- app/models/spina/user.rb
|
929
963
|
- app/presenters/spina/content_presenter.rb
|
930
964
|
- app/presenters/spina/menu_presenter.rb
|
965
|
+
- app/serializers/spina/api/base_serializer.rb
|
966
|
+
- app/serializers/spina/api/image_serializer.rb
|
967
|
+
- app/serializers/spina/api/navigation_serializer.rb
|
968
|
+
- app/serializers/spina/api/page_serializer.rb
|
969
|
+
- app/serializers/spina/api/resource_serializer.rb
|
931
970
|
- app/views/layouts/spina/admin/admin.html.erb
|
932
971
|
- app/views/layouts/spina/admin/application.html.erb
|
933
972
|
- app/views/layouts/spina/admin/sessions.html.erb
|
@@ -1053,7 +1092,6 @@ files:
|
|
1053
1092
|
- lib/spina/authentication/basic.rb
|
1054
1093
|
- lib/spina/authentication/sessions.rb
|
1055
1094
|
- lib/spina/engine.rb
|
1056
|
-
- lib/spina/importmap_helper.rb
|
1057
1095
|
- lib/spina/part.rb
|
1058
1096
|
- lib/spina/plugin.rb
|
1059
1097
|
- lib/spina/railtie.rb
|
@@ -1,37 +0,0 @@
|
|
1
|
-
module Spina
|
2
|
-
module ImportmapHelper
|
3
|
-
|
4
|
-
def spina_importmap_with_stimulus_from(*paths)
|
5
|
-
[ %("stimulus": "#{asset_path("stimulus/libraries/stimulus")}"), spina_importmap_from(*paths) ].reject(&:blank?).join(",\n")
|
6
|
-
end
|
7
|
-
|
8
|
-
def spina_importmap_from(*paths, prepend: "spina")
|
9
|
-
Array(paths).flat_map do |path|
|
10
|
-
if (absolute_path = absolute_root_of(path)).exist?
|
11
|
-
find_javascript_files_in_tree(absolute_path).collect do |filename|
|
12
|
-
module_filename = filename.relative_path_from(absolute_path)
|
13
|
-
module_name = importmap_module_name_from(module_filename)
|
14
|
-
module_path = asset_path("#{prepend}/" + absolute_path.basename.join(module_filename).to_s)
|
15
|
-
|
16
|
-
%("#{module_name}": "#{module_path}")
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end.compact.join(",\n")
|
20
|
-
end
|
21
|
-
|
22
|
-
private
|
23
|
-
|
24
|
-
# Strip off the extension and any versioning data for an absolute module name.
|
25
|
-
def importmap_module_name_from(filename)
|
26
|
-
filename.basename.to_s.remove(filename.extname).split("@").first
|
27
|
-
end
|
28
|
-
|
29
|
-
def find_javascript_files_in_tree(path)
|
30
|
-
Dir[path.join("**/*.js{,m}")].collect { |file| Pathname.new(file) }.select(&:file?)
|
31
|
-
end
|
32
|
-
|
33
|
-
def absolute_root_of(path)
|
34
|
-
(pathname = Pathname.new(path)).absolute? ? pathname : Rails.root.join(path)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|