comfortable_media_surfer 3.0.0 → 3.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitattributes +1 -0
- data/.github/workflows/coveralls.yml +13 -1
- data/.github/workflows/rubyonrails.yml +15 -3
- data/.gitignore +4 -0
- data/.rubocop.yml +4 -1
- data/CHANGELOG.md +59 -0
- data/CONTRIBUTING.md +4 -2
- data/Gemfile +6 -2
- data/README.md +60 -25
- data/app/assets/builds/.keep +0 -0
- data/app/assets/config/manifest.js +1 -0
- data/app/assets/javascripts/comfy/admin/cms/application.js +21 -36
- data/app/assets/javascripts/comfy/admin/cms/base.js +6 -5
- data/app/assets/javascripts/comfy/admin/cms/codemirror.js +22 -10
- data/app/assets/javascripts/comfy/admin/cms/diff.js +7 -5
- data/app/assets/javascripts/comfy/admin/cms/file_link.js +17 -11
- data/app/assets/javascripts/comfy/admin/cms/file_upload.js +67 -41
- data/app/assets/javascripts/comfy/admin/cms/files_modal.js +20 -13
- data/app/assets/javascripts/comfy/admin/cms/sortable_list.js +28 -19
- data/app/assets/javascripts/comfy/admin/cms/timepicker.js +20 -12
- data/app/assets/javascripts/comfy/admin/cms/wysiwyg.js +39 -20
- data/app/assets/javascripts/comfy/vendor/diff/pretty_text_diff.js +30 -18
- data/app/assets/javascripts/comfy/vendor/redactor/definedlinks.js +31 -34
- data/app/assets/javascripts/comfy/vendor/redactor/filemanager.js +77 -62
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/hr.js +78 -76
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/nb.js +76 -74
- data/app/assets/javascripts/comfy/vendor/redactor/i18n/pl.js +77 -75
- data/app/assets/javascripts/comfy/vendor/redactor/imagemanager.js +66 -55
- data/app/assets/javascripts/comfy/vendor/redactor/table.js +346 -335
- data/app/assets/javascripts/comfy/vendor/redactor/video.js +69 -64
- data/app/assets/javascripts/comfy/vendor/redactor.js +2 -0
- data/app/assets/stylesheets/comfy/admin/cms/application.sass +2 -2
- data/app/assets/stylesheets/comfy/admin/cms/codemirror_overrides.sass +1 -1
- data/app/helpers/comfy/admin/cms_helper.rb +2 -2
- data/comfortable_media_surfer.gemspec +6 -8
- data/config/application.rb +1 -1
- data/config/environments/development.rb +11 -10
- data/config/environments/production.rb +0 -6
- data/config/puma.rb +43 -0
- data/gemfiles/7.1.gemfile +3 -2
- data/gemfiles/7.2.gemfile +3 -2
- data/gemfiles/{6.1.gemfile → 8.0.gemfile} +3 -2
- data/lib/comfortable_media_surfer/engine.rb +3 -8
- data/lib/comfortable_media_surfer/extensions/has_revisions.rb +1 -1
- data/lib/comfortable_media_surfer/render_methods.rb +7 -7
- data/lib/comfortable_media_surfer/version.rb +1 -1
- data/lib/generators/comfy/scaffold/scaffold_generator.rb +1 -1
- data/lib/tasks/cms_assets.rake +19 -0
- data/package-lock.json +379 -0
- data/package.json +23 -0
- data/rakelib/create_release.rake +17 -17
- metadata +16 -152
- data/app/assets/javascripts/comfy/vendor/Moxie.swf +0 -0
- data/app/assets/javascripts/comfy/vendor/Moxie.xap +0 -0
- data/app/assets/javascripts/comfy/vendor/bootstrap.bundle.min.js +0 -7
- data/app/assets/javascripts/comfy/vendor/bootstrap.bundle.min.js.map +0 -1
- data/app/assets/javascripts/comfy/vendor/codemirror/addon/edit/closetag.js +0 -169
- data/app/assets/javascripts/comfy/vendor/codemirror/mode/css/css.js +0 -832
- data/app/assets/javascripts/comfy/vendor/codemirror/mode/htmlmixed/htmlmixed.js +0 -152
- data/app/assets/javascripts/comfy/vendor/codemirror/mode/javascript/javascript.js +0 -875
- data/app/assets/javascripts/comfy/vendor/codemirror/mode/markdown/markdown.js +0 -861
- data/app/assets/javascripts/comfy/vendor/codemirror/mode/xml/xml.js +0 -394
- data/app/assets/javascripts/comfy/vendor/codemirror.js +0 -9653
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/ar.js +0 -52
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/bg.js +0 -65
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/bn.js +0 -65
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/ca.js +0 -83
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/cs.js +0 -70
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/cy.js +0 -92
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/da.js +0 -71
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/de.js +0 -70
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/default.js +0 -80
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/eo.js +0 -73
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/es.js +0 -69
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/et.js +0 -73
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/fa.js +0 -68
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/fi.js +0 -69
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/fr.js +0 -75
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/gr.js +0 -74
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/he.js +0 -57
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/hi.js +0 -65
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/hr.js +0 -66
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/hu.js +0 -72
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/id.js +0 -61
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/it.js +0 -70
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/ja.js +0 -57
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/ko.js +0 -60
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/lt.js +0 -72
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/lv.js +0 -67
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/mk.js +0 -69
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/mn.js +0 -67
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/ms.js +0 -68
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/my.js +0 -69
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/nl.js +0 -75
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/no.js +0 -73
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/pa.js +0 -65
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/pl.js +0 -68
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/pt-BR.js +0 -66
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/pt.js +0 -66
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/ro.js +0 -69
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/ru.js +0 -66
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/si.js +0 -65
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/sk.js +0 -70
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/sl.js +0 -70
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/sq.js +0 -65
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/sr.js +0 -69
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/sv.js +0 -70
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/th.js +0 -72
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/tr.js +0 -66
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/uk.js +0 -66
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/vn.js +0 -66
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/zh-CN.js +0 -61
- data/app/assets/javascripts/comfy/vendor/flatpickr/i18n/zh-TW.js +0 -61
- data/app/assets/javascripts/comfy/vendor/moxie.min.js +0 -16
- data/app/assets/javascripts/comfy/vendor/plupload.dev.js +0 -2497
- data/app/assets/javascripts/comfy/vendor/sortable.min.js +0 -5
- data/app/assets/stylesheets/comfy/vendor/codemirror.css +0 -346
- data/app/assets/stylesheets/comfy/vendor/flatpickr.min.css +0 -13
- data/config/initializers/assets.rb +0 -14
- data/gemfiles/7.0.gemfile +0 -31
@@ -1,77 +1,82 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
(function($)
|
4
|
-
{
|
5
|
-
RedactorPlugins.video = function()
|
6
|
-
{
|
7
|
-
return {
|
8
|
-
reUrlYoutube: /https?:\/\/(?:[0-9A-Z-]+\.)?(?:youtu\.be\/|youtube\.com\S*[^\w\-\s])([\w\-]{11})(?=[^\w\-]|$)(?![?=&+%\w.-]*(?:['"][^<>]*>|<\/a>))[?=&+%\w.-]*/ig,
|
9
|
-
reUrlVimeo: /https?:\/\/(www\.)?vimeo.com\/(\d+)($|\/)/,
|
10
|
-
getTemplate: function()
|
11
|
-
{
|
12
|
-
return String()
|
13
|
-
+ '<section id="redactor-modal-video-insert">'
|
14
|
-
+ '<label>' + this.lang.get('video_html_code') + '</label>'
|
15
|
-
+ '<textarea id="redactor-insert-video-area" style="height: 160px;"></textarea>'
|
16
|
-
+ '</section>';
|
17
|
-
},
|
18
|
-
init: function()
|
19
|
-
{
|
20
|
-
var button = this.button.addAfter('image', 'video', this.lang.get('video'));
|
21
|
-
this.button.addCallback(button, this.video.show);
|
22
|
-
},
|
23
|
-
show: function()
|
24
|
-
{
|
25
|
-
this.modal.addTemplate('video', this.video.getTemplate());
|
1
|
+
import jQuery from "jquery";
|
26
2
|
|
27
|
-
|
28
|
-
this.modal.createCancelButton();
|
3
|
+
if (!RedactorPlugins) var RedactorPlugins = {};
|
29
4
|
|
30
|
-
|
31
|
-
|
5
|
+
(function ($) {
|
6
|
+
RedactorPlugins.video = function () {
|
7
|
+
return {
|
8
|
+
reUrlYoutube:
|
9
|
+
/https?:\/\/(?:[0-9A-Z-]+\.)?(?:youtu\.be\/|youtube\.com\S*[^\w\-\s])([\w\-]{11})(?=[^\w\-]|$)(?![?=&+%\w.-]*(?:['"][^<>]*>|<\/a>))[?=&+%\w.-]*/gi,
|
10
|
+
reUrlVimeo: /https?:\/\/(www\.)?vimeo.com\/(\d+)($|\/)/,
|
11
|
+
getTemplate: function () {
|
12
|
+
return (
|
13
|
+
String() +
|
14
|
+
'<section id="redactor-modal-video-insert">' +
|
15
|
+
"<label>" +
|
16
|
+
this.lang.get("video_html_code") +
|
17
|
+
"</label>" +
|
18
|
+
'<textarea id="redactor-insert-video-area" style="height: 160px;"></textarea>' +
|
19
|
+
"</section>"
|
20
|
+
);
|
21
|
+
},
|
22
|
+
init: function () {
|
23
|
+
var button = this.button.addAfter(
|
24
|
+
"image",
|
25
|
+
"video",
|
26
|
+
this.lang.get("video")
|
27
|
+
);
|
28
|
+
this.button.addCallback(button, this.video.show);
|
29
|
+
},
|
30
|
+
show: function () {
|
31
|
+
this.modal.addTemplate("video", this.video.getTemplate());
|
32
32
|
|
33
|
-
|
34
|
-
|
33
|
+
this.modal.load("video", this.lang.get("video"), 700);
|
34
|
+
this.modal.createCancelButton();
|
35
35
|
|
36
|
-
|
36
|
+
var button = this.modal.createActionButton(this.lang.get("insert"));
|
37
|
+
button.on("click", this.video.insert);
|
37
38
|
|
38
|
-
|
39
|
-
|
40
|
-
{
|
41
|
-
var data = $('#redactor-insert-video-area').val();
|
39
|
+
this.selection.save();
|
40
|
+
this.modal.show();
|
42
41
|
|
43
|
-
|
44
|
-
|
45
|
-
|
42
|
+
$("#redactor-insert-video-area").focus();
|
43
|
+
},
|
44
|
+
insert: function () {
|
45
|
+
var data = $("#redactor-insert-video-area").val();
|
46
46
|
|
47
|
-
|
48
|
-
|
49
|
-
iframeEnd = '" frameborder="0" allowfullscreen></iframe>';
|
47
|
+
if (!data.match(/<iframe|<video/gi)) {
|
48
|
+
data = this.clean.stripTags(data);
|
50
49
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
else if (data.match(this.video.reUrlVimeo))
|
56
|
-
{
|
57
|
-
data = data.replace(this.video.reUrlVimeo, iframeStart + '//player.vimeo.com/video/$2' + iframeEnd);
|
58
|
-
}
|
59
|
-
}
|
50
|
+
// parse if it is link on youtube & vimeo
|
51
|
+
var iframeStart =
|
52
|
+
'<iframe style="width: 500px; height: 281px;" src="',
|
53
|
+
iframeEnd = '" frameborder="0" allowfullscreen></iframe>';
|
60
54
|
|
61
|
-
|
62
|
-
|
55
|
+
if (data.match(this.video.reUrlYoutube)) {
|
56
|
+
data = data.replace(
|
57
|
+
this.video.reUrlYoutube,
|
58
|
+
iframeStart + "//www.youtube.com/embed/$1" + iframeEnd
|
59
|
+
);
|
60
|
+
} else if (data.match(this.video.reUrlVimeo)) {
|
61
|
+
data = data.replace(
|
62
|
+
this.video.reUrlVimeo,
|
63
|
+
iframeStart + "//player.vimeo.com/video/$2" + iframeEnd
|
64
|
+
);
|
65
|
+
}
|
66
|
+
}
|
63
67
|
|
64
|
-
|
68
|
+
this.selection.restore();
|
69
|
+
this.modal.close();
|
65
70
|
|
66
|
-
|
67
|
-
else
|
68
|
-
{
|
69
|
-
this.insert.html(data);
|
70
|
-
}
|
71
|
+
var current = this.selection.getBlock() || this.selection.getCurrent();
|
71
72
|
|
72
|
-
|
73
|
-
|
73
|
+
if (current) $(current).after(data);
|
74
|
+
else {
|
75
|
+
this.insert.html(data);
|
76
|
+
}
|
74
77
|
|
75
|
-
|
76
|
-
|
77
|
-
}
|
78
|
+
this.code.sync();
|
79
|
+
},
|
80
|
+
};
|
81
|
+
};
|
82
|
+
})(jQuery);
|
@@ -1,9 +1,9 @@
|
|
1
1
|
@import "comfy/vendor/bootstrap/bootstrap"
|
2
2
|
|
3
|
-
@import "
|
3
|
+
@import "codemirror/lib/codemirror"
|
4
4
|
@import "comfy/vendor/fontawesome"
|
5
5
|
@import "comfy/vendor/redactor"
|
6
|
-
@import "
|
6
|
+
@import "flatpickr/dist/flatpickr.min"
|
7
7
|
|
8
8
|
@import "comfy/admin/cms/codemirror_overrides"
|
9
9
|
@import "comfy/admin/cms/redactor_overrides"
|
@@ -4,11 +4,11 @@ module Comfy
|
|
4
4
|
module Admin
|
5
5
|
module CmsHelper
|
6
6
|
# Wrapper around Comfy::FormBuilder
|
7
|
-
def comfy_form_with(**options, &
|
7
|
+
def comfy_form_with(**options, &)
|
8
8
|
form_options = options.merge(builder: ComfortableMediaSurfer::FormBuilder)
|
9
9
|
form_options[:bootstrap] = { layout: :horizontal }
|
10
10
|
form_options[:local] = true
|
11
|
-
bootstrap_form_with(**form_options, &
|
11
|
+
bootstrap_form_with(**form_options, &)
|
12
12
|
end
|
13
13
|
|
14
14
|
def comfy_admin_partial(path, params = {})
|
@@ -9,29 +9,27 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.authors = ['Oleg Khabarov', 'Andrew vonderLuft', 'ShakaCode']
|
10
10
|
spec.email = ['justin@shakacode.com']
|
11
11
|
spec.homepage = 'https://github.com/shakacode/comfortable-media-surfer'
|
12
|
-
spec.summary = 'Rails
|
13
|
-
spec.description = 'ComfortableMediaSurfer is a powerful Rails
|
12
|
+
spec.summary = 'Rails 7.0+ CMS Engine'
|
13
|
+
spec.description = 'ComfortableMediaSurfer is a powerful Rails 7.0+ CMS Engine'
|
14
14
|
spec.license = 'MIT'
|
15
15
|
|
16
|
+
spec.post_install_message = 'Please run rake comfy:compile_assets to compile assets.'
|
17
|
+
|
16
18
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
17
19
|
f.match(%r{^(test|doc)/})
|
18
20
|
end
|
19
21
|
|
20
|
-
spec.required_ruby_version = '>= 3.
|
22
|
+
spec.required_ruby_version = '>= 3.2.0'
|
21
23
|
spec.metadata['rubygems_mfa_required'] = 'true'
|
22
24
|
|
23
25
|
spec.add_dependency 'active_link_to', '~> 1.0', '>= 1.0.5'
|
24
26
|
spec.add_dependency 'comfy_bootstrap_form', '~> 4.0', '>= 4.0.0'
|
25
27
|
spec.add_dependency 'haml-rails', '~> 2.1', '>= 2.1.0'
|
26
28
|
spec.add_dependency 'image_processing', '~> 1.2', '>= 1.12.2'
|
27
|
-
spec.add_dependency 'jquery-rails', '~> 4.6', '>= 4.6.0'
|
28
29
|
spec.add_dependency 'kaminari', '~> 1.2', '>= 1.2.2'
|
29
30
|
spec.add_dependency 'kramdown', '~> 2.4', '>= 2.4.0'
|
30
31
|
spec.add_dependency 'mimemagic', '~> 0.4', '>= 0.4.3'
|
31
32
|
spec.add_dependency 'mini_magick', '~> 4.12', '>= 4.12.0'
|
32
|
-
spec.add_dependency 'rails', '>=
|
33
|
+
spec.add_dependency 'rails', '>= 7.0.0'
|
33
34
|
spec.add_dependency 'rails-i18n', '>= 6.0.0'
|
34
|
-
spec.add_dependency 'sassc-rails', '~> 2.1', '>= 2.1.2'
|
35
|
-
spec.add_dependency 'sprockets-rails', '~> 3.4', '>= 3.4.2'
|
36
|
-
spec.add_development_dependency "gem-release"
|
37
35
|
end
|
data/config/application.rb
CHANGED
@@ -17,7 +17,7 @@ module ComfortableMediaSurfer
|
|
17
17
|
if Gem::Version.new(Rails.version) >= Gem::Version.new('7.1.0')
|
18
18
|
config.active_record.default_column_serializer = YAML
|
19
19
|
config.active_record.before_committed_on_all_records = false
|
20
|
-
config.active_record.commit_transaction_on_non_local_return = false
|
20
|
+
# config.active_record.commit_transaction_on_non_local_return = false # deprecated in Rails 8
|
21
21
|
config.active_record.run_after_transaction_callbacks_in_order_defined = false
|
22
22
|
config.active_support.message_serializer = :json
|
23
23
|
config.active_record.run_commit_callbacks_on_first_saved_instances_in_transaction = true
|
@@ -16,22 +16,19 @@ defined?(ComfortableMediaSurfer::Application) && ComfortableMediaSurfer::Applica
|
|
16
16
|
# Show full error reports.
|
17
17
|
config.consider_all_requests_local = true
|
18
18
|
|
19
|
-
# Enable server timing
|
19
|
+
# Enable server timing.
|
20
20
|
config.server_timing = true
|
21
21
|
|
22
|
-
# Enable/disable caching. By default caching is disabled.
|
23
|
-
# Run rails dev:cache to toggle caching.
|
22
|
+
# Enable/disable Action Controller caching. By default Action Controller caching is disabled.
|
23
|
+
# Run rails dev:cache to toggle Action Controller caching.
|
24
24
|
if Rails.root.join('tmp/caching-dev.txt').exist?
|
25
25
|
config.action_controller.perform_caching = true
|
26
26
|
config.action_controller.enable_fragment_cache_logging = true
|
27
27
|
|
28
28
|
config.cache_store = :memory_store
|
29
|
-
config.public_file_server.headers = {
|
30
|
-
'Cache-Control' => "public, max-age=#{2.days.to_i}"
|
31
|
-
}
|
29
|
+
config.public_file_server.headers = { 'cache-control' => "public, max-age=#{2.days.to_i}" }
|
32
30
|
else
|
33
31
|
config.action_controller.perform_caching = false
|
34
|
-
|
35
32
|
config.cache_store = :null_store
|
36
33
|
end
|
37
34
|
|
@@ -41,8 +38,12 @@ defined?(ComfortableMediaSurfer::Application) && ComfortableMediaSurfer::Applica
|
|
41
38
|
# Don't care if the mailer can't send.
|
42
39
|
config.action_mailer.raise_delivery_errors = false
|
43
40
|
|
41
|
+
# Make template changes take effect immediately.
|
44
42
|
config.action_mailer.perform_caching = false
|
45
43
|
|
44
|
+
# Set localhost to be used by links generated in mailer templates.
|
45
|
+
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
|
46
|
+
|
46
47
|
# Print deprecation notices to the Rails logger.
|
47
48
|
config.active_support.deprecation = :log
|
48
49
|
|
@@ -61,9 +62,6 @@ defined?(ComfortableMediaSurfer::Application) && ComfortableMediaSurfer::Applica
|
|
61
62
|
# Highlight code that enqueued background job in logs.
|
62
63
|
config.active_job.verbose_enqueue_logs = true
|
63
64
|
|
64
|
-
# Suppress logger output for asset requests.
|
65
|
-
config.assets.quiet = true
|
66
|
-
|
67
65
|
# Raises error for missing translations.
|
68
66
|
# config.i18n.raise_on_missing_translations = true
|
69
67
|
|
@@ -77,4 +75,7 @@ defined?(ComfortableMediaSurfer::Application) && ComfortableMediaSurfer::Applica
|
|
77
75
|
# Raise error when a before_action's only/except options reference missing actions
|
78
76
|
config.action_controller.raise_on_missing_callback_actions = true
|
79
77
|
end
|
78
|
+
|
79
|
+
# Apply autocorrection by RuboCop to files generated by `bin/rails generate`.
|
80
|
+
# config.generators.apply_rubocop_autocorrect_after_generate!
|
80
81
|
end
|
@@ -25,12 +25,6 @@ defined?(ComfortableMediaSurfer::Application) && ComfortableMediaSurfer::Applica
|
|
25
25
|
# Enable static file serving from the `/public` folder (turn off if using NGINX/Apache for it).
|
26
26
|
config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
|
27
27
|
|
28
|
-
# Compress CSS using a preprocessor.
|
29
|
-
# config.assets.css_compressor = :sass
|
30
|
-
|
31
|
-
# Do not fallback to assets pipeline if a precompiled asset is missed.
|
32
|
-
config.assets.compile = false
|
33
|
-
|
34
28
|
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
|
35
29
|
# config.asset_host = "http://assets.example.com"
|
36
30
|
|
data/config/puma.rb
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# This configuration file will be evaluated by Puma. The top-level methods that
|
4
|
+
# are invoked here are part of Puma's configuration DSL. For more information
|
5
|
+
# about methods provided by the DSL, see https://puma.io/puma/Puma/DSL.html.
|
6
|
+
#
|
7
|
+
# Puma starts a configurable number of processes (workers) and each process
|
8
|
+
# serves each request in a thread from an internal thread pool.
|
9
|
+
#
|
10
|
+
# You can control the number of workers using ENV["WEB_CONCURRENCY"]. You
|
11
|
+
# should only set this value when you want to run 2 or more workers. The
|
12
|
+
# default is already 1.
|
13
|
+
#
|
14
|
+
# The ideal number of threads per worker depends both on how much time the
|
15
|
+
# application spends waiting for IO operations and on how much you wish to
|
16
|
+
# prioritize throughput over latency.
|
17
|
+
#
|
18
|
+
# As a rule of thumb, increasing the number of threads will increase how much
|
19
|
+
# traffic a given process can handle (throughput), but due to CRuby's
|
20
|
+
# Global VM Lock (GVL) it has diminishing returns and will degrade the
|
21
|
+
# response time (latency) of the application.
|
22
|
+
#
|
23
|
+
# The default is set to 3 threads as it's deemed a decent compromise between
|
24
|
+
# throughput and latency for the average Rails application.
|
25
|
+
#
|
26
|
+
# Any libraries that use a connection pool or another resource pool should
|
27
|
+
# be configured to provide at least as many connections as the number of
|
28
|
+
# threads. This includes Active Record's `pool` parameter in `database.yml`.
|
29
|
+
threads_count = ENV.fetch('RAILS_MAX_THREADS', 3)
|
30
|
+
threads threads_count, threads_count
|
31
|
+
|
32
|
+
# Specifies the `port` that Puma will listen on to receive requests; default is 3000.
|
33
|
+
port ENV.fetch('PORT', 3000)
|
34
|
+
|
35
|
+
# Allow puma to be restarted by `bin/rails restart` command.
|
36
|
+
plugin :tmp_restart
|
37
|
+
|
38
|
+
# Run the Solid Queue supervisor inside of Puma for single-server deployments
|
39
|
+
plugin :solid_queue if ENV['SOLID_QUEUE_IN_PUMA']
|
40
|
+
|
41
|
+
# Specify the PID file. Defaults to tmp/pids/server.pid in development.
|
42
|
+
# In other environments, only set the PID file if requested.
|
43
|
+
pidfile ENV['PIDFILE'] if ENV['PIDFILE']
|
data/gemfiles/7.1.gemfile
CHANGED
@@ -5,13 +5,14 @@ git_source(:github) { |repo| "https://github.com/#{repo}.git" }
|
|
5
5
|
|
6
6
|
gemspec path: '../'
|
7
7
|
|
8
|
-
gem 'rails', '~> 7.1.0', '>= 7.1.1'
|
8
|
+
gem 'rails', '~> 7.1.0', '>= 7.1.5.1'
|
9
9
|
|
10
10
|
group :development, :test do
|
11
11
|
gem 'autoprefixer-rails', '~> 10.4.16.0'
|
12
12
|
gem 'byebug', '~> 11.1.0', platforms: %i[mri mingw x64_mingw]
|
13
13
|
gem 'image_processing', '>= 1.12.0'
|
14
|
-
gem '
|
14
|
+
gem 'propshaft', '~> 1.1.0'
|
15
|
+
gem 'sqlite3', '>= 2.1'
|
15
16
|
end
|
16
17
|
|
17
18
|
group :test do
|
data/gemfiles/7.2.gemfile
CHANGED
@@ -5,13 +5,14 @@ git_source(:github) { |repo| "https://github.com/#{repo}.git" }
|
|
5
5
|
|
6
6
|
gemspec path: '../'
|
7
7
|
|
8
|
-
gem 'rails', '~> 7.2.0', '>= 7.2.2'
|
8
|
+
gem 'rails', '~> 7.2.0', '>= 7.2.2.1'
|
9
9
|
|
10
10
|
group :development, :test do
|
11
11
|
gem 'autoprefixer-rails', '~> 10.4.16.0'
|
12
12
|
gem 'byebug', '~> 11.1.0', platforms: %i[mri mingw x64_mingw]
|
13
13
|
gem 'image_processing', '>= 1.12.0'
|
14
|
-
gem '
|
14
|
+
gem 'propshaft', '~> 1.1.0'
|
15
|
+
gem 'sqlite3', '>= 2.1'
|
15
16
|
end
|
16
17
|
|
17
18
|
group :test do
|
@@ -5,13 +5,14 @@ git_source(:github) { |repo| "https://github.com/#{repo}.git" }
|
|
5
5
|
|
6
6
|
gemspec path: '../'
|
7
7
|
|
8
|
-
gem 'rails', '~>
|
8
|
+
gem 'rails', '~> 8.0.1'
|
9
9
|
|
10
10
|
group :development, :test do
|
11
11
|
gem 'autoprefixer-rails', '~> 10.4.16.0'
|
12
12
|
gem 'byebug', '~> 11.1.0', platforms: %i[mri mingw x64_mingw]
|
13
13
|
gem 'image_processing', '>= 1.12.0'
|
14
|
-
gem '
|
14
|
+
gem 'propshaft', '~> 1.1.0'
|
15
|
+
gem 'sqlite3', '>= 2.1'
|
15
16
|
end
|
16
17
|
|
17
18
|
group :test do
|
@@ -6,18 +6,13 @@ require 'rails-i18n'
|
|
6
6
|
require 'comfy_bootstrap_form'
|
7
7
|
require 'active_link_to'
|
8
8
|
require 'kramdown'
|
9
|
-
require 'jquery-rails'
|
10
9
|
require 'haml-rails'
|
11
|
-
require 'sassc-rails'
|
12
10
|
|
13
11
|
module ComfortableMediaSurfer
|
14
12
|
class Engine < ::Rails::Engine
|
15
|
-
initializer 'comfortable_media_surfer.setup_assets' do
|
16
|
-
|
17
|
-
|
18
|
-
comfy/admin/cms/application.css
|
19
|
-
comfy/admin/cms/lib/redactor-font.eot
|
20
|
-
]
|
13
|
+
initializer 'comfortable_media_surfer.setup_assets' do |app|
|
14
|
+
app.config.assets.paths << root.join('app/assets/builds')
|
15
|
+
app.config.assets.precompile += %w[comfy/admin/cms/application.js comfy/admin/cms/application.css]
|
21
16
|
end
|
22
17
|
|
23
18
|
config.to_prepare do
|
@@ -31,7 +31,7 @@ module ComfortableMediaSurfer::Extensions::HasRevisions
|
|
31
31
|
return if new_record?
|
32
32
|
|
33
33
|
if (respond_to?(:fragments_attributes_changed) && fragments_attributes_changed) ||
|
34
|
-
|
34
|
+
!!changed.intersect?(revision_fields)
|
35
35
|
self.revision_data = revision_fields.each_with_object({}) do |field, c|
|
36
36
|
c[field] = send("#{field}_was")
|
37
37
|
end
|
@@ -33,7 +33,7 @@ module ComfortableMediaSurfer::RenderMethods
|
|
33
33
|
# it by passing :cms_site parameter with site's slug. For example:
|
34
34
|
# render cms_page: '/path/to/page', cms_site: 'default'
|
35
35
|
#
|
36
|
-
def render(options = {}, locals = {}, &
|
36
|
+
def render(options = {}, locals = {}, &)
|
37
37
|
return super unless options.is_a?(Hash)
|
38
38
|
|
39
39
|
if (site_identifier = options.delete(:cms_site)) && !(@cms_site = Comfy::Cms::Site.find_by_identifier(site_identifier))
|
@@ -47,15 +47,15 @@ module ComfortableMediaSurfer::RenderMethods
|
|
47
47
|
end
|
48
48
|
|
49
49
|
if page_path
|
50
|
-
render_cms_page(page_path, options, locals, &
|
50
|
+
render_cms_page(page_path, options, locals, &)
|
51
51
|
elsif layout_identifier
|
52
|
-
render_cms_layout(layout_identifier, options, locals, &
|
52
|
+
render_cms_layout(layout_identifier, options, locals, &)
|
53
53
|
else
|
54
54
|
super
|
55
55
|
end
|
56
56
|
end
|
57
57
|
|
58
|
-
def render_cms_page(path, options = {}, locals = {}, &
|
58
|
+
def render_cms_page(path, options = {}, locals = {}, &)
|
59
59
|
path.gsub!(%r{^/#{@cms_site.path}}, '') if @cms_site.path.present?
|
60
60
|
|
61
61
|
unless (@cms_page = @cms_site.pages.find_by_full_path(path))
|
@@ -77,10 +77,10 @@ module ComfortableMediaSurfer::RenderMethods
|
|
77
77
|
options[:layout] ||= cms_app_layout.blank? ? nil : cms_app_layout
|
78
78
|
options[:inline] = @cms_page.render
|
79
79
|
|
80
|
-
render(options, locals, &
|
80
|
+
render(options, locals, &)
|
81
81
|
end
|
82
82
|
|
83
|
-
def render_cms_layout(identifier, options = {}, locals = {}, &
|
83
|
+
def render_cms_layout(identifier, options = {}, locals = {}, &)
|
84
84
|
unless (@cms_layout = @cms_site.layouts.find_by_identifier(identifier))
|
85
85
|
raise ComfortableMediaSurfer::MissingLayout, identifier
|
86
86
|
end
|
@@ -97,7 +97,7 @@ module ComfortableMediaSurfer::RenderMethods
|
|
97
97
|
options[:layout] ||= cms_app_layout.blank? ? nil : cms_app_layout
|
98
98
|
options[:inline] = cms_page.render
|
99
99
|
|
100
|
-
render(options, locals, &
|
100
|
+
render(options, locals, &)
|
101
101
|
end
|
102
102
|
end
|
103
103
|
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
namespace :comfy do
|
4
|
+
desc 'Compile SCSS and JS assets for propshaft.'
|
5
|
+
task :compile_assets do
|
6
|
+
puts 'Compiling assets...'
|
7
|
+
dir = File.expand_path("#{__dir__}/..")
|
8
|
+
Dir.chdir(dir) do
|
9
|
+
unless system('npm install')
|
10
|
+
puts 'Error: Failed to install npm packages.'
|
11
|
+
exit(-1)
|
12
|
+
end
|
13
|
+
unless system('npm run build && npm run build:css')
|
14
|
+
puts 'Error: Failed to compile assets'
|
15
|
+
exit(-1)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|