maglevcms 1.8.0 → 2.0.0.beta1

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 (156) hide show
  1. checksums.yaml +4 -4
  2. data/.yarn/install-state.gz +0 -0
  3. data/README.md +4 -4
  4. data/Rakefile +2 -1
  5. data/app/components/maglev/block_component.rb +1 -1
  6. data/app/components/maglev/content/base.rb +1 -1
  7. data/app/components/maglev/content/link.rb +4 -0
  8. data/app/components/maglev/section_component.rb +2 -2
  9. data/app/controllers/concerns/maglev/fetchers_concern.rb +3 -1
  10. data/app/controllers/concerns/maglev/resource_id_concern.rb +10 -0
  11. data/app/controllers/concerns/maglev/standalone_sections_concern.rb +6 -0
  12. data/app/controllers/concerns/maglev/{ui_locale_concern.rb → user_interface_locale_concern.rb} +1 -1
  13. data/app/controllers/maglev/api/collection_items_controller.rb +7 -0
  14. data/app/controllers/maglev/api/page_clones_controller.rb +1 -2
  15. data/app/controllers/maglev/api_controller.rb +1 -1
  16. data/app/controllers/maglev/application_controller.rb +1 -5
  17. data/app/controllers/maglev/assets/active_storage_proxy_controller.rb +17 -0
  18. data/app/controllers/maglev/assets/proxy_controller.rb +21 -0
  19. data/app/controllers/maglev/editor_controller.rb +1 -1
  20. data/app/controllers/maglev/page_preview_controller.rb +3 -3
  21. data/app/frontend/admin/controllers/screenshot_controller.js +29 -1
  22. data/app/frontend/editor/assets/remixicons/clipboard-line.svg +1 -0
  23. data/app/frontend/editor/assets/remixicons/ri-draggable.svg +1 -0
  24. data/app/frontend/editor/assets/remixicons/ri-folders-line.svg +1 -0
  25. data/app/frontend/editor/assets/remixicons/ri-more-fill.svg +1 -0
  26. data/app/frontend/editor/assets/remixicons/ri-shadow-line.svg +1 -0
  27. data/app/frontend/editor/components/errors/forbidden.vue +24 -0
  28. data/app/frontend/editor/components/errors/stale-record.vue +2 -2
  29. data/app/frontend/editor/components/header-nav/device-toggler.vue +6 -3
  30. data/app/frontend/editor/components/header-nav/index.vue +13 -42
  31. data/app/frontend/editor/components/header-nav/locale-toggler/index.vue +1 -1
  32. data/app/frontend/editor/components/header-nav/page-info.vue +41 -0
  33. data/app/frontend/editor/components/header-nav/preview-button.vue +6 -1
  34. data/app/frontend/editor/components/header-nav/separator.vue +1 -1
  35. data/app/frontend/editor/components/image-library/index.vue +26 -29
  36. data/app/frontend/editor/components/kit/collection-item-input.vue +9 -0
  37. data/app/frontend/editor/components/kit/copy-paste-button.vue +26 -0
  38. data/app/frontend/editor/components/kit/dropdown.vue +5 -0
  39. data/app/frontend/editor/components/kit/icon-button.vue +24 -0
  40. data/app/frontend/editor/components/kit/icon.vue +2 -3
  41. data/app/frontend/editor/components/kit/index.js +4 -2
  42. data/app/frontend/editor/components/kit/link-input.vue +1 -1
  43. data/app/frontend/editor/components/kit/modal.vue +1 -1
  44. data/app/frontend/editor/components/kit/page-icon.vue +1 -1
  45. data/app/frontend/editor/components/kit/rich-text-input/link-buttons.vue +1 -1
  46. data/app/frontend/editor/components/kit/select-input.vue +4 -2
  47. data/app/frontend/editor/components/link-picker/actions.vue +1 -1
  48. data/app/frontend/editor/components/link-picker/index.vue +1 -1
  49. data/app/frontend/editor/components/link-picker/page.vue +2 -0
  50. data/app/frontend/editor/components/page/form/main.vue +1 -1
  51. data/app/frontend/editor/components/page/list/actions-button.vue +159 -0
  52. data/app/frontend/editor/components/page/list/index.vue +15 -24
  53. data/app/frontend/editor/components/page/list/list-item.vue +10 -61
  54. data/app/frontend/editor/components/section-highlighter/index.vue +47 -46
  55. data/app/frontend/editor/components/section-list/add-button.vue +39 -0
  56. data/app/frontend/editor/components/section-list/index.vue +30 -15
  57. data/app/frontend/editor/components/section-list/list-item.vue +23 -8
  58. data/app/frontend/editor/components/section-pane/block-list/index.vue +1 -0
  59. data/app/frontend/editor/components/section-pane/block-list/list-item.vue +9 -6
  60. data/app/frontend/editor/components/section-pane/block-tree/new-nested-block-button.vue +2 -2
  61. data/app/frontend/editor/components/section-pane/block-tree/tree-node.vue +2 -2
  62. data/app/frontend/editor/components/sidebar-nav/index.vue +102 -0
  63. data/app/frontend/editor/components/sidebar-nav/link.vue +60 -0
  64. data/app/frontend/editor/components/theme-section-list/category.vue +47 -0
  65. data/app/frontend/editor/components/theme-section-list/index.vue +7 -31
  66. data/app/frontend/editor/components/theme-section-list/list-item.vue +10 -3
  67. data/app/frontend/editor/design/components/modal.scss +1 -1
  68. data/app/frontend/editor/design/components/tooltip.scss +6 -0
  69. data/app/frontend/editor/design/transitions.scss +1 -1
  70. data/app/frontend/editor/layouts/app.vue +1 -1
  71. data/app/frontend/editor/layouts/default.vue +2 -2
  72. data/app/frontend/editor/layouts/slide-pane.vue +1 -1
  73. data/app/frontend/editor/locales/editor.ar.json +265 -0
  74. data/app/frontend/editor/locales/editor.en.json +23 -15
  75. data/app/frontend/editor/locales/editor.es.json +18 -10
  76. data/app/frontend/editor/locales/editor.fr.json +28 -13
  77. data/app/frontend/editor/locales/editor.pt-BR.json +18 -10
  78. data/app/frontend/editor/locales/index.js +3 -0
  79. data/app/frontend/editor/mixins/error-modal.js +7 -2
  80. data/app/frontend/editor/mixins/preview-transformation.js +0 -1
  81. data/app/frontend/editor/plugins/i18n.js +2 -17
  82. data/app/frontend/editor/services/__tests__/section.spec.js +6 -0
  83. data/app/frontend/editor/services/collection-item.js +8 -0
  84. data/app/frontend/editor/services/page.js +1 -1
  85. data/app/frontend/editor/services/section.js +30 -0
  86. data/app/frontend/editor/services/site.js +4 -4
  87. data/app/frontend/editor/services/theme.js +1 -0
  88. data/app/frontend/editor/spec/__mocks__/page.js +3 -1
  89. data/app/frontend/editor/spec/__mocks__/services.js +1 -0
  90. data/app/frontend/editor/store/__tests__/getters.spec.js +56 -1
  91. data/app/frontend/editor/store/actions/index.js +1 -0
  92. data/app/frontend/editor/store/actions/site.js +8 -4
  93. data/app/frontend/editor/store/getters.js +11 -0
  94. data/app/frontend/editor/views/page-preview.vue +2 -1
  95. data/app/frontend/images/favicon.svg +11 -0
  96. data/app/frontend/images/logo.svg +14 -0
  97. data/app/frontend/live-preview-client/iframe-decorator.js +17 -15
  98. data/app/frontend/live-preview-client/rails.js +1 -1
  99. data/app/helpers/maglev/application_helper.rb +7 -2
  100. data/app/helpers/maglev/editor_helper.rb +12 -5
  101. data/app/models/concerns/maglev/sections_concern.rb +4 -0
  102. data/app/models/maglev/asset.rb +13 -14
  103. data/app/models/maglev/page/path_concern.rb +23 -8
  104. data/app/models/maglev/page.rb +17 -18
  105. data/app/models/maglev/page_path.rb +18 -18
  106. data/app/models/maglev/section/setting.rb +1 -1
  107. data/app/models/maglev/section.rb +18 -9
  108. data/app/models/maglev/setting_types/link.rb +1 -1
  109. data/app/models/maglev/site.rb +13 -24
  110. data/app/services/maglev/app_container.rb +2 -2
  111. data/app/services/maglev/extract_locale.rb +3 -2
  112. data/app/services/maglev/fetch_page.rb +2 -0
  113. data/app/services/maglev/fetch_theme_layout.rb +2 -0
  114. data/app/services/maglev/get_page_fullpath.rb +1 -2
  115. data/app/services/maglev/remove_section_type.rb +50 -0
  116. data/app/services/maglev/rename_section_type.rb +57 -0
  117. data/app/services/maglev/search_pages.rb +2 -1
  118. data/app/views/layouts/maglev/admin/application.html.erb +1 -1
  119. data/app/views/maglev/admin/sections/previews/show.html.erb +16 -1
  120. data/app/views/maglev/api/collection_items/show.json.jbuilder +7 -0
  121. data/app/views/maglev/api/page_clones/create.json.jbuilder +3 -0
  122. data/app/views/maglev/editor/show.html.erb +6 -5
  123. data/config/locales/activerecord.ar.yml +13 -0
  124. data/config/locales/activerecord.en.yml +8 -2
  125. data/config/locales/activerecord.es.yml +4 -0
  126. data/config/locales/activerecord.fr.yml +6 -2
  127. data/config/locales/activerecord.pt-BR.yml +13 -0
  128. data/config/routes.rb +3 -4
  129. data/db/migrate/20200831101942_create_maglev_section_content.rb +10 -2
  130. data/db/migrate/20210819092740_switch_to_localized_page_fields.rb +13 -3
  131. data/db/migrate/20211008064437_add_locales_to_sites.rb +7 -1
  132. data/db/migrate/20211013210954_translate_section_content.rb +16 -2
  133. data/db/migrate/20211203224112_add_open_graph_tags_to_pages.rb +9 -3
  134. data/db/migrate/20220612092235_add_style_to_sites.rb +5 -1
  135. data/lib/commands/maglev/change_site_locales_command.rb +61 -0
  136. data/lib/commands/maglev/create_site_command.rb +28 -0
  137. data/lib/commands/maglev/sections/remove_command.rb +48 -0
  138. data/lib/commands/maglev/sections/rename_command.rb +49 -0
  139. data/lib/generators/maglev/templates/install/config/initializers/maglev.rb +4 -1
  140. data/lib/generators/maglev/templates/theme/app/views/theme/layout.html.erb.tt +8 -2
  141. data/lib/maglev/errors.rb +1 -0
  142. data/lib/maglev/preview_constraint.rb +5 -1
  143. data/lib/maglev/theme_filesystem_loader.rb +7 -0
  144. data/lib/maglev/version.rb +1 -1
  145. data/lib/maglev.rb +13 -3
  146. data/lib/tasks/maglev/icons.rake +123 -0
  147. data/lib/tasks/maglev/vite.rake +62 -0
  148. data/lib/tasks/maglev_tasks.rake +9 -107
  149. data/tailwind.config.js +1 -0
  150. metadata +48 -33
  151. data/app/controllers/maglev/assets_controller.rb +0 -10
  152. data/app/frontend/editor/components/kit/list-item-button.vue +0 -16
  153. data/app/frontend/editor/components/sidebar-nav.vue +0 -125
  154. data/app/frontend/editor/plugins/maglev_dummy.js +0 -2
  155. data/app/frontend/images/favicon.png +0 -0
  156. data/app/frontend/images/logo.png +0 -0
@@ -6,113 +6,15 @@ def within_engine_folder(&block)
6
6
  Dir.chdir(File.join(__dir__, '..', '..'), &block)
7
7
  end
8
8
 
9
- namespace :maglev do
10
- desc 'Create site'
11
- task create_site: :environment do
12
- Maglev::GenerateSite.call(
13
- theme: Maglev.local_themes.first
14
- )
15
- puts '🎉 Your site has been created with success!'
16
- end
17
-
18
- desc 'Change site locales'
19
- task change_site_locales: :environment do
20
- site = Maglev::Site.first
21
-
22
- unless site
23
- puts "[Error] You don't seem to have an existing site. 🤔"
24
- return
25
- end
26
-
27
- # without this, rake will run the ARGV arguments as if they were rake tasks
28
- # rubocop:disable Style/BlockDelimiters
29
- ARGV.each { |a| task a.to_sym => :environment do; end }
30
- # rubocop:enable Style/BlockDelimiters
31
-
32
- locales = (ARGV[1..] || []).map do |arg|
33
- label, prefix = arg.split(':')
34
- Maglev::Site::Locale.new(label: label, prefix: prefix)
35
- end
36
-
37
- if !locales.empty? && locales.any? { |locale| !locale.valid? }
38
- puts "[Error] make sure your locales follows the 'label:prefix' pattern. 🤓"
39
- return
40
- end
41
-
42
- if locales.empty?
43
- locales = Maglev.config.default_site_locales.map do |attributes|
44
- Maglev::Site::Locale.new(attributes)
45
- end
46
- end
47
-
48
- service = Maglev::ChangeSiteLocales.new
49
-
50
- begin
51
- service.call(site: site, locales: locales)
52
- puts 'Success! 🎉🎉🎉'
53
- rescue StandardError => e
54
- puts "[Error] #{e.message}"
55
- end
56
- end
57
-
58
- namespace :vite do
59
- desc 'Bundle frontend entrypoints using ViteRuby'
60
- task build: :'vite:verify_install' do
61
- within_engine_folder do
62
- Maglev::Engine.vite_ruby.commands.build_from_task
63
- end
64
- end
65
-
66
- desc 'Bundle entrypoints using Vite Ruby (SSR only if enabled)'
67
- task build_all: :'vite:verify_install' do
68
- within_engine_folder do
69
- Maglev::Engine.vite_ruby.commands.build_from_task
70
- Maglev::Engine.vite_ruby.commands.build_from_task('--ssr') if ViteRuby.config.ssr_build_enabled
71
- end
72
- end
73
-
74
- desc 'Ensure build dependencies like Vite are installed before bundling'
75
- task install_dependencies: :environment do
76
- within_engine_folder do
77
- install_dev_dependencies = ENV['VITE_RUBY_SKIP_INSTALL_DEV_DEPENDENCIES'] == 'true'
78
- # rubocop:disable Style/StringHashKeys
79
- install_env_args = install_dev_dependencies ? {} : { 'NODE_ENV' => 'development' }
80
- # rubocop:enable Style/StringHashKeys
81
- cmd = Maglev::Engine.vite_ruby.commands.legacy_npm_version? ? 'npx ci --yes' : 'npx --yes ci'
82
- result = system(install_env_args, cmd)
83
- # Fallback to `yarn` if `npx` is not available.
84
- system(install_env_args, 'yarn install --frozen-lockfile') if result.nil?
85
- end
86
- end
87
-
88
- desc 'Verify if ViteRuby is properly installed in the app'
89
- task verify_install: :environment do
90
- within_engine_folder do
91
- Maglev::Engine.vite_ruby.commands.verify_install
92
- end
93
- end
94
-
95
- desc 'Remove old bundles created by ViteRuby'
96
- task :clean, %i[keep age] => :'vite:verify_install' do |_, args|
97
- within_engine_folder do
98
- Maglev::Engine.vite_ruby.commands.clean_from_task(args)
99
- end
100
- end
101
-
102
- desc 'Remove the build output directory for ViteRuby'
103
- task clobber: :'vite:verify_install' do
104
- within_engine_folder do
105
- Maglev::Engine.vite_ruby.commands.clobber
106
- end
107
- end
108
-
109
- desc "Provide information on ViteRuby's environment"
110
- task info: :environment do
111
- within_engine_folder do
112
- Maglev::Engine.vite_ruby.commands.print_info
113
- end
114
- end
115
- end
9
+ # Load all task files only if they haven't been loaded before
10
+ Dir[File.join(__dir__, 'maglev', '*.rake')].each do |file|
11
+ # Create a unique task loaded flag
12
+ task_name = File.basename(file, '.rake')
13
+ next if Rake::Task.task_defined?("maglev:#{task_name}:loaded")
14
+
15
+ load file
16
+ # Create a dummy task to mark this file as loaded
17
+ Rake::Task.define_task("maglev:#{task_name}:loaded")
116
18
  end
117
19
 
118
20
  unless ENV['VITE_RUBY_SKIP_ASSETS_PRECOMPILE_EXTENSION'] == 'true'
data/tailwind.config.js CHANGED
@@ -40,6 +40,7 @@ export default {
40
40
  '120': '30rem',
41
41
  '128': '32rem',
42
42
  '144': '36rem',
43
+ '156': '39rem',
43
44
  '168': '42rem',
44
45
  '216': '54rem',
45
46
  },
metadata CHANGED
@@ -1,29 +1,34 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: maglevcms
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.0
4
+ version: 2.0.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Didier Lafforgue
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-12-16 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: jbuilder
15
14
  requirement: !ruby/object:Gem::Requirement
16
15
  requirements:
17
- - - "~>"
16
+ - - "<"
17
+ - !ruby/object:Gem::Version
18
+ version: '3'
19
+ - - ">="
18
20
  - !ruby/object:Gem::Version
19
- version: 2.12.0
21
+ version: '2'
20
22
  type: :runtime
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
23
25
  requirements:
24
- - - "~>"
26
+ - - "<"
27
+ - !ruby/object:Gem::Version
28
+ version: '3'
29
+ - - ">="
25
30
  - !ruby/object:Gem::Version
26
- version: 2.12.0
31
+ version: '2'
27
32
  - !ruby/object:Gem::Dependency
28
33
  name: kaminari
29
34
  requirement: !ruby/object:Gem::Requirement
@@ -61,7 +66,7 @@ dependencies:
61
66
  version: '9'
62
67
  - - ">="
63
68
  - !ruby/object:Gem::Version
64
- version: '6'
69
+ version: '7'
65
70
  type: :runtime
66
71
  prerelease: false
67
72
  version_requirements: !ruby/object:Gem::Requirement
@@ -71,7 +76,7 @@ dependencies:
71
76
  version: '9'
72
77
  - - ">="
73
78
  - !ruby/object:Gem::Version
74
- version: '6'
79
+ version: '7'
75
80
  - !ruby/object:Gem::Dependency
76
81
  name: vite_rails
77
82
  requirement: !ruby/object:Gem::Requirement
@@ -106,20 +111,6 @@ dependencies:
106
111
  - - ">="
107
112
  - !ruby/object:Gem::Version
108
113
  version: '3.5'
109
- - !ruby/object:Gem::Dependency
110
- name: pg
111
- requirement: !ruby/object:Gem::Requirement
112
- requirements:
113
- - - "~>"
114
- - !ruby/object:Gem::Version
115
- version: 1.5.9
116
- type: :development
117
- prerelease: false
118
- version_requirements: !ruby/object:Gem::Requirement
119
- requirements:
120
- - - "~>"
121
- - !ruby/object:Gem::Version
122
- version: 1.5.9
123
114
  description: " MaglevCMS integrates a powerful website/page builder with a polished
124
115
  UX/UI into your Ruby on Rails application, backed by a flexible and robust CMS engine.\n"
125
116
  email:
@@ -160,9 +151,10 @@ files:
160
151
  - app/controllers/concerns/maglev/fetchers_concern.rb
161
152
  - app/controllers/concerns/maglev/json_concern.rb
162
153
  - app/controllers/concerns/maglev/rendering_concern.rb
154
+ - app/controllers/concerns/maglev/resource_id_concern.rb
163
155
  - app/controllers/concerns/maglev/services_concern.rb
164
156
  - app/controllers/concerns/maglev/standalone_sections_concern.rb
165
- - app/controllers/concerns/maglev/ui_locale_concern.rb
157
+ - app/controllers/concerns/maglev/user_interface_locale_concern.rb
166
158
  - app/controllers/maglev/admin/base_controller.rb
167
159
  - app/controllers/maglev/admin/dashboard_controller.rb
168
160
  - app/controllers/maglev/admin/sections/previews_controller.rb
@@ -176,7 +168,8 @@ files:
176
168
  - app/controllers/maglev/api/sites_controller.rb
177
169
  - app/controllers/maglev/api_controller.rb
178
170
  - app/controllers/maglev/application_controller.rb
179
- - app/controllers/maglev/assets_controller.rb
171
+ - app/controllers/maglev/assets/active_storage_proxy_controller.rb
172
+ - app/controllers/maglev/assets/proxy_controller.rb
180
173
  - app/controllers/maglev/editor_controller.rb
181
174
  - app/controllers/maglev/page_preview_controller.rb
182
175
  - app/controllers/maglev/sitemap_controller.rb
@@ -192,6 +185,7 @@ files:
192
185
  - app/frontend/editor/assets/remixicons/arrow-drop-right.svg
193
186
  - app/frontend/editor/assets/remixicons/arrow-up-s-line.svg
194
187
  - app/frontend/editor/assets/remixicons/camera-line.svg
188
+ - app/frontend/editor/assets/remixicons/clipboard-line.svg
195
189
  - app/frontend/editor/assets/remixicons/close-line.svg
196
190
  - app/frontend/editor/assets/remixicons/computer-line.svg
197
191
  - app/frontend/editor/assets/remixicons/delete-bin-line.svg
@@ -223,12 +217,14 @@ files:
223
217
  - app/frontend/editor/assets/remixicons/ri-close-line.svg
224
218
  - app/frontend/editor/assets/remixicons/ri-delete-column.svg
225
219
  - app/frontend/editor/assets/remixicons/ri-delete-row.svg
220
+ - app/frontend/editor/assets/remixicons/ri-draggable.svg
226
221
  - app/frontend/editor/assets/remixicons/ri-drop-line.svg
227
222
  - app/frontend/editor/assets/remixicons/ri-external-link-line.svg
228
223
  - app/frontend/editor/assets/remixicons/ri-eye-line.svg
229
224
  - app/frontend/editor/assets/remixicons/ri-eye-off-line.svg
230
225
  - app/frontend/editor/assets/remixicons/ri-file-copy-line.svg
231
226
  - app/frontend/editor/assets/remixicons/ri-file-line.svg
227
+ - app/frontend/editor/assets/remixicons/ri-folders-line.svg
232
228
  - app/frontend/editor/assets/remixicons/ri-global-line.svg
233
229
  - app/frontend/editor/assets/remixicons/ri-insert-column-left.svg
234
230
  - app/frontend/editor/assets/remixicons/ri-insert-column-right.svg
@@ -237,10 +233,12 @@ files:
237
233
  - app/frontend/editor/assets/remixicons/ri-loader-4-line.svg
238
234
  - app/frontend/editor/assets/remixicons/ri-mail-line.svg
239
235
  - app/frontend/editor/assets/remixicons/ri-more-2-fill.svg
236
+ - app/frontend/editor/assets/remixicons/ri-more-fill.svg
240
237
  - app/frontend/editor/assets/remixicons/ri-palette-line.svg
241
238
  - app/frontend/editor/assets/remixicons/ri-pencil-line.svg
242
239
  - app/frontend/editor/assets/remixicons/ri-play-list-add-line.svg
243
240
  - app/frontend/editor/assets/remixicons/ri-settings-5-line.svg
241
+ - app/frontend/editor/assets/remixicons/ri-shadow-line.svg
244
242
  - app/frontend/editor/assets/remixicons/ri-stack-line.svg
245
243
  - app/frontend/editor/assets/remixicons/ri-table-2.svg
246
244
  - app/frontend/editor/assets/remixicons/ri-table-line.svg
@@ -250,11 +248,13 @@ files:
250
248
  - app/frontend/editor/assets/remixicons/tablet-line.svg
251
249
  - app/frontend/editor/components/dynamic-form/dynamic-input.vue
252
250
  - app/frontend/editor/components/dynamic-form/index.vue
251
+ - app/frontend/editor/components/errors/forbidden.vue
253
252
  - app/frontend/editor/components/errors/stale-record.vue
254
253
  - app/frontend/editor/components/header-nav/device-toggler.vue
255
254
  - app/frontend/editor/components/header-nav/index.vue
256
255
  - app/frontend/editor/components/header-nav/locale-toggler/index.vue
257
256
  - app/frontend/editor/components/header-nav/locale-toggler/locale-link.vue
257
+ - app/frontend/editor/components/header-nav/page-info.vue
258
258
  - app/frontend/editor/components/header-nav/preview-button.vue
259
259
  - app/frontend/editor/components/header-nav/preview-toggler.vue
260
260
  - app/frontend/editor/components/header-nav/publish-button.vue
@@ -273,15 +273,16 @@ files:
273
273
  - app/frontend/editor/components/kit/color-input/preset-button.vue
274
274
  - app/frontend/editor/components/kit/color-input/preset-dropdown.vue
275
275
  - app/frontend/editor/components/kit/confirmation-button.vue
276
+ - app/frontend/editor/components/kit/copy-paste-button.vue
276
277
  - app/frontend/editor/components/kit/divider.vue
277
278
  - app/frontend/editor/components/kit/dropdown.vue
278
279
  - app/frontend/editor/components/kit/hint.vue
280
+ - app/frontend/editor/components/kit/icon-button.vue
279
281
  - app/frontend/editor/components/kit/icon-input.vue
280
282
  - app/frontend/editor/components/kit/icon.vue
281
283
  - app/frontend/editor/components/kit/image-input.vue
282
284
  - app/frontend/editor/components/kit/index.js
283
285
  - app/frontend/editor/components/kit/link-input.vue
284
- - app/frontend/editor/components/kit/list-item-button.vue
285
286
  - app/frontend/editor/components/kit/modal-root.vue
286
287
  - app/frontend/editor/components/kit/modal.vue
287
288
  - app/frontend/editor/components/kit/page-icon.vue
@@ -313,6 +314,7 @@ files:
313
314
  - app/frontend/editor/components/page/edit.vue
314
315
  - app/frontend/editor/components/page/form/main.vue
315
316
  - app/frontend/editor/components/page/form/seo.vue
317
+ - app/frontend/editor/components/page/list/actions-button.vue
316
318
  - app/frontend/editor/components/page/list/index.vue
317
319
  - app/frontend/editor/components/page/list/list-item.vue
318
320
  - app/frontend/editor/components/page/new.vue
@@ -322,6 +324,7 @@ files:
322
324
  - app/frontend/editor/components/section-highlighter/index.vue
323
325
  - app/frontend/editor/components/section-highlighter/top-left-actions.vue
324
326
  - app/frontend/editor/components/section-highlighter/top-right-actions.vue
327
+ - app/frontend/editor/components/section-list/add-button.vue
325
328
  - app/frontend/editor/components/section-list/index.vue
326
329
  - app/frontend/editor/components/section-list/list-item.vue
327
330
  - app/frontend/editor/components/section-pane/block-list/index.vue
@@ -332,8 +335,10 @@ files:
332
335
  - app/frontend/editor/components/section-pane/block-tree/tree-node.vue
333
336
  - app/frontend/editor/components/section-pane/index.vue
334
337
  - app/frontend/editor/components/section-pane/setting-list.vue
335
- - app/frontend/editor/components/sidebar-nav.vue
338
+ - app/frontend/editor/components/sidebar-nav/index.vue
339
+ - app/frontend/editor/components/sidebar-nav/link.vue
336
340
  - app/frontend/editor/components/style-pane/index.vue
341
+ - app/frontend/editor/components/theme-section-list/category.vue
337
342
  - app/frontend/editor/components/theme-section-list/index.vue
338
343
  - app/frontend/editor/components/theme-section-list/list-item.vue
339
344
  - app/frontend/editor/design/application.scss
@@ -347,6 +352,7 @@ files:
347
352
  - app/frontend/editor/layouts/app.vue
348
353
  - app/frontend/editor/layouts/default.vue
349
354
  - app/frontend/editor/layouts/slide-pane.vue
355
+ - app/frontend/editor/locales/editor.ar.json
350
356
  - app/frontend/editor/locales/editor.en.json
351
357
  - app/frontend/editor/locales/editor.es.json
352
358
  - app/frontend/editor/locales/editor.fr.json
@@ -365,7 +371,6 @@ files:
365
371
  - app/frontend/editor/plugins/filters.js
366
372
  - app/frontend/editor/plugins/i18n.js
367
373
  - app/frontend/editor/plugins/index.js
368
- - app/frontend/editor/plugins/maglev_dummy.js
369
374
  - app/frontend/editor/plugins/tooltip.js
370
375
  - app/frontend/editor/router/index.js
371
376
  - app/frontend/editor/router/routes/base.js
@@ -418,8 +423,8 @@ files:
418
423
  - app/frontend/entrypoints/editor.js
419
424
  - app/frontend/entrypoints/live-preview-client.js
420
425
  - app/frontend/entrypoints/live-preview-rails-client.js
421
- - app/frontend/images/favicon.png
422
- - app/frontend/images/logo.png
426
+ - app/frontend/images/favicon.svg
427
+ - app/frontend/images/logo.svg
423
428
  - app/frontend/live-preview-client/iframe-decorator.js
424
429
  - app/frontend/live-preview-client/index.js
425
430
  - app/frontend/live-preview-client/message.js
@@ -490,6 +495,8 @@ files:
490
495
  - app/services/maglev/get_page_sections.rb
491
496
  - app/services/maglev/persist_page.rb
492
497
  - app/services/maglev/persist_section_screenshot.rb
498
+ - app/services/maglev/remove_section_type.rb
499
+ - app/services/maglev/rename_section_type.rb
493
500
  - app/services/maglev/search_pages.rb
494
501
  - app/services/maglev/setup_pages.rb
495
502
  - app/validators/maglev/collection_validator.rb
@@ -507,6 +514,8 @@ files:
507
514
  - app/views/maglev/api/assets/show.json.jbuilder
508
515
  - app/views/maglev/api/collection_items/_show.json.jbuilder
509
516
  - app/views/maglev/api/collection_items/index.json.jbuilder
517
+ - app/views/maglev/api/collection_items/show.json.jbuilder
518
+ - app/views/maglev/api/page_clones/create.json.jbuilder
510
519
  - app/views/maglev/api/pages/_show.json.jbuilder
511
520
  - app/views/maglev/api/pages/index.json.jbuilder
512
521
  - app/views/maglev/api/pages/show.json.jbuilder
@@ -521,9 +530,11 @@ files:
521
530
  - config/initializers/filter_parameters_logging.rb
522
531
  - config/initializers/kaminari.rb
523
532
  - config/initializers/zeitwerk.rb
533
+ - config/locales/activerecord.ar.yml
524
534
  - config/locales/activerecord.en.yml
525
535
  - config/locales/activerecord.es.yml
526
536
  - config/locales/activerecord.fr.yml
537
+ - config/locales/activerecord.pt-BR.yml
527
538
  - config/routes.rb
528
539
  - config/vite.json
529
540
  - db/migrate/20200824085207_create_maglev_sites.rb
@@ -540,6 +551,10 @@ files:
540
551
  - db/migrate/20211124101005_fix_page_path_indices.rb
541
552
  - db/migrate/20211203224112_add_open_graph_tags_to_pages.rb
542
553
  - db/migrate/20220612092235_add_style_to_sites.rb
554
+ - lib/commands/maglev/change_site_locales_command.rb
555
+ - lib/commands/maglev/create_site_command.rb
556
+ - lib/commands/maglev/sections/remove_command.rb
557
+ - lib/commands/maglev/sections/rename_command.rb
543
558
  - lib/generators/maglev/install_generator.rb
544
559
  - lib/generators/maglev/section_generator.rb
545
560
  - lib/generators/maglev/templates/install/config/initializers/maglev.rb
@@ -562,6 +577,8 @@ files:
562
577
  - lib/maglev/theme_filesystem_loader.rb
563
578
  - lib/maglev/version.rb
564
579
  - lib/maglevcms.rb
580
+ - lib/tasks/maglev/icons.rake
581
+ - lib/tasks/maglev/vite.rake
565
582
  - lib/tasks/maglev_tasks.rake
566
583
  - package.json
567
584
  - postcss.config.cjs
@@ -572,7 +589,6 @@ homepage: https://www.maglev.dev/
572
589
  licenses:
573
590
  - MIT
574
591
  metadata: {}
575
- post_install_message:
576
592
  rdoc_options: []
577
593
  require_paths:
578
594
  - lib
@@ -587,8 +603,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
587
603
  - !ruby/object:Gem::Version
588
604
  version: '0'
589
605
  requirements: []
590
- rubygems_version: 3.5.7
591
- signing_key:
606
+ rubygems_version: 3.6.7
592
607
  specification_version: 4
593
608
  summary: Website/page builder Ruby on Rails engine
594
609
  test_files: []
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Maglev
4
- class AssetsController < ApplicationController
5
- def show
6
- @asset = Maglev::Asset.find(resource_id)
7
- send_data @asset.download, filename: @asset.filename, type: @asset.content_type
8
- end
9
- end
10
- end
@@ -1,16 +0,0 @@
1
- <template>
2
- <button
3
- class="px-1 py-1 rounded-full bg-gray-600 bg-opacity-0 hover:text-gray-900 text-gray-600 focus:outline-none hover:bg-opacity-10 transition-colors duration-200"
4
- >
5
- <uikit-icon :name="iconName" size="1.25rem" />
6
- </button>
7
- </template>
8
-
9
- <script>
10
- export default {
11
- name: 'UIKitListItemButton',
12
- props: {
13
- iconName: { type: String, required: true },
14
- },
15
- }
16
- </script>
@@ -1,125 +0,0 @@
1
- <template>
2
- <nav class="w-16 flex flex-col justify-between">
3
- <div
4
- class="flex justify-center h-full w-full animate-pulse"
5
- v-if="!currentPage"
6
- >
7
- <div class="w-6 bg-gray-200 rounded h-48 my-6"></div>
8
- </div>
9
- <ol class="divide-y divide-gray-300 px-4" v-else>
10
- <li>
11
- <router-link
12
- :to="{ name: 'addSection' }"
13
- class="flex justify-center py-5 -ml-4 -mr-4 hover:bg-editor-primary hover:bg-opacity-5 transition-colors duration-200"
14
- :class="{
15
- 'bg-white': !isAddSectionPaneActive,
16
- 'bg-editor-primary bg-opacity-5': isAddSectionPaneActive,
17
- }"
18
- v-tooltip.right="$t('sidebarNav.addNewSectionTooltip')"
19
- >
20
- <uikit-icon name="add-box-line" size="1.5rem" />
21
- </router-link>
22
- </li>
23
- <li>
24
- <router-link
25
- :to="{ name: 'listSections' }"
26
- class="flex justify-center py-5 -ml-4 -mr-4 hover:bg-editor-primary hover:bg-opacity-5 transition-colors duration-200"
27
- :class="{
28
- 'bg-white': !isSectionListPaneActive,
29
- 'bg-editor-primary bg-opacity-5': isSectionListPaneActive,
30
- }"
31
- v-tooltip.right="$t('sidebarNav.managePageSectionsTooltip')"
32
- >
33
- <uikit-icon name="ri-stack-line" size="1.5rem" />
34
- </router-link>
35
- </li>
36
- <li v-if="hasStyle">
37
- <router-link
38
- :to="{ name: 'editStyle' }"
39
- class="flex justify-center py-5 -ml-4 -mr-4 hover:bg-editor-primary hover:bg-opacity-5 transition-colors duration-200"
40
- :class="{
41
- 'bg-white': !isEditStylePaneActive,
42
- 'bg-editor-primary bg-opacity-5': isEditStylePaneActive,
43
- }"
44
- v-tooltip.right="$t('sidebarNav.editStyleTooltip')"
45
- >
46
- <uikit-icon name="ri-drop-line" size="1.25rem" />
47
- </router-link>
48
- </li>
49
- <li>
50
- <a
51
- href="#"
52
- class="flex justify-center py-5 -ml-4 -mr-4 hover:bg-editor-primary hover:bg-opacity-5 transition-colors duration-200"
53
- @click.prevent="openImageLibraryModal"
54
- v-tooltip.right="$t('sidebarNav.openImageLibraryTooltip')"
55
- >
56
- <uikit-icon name="image-line" size="1.5rem" />
57
- </a>
58
- </li>
59
- <li v-if="false">
60
- <router-link
61
- :to="{ name: 'test', params: { pageId: currentPage.path } }"
62
- class="flex justify-center py-5 -ml-4 -mr-4 hover:bg-editor-primary hover:bg-opacity-5 transition-colors duration-200"
63
- >
64
- T
65
- </router-link>
66
- </li>
67
- <li v-if="false">
68
- <router-link
69
- :to="{ name: 'test2', params: { pageId: currentPage.path } }"
70
- class="flex justify-center py-5 -ml-4 -mr-4 hover:bg-editor-primary hover:bg-opacity-5 transition-colors duration-200"
71
- >
72
- T2
73
- </router-link>
74
- </li>
75
- <li></li>
76
- </ol>
77
-
78
- <ol class="divide-y divide-gray-300 px-4">
79
- <li></li>
80
- <li>
81
- <a
82
- :href="leaveEditorUrl"
83
- class="flex justify-center py-5 -ml-4 -mr-4 hover:bg-editor-primary hover:bg-opacity-5 transition-colors duration-200"
84
- v-tooltip.right="$t('sidebarNav.leaveEditorTooltip')"
85
- >
86
- <uikit-icon name="logout-box-r-line" size="1.5rem" />
87
- </a>
88
- </li>
89
- </ol>
90
- </nav>
91
- </template>
92
-
93
- <script>
94
- import ImageLibrary from '@/components/image-library/index.vue'
95
-
96
- export default {
97
- name: 'SidebarNav',
98
- computed: {
99
- hasStyle() {
100
- return !this.isBlank(this.currentStyle)
101
- },
102
- isAddSectionPaneActive() {
103
- return this.$route.name === 'addSection'
104
- },
105
- isSectionListPaneActive() {
106
- return this.$route.name === 'listSections'
107
- },
108
- isEditStylePaneActive() {
109
- return this.$route.name === 'editStyle'
110
- },
111
- leaveEditorUrl() {
112
- return window.leaveUrl
113
- },
114
- },
115
- methods: {
116
- openImageLibraryModal() {
117
- this.openModal({
118
- title: this.$t('imageLibrary.title'),
119
- component: ImageLibrary,
120
- props: { modalClass: 'w-216' },
121
- })
122
- },
123
- },
124
- }
125
- </script>
@@ -1,2 +0,0 @@
1
- import setup from 'maglev_dummy'
2
- setup()
Binary file
Binary file