maglevcms 1.1.6 → 1.2.0
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/components/maglev/content/image.rb +2 -0
- data/app/controllers/concerns/maglev/fetchers_concern.rb +1 -0
- data/app/controllers/concerns/maglev/standalone_sections_concern.rb +6 -0
- data/app/controllers/maglev/sitemap_controller.rb +31 -0
- data/app/frontend/editor/assets/remixicons/ri-palette-line.svg +1 -0
- data/app/frontend/editor/components/dynamic-form/dynamic-input.vue +2 -1
- data/app/frontend/editor/components/header-nav/publish-button.vue +1 -1
- data/app/frontend/editor/components/kit/collection-item-input.vue +5 -2
- data/app/frontend/editor/components/kit/color-input/core-input.vue +85 -0
- data/app/frontend/editor/components/kit/color-input/preset-button.vue +57 -0
- data/app/frontend/editor/components/kit/color-input/preset-dropdown.vue +46 -0
- data/app/frontend/editor/components/kit/color-input.vue +43 -0
- data/app/frontend/editor/components/kit/dropdown.vue +1 -0
- data/app/frontend/editor/components/kit/index.js +2 -2
- data/app/frontend/editor/components/kit/submit-button.vue +3 -3
- data/app/frontend/editor/components/kit/tabs.vue +2 -1
- data/app/frontend/editor/components/kit/text-input.vue +2 -2
- data/app/frontend/editor/misc/utils.js +32 -2
- data/app/frontend/editor/services/api.js +2 -2
- data/app/frontend/editor/spec/__mocks__/page.js +36 -36
- data/app/frontend/editor/spec/__mocks__/section.js +29 -29
- data/app/helpers/maglev/editor_helper.rb +1 -1
- data/app/helpers/maglev/page_preview_helper.rb +5 -1
- data/app/helpers/maglev/sitemap_helper.rb +13 -0
- data/app/models/concerns/maglev/sections_concern.rb +10 -0
- data/app/models/maglev/page/path_concern.rb +8 -1
- data/app/models/maglev/section/setting.rb +5 -0
- data/app/models/maglev/site/locales_concern.rb +8 -0
- data/app/services/concerns/maglev/get_page_sections/transform_collection_item_concern.rb +8 -1
- data/app/services/maglev/app_container.rb +2 -0
- data/app/services/maglev/fetch_collection_items.rb +6 -2
- data/app/services/maglev/persist_page.rb +23 -4
- data/app/services/maglev/setup_pages.rb +41 -5
- data/app/views/maglev/api/pages/_show.json.jbuilder +1 -2
- data/app/views/maglev/sitemap/index.xml.builder +21 -0
- data/config/routes.rb +1 -0
- data/db/migrate/20210830085101_create_maglev_page_paths.rb +1 -1
- data/db/migrate/20210906102712_add_canonical_to_pages.rb +1 -1
- data/db/migrate/20211008064437_add_locales_to_sites.rb +1 -1
- data/db/migrate/20211013210954_translate_section_content.rb +1 -1
- data/db/migrate/20211101205001_add_lock_version_to_maglev_pages.rb +1 -1
- data/db/migrate/20211116161121_better_page_path_canonical_indices.rb +1 -1
- data/db/migrate/20211124101005_fix_page_path_indices.rb +1 -1
- data/db/migrate/20211203224112_add_open_graph_tags_to_pages.rb +1 -1
- data/db/migrate/20220612092235_add_style_to_sites.rb +1 -1
- data/lib/generators/maglev/install_generator.rb +3 -2
- data/lib/generators/maglev/section_generator.rb +2 -1
- data/lib/generators/maglev/templates/section/app/theme/sections/%category%/%file_name%.yml.tt +13 -9
- data/lib/maglev/engine.rb +8 -2
- data/lib/maglev/version.rb +1 -1
- data/package.json +3 -3
- data/yarn.lock +799 -565
- metadata +14 -7
- data/app/frontend/editor/components/kit/color-picker.vue +0 -81
- /data/app/frontend/editor/assets/remixicons/{check-line.svg → ri-check-line.svg} +0 -0
@@ -1,4 +1,4 @@
|
|
1
|
-
class AddCanonicalToPages < ActiveRecord::Migration[6.
|
1
|
+
class AddCanonicalToPages < ActiveRecord::Migration[6.0]
|
2
2
|
def change
|
3
3
|
add_column :maglev_page_paths, :canonical, :boolean, null: true, default: true
|
4
4
|
add_index :maglev_page_paths, %i[canonical maglev_page_id locale], unique: true, name: 'canonical_uniqueness'
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class BetterPagePathCanonicalIndices < ActiveRecord::Migration[6.
|
1
|
+
class BetterPagePathCanonicalIndices < ActiveRecord::Migration[6.0]
|
2
2
|
def change
|
3
3
|
remove_index :maglev_page_paths, [:value, :locale], unique: true
|
4
4
|
remove_index :maglev_page_paths, %i[canonical maglev_page_id locale], unique: true, name: 'canonical_uniqueness'
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class FixPagePathIndices < ActiveRecord::Migration[6.
|
1
|
+
class FixPagePathIndices < ActiveRecord::Migration[6.0]
|
2
2
|
def change
|
3
3
|
remove_index :maglev_page_paths, %i[canonical maglev_page_id locale value], unique: true, name: 'canonical_uniqueness'
|
4
4
|
add_index :maglev_page_paths, %i[canonical maglev_page_id locale], name: 'scoped_canonical_speed'
|
@@ -29,6 +29,7 @@ module Maglev
|
|
29
29
|
inject_into_file 'config/routes.rb', before: /^end/ do
|
30
30
|
<<-CODE
|
31
31
|
mount Maglev::Engine => '/maglev'
|
32
|
+
get '/sitemap', to: 'maglev/sitemap#index', defaults: { format: 'xml' }
|
32
33
|
get '(*path)', to: 'maglev/page_preview#index', defaults: { path: 'index' }, constraints: Maglev::PreviewConstraint.new
|
33
34
|
CODE
|
34
35
|
end
|
@@ -38,8 +39,8 @@ module Maglev
|
|
38
39
|
$stdout.puts <<~INFO
|
39
40
|
Done! 🎉
|
40
41
|
|
41
|
-
You can now tweak
|
42
|
-
You can also modify your theme (in
|
42
|
+
You can now tweak config/initializers/maglev.rb
|
43
|
+
You can also modify your theme (in app/theme and app/views/theme)
|
43
44
|
and generate new sections with rails g maglev:section.
|
44
45
|
|
45
46
|
👉 The next step is to create a site using `rails maglev:create_site`.
|
@@ -109,10 +109,11 @@ module Maglev
|
|
109
109
|
when 'text' then label
|
110
110
|
when 'image' then '"/theme/image-placeholder.jpg"'
|
111
111
|
when 'checkbox' then true
|
112
|
-
when 'link' then '{ text: "Link",
|
112
|
+
when 'link' then '{ text: "Link", href: "#" }'
|
113
113
|
when 'color' then '#E5E7EB'
|
114
114
|
when 'radio', 'select' then 'option_1'
|
115
115
|
when 'icon' then 'default-icon-class'
|
116
|
+
when 'collection_item' then 'any'
|
116
117
|
end
|
117
118
|
end
|
118
119
|
# rubocop:enable Metrics/CyclomaticComplexity
|
data/lib/generators/maglev/templates/section/app/theme/sections/%category%/%file_name%.yml.tt
CHANGED
@@ -12,7 +12,7 @@ category: <%= category %>
|
|
12
12
|
# insert_button: false
|
13
13
|
|
14
14
|
# Insert this section at the top or the bottom of the page (default: nil)
|
15
|
-
# insert_at: top
|
15
|
+
# insert_at: top
|
16
16
|
|
17
17
|
# One single instance per page?
|
18
18
|
# singleton: true
|
@@ -33,20 +33,22 @@ settings:
|
|
33
33
|
<%- when 'link' -%>
|
34
34
|
with_text: true
|
35
35
|
<%- when 'select', 'radio' -%>
|
36
|
-
|
36
|
+
select_options:
|
37
37
|
- label: Option 1
|
38
38
|
value: option_1
|
39
39
|
- label: Option 2
|
40
40
|
value: option_2
|
41
41
|
<%- when 'color' -%>
|
42
42
|
presets: ['#E5E7EB', '#FECACA', '#FDE68A', '#A7F3D0', '#BFDBFE']
|
43
|
+
<%- when 'collection_item' -%>
|
44
|
+
collection_id: products # check your config/initializers/maglev.rb to register your collection
|
43
45
|
<%- end -%>
|
44
46
|
<% if setting.value? -%>default: <%= setting.default %><% end -%>
|
45
47
|
|
46
48
|
<%- end -%>
|
47
49
|
# Definition of the blocks.
|
48
50
|
# You can define as many types of blocks as you want.
|
49
|
-
blocks
|
51
|
+
blocks:<%- if blocks.blank? -%> []
|
50
52
|
<% end %>
|
51
53
|
<%- blocks.each do |(type, settings)| -%>
|
52
54
|
- name: "<%= type.humanize %>"
|
@@ -64,11 +66,13 @@ blocks: <%- if blocks.blank? -%>[]
|
|
64
66
|
<%- when 'link' -%>
|
65
67
|
with_text: true
|
66
68
|
<%- when 'select', 'radio' -%>
|
67
|
-
|
69
|
+
select_options:
|
68
70
|
- label: Option 1
|
69
71
|
value: option_1
|
70
72
|
- label: Option 2
|
71
73
|
value: option_2
|
74
|
+
<%- when 'collection_item' -%>
|
75
|
+
collection_id: products # check your config/initializers/maglev.rb to register your collection
|
72
76
|
<%- end -%>
|
73
77
|
<%- if setting.value? -%>
|
74
78
|
default: <%= setting.default %>
|
@@ -80,12 +84,12 @@ blocks: <%- if blocks.blank? -%>[]
|
|
80
84
|
# The title can be changed with the following property:
|
81
85
|
# blocks_label: "My list of items"
|
82
86
|
|
83
|
-
# By default, blocks are presented as a list in the editor UI.
|
84
|
-
# If you like to use blocks to build a menu with sub menu items,
|
87
|
+
# By default, blocks are presented as a list in the editor UI.
|
88
|
+
# If you like to use blocks to build a menu with sub menu items,
|
85
89
|
# consider using the tree presentation
|
86
90
|
# blocks_presentation: "tree"
|
87
91
|
|
88
|
-
# In order to get a section with "meaning" content for the editors,
|
92
|
+
# In order to get a section with "meaning" content for the editors,
|
89
93
|
# you can set the default content of a new instance of this section.
|
90
94
|
# (it's also be useful when taking a screenshot of the section).
|
91
95
|
# sample:
|
@@ -94,13 +98,13 @@ blocks: <%- if blocks.blank? -%>[]
|
|
94
98
|
# <% if setting.value? -%><%= setting.id %>: <%= setting.default %><% end -%>
|
95
99
|
|
96
100
|
<%- end -%>
|
97
|
-
# blocks
|
101
|
+
# blocks:<%- if blocks.blank? -%> []
|
98
102
|
<% end %>
|
99
103
|
<%- blocks.each do |(type, settings)| -%>
|
100
104
|
# - type: <%= type %>
|
101
105
|
# settings:
|
102
106
|
<%- settings.each do |setting| -%>
|
103
107
|
# <% if setting.value? -%><%= setting.id %>: <%= setting.default %><% end -%>
|
104
|
-
|
108
|
+
|
105
109
|
<%- end -%>
|
106
110
|
<%- end -%>
|
data/lib/maglev/engine.rb
CHANGED
@@ -52,13 +52,19 @@ module Maglev
|
|
52
52
|
app.middleware.insert_after ActionDispatch::Static,
|
53
53
|
Rack::Static,
|
54
54
|
urls: ["/#{vite_ruby.config.public_output_dir}"],
|
55
|
-
root: root.join(vite_ruby.config.public_dir)
|
55
|
+
root: root.join(vite_ruby.config.public_dir),
|
56
|
+
header_rules: [
|
57
|
+
[:all, { "Access-Control-Allow-Origin": '*' }]
|
58
|
+
]
|
56
59
|
else
|
57
60
|
# mostly when running the application in production behind NGINX or APACHE
|
58
61
|
app.middleware.insert_before 0,
|
59
62
|
Rack::Static,
|
60
63
|
urls: ["/#{vite_ruby.config.public_output_dir}"],
|
61
|
-
root: root.join(vite_ruby.config.public_dir)
|
64
|
+
root: root.join(vite_ruby.config.public_dir),
|
65
|
+
header_rules: [
|
66
|
+
[:all, { "Access-Control-Allow-Origin": '*' }]
|
67
|
+
]
|
62
68
|
end
|
63
69
|
end
|
64
70
|
|
data/lib/maglev/version.rb
CHANGED
data/package.json
CHANGED
@@ -32,11 +32,11 @@
|
|
32
32
|
"jsdom": "^20.0.2",
|
33
33
|
"postcss": "^8.4.18",
|
34
34
|
"prettier": "^2.3.2",
|
35
|
-
"sass": "^1.55.0",
|
35
|
+
"sass": "^1.55.0",
|
36
36
|
"tailwindcss": "^3.2.1",
|
37
|
-
"vite": "^3.
|
37
|
+
"vite": "^4.3.0",
|
38
38
|
"vite-plugin-eslint": "^1.8.1",
|
39
|
-
"vite-plugin-ruby": "^3.
|
39
|
+
"vite-plugin-ruby": "^3.2.0",
|
40
40
|
"vite-plugin-vue2-svg": "^0.3.0",
|
41
41
|
"vitest": "^0.24.4",
|
42
42
|
"vue-template-compiler": "^2.7.13"
|