maglevcms 1.7.3 → 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 (164) hide show
  1. checksums.yaml +4 -4
  2. data/.yarn/install-state.gz +0 -0
  3. data/README.md +4 -4
  4. data/Rakefile +3 -1
  5. data/app/components/maglev/base_component.rb +6 -0
  6. data/app/components/maglev/block_component.rb +11 -1
  7. data/app/components/maglev/content/base.rb +9 -1
  8. data/app/components/maglev/content/link.rb +4 -0
  9. data/app/components/maglev/inspector.rb +18 -0
  10. data/app/components/maglev/page_component.rb +4 -0
  11. data/app/components/maglev/section_component.rb +6 -2
  12. data/app/controllers/concerns/maglev/fetchers_concern.rb +3 -1
  13. data/app/controllers/concerns/maglev/resource_id_concern.rb +10 -0
  14. data/app/controllers/concerns/maglev/standalone_sections_concern.rb +6 -0
  15. data/app/controllers/concerns/maglev/{ui_locale_concern.rb → user_interface_locale_concern.rb} +1 -1
  16. data/app/controllers/maglev/api/collection_items_controller.rb +7 -0
  17. data/app/controllers/maglev/api/page_clones_controller.rb +1 -2
  18. data/app/controllers/maglev/api_controller.rb +1 -1
  19. data/app/controllers/maglev/application_controller.rb +1 -5
  20. data/app/controllers/maglev/assets/active_storage_proxy_controller.rb +17 -0
  21. data/app/controllers/maglev/assets/proxy_controller.rb +21 -0
  22. data/app/controllers/maglev/editor_controller.rb +1 -1
  23. data/app/controllers/maglev/page_preview_controller.rb +3 -3
  24. data/app/frontend/admin/controllers/screenshot_controller.js +29 -1
  25. data/app/frontend/editor/assets/remixicons/clipboard-line.svg +1 -0
  26. data/app/frontend/editor/assets/remixicons/format-superscript.svg +1 -0
  27. data/app/frontend/editor/assets/remixicons/ri-draggable.svg +1 -0
  28. data/app/frontend/editor/assets/remixicons/ri-folders-line.svg +1 -0
  29. data/app/frontend/editor/assets/remixicons/ri-more-fill.svg +1 -0
  30. data/app/frontend/editor/assets/remixicons/ri-shadow-line.svg +1 -0
  31. data/app/frontend/editor/components/dynamic-form/dynamic-input.vue +1 -1
  32. data/app/frontend/editor/components/errors/forbidden.vue +24 -0
  33. data/app/frontend/editor/components/errors/stale-record.vue +2 -2
  34. data/app/frontend/editor/components/header-nav/device-toggler.vue +6 -3
  35. data/app/frontend/editor/components/header-nav/index.vue +13 -42
  36. data/app/frontend/editor/components/header-nav/locale-toggler/index.vue +1 -1
  37. data/app/frontend/editor/components/header-nav/page-info.vue +41 -0
  38. data/app/frontend/editor/components/header-nav/preview-button.vue +6 -1
  39. data/app/frontend/editor/components/header-nav/separator.vue +1 -1
  40. data/app/frontend/editor/components/image-library/index.vue +26 -29
  41. data/app/frontend/editor/components/kit/collection-item-input.vue +9 -0
  42. data/app/frontend/editor/components/kit/copy-paste-button.vue +26 -0
  43. data/app/frontend/editor/components/kit/dropdown.vue +5 -0
  44. data/app/frontend/editor/components/kit/icon-button.vue +24 -0
  45. data/app/frontend/editor/components/kit/icon.vue +2 -3
  46. data/app/frontend/editor/components/kit/index.js +4 -2
  47. data/app/frontend/editor/components/kit/link-input.vue +1 -1
  48. data/app/frontend/editor/components/kit/modal.vue +1 -1
  49. data/app/frontend/editor/components/kit/page-icon.vue +1 -1
  50. data/app/frontend/editor/components/kit/rich-text-input/extensions/marks/Superscript.js +43 -0
  51. data/app/frontend/editor/components/kit/rich-text-input/format-buttons.vue +9 -1
  52. data/app/frontend/editor/components/kit/rich-text-input/link-buttons.vue +1 -1
  53. data/app/frontend/editor/components/kit/rich-text-input.vue +11 -5
  54. data/app/frontend/editor/components/kit/select-input.vue +4 -2
  55. data/app/frontend/editor/components/link-picker/actions.vue +1 -1
  56. data/app/frontend/editor/components/link-picker/index.vue +1 -1
  57. data/app/frontend/editor/components/link-picker/page.vue +2 -0
  58. data/app/frontend/editor/components/page/form/main.vue +1 -1
  59. data/app/frontend/editor/components/page/list/actions-button.vue +159 -0
  60. data/app/frontend/editor/components/page/list/index.vue +15 -24
  61. data/app/frontend/editor/components/page/list/list-item.vue +10 -61
  62. data/app/frontend/editor/components/section-highlighter/index.vue +47 -46
  63. data/app/frontend/editor/components/section-list/add-button.vue +39 -0
  64. data/app/frontend/editor/components/section-list/index.vue +30 -15
  65. data/app/frontend/editor/components/section-list/list-item.vue +23 -8
  66. data/app/frontend/editor/components/section-pane/block-list/index.vue +1 -0
  67. data/app/frontend/editor/components/section-pane/block-list/list-item.vue +9 -6
  68. data/app/frontend/editor/components/section-pane/block-tree/new-nested-block-button.vue +2 -2
  69. data/app/frontend/editor/components/section-pane/block-tree/tree-node.vue +2 -2
  70. data/app/frontend/editor/components/sidebar-nav/index.vue +102 -0
  71. data/app/frontend/editor/components/sidebar-nav/link.vue +60 -0
  72. data/app/frontend/editor/components/theme-section-list/category.vue +47 -0
  73. data/app/frontend/editor/components/theme-section-list/index.vue +7 -31
  74. data/app/frontend/editor/components/theme-section-list/list-item.vue +10 -3
  75. data/app/frontend/editor/design/components/modal.scss +1 -1
  76. data/app/frontend/editor/design/components/tooltip.scss +6 -0
  77. data/app/frontend/editor/design/transitions.scss +1 -1
  78. data/app/frontend/editor/layouts/app.vue +1 -1
  79. data/app/frontend/editor/layouts/default.vue +2 -2
  80. data/app/frontend/editor/layouts/slide-pane.vue +1 -1
  81. data/app/frontend/editor/locales/editor.ar.json +265 -0
  82. data/app/frontend/editor/locales/editor.en.json +23 -15
  83. data/app/frontend/editor/locales/editor.es.json +18 -10
  84. data/app/frontend/editor/locales/editor.fr.json +28 -13
  85. data/app/frontend/editor/locales/editor.pt-BR.json +18 -10
  86. data/app/frontend/editor/locales/index.js +3 -0
  87. data/app/frontend/editor/mixins/error-modal.js +7 -2
  88. data/app/frontend/editor/mixins/preview-transformation.js +0 -1
  89. data/app/frontend/editor/plugins/i18n.js +2 -17
  90. data/app/frontend/editor/services/__tests__/section.spec.js +6 -0
  91. data/app/frontend/editor/services/collection-item.js +8 -0
  92. data/app/frontend/editor/services/page.js +1 -1
  93. data/app/frontend/editor/services/section.js +30 -0
  94. data/app/frontend/editor/services/site.js +4 -4
  95. data/app/frontend/editor/services/theme.js +1 -0
  96. data/app/frontend/editor/spec/__mocks__/page.js +3 -1
  97. data/app/frontend/editor/spec/__mocks__/services.js +1 -0
  98. data/app/frontend/editor/store/__tests__/getters.spec.js +56 -1
  99. data/app/frontend/editor/store/actions/index.js +1 -0
  100. data/app/frontend/editor/store/actions/site.js +8 -4
  101. data/app/frontend/editor/store/getters.js +11 -0
  102. data/app/frontend/editor/views/page-preview.vue +2 -1
  103. data/app/frontend/images/favicon.svg +11 -0
  104. data/app/frontend/images/logo.svg +14 -0
  105. data/app/frontend/live-preview-client/iframe-decorator.js +17 -15
  106. data/app/frontend/live-preview-client/rails.js +1 -1
  107. data/app/helpers/maglev/application_helper.rb +7 -2
  108. data/app/helpers/maglev/editor_helper.rb +12 -5
  109. data/app/models/concerns/maglev/sections_concern.rb +4 -0
  110. data/app/models/maglev/asset.rb +13 -14
  111. data/app/models/maglev/page/path_concern.rb +23 -8
  112. data/app/models/maglev/page.rb +17 -18
  113. data/app/models/maglev/page_path.rb +18 -18
  114. data/app/models/maglev/section/setting.rb +1 -1
  115. data/app/models/maglev/section.rb +18 -9
  116. data/app/models/maglev/setting_types/link.rb +1 -1
  117. data/app/models/maglev/site/locales_concern.rb +1 -1
  118. data/app/models/maglev/site.rb +13 -24
  119. data/app/services/maglev/app_container.rb +2 -2
  120. data/app/services/maglev/extract_locale.rb +3 -2
  121. data/app/services/maglev/fetch_page.rb +2 -0
  122. data/app/services/maglev/fetch_theme_layout.rb +2 -0
  123. data/app/services/maglev/get_page_fullpath.rb +1 -2
  124. data/app/services/maglev/remove_section_type.rb +50 -0
  125. data/app/services/maglev/rename_section_type.rb +57 -0
  126. data/app/services/maglev/search_pages.rb +2 -1
  127. data/app/views/layouts/maglev/admin/application.html.erb +1 -1
  128. data/app/views/maglev/admin/sections/previews/show.html.erb +16 -1
  129. data/app/views/maglev/api/collection_items/show.json.jbuilder +7 -0
  130. data/app/views/maglev/api/page_clones/create.json.jbuilder +3 -0
  131. data/app/views/maglev/editor/show.html.erb +6 -5
  132. data/config/locales/activerecord.ar.yml +13 -0
  133. data/config/locales/activerecord.en.yml +8 -2
  134. data/config/locales/activerecord.es.yml +4 -0
  135. data/config/locales/activerecord.fr.yml +6 -2
  136. data/config/locales/activerecord.pt-BR.yml +13 -0
  137. data/config/routes.rb +4 -5
  138. data/db/migrate/20200831101942_create_maglev_section_content.rb +10 -2
  139. data/db/migrate/20210819092740_switch_to_localized_page_fields.rb +13 -3
  140. data/db/migrate/20211008064437_add_locales_to_sites.rb +7 -1
  141. data/db/migrate/20211013210954_translate_section_content.rb +16 -2
  142. data/db/migrate/20211203224112_add_open_graph_tags_to_pages.rb +9 -3
  143. data/db/migrate/20220612092235_add_style_to_sites.rb +5 -1
  144. data/lib/commands/maglev/change_site_locales_command.rb +61 -0
  145. data/lib/commands/maglev/create_site_command.rb +28 -0
  146. data/lib/commands/maglev/sections/remove_command.rb +48 -0
  147. data/lib/commands/maglev/sections/rename_command.rb +49 -0
  148. data/lib/generators/maglev/templates/install/config/initializers/maglev.rb +4 -1
  149. data/lib/generators/maglev/templates/theme/app/views/theme/layout.html.erb.tt +8 -2
  150. data/lib/maglev/errors.rb +1 -0
  151. data/lib/maglev/preview_constraint.rb +6 -2
  152. data/lib/maglev/theme_filesystem_loader.rb +7 -0
  153. data/lib/maglev/version.rb +1 -1
  154. data/lib/maglev.rb +13 -3
  155. data/lib/tasks/maglev/icons.rake +123 -0
  156. data/lib/tasks/maglev/vite.rake +62 -0
  157. data/lib/tasks/maglev_tasks.rake +9 -112
  158. data/tailwind.config.js +2 -1
  159. metadata +54 -35
  160. data/app/controllers/maglev/assets_controller.rb +0 -10
  161. data/app/frontend/editor/components/kit/list-item-button.vue +0 -16
  162. data/app/frontend/editor/components/sidebar-nav.vue +0 -125
  163. data/app/frontend/images/favicon.png +0 -0
  164. data/app/frontend/images/logo.png +0 -0
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ namespace :maglev do
4
+ namespace :vite do
5
+ desc 'Bundle frontend entrypoints using ViteRuby'
6
+ task build: :'vite:verify_install' do
7
+ within_engine_folder do
8
+ Maglev::Engine.vite_ruby.commands.build_from_task
9
+ end
10
+ end
11
+
12
+ desc 'Bundle entrypoints using Vite Ruby (SSR only if enabled)'
13
+ task build_all: :'vite:verify_install' do
14
+ within_engine_folder do
15
+ Maglev::Engine.vite_ruby.commands.build_from_task
16
+ Maglev::Engine.vite_ruby.commands.build_from_task('--ssr') if ViteRuby.config.ssr_build_enabled
17
+ end
18
+ end
19
+
20
+ desc 'Ensure build dependencies like Vite are installed before bundling'
21
+ task install_dependencies: :environment do
22
+ within_engine_folder do
23
+ install_dev_dependencies = ENV['VITE_RUBY_SKIP_INSTALL_DEV_DEPENDENCIES'] == 'true'
24
+ # rubocop:disable Style/StringHashKeys
25
+ install_env_args = install_dev_dependencies ? {} : { 'NODE_ENV' => 'development' }
26
+ # rubocop:enable Style/StringHashKeys
27
+ cmd = Maglev::Engine.vite_ruby.commands.legacy_npm_version? ? 'npx ci --yes' : 'npx --yes ci'
28
+ result = system(install_env_args, cmd)
29
+ # Fallback to `yarn` if `npx` is not available.
30
+ system(install_env_args, 'yarn install --frozen-lockfile') if result.nil?
31
+ end
32
+ end
33
+
34
+ desc 'Verify if ViteRuby is properly installed in the app'
35
+ task verify_install: :environment do
36
+ within_engine_folder do
37
+ Maglev::Engine.vite_ruby.commands.verify_install
38
+ end
39
+ end
40
+
41
+ desc 'Remove old bundles created by ViteRuby'
42
+ task :clean, %i[keep age] => :'vite:verify_install' do |_, args|
43
+ within_engine_folder do
44
+ Maglev::Engine.vite_ruby.commands.clean_from_task(args)
45
+ end
46
+ end
47
+
48
+ desc 'Remove the build output directory for ViteRuby'
49
+ task clobber: :'vite:verify_install' do
50
+ within_engine_folder do
51
+ Maglev::Engine.vite_ruby.commands.clobber
52
+ end
53
+ end
54
+
55
+ desc "Provide information on ViteRuby's environment"
56
+ task info: :environment do
57
+ within_engine_folder do
58
+ Maglev::Engine.vite_ruby.commands.print_info
59
+ end
60
+ end
61
+ end
62
+ end
@@ -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'
@@ -125,11 +27,6 @@ unless ENV['VITE_RUBY_SKIP_ASSETS_PRECOMPILE_EXTENSION'] == 'true'
125
27
  Rake::Task.define_task("assets:precompile": ['maglev:vite:install_dependencies', 'maglev:vite:build_all'])
126
28
  end
127
29
 
128
- Rake::Task.define_task('assets:clean', %i[keep age]) unless Rake::Task.task_defined?('assets:clean')
129
- Rake::Task['assets:clean'].enhance do |_, args|
130
- Rake::Task['maglev:vite:clean'].invoke(*args.to_h.values)
131
- end
132
-
133
30
  if Rake::Task.task_defined?('assets:clobber')
134
31
  Rake::Task['assets:clobber'].enhance do
135
32
  Rake::Task['maglev:vite:clobber'].invoke
data/tailwind.config.js CHANGED
@@ -6,7 +6,7 @@ try {
6
6
  console.log('No extra Maglev Pro Tailwindcss config');
7
7
  }
8
8
 
9
- module.exports = {
9
+ export default {
10
10
  content: [
11
11
  './**/*.html.erb',
12
12
  './app/helpers/**/*.rb',
@@ -40,6 +40,7 @@ module.exports = {
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.7.3
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-09-17 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
@@ -58,20 +63,20 @@ dependencies:
58
63
  requirements:
59
64
  - - "<"
60
65
  - !ruby/object:Gem::Version
61
- version: '7.3'
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
68
73
  requirements:
69
74
  - - "<"
70
75
  - !ruby/object:Gem::Version
71
- version: '7.3'
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.6
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.6
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:
@@ -150,6 +141,7 @@ files:
150
141
  - app/components/maglev/content/select.rb
151
142
  - app/components/maglev/content/text.rb
152
143
  - app/components/maglev/content/void.rb
144
+ - app/components/maglev/inspector.rb
153
145
  - app/components/maglev/page_component.rb
154
146
  - app/components/maglev/section_component.rb
155
147
  - app/components/maglev/tag_helper.rb
@@ -159,9 +151,10 @@ files:
159
151
  - app/controllers/concerns/maglev/fetchers_concern.rb
160
152
  - app/controllers/concerns/maglev/json_concern.rb
161
153
  - app/controllers/concerns/maglev/rendering_concern.rb
154
+ - app/controllers/concerns/maglev/resource_id_concern.rb
162
155
  - app/controllers/concerns/maglev/services_concern.rb
163
156
  - app/controllers/concerns/maglev/standalone_sections_concern.rb
164
- - app/controllers/concerns/maglev/ui_locale_concern.rb
157
+ - app/controllers/concerns/maglev/user_interface_locale_concern.rb
165
158
  - app/controllers/maglev/admin/base_controller.rb
166
159
  - app/controllers/maglev/admin/dashboard_controller.rb
167
160
  - app/controllers/maglev/admin/sections/previews_controller.rb
@@ -175,7 +168,8 @@ files:
175
168
  - app/controllers/maglev/api/sites_controller.rb
176
169
  - app/controllers/maglev/api_controller.rb
177
170
  - app/controllers/maglev/application_controller.rb
178
- - app/controllers/maglev/assets_controller.rb
171
+ - app/controllers/maglev/assets/active_storage_proxy_controller.rb
172
+ - app/controllers/maglev/assets/proxy_controller.rb
179
173
  - app/controllers/maglev/editor_controller.rb
180
174
  - app/controllers/maglev/page_preview_controller.rb
181
175
  - app/controllers/maglev/sitemap_controller.rb
@@ -191,6 +185,7 @@ files:
191
185
  - app/frontend/editor/assets/remixicons/arrow-drop-right.svg
192
186
  - app/frontend/editor/assets/remixicons/arrow-up-s-line.svg
193
187
  - app/frontend/editor/assets/remixicons/camera-line.svg
188
+ - app/frontend/editor/assets/remixicons/clipboard-line.svg
194
189
  - app/frontend/editor/assets/remixicons/close-line.svg
195
190
  - app/frontend/editor/assets/remixicons/computer-line.svg
196
191
  - app/frontend/editor/assets/remixicons/delete-bin-line.svg
@@ -208,6 +203,7 @@ files:
208
203
  - app/frontend/editor/assets/remixicons/format-list-unordered.svg
209
204
  - app/frontend/editor/assets/remixicons/format-paragraph.svg
210
205
  - app/frontend/editor/assets/remixicons/format-strikethrough.svg
206
+ - app/frontend/editor/assets/remixicons/format-superscript.svg
211
207
  - app/frontend/editor/assets/remixicons/format-underline.svg
212
208
  - app/frontend/editor/assets/remixicons/home-4-line.svg
213
209
  - app/frontend/editor/assets/remixicons/image-line.svg
@@ -221,12 +217,14 @@ files:
221
217
  - app/frontend/editor/assets/remixicons/ri-close-line.svg
222
218
  - app/frontend/editor/assets/remixicons/ri-delete-column.svg
223
219
  - app/frontend/editor/assets/remixicons/ri-delete-row.svg
220
+ - app/frontend/editor/assets/remixicons/ri-draggable.svg
224
221
  - app/frontend/editor/assets/remixicons/ri-drop-line.svg
225
222
  - app/frontend/editor/assets/remixicons/ri-external-link-line.svg
226
223
  - app/frontend/editor/assets/remixicons/ri-eye-line.svg
227
224
  - app/frontend/editor/assets/remixicons/ri-eye-off-line.svg
228
225
  - app/frontend/editor/assets/remixicons/ri-file-copy-line.svg
229
226
  - app/frontend/editor/assets/remixicons/ri-file-line.svg
227
+ - app/frontend/editor/assets/remixicons/ri-folders-line.svg
230
228
  - app/frontend/editor/assets/remixicons/ri-global-line.svg
231
229
  - app/frontend/editor/assets/remixicons/ri-insert-column-left.svg
232
230
  - app/frontend/editor/assets/remixicons/ri-insert-column-right.svg
@@ -235,10 +233,12 @@ files:
235
233
  - app/frontend/editor/assets/remixicons/ri-loader-4-line.svg
236
234
  - app/frontend/editor/assets/remixicons/ri-mail-line.svg
237
235
  - app/frontend/editor/assets/remixicons/ri-more-2-fill.svg
236
+ - app/frontend/editor/assets/remixicons/ri-more-fill.svg
238
237
  - app/frontend/editor/assets/remixicons/ri-palette-line.svg
239
238
  - app/frontend/editor/assets/remixicons/ri-pencil-line.svg
240
239
  - app/frontend/editor/assets/remixicons/ri-play-list-add-line.svg
241
240
  - app/frontend/editor/assets/remixicons/ri-settings-5-line.svg
241
+ - app/frontend/editor/assets/remixicons/ri-shadow-line.svg
242
242
  - app/frontend/editor/assets/remixicons/ri-stack-line.svg
243
243
  - app/frontend/editor/assets/remixicons/ri-table-2.svg
244
244
  - app/frontend/editor/assets/remixicons/ri-table-line.svg
@@ -248,11 +248,13 @@ files:
248
248
  - app/frontend/editor/assets/remixicons/tablet-line.svg
249
249
  - app/frontend/editor/components/dynamic-form/dynamic-input.vue
250
250
  - app/frontend/editor/components/dynamic-form/index.vue
251
+ - app/frontend/editor/components/errors/forbidden.vue
251
252
  - app/frontend/editor/components/errors/stale-record.vue
252
253
  - app/frontend/editor/components/header-nav/device-toggler.vue
253
254
  - app/frontend/editor/components/header-nav/index.vue
254
255
  - app/frontend/editor/components/header-nav/locale-toggler/index.vue
255
256
  - app/frontend/editor/components/header-nav/locale-toggler/locale-link.vue
257
+ - app/frontend/editor/components/header-nav/page-info.vue
256
258
  - app/frontend/editor/components/header-nav/preview-button.vue
257
259
  - app/frontend/editor/components/header-nav/preview-toggler.vue
258
260
  - app/frontend/editor/components/header-nav/publish-button.vue
@@ -271,15 +273,16 @@ files:
271
273
  - app/frontend/editor/components/kit/color-input/preset-button.vue
272
274
  - app/frontend/editor/components/kit/color-input/preset-dropdown.vue
273
275
  - app/frontend/editor/components/kit/confirmation-button.vue
276
+ - app/frontend/editor/components/kit/copy-paste-button.vue
274
277
  - app/frontend/editor/components/kit/divider.vue
275
278
  - app/frontend/editor/components/kit/dropdown.vue
276
279
  - app/frontend/editor/components/kit/hint.vue
280
+ - app/frontend/editor/components/kit/icon-button.vue
277
281
  - app/frontend/editor/components/kit/icon-input.vue
278
282
  - app/frontend/editor/components/kit/icon.vue
279
283
  - app/frontend/editor/components/kit/image-input.vue
280
284
  - app/frontend/editor/components/kit/index.js
281
285
  - app/frontend/editor/components/kit/link-input.vue
282
- - app/frontend/editor/components/kit/list-item-button.vue
283
286
  - app/frontend/editor/components/kit/modal-root.vue
284
287
  - app/frontend/editor/components/kit/modal.vue
285
288
  - app/frontend/editor/components/kit/page-icon.vue
@@ -290,6 +293,7 @@ files:
290
293
  - app/frontend/editor/components/kit/rich-text-input/extensions/Doc.js
291
294
  - app/frontend/editor/components/kit/rich-text-input/extensions/LineBreak.js
292
295
  - app/frontend/editor/components/kit/rich-text-input/extensions/marks/Link.js
296
+ - app/frontend/editor/components/kit/rich-text-input/extensions/marks/Superscript.js
293
297
  - app/frontend/editor/components/kit/rich-text-input/format-buttons.vue
294
298
  - app/frontend/editor/components/kit/rich-text-input/link-buttons.vue
295
299
  - app/frontend/editor/components/kit/rich-text-input/list-buttons.vue
@@ -310,6 +314,7 @@ files:
310
314
  - app/frontend/editor/components/page/edit.vue
311
315
  - app/frontend/editor/components/page/form/main.vue
312
316
  - app/frontend/editor/components/page/form/seo.vue
317
+ - app/frontend/editor/components/page/list/actions-button.vue
313
318
  - app/frontend/editor/components/page/list/index.vue
314
319
  - app/frontend/editor/components/page/list/list-item.vue
315
320
  - app/frontend/editor/components/page/new.vue
@@ -319,6 +324,7 @@ files:
319
324
  - app/frontend/editor/components/section-highlighter/index.vue
320
325
  - app/frontend/editor/components/section-highlighter/top-left-actions.vue
321
326
  - app/frontend/editor/components/section-highlighter/top-right-actions.vue
327
+ - app/frontend/editor/components/section-list/add-button.vue
322
328
  - app/frontend/editor/components/section-list/index.vue
323
329
  - app/frontend/editor/components/section-list/list-item.vue
324
330
  - app/frontend/editor/components/section-pane/block-list/index.vue
@@ -329,8 +335,10 @@ files:
329
335
  - app/frontend/editor/components/section-pane/block-tree/tree-node.vue
330
336
  - app/frontend/editor/components/section-pane/index.vue
331
337
  - app/frontend/editor/components/section-pane/setting-list.vue
332
- - 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
333
340
  - app/frontend/editor/components/style-pane/index.vue
341
+ - app/frontend/editor/components/theme-section-list/category.vue
334
342
  - app/frontend/editor/components/theme-section-list/index.vue
335
343
  - app/frontend/editor/components/theme-section-list/list-item.vue
336
344
  - app/frontend/editor/design/application.scss
@@ -344,6 +352,7 @@ files:
344
352
  - app/frontend/editor/layouts/app.vue
345
353
  - app/frontend/editor/layouts/default.vue
346
354
  - app/frontend/editor/layouts/slide-pane.vue
355
+ - app/frontend/editor/locales/editor.ar.json
347
356
  - app/frontend/editor/locales/editor.en.json
348
357
  - app/frontend/editor/locales/editor.es.json
349
358
  - app/frontend/editor/locales/editor.fr.json
@@ -414,8 +423,8 @@ files:
414
423
  - app/frontend/entrypoints/editor.js
415
424
  - app/frontend/entrypoints/live-preview-client.js
416
425
  - app/frontend/entrypoints/live-preview-rails-client.js
417
- - app/frontend/images/favicon.png
418
- - app/frontend/images/logo.png
426
+ - app/frontend/images/favicon.svg
427
+ - app/frontend/images/logo.svg
419
428
  - app/frontend/live-preview-client/iframe-decorator.js
420
429
  - app/frontend/live-preview-client/index.js
421
430
  - app/frontend/live-preview-client/message.js
@@ -486,6 +495,8 @@ files:
486
495
  - app/services/maglev/get_page_sections.rb
487
496
  - app/services/maglev/persist_page.rb
488
497
  - app/services/maglev/persist_section_screenshot.rb
498
+ - app/services/maglev/remove_section_type.rb
499
+ - app/services/maglev/rename_section_type.rb
489
500
  - app/services/maglev/search_pages.rb
490
501
  - app/services/maglev/setup_pages.rb
491
502
  - app/validators/maglev/collection_validator.rb
@@ -503,6 +514,8 @@ files:
503
514
  - app/views/maglev/api/assets/show.json.jbuilder
504
515
  - app/views/maglev/api/collection_items/_show.json.jbuilder
505
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
506
519
  - app/views/maglev/api/pages/_show.json.jbuilder
507
520
  - app/views/maglev/api/pages/index.json.jbuilder
508
521
  - app/views/maglev/api/pages/show.json.jbuilder
@@ -517,9 +530,11 @@ files:
517
530
  - config/initializers/filter_parameters_logging.rb
518
531
  - config/initializers/kaminari.rb
519
532
  - config/initializers/zeitwerk.rb
533
+ - config/locales/activerecord.ar.yml
520
534
  - config/locales/activerecord.en.yml
521
535
  - config/locales/activerecord.es.yml
522
536
  - config/locales/activerecord.fr.yml
537
+ - config/locales/activerecord.pt-BR.yml
523
538
  - config/routes.rb
524
539
  - config/vite.json
525
540
  - db/migrate/20200824085207_create_maglev_sites.rb
@@ -536,6 +551,10 @@ files:
536
551
  - db/migrate/20211124101005_fix_page_path_indices.rb
537
552
  - db/migrate/20211203224112_add_open_graph_tags_to_pages.rb
538
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
539
558
  - lib/generators/maglev/install_generator.rb
540
559
  - lib/generators/maglev/section_generator.rb
541
560
  - lib/generators/maglev/templates/install/config/initializers/maglev.rb
@@ -558,6 +577,8 @@ files:
558
577
  - lib/maglev/theme_filesystem_loader.rb
559
578
  - lib/maglev/version.rb
560
579
  - lib/maglevcms.rb
580
+ - lib/tasks/maglev/icons.rake
581
+ - lib/tasks/maglev/vite.rake
561
582
  - lib/tasks/maglev_tasks.rake
562
583
  - package.json
563
584
  - postcss.config.cjs
@@ -568,7 +589,6 @@ homepage: https://www.maglev.dev/
568
589
  licenses:
569
590
  - MIT
570
591
  metadata: {}
571
- post_install_message:
572
592
  rdoc_options: []
573
593
  require_paths:
574
594
  - lib
@@ -576,15 +596,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
576
596
  requirements:
577
597
  - - ">="
578
598
  - !ruby/object:Gem::Version
579
- version: '2.6'
599
+ version: '3.0'
580
600
  required_rubygems_version: !ruby/object:Gem::Requirement
581
601
  requirements:
582
602
  - - ">="
583
603
  - !ruby/object:Gem::Version
584
604
  version: '0'
585
605
  requirements: []
586
- rubygems_version: 3.5.7
587
- signing_key:
606
+ rubygems_version: 3.6.7
588
607
  specification_version: 4
589
608
  summary: Website/page builder Ruby on Rails engine
590
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>