comfortable_media_surfer 3.1.7 → 3.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/.github/workflows/claude-code-review.yml +2 -0
- data/.github/workflows/claude.yml +99 -1
- data/.github/workflows/coveralls.yml +4 -3
- data/.github/workflows/rubyonrails.yml +34 -5
- data/CHANGELOG.md +12 -1
- data/CONTRIBUTING.md +5 -1
- data/Gemfile +6 -5
- data/README.md +4 -4
- data/Rakefile +201 -0
- data/app/assets/javascripts/comfy/admin/cms/application.js +3 -0
- data/app/assets/javascripts/comfy/admin/cms/base.js +1 -0
- data/app/assets/javascripts/comfy/admin/cms/file_link.js +34 -11
- data/app/assets/javascripts/comfy/admin/cms/file_upload.js +37 -28
- data/app/assets/javascripts/comfy/admin/cms/files_modal.js +76 -26
- data/app/controllers/comfy/admin/cms/categories_controller.rb +1 -1
- data/app/controllers/comfy/admin/cms/files_controller.rb +1 -1
- data/app/controllers/comfy/admin/cms/layouts_controller.rb +1 -1
- data/app/controllers/comfy/admin/cms/pages_controller.rb +33 -4
- data/app/controllers/comfy/admin/cms/revisions/base_controller.rb +2 -2
- data/app/controllers/comfy/admin/cms/revisions/page_controller.rb +5 -5
- data/app/controllers/comfy/admin/cms/revisions/translation_controller.rb +5 -5
- data/app/controllers/comfy/admin/cms/sites_controller.rb +3 -3
- data/app/controllers/comfy/admin/cms/snippets_controller.rb +1 -1
- data/app/controllers/comfy/admin/cms/translations_controller.rb +15 -3
- data/app/controllers/comfy/cms/base_controller.rb +16 -7
- data/app/controllers/comfy/cms/content_controller.rb +4 -4
- data/app/controllers/concerns/comfy/reorder_action.rb +3 -4
- data/app/models/comfy/cms/categorization.rb +9 -0
- data/app/models/comfy/cms/category.rb +1 -1
- data/app/models/comfy/cms/fragment.rb +7 -0
- data/app/models/comfy/cms/layout.rb +7 -2
- data/app/models/comfy/cms/page.rb +13 -4
- data/app/models/comfy/cms/site.rb +3 -3
- data/app/models/comfy/cms/translation.rb +5 -0
- data/app/models/concerns/comfy/cms/with_categories.rb +1 -1
- data/app/models/concerns/comfy/cms/with_fragments.rb +1 -1
- data/app/views/comfy/admin/cms/pages/edit.html.haml +5 -1
- data/config/database.yml +1 -1
- data/config/initializers/json.rb +2 -0
- data/config/locales/ar.yml +6 -0
- data/config/locales/ca.yml +6 -0
- data/config/locales/cs.yml +6 -0
- data/config/locales/da.yml +6 -0
- data/config/locales/de.yml +6 -0
- data/config/locales/en.yml +6 -0
- data/config/locales/es.yml +6 -0
- data/config/locales/fi.yml +6 -0
- data/config/locales/fr.yml +6 -0
- data/config/locales/gr.yml +6 -0
- data/config/locales/hr.yml +6 -0
- data/config/locales/it.yml +6 -0
- data/config/locales/ja.yml +6 -0
- data/config/locales/nb.yml +6 -0
- data/config/locales/nl.yml +6 -0
- data/config/locales/pl.yml +6 -0
- data/config/locales/pt-BR.yml +6 -0
- data/config/locales/ru.yml +6 -0
- data/config/locales/sk.yml +6 -0
- data/config/locales/sv.yml +6 -0
- data/config/locales/tr.yml +6 -0
- data/config/locales/uk.yml +6 -0
- data/config/locales/zh-CN.yml +6 -0
- data/config/locales/zh-TW.yml +6 -0
- data/config/storage.yml +1 -1
- data/gemfiles/7.2.gemfile +1 -0
- data/gemfiles/8.0.gemfile +1 -0
- data/gemfiles/8.1.gemfile +1 -0
- data/lib/comfortable_media_surfer/access_control/admin_authentication.rb +2 -2
- data/lib/comfortable_media_surfer/extensions/has_revisions.rb +2 -2
- data/lib/comfortable_media_surfer/routing.rb +2 -0
- data/lib/comfortable_media_surfer/seeds/page/importer.rb +40 -12
- data/lib/comfortable_media_surfer/seeds.rb +1 -3
- data/lib/comfortable_media_surfer/version.rb +1 -1
- metadata +2 -3
- data/gemfiles/7.1.gemfile +0 -35
|
@@ -35,6 +35,8 @@ module ComfortableMediaSurfer::Routing
|
|
|
35
35
|
concerns :with_revisions, controller: 'revisions/page'
|
|
36
36
|
|
|
37
37
|
get :toggle_branch, on: :member
|
|
38
|
+
patch :publish_children, on: :member
|
|
39
|
+
patch :unpublish_children, on: :member
|
|
38
40
|
|
|
39
41
|
resources :translations, except: [:index] do
|
|
40
42
|
concerns :with_form_fragments
|
|
@@ -63,16 +63,21 @@ module ComfortableMediaSurfer::Seeds::Page
|
|
|
63
63
|
|
|
64
64
|
new_frag_identifiers, fragments_attributes =
|
|
65
65
|
construct_fragments_attributes(fragments_hash, page, path)
|
|
66
|
-
|
|
66
|
+
page_saved = begin
|
|
67
|
+
page.fragments_attributes = fragments_attributes
|
|
68
|
+
page.save
|
|
69
|
+
ensure
|
|
70
|
+
close_fragment_files(fragments_attributes)
|
|
71
|
+
end
|
|
67
72
|
|
|
68
|
-
if
|
|
73
|
+
if page_saved
|
|
69
74
|
message = "[CMS SEEDS] Imported Page \t #{page.full_path}"
|
|
70
75
|
ComfortableMediaSurfer.logger.info(message)
|
|
71
76
|
|
|
72
77
|
# defering target page linking
|
|
73
78
|
if target_page.present?
|
|
74
79
|
self.target_pages ||= {}
|
|
75
|
-
|
|
80
|
+
target_pages[page.id] = target_page
|
|
76
81
|
end
|
|
77
82
|
|
|
78
83
|
# cleaning up old fragments
|
|
@@ -127,9 +132,14 @@ module ComfortableMediaSurfer::Seeds::Page
|
|
|
127
132
|
|
|
128
133
|
new_frag_identifiers, fragments_attributes =
|
|
129
134
|
construct_fragments_attributes(fragments_hash, translation, path)
|
|
130
|
-
|
|
135
|
+
translation_saved = begin
|
|
136
|
+
translation.fragments_attributes = fragments_attributes
|
|
137
|
+
translation.save
|
|
138
|
+
ensure
|
|
139
|
+
close_fragment_files(fragments_attributes)
|
|
140
|
+
end
|
|
131
141
|
|
|
132
|
-
if
|
|
142
|
+
if translation_saved
|
|
133
143
|
message = "[CMS SEEDS] Imported Translation \t #{locale}"
|
|
134
144
|
ComfortableMediaSurfer.logger.info(message)
|
|
135
145
|
|
|
@@ -186,13 +196,15 @@ module ComfortableMediaSurfer::Seeds::Page
|
|
|
186
196
|
# ActiveStorage and a list of ids of old attachements to destroy
|
|
187
197
|
def files_content(record, identifier, path, frag_content)
|
|
188
198
|
# preparing attachments
|
|
189
|
-
files =
|
|
190
|
-
|
|
191
|
-
|
|
199
|
+
files = []
|
|
200
|
+
frag_content.split("\n").each do |filename|
|
|
201
|
+
file_handler = File.new(File.join(path, filename), 'rb')
|
|
202
|
+
attachment = {
|
|
192
203
|
io: file_handler,
|
|
193
|
-
filename: filename
|
|
194
|
-
content_type: MimeMagic.by_magic(file_handler)
|
|
204
|
+
filename: filename
|
|
195
205
|
}
|
|
206
|
+
files << attachment
|
|
207
|
+
attachment[:content_type] = MimeMagic.by_magic(file_handler)
|
|
196
208
|
end
|
|
197
209
|
|
|
198
210
|
# ensuring that old attachments get removed
|
|
@@ -202,12 +214,28 @@ module ComfortableMediaSurfer::Seeds::Page
|
|
|
202
214
|
end
|
|
203
215
|
|
|
204
216
|
[files, ids_destroy]
|
|
217
|
+
rescue StandardError
|
|
218
|
+
close_files(files)
|
|
219
|
+
raise
|
|
220
|
+
end
|
|
221
|
+
|
|
222
|
+
def close_fragment_files(fragment_attributes)
|
|
223
|
+
fragment_attributes.each do |attributes|
|
|
224
|
+
close_files(attributes[:files])
|
|
225
|
+
end
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
def close_files(files)
|
|
229
|
+
Array(files).each do |file|
|
|
230
|
+
io = file[:io]
|
|
231
|
+
io.close unless io.closed?
|
|
232
|
+
end
|
|
205
233
|
end
|
|
206
234
|
|
|
207
235
|
def link_target_pages
|
|
208
|
-
return unless
|
|
236
|
+
return unless target_pages.present?
|
|
209
237
|
|
|
210
|
-
|
|
238
|
+
target_pages.each do |page_id, target|
|
|
211
239
|
if (target = site.pages.find_by(full_path: target))
|
|
212
240
|
@site.pages.find(page_id).update_column(:target_page_id, target.id)
|
|
213
241
|
end
|
|
@@ -46,9 +46,7 @@ module ComfortableMediaSurfer::Seeds
|
|
|
46
46
|
text = ::File.read(file_path)
|
|
47
47
|
tokens = text.split(%r{^\[(.*?)\]\r?\n})
|
|
48
48
|
tokens.shift # first item should be blank
|
|
49
|
-
tokens.in_groups_of(2).
|
|
50
|
-
h[pair[0]] = pair[1]
|
|
51
|
-
end
|
|
49
|
+
tokens.in_groups_of(2).to_h
|
|
52
50
|
end
|
|
53
51
|
|
|
54
52
|
def fresh_seed?(object, file_path)
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: comfortable_media_surfer
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.
|
|
4
|
+
version: 3.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Oleg Khabarov
|
|
@@ -556,7 +556,6 @@ files:
|
|
|
556
556
|
- db/migrate/00_create_active_storage_tables.active_storage.rb
|
|
557
557
|
- db/migrate/01_create_cms.rb
|
|
558
558
|
- db/migrate/02_add_markdown_to_snippets.rb
|
|
559
|
-
- gemfiles/7.1.gemfile
|
|
560
559
|
- gemfiles/7.2.gemfile
|
|
561
560
|
- gemfiles/8.0.gemfile
|
|
562
561
|
- gemfiles/8.1.gemfile
|
|
@@ -659,7 +658,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
659
658
|
- !ruby/object:Gem::Version
|
|
660
659
|
version: '0'
|
|
661
660
|
requirements: []
|
|
662
|
-
rubygems_version:
|
|
661
|
+
rubygems_version: 4.0.18
|
|
663
662
|
specification_version: 4
|
|
664
663
|
summary: Rails 7.0+ CMS Engine
|
|
665
664
|
test_files: []
|
data/gemfiles/7.1.gemfile
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
source 'https://rubygems.org'
|
|
4
|
-
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
|
|
5
|
-
|
|
6
|
-
gemspec path: '../'
|
|
7
|
-
|
|
8
|
-
gem 'rails', '~> 7.1.0', '>= 7.1.5.1'
|
|
9
|
-
|
|
10
|
-
group :development, :test do
|
|
11
|
-
gem 'autoprefixer-rails', '~> 10.4.16.0'
|
|
12
|
-
gem 'byebug', '~> 11.1.0', platforms: %i[mri mingw x64_mingw]
|
|
13
|
-
gem 'image_processing', '>= 1.12.0'
|
|
14
|
-
gem 'propshaft', '~> 1.1.0'
|
|
15
|
-
gem 'sqlite3', '>= 2.1'
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
group :test do
|
|
19
|
-
gem 'brakeman', '~> 7.1.0'
|
|
20
|
-
gem 'bundler-audit', '~> 0.9.1'
|
|
21
|
-
gem 'coveralls_reborn', '~> 0.29.0', require: false
|
|
22
|
-
gem 'cuprite', '>= 0.15'
|
|
23
|
-
gem 'diffy'
|
|
24
|
-
gem 'equivalent-xml', '~> 0.6.0'
|
|
25
|
-
gem 'minitest', '< 6.0.0'
|
|
26
|
-
gem 'minitest-reporters', '>= 1.6.1'
|
|
27
|
-
gem 'mocha', '>= 2.3.0', require: false
|
|
28
|
-
gem 'ostruct'
|
|
29
|
-
gem 'puma'
|
|
30
|
-
gem 'rails-controller-testing', '~> 1.0.5'
|
|
31
|
-
gem 'rubocop', '~> 1.81.1', require: false
|
|
32
|
-
gem 'rubocop-minitest'
|
|
33
|
-
gem 'rubocop-rails'
|
|
34
|
-
gem 'simplecov', '~> 0.22.0', require: false
|
|
35
|
-
end
|