occams 1.0.8 → 1.1.1.1
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/coveralls.yml +2 -2
- data/.github/workflows/rubyonrails.yml +1 -1
- data/.gitignore +1 -0
- data/.rubocop.yml +4 -0
- data/CHANGELOG.md +17 -0
- data/Gemfile +14 -15
- data/README.md +3 -6
- data/TODOS.md +2 -3
- data/app/controllers/concerns/occams/paginate.rb +5 -3
- data/app/controllers/concerns/occams/reorder_action.rb +3 -0
- data/app/controllers/occams/admin/cms/pages_controller.rb +10 -2
- data/app/helpers/occams/admin/cms_helper.rb +5 -2
- data/app/helpers/occams/cms_helper.rb +1 -3
- data/config/application.rb +1 -2
- data/config/environments/test.rb +2 -0
- data/config/initializers/content_security_policy.rb +1 -0
- data/config/initializers/inflections.rb +1 -0
- data/config/initializers/new_framework_defaults_7_1.rb +1 -0
- data/config/initializers/permissions_policy.rb +1 -0
- data/config/locales/en.yml +3 -3
- data/gemfiles/6.1.gemfile +11 -18
- data/gemfiles/7.0.gemfile +12 -18
- data/gemfiles/7.1.gemfile +12 -18
- data/lib/occams/content/tags/file_link.rb +9 -13
- data/lib/occams/content/tags/image.rb +56 -0
- data/lib/occams/content/tags/mixins/file_content.rb +1 -1
- data/lib/occams/content/tags/page_file_link.rb +4 -1
- data/lib/occams/content/tags/siblings.rb +3 -0
- data/lib/occams/content/tags.rb +1 -0
- data/lib/occams/error.rb +3 -3
- data/lib/occams/version.rb +1 -1
- data/occams.gemspec +1 -1
- metadata +5 -6
- data/lib/occams/routes/cms.rb +0 -16
- data/lib/occams/routes/cms_admin.rb +0 -56
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: de6711b997c207a91f021b6f4bfb158f8a4ab7763b533367ca2726edda6c4af4
|
|
4
|
+
data.tar.gz: da3e64509b1689282afcb484d1f6942db43945a39cdfcce2baf566ed4e0ce80f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f63e97f7e35f9d722ddc95aeff8cf71b22973f388b773dcab39a5b61a698b8b980e31134ee944731887cacda1be2dca9209c1dc169fe45f7fb8d62eb4cd0fdc7
|
|
7
|
+
data.tar.gz: 38a2af2e7b3f4ad037669ce10e14186a9cb07def0d36130c4331ebf041d34b02c8634d7631b99b67feb77ceddfebd5e8eb98c0c61da4795f21b40ad3694a33f1
|
|
@@ -10,9 +10,9 @@ jobs:
|
|
|
10
10
|
strategy:
|
|
11
11
|
matrix:
|
|
12
12
|
ruby-version:
|
|
13
|
-
- "3.
|
|
13
|
+
- "3.3"
|
|
14
14
|
rails-version:
|
|
15
|
-
- "7.
|
|
15
|
+
- "7.1"
|
|
16
16
|
continue-on-error: [true]
|
|
17
17
|
name: ${{ format('Coverage (Ruby {0}, Rails {1})', matrix.ruby-version, matrix.rails-version) }}
|
|
18
18
|
runs-on: ubuntu-latest
|
|
@@ -10,13 +10,13 @@ jobs:
|
|
|
10
10
|
strategy:
|
|
11
11
|
matrix:
|
|
12
12
|
ruby-version:
|
|
13
|
-
- "2.7"
|
|
14
13
|
- "3.1"
|
|
15
14
|
- "3.2"
|
|
16
15
|
- "3.3"
|
|
17
16
|
rails-version:
|
|
18
17
|
- "6.1"
|
|
19
18
|
- "7.0"
|
|
19
|
+
- "7.1"
|
|
20
20
|
continue-on-error: [true]
|
|
21
21
|
name: ${{ format('Tests (Ruby {0}, Rails {1})', matrix.ruby-version, matrix.rails-version) }}
|
|
22
22
|
runs-on: ubuntu-latest
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v.1.1.1 19 May 2024
|
|
4
|
+
|
|
5
|
+
- bump to Rails 7.1.3.3
|
|
6
|
+
- bugfix: uploaded files index page was blank
|
|
7
|
+
- create cms:image tag, simplifying from cms:file_link
|
|
8
|
+
- add 'title' attribute to images
|
|
9
|
+
- update and optimize test suite
|
|
10
|
+
- drop support for ruby < 3.0 - no longer supported
|
|
11
|
+
|
|
12
|
+
## v.1.1.0 13 May 2024
|
|
13
|
+
|
|
14
|
+
- Rails 7.1 compatibility, all tests passing
|
|
15
|
+
- corrected bug in siblings tag to not display links to unpublished pages
|
|
16
|
+
- children lists and sibling navs are updated after page create, update, delete
|
|
17
|
+
- fixed zeitwerk check failures
|
|
18
|
+
- updated README
|
|
19
|
+
|
|
3
20
|
## v1.0.8 - 29 December 2023
|
|
4
21
|
|
|
5
22
|
- Updated configs, et al. in pursuit of Rails 7.1 compatibility
|
data/Gemfile
CHANGED
|
@@ -5,35 +5,34 @@ git_source(:github) { |repo| "https://github.com/#{repo}.git" }
|
|
|
5
5
|
|
|
6
6
|
gemspec
|
|
7
7
|
|
|
8
|
-
gem 'rails', '~> 7.
|
|
8
|
+
gem 'rails', '~> 7.1.3'
|
|
9
9
|
|
|
10
10
|
group :development, :test do
|
|
11
|
-
gem 'autoprefixer-rails', '~>
|
|
12
|
-
gem 'byebug', '~>
|
|
13
|
-
gem 'image_processing', '>= 1.
|
|
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
14
|
gem 'sqlite3', '~> 1.6.7'
|
|
15
15
|
# gem 'mysql2', '~> 0.5'
|
|
16
16
|
# gem 'pg', '~> 1.5.4'
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
group :development do
|
|
20
|
-
gem 'listen', '~> 3.
|
|
20
|
+
gem 'listen', '~> 3.9.0'
|
|
21
21
|
gem 'web-console', '~> 4.2'
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
group :test do
|
|
25
|
-
gem 'brakeman', '~>
|
|
25
|
+
gem 'brakeman', '~> 6.1.2'
|
|
26
26
|
gem 'bundler-audit', '~> 0.9.1'
|
|
27
|
-
gem 'capybara', '~> 3.39.0'
|
|
28
27
|
gem 'coveralls_reborn', '~> 0.28.0', require: false
|
|
29
|
-
gem 'cuprite', '
|
|
30
|
-
gem 'diffy', '~> 3.4.2'
|
|
28
|
+
gem 'cuprite', '>= 0.15'
|
|
31
29
|
gem 'equivalent-xml', '~> 0.6.0'
|
|
32
|
-
gem 'minitest', '
|
|
33
|
-
gem 'minitest-reporters', '
|
|
34
|
-
gem 'mocha', '
|
|
35
|
-
gem 'puma', '~> 6.4.0'
|
|
30
|
+
gem 'minitest', '>= 5.23.0'
|
|
31
|
+
gem 'minitest-reporters', '>= 1.6.1'
|
|
32
|
+
gem 'mocha', '>= 2.3.0', require: false
|
|
36
33
|
gem 'rails-controller-testing', '~> 1.0.5'
|
|
37
|
-
gem 'rubocop', '~> 1.
|
|
38
|
-
gem '
|
|
34
|
+
gem 'rubocop', '~> 1.63.0', require: false
|
|
35
|
+
gem 'rubocop-minitest'
|
|
36
|
+
gem 'rubocop-rails'
|
|
37
|
+
gem 'simplecov', '~> 0.22.0', require: false
|
|
39
38
|
end
|
data/README.md
CHANGED
|
@@ -47,9 +47,8 @@ ocCaM'S, pronounced "AH-kums" is a nod to [Occam's Razor](https://en.wikipedia.o
|
|
|
47
47
|
|
|
48
48
|
## Compatibility
|
|
49
49
|
|
|
50
|
-
- [Test suite](https://github.com/avonderluft/occams/actions/workflows/rubyonrails.yml) on Ruby >=
|
|
51
|
-
- On Ruby 3.
|
|
52
|
-
- Sites do run on Rails 7.1, e.g. [GKNT](https://gknt.org/), but some tests fail in [Github Actions](https://github.com/avonderluft/occams/actions). Your mileage may vary.
|
|
50
|
+
- [Test suite](https://github.com/avonderluft/occams/actions/workflows/rubyonrails.yml) on Ruby >= 3.0 with Rails >= 6.1
|
|
51
|
+
- On Ruby 3.x, Rails 7.x + is recommended, since performance is noticably better than on 6.x
|
|
53
52
|
|
|
54
53
|
## Installation
|
|
55
54
|
|
|
@@ -98,8 +97,6 @@ Once you have a layout, you may start creating pages and populating content. It'
|
|
|
98
97
|
|
|
99
98
|
## Documentation
|
|
100
99
|
|
|
101
|
-
[Occams](https://github.com/avonderluft/occams)
|
|
102
|
-
|
|
103
100
|
For more information on how to use this CMS please refer to the [Wiki](https://github.com/avonderluft/occams/wiki). Section that might be of interest is the entry
|
|
104
101
|
on [Content Tags](https://github.com/comfy/avonderluft/occams/Content-Tags).
|
|
105
102
|
|
|
@@ -120,5 +117,5 @@ For more detail see [CONTRIBUTING](CONTRIBUTING.md)
|
|
|
120
117
|
- Thanks to [Roman Almeida](https://github.com/nasmorn) for contributing OEM License for [Redactor Text Editor](http://imperavi.com/redactor)
|
|
121
118
|
|
|
122
119
|
---
|
|
123
|
-
- [Occams](https://github.com/avonderluft/occams) Copyright 2023 Andrew vonderLuft, following Comfy, released under the [MIT license](LICENSE)
|
|
120
|
+
- [Occams](https://github.com/avonderluft/occams) Copyright 2023-2024 Andrew vonderLuft, following Comfy, released under the [MIT license](LICENSE)
|
|
124
121
|
- [ComfortableMexicanSofa](https://github.com/comfy/comfortable-mexican-sofa) Copyright 2010-2019 Oleg Khabarov. Released under the [MIT license](LICENSE)
|
data/TODOS.md
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
# ToDos
|
|
2
2
|
|
|
3
|
-
- set up Buildkite CI and add build badge to README
|
|
4
3
|
- add duplicate page function in admin UI
|
|
5
4
|
- add admin content search to list layouts, pages and snippets - see https://blog.robertsj.com/search/
|
|
6
|
-
-
|
|
7
|
-
-
|
|
5
|
+
- diagnose and correct failure of ImageMagick params in file_link and image cms tags
|
|
6
|
+
- lint for rubocop-rails and rubocop-minitest
|
|
@@ -12,6 +12,9 @@ module Occams::ReorderAction
|
|
|
12
12
|
(params.permit(order: [])[:order] || []).each_with_index do |id, index|
|
|
13
13
|
resource_class.where(id: id).update_all(position: index)
|
|
14
14
|
end
|
|
15
|
+
if resource_class == ::Occams::Cms::Page
|
|
16
|
+
Occams::Cms::Page.all.each(&:save!)
|
|
17
|
+
end
|
|
15
18
|
head :ok
|
|
16
19
|
end
|
|
17
20
|
end
|
|
@@ -35,8 +35,14 @@ class Occams::Admin::Cms::PagesController < Occams::Admin::Cms::BaseController
|
|
|
35
35
|
render
|
|
36
36
|
end
|
|
37
37
|
|
|
38
|
+
def update_family
|
|
39
|
+
@page.siblings.each(&:save!) if @page.siblings
|
|
40
|
+
@page.parent.save! if @page.parent
|
|
41
|
+
end
|
|
42
|
+
|
|
38
43
|
def create
|
|
39
44
|
@page.save!
|
|
45
|
+
update_family
|
|
40
46
|
flash[:success] = I18n.t('occams.admin.cms.pages.created')
|
|
41
47
|
redirect_to action: :edit, id: @page
|
|
42
48
|
rescue ActiveRecord::RecordInvalid
|
|
@@ -46,6 +52,7 @@ class Occams::Admin::Cms::PagesController < Occams::Admin::Cms::BaseController
|
|
|
46
52
|
|
|
47
53
|
def update
|
|
48
54
|
@page.save!
|
|
55
|
+
update_family
|
|
49
56
|
flash[:success] = I18n.t('occams.admin.cms.pages.updated')
|
|
50
57
|
redirect_to action: :edit, id: @page
|
|
51
58
|
rescue ActiveRecord::RecordInvalid
|
|
@@ -55,6 +62,7 @@ class Occams::Admin::Cms::PagesController < Occams::Admin::Cms::BaseController
|
|
|
55
62
|
|
|
56
63
|
def destroy
|
|
57
64
|
@page.destroy
|
|
65
|
+
update_family
|
|
58
66
|
flash[:success] = I18n.t('occams.admin.cms.pages.deleted')
|
|
59
67
|
redirect_to action: :index
|
|
60
68
|
end
|
|
@@ -119,8 +127,8 @@ protected
|
|
|
119
127
|
|
|
120
128
|
def build_page
|
|
121
129
|
@page = @site.pages.new(page_params)
|
|
122
|
-
@page.parent ||=
|
|
123
|
-
@page.layout ||=
|
|
130
|
+
@page.parent ||= @site.pages.find_by_id(params[:parent_id]) || @site.pages.root
|
|
131
|
+
@page.layout ||= @page.parent&.layout || @site.layouts.first
|
|
124
132
|
end
|
|
125
133
|
|
|
126
134
|
def load_page
|
|
@@ -39,8 +39,11 @@ module Occams
|
|
|
39
39
|
# @param [Occams::Cms::File] file
|
|
40
40
|
# @return [String] {{ cms:file_link #{file.id}, ... }}
|
|
41
41
|
def cms_file_link_tag(file)
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
if file.attachment.image?
|
|
43
|
+
"{{ cms:image #{file.label} }}"
|
|
44
|
+
else
|
|
45
|
+
"{{ cms:file_link #{file.id} }}"
|
|
46
|
+
end
|
|
44
47
|
end
|
|
45
48
|
end
|
|
46
49
|
end
|
data/config/application.rb
CHANGED
|
@@ -14,8 +14,6 @@ module Occams
|
|
|
14
14
|
config.load_defaults Rails.version.scan(%r{^\d+\.\d+}).first.to_f
|
|
15
15
|
|
|
16
16
|
# Rails 7.1 compatibility - See config/initializers/new_framework_defaults_7_1.rb
|
|
17
|
-
config.add_autoload_paths_to_load_path = true
|
|
18
|
-
|
|
19
17
|
if Gem::Version.new(Rails.version) >= Gem::Version.new('7.1.0')
|
|
20
18
|
config.active_record.default_column_serializer = YAML
|
|
21
19
|
config.active_record.before_committed_on_all_records = false
|
|
@@ -30,6 +28,7 @@ module Occams
|
|
|
30
28
|
# Please, add to the `ignore` list any other `lib` subdirectories that do
|
|
31
29
|
# not contain `.rb` files, or that should not be reloaded or eager loaded.
|
|
32
30
|
# Common ones are `templates`, `generators`, or `middleware`, for example.
|
|
31
|
+
config.add_autoload_paths_to_load_path = false
|
|
33
32
|
config.autoload_lib(ignore: %w[generators])
|
|
34
33
|
end
|
|
35
34
|
|
data/config/environments/test.rb
CHANGED
|
@@ -10,6 +10,8 @@ require 'active_support/core_ext/integer/time'
|
|
|
10
10
|
defined?(Occams::Application) && Occams::Application.configure do
|
|
11
11
|
# Settings specified here will take precedence over those in config/application.rb.
|
|
12
12
|
|
|
13
|
+
config.active_job.queue_adapter = :test # added for Rails 7.1
|
|
14
|
+
|
|
13
15
|
# While tests run files are not watched, reloading is not necessary.
|
|
14
16
|
config.enable_reloading = false
|
|
15
17
|
|
data/config/locales/en.yml
CHANGED
|
@@ -116,11 +116,11 @@ en:
|
|
|
116
116
|
update: Update Layout
|
|
117
117
|
|
|
118
118
|
pages:
|
|
119
|
-
created: Page created
|
|
119
|
+
created: Page created, siblings, and parent updated
|
|
120
120
|
creation_failure: Failed to create page
|
|
121
|
-
updated: Page updated
|
|
121
|
+
updated: Page, siblings, and parent updated
|
|
122
122
|
update_failure: Failed to update page
|
|
123
|
-
deleted: Page deleted
|
|
123
|
+
deleted: Page deleted, siblings, and parent updated
|
|
124
124
|
not_found: Page not found
|
|
125
125
|
layout_not_found: No Layouts found. Please create one.
|
|
126
126
|
|
data/gemfiles/6.1.gemfile
CHANGED
|
@@ -8,31 +8,24 @@ gemspec path: '../'
|
|
|
8
8
|
gem 'rails', '~> 6.1.0'
|
|
9
9
|
|
|
10
10
|
group :development, :test do
|
|
11
|
-
gem 'autoprefixer-rails', '~>
|
|
12
|
-
gem 'byebug', '~>
|
|
13
|
-
gem 'image_processing', '>= 1.
|
|
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
14
|
gem 'sqlite3', '~> 1.6.7'
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
-
group :development do
|
|
18
|
-
gem 'listen', '~> 3.8.0'
|
|
19
|
-
gem 'web-console', '~> 4.2'
|
|
20
|
-
end
|
|
21
|
-
|
|
22
17
|
group :test do
|
|
23
|
-
gem 'brakeman', '~>
|
|
18
|
+
gem 'brakeman', '~> 6.1.2'
|
|
24
19
|
gem 'bundler-audit', '~> 0.9.1'
|
|
25
|
-
gem 'capybara', '~> 3.39.0'
|
|
26
20
|
gem 'coveralls_reborn', '~> 0.28.0', require: false
|
|
27
|
-
gem 'cuprite', '
|
|
28
|
-
gem 'diffy', '~> 3.4.2'
|
|
21
|
+
gem 'cuprite', '>= 0.15'
|
|
29
22
|
gem 'equivalent-xml', '~> 0.6.0'
|
|
30
|
-
gem 'minitest', '
|
|
31
|
-
gem 'minitest-reporters', '
|
|
32
|
-
gem 'mocha', '
|
|
33
|
-
gem 'puma', '~> 6.4.0'
|
|
23
|
+
gem 'minitest', '>= 5.23.0'
|
|
24
|
+
gem 'minitest-reporters', '>= 1.6.1'
|
|
25
|
+
gem 'mocha', '>= 2.3.0', require: false
|
|
34
26
|
gem 'rails-controller-testing', '~> 1.0.5'
|
|
35
|
-
gem 'rubocop', '~> 1.
|
|
36
|
-
gem '
|
|
27
|
+
gem 'rubocop', '~> 1.63.0', require: false
|
|
28
|
+
gem 'rubocop-minitest'
|
|
29
|
+
gem 'rubocop-rails'
|
|
37
30
|
gem 'simplecov', '~> 0.22.0', require: false
|
|
38
31
|
end
|
data/gemfiles/7.0.gemfile
CHANGED
|
@@ -8,30 +8,24 @@ gemspec path: '../'
|
|
|
8
8
|
gem 'rails', '~> 7.0.0'
|
|
9
9
|
|
|
10
10
|
group :development, :test do
|
|
11
|
-
gem 'autoprefixer-rails', '~>
|
|
12
|
-
gem 'byebug', '~>
|
|
13
|
-
gem 'image_processing', '>= 1.
|
|
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
14
|
gem 'sqlite3', '~> 1.6.7'
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
-
group :development do
|
|
18
|
-
gem 'listen', '~> 3.8.0'
|
|
19
|
-
gem 'web-console', '~> 4.2'
|
|
20
|
-
end
|
|
21
|
-
|
|
22
17
|
group :test do
|
|
23
|
-
gem 'brakeman', '~>
|
|
18
|
+
gem 'brakeman', '~> 6.1.2'
|
|
24
19
|
gem 'bundler-audit', '~> 0.9.1'
|
|
25
|
-
gem 'capybara', '~> 3.39.0'
|
|
26
20
|
gem 'coveralls_reborn', '~> 0.28.0', require: false
|
|
27
|
-
gem 'cuprite', '
|
|
28
|
-
gem 'diffy', '~> 3.4.2'
|
|
21
|
+
gem 'cuprite', '>= 0.15'
|
|
29
22
|
gem 'equivalent-xml', '~> 0.6.0'
|
|
30
|
-
gem 'minitest', '
|
|
31
|
-
gem 'minitest-reporters', '
|
|
32
|
-
gem 'mocha', '
|
|
33
|
-
gem 'puma', '~> 6.4.0'
|
|
23
|
+
gem 'minitest', '>= 5.23.0'
|
|
24
|
+
gem 'minitest-reporters', '>= 1.6.1'
|
|
25
|
+
gem 'mocha', '>= 2.3.0', require: false
|
|
34
26
|
gem 'rails-controller-testing', '~> 1.0.5'
|
|
35
|
-
gem 'rubocop', '~> 1.
|
|
36
|
-
gem '
|
|
27
|
+
gem 'rubocop', '~> 1.63.0', require: false
|
|
28
|
+
gem 'rubocop-minitest'
|
|
29
|
+
gem 'rubocop-rails'
|
|
30
|
+
gem 'simplecov', '~> 0.22.0', require: false
|
|
37
31
|
end
|
data/gemfiles/7.1.gemfile
CHANGED
|
@@ -8,30 +8,24 @@ gemspec path: '../'
|
|
|
8
8
|
gem 'rails', '~> 7.1.0', '>= 7.1.1'
|
|
9
9
|
|
|
10
10
|
group :development, :test do
|
|
11
|
-
gem 'autoprefixer-rails', '~>
|
|
12
|
-
gem 'byebug', '~>
|
|
13
|
-
gem 'image_processing', '>= 1.
|
|
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
14
|
gem 'sqlite3', '~> 1.6.7'
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
-
group :development do
|
|
18
|
-
gem 'listen', '~> 3.8.0'
|
|
19
|
-
gem 'web-console', '~> 4.2'
|
|
20
|
-
end
|
|
21
|
-
|
|
22
17
|
group :test do
|
|
23
|
-
gem 'brakeman', '~>
|
|
18
|
+
gem 'brakeman', '~> 6.1.2'
|
|
24
19
|
gem 'bundler-audit', '~> 0.9.1'
|
|
25
|
-
gem 'capybara', '~> 3.39.0'
|
|
26
20
|
gem 'coveralls_reborn', '~> 0.28.0', require: false
|
|
27
|
-
gem 'cuprite', '
|
|
28
|
-
gem 'diffy', '~> 3.4.2'
|
|
21
|
+
gem 'cuprite', '>= 0.15'
|
|
29
22
|
gem 'equivalent-xml', '~> 0.6.0'
|
|
30
|
-
gem 'minitest', '
|
|
31
|
-
gem 'minitest-reporters', '
|
|
32
|
-
gem 'mocha', '
|
|
33
|
-
gem 'puma', '~> 6.4.0'
|
|
23
|
+
gem 'minitest', '>= 5.23.0'
|
|
24
|
+
gem 'minitest-reporters', '>= 1.6.1'
|
|
25
|
+
gem 'mocha', '>= 2.3.0', require: false
|
|
34
26
|
gem 'rails-controller-testing', '~> 1.0.5'
|
|
35
|
-
gem 'rubocop', '~> 1.
|
|
36
|
-
gem '
|
|
27
|
+
gem 'rubocop', '~> 1.63.0', require: false
|
|
28
|
+
gem 'rubocop-minitest'
|
|
29
|
+
gem 'rubocop-rails'
|
|
30
|
+
gem 'simplecov', '~> 0.22.0', require: false
|
|
37
31
|
end
|
|
@@ -7,23 +7,19 @@ require_relative 'mixins/file_content'
|
|
|
7
7
|
# {{cms:file_link id, as: image}}
|
|
8
8
|
#
|
|
9
9
|
# `as` - url (default) | link | image - how file gets rendered out
|
|
10
|
-
# `label` - attach label attribute to link or image tag
|
|
11
|
-
# `resize` - imagemagic option. For example: "100x50>"
|
|
12
|
-
# `gravity` - imagemagic option. For example: "center"
|
|
13
|
-
# `crop` - imagemagic option. For example: "100x50+0+0"
|
|
14
10
|
# `class` - any html classes that you want on the result link or image tag. For example "class1 class2"
|
|
15
11
|
#
|
|
12
|
+
# - variant_attrs are not functional, perhaps due to some change in ImageMagick
|
|
13
|
+
# - Simply use a class in your CSS / SASS to style your image display
|
|
14
|
+
# `label` - attach label attribute to link or image tag
|
|
15
|
+
# `resize` - imagemagick option. For example: "100x50>"
|
|
16
|
+
# `gravity` - imagemagick option. For example: "center"
|
|
17
|
+
# `crop` - imagemagick option. For example: "100x50+0+0"
|
|
18
|
+
#
|
|
16
19
|
class Occams::Content::Tags::FileLink < Occams::Content::Tag
|
|
17
20
|
include Occams::Content::Tags::Mixins::FileContent
|
|
18
21
|
|
|
19
|
-
|
|
20
|
-
attr_reader :identifier
|
|
21
|
-
|
|
22
|
-
# @type ["url", "link", "image"]
|
|
23
|
-
attr_reader :as
|
|
24
|
-
|
|
25
|
-
# @type [{String => String}]
|
|
26
|
-
attr_reader :variant_attrs
|
|
22
|
+
attr_reader :identifier, :as, :variant_attrs
|
|
27
23
|
|
|
28
24
|
def initialize(context:, params: [], source: nil)
|
|
29
25
|
super
|
|
@@ -32,7 +28,7 @@ class Occams::Content::Tags::FileLink < Occams::Content::Tag
|
|
|
32
28
|
@identifier = params[0]
|
|
33
29
|
@as = options['as'] || 'url'
|
|
34
30
|
@class = options['class']
|
|
35
|
-
@variant_attrs = options.slice('resize', 'gravity', 'crop')
|
|
31
|
+
@variant_attrs = options.slice('resize', 'gravity', 'crop') # broken for ImageMagick
|
|
36
32
|
|
|
37
33
|
return if @identifier.present?
|
|
38
34
|
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative 'mixins/file_content'
|
|
4
|
+
|
|
5
|
+
# This is like the the file_link tag, but specifically for images
|
|
6
|
+
# Identify the image by its label {{ cms:image label }}
|
|
7
|
+
#
|
|
8
|
+
# `class` - any html classes that you want on the image tag. For example "class1 class2"
|
|
9
|
+
#
|
|
10
|
+
# - variant_attrs are not functional, perhaps due to some change in ImageMagick
|
|
11
|
+
# - Simply use a class in your CSS / SASS to style your image display
|
|
12
|
+
# `label` - attach label attribute to link or image tag
|
|
13
|
+
# `resize` - imagemagick option. For example: "100x50>"
|
|
14
|
+
# `gravity` - imagemagick option. For example: "center"
|
|
15
|
+
# `crop` - imagemagick option. For example: "100x50+0+0"
|
|
16
|
+
|
|
17
|
+
class Occams::Content::Tags::Image < Occams::Content::Tag
|
|
18
|
+
include Occams::Content::Tags::Mixins::FileContent
|
|
19
|
+
|
|
20
|
+
attr_reader :identifier, :as, :variant_attrs
|
|
21
|
+
|
|
22
|
+
def initialize(context:, params: [], source: nil)
|
|
23
|
+
super
|
|
24
|
+
|
|
25
|
+
options = params.extract_options!
|
|
26
|
+
@identifier = params[0]
|
|
27
|
+
@as = 'image'
|
|
28
|
+
@class = options['class']
|
|
29
|
+
@variant_attrs = options.slice('resize', 'gravity', 'crop') # broken for ImageMagick
|
|
30
|
+
|
|
31
|
+
return if @identifier.present?
|
|
32
|
+
|
|
33
|
+
raise Error, 'Missing identifier label for image tag'
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# @return [Occams::Cms::File]
|
|
37
|
+
def file_record
|
|
38
|
+
@file_record ||= context.site.files.detect { |f| f.label == identifier }
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# @return [ActiveStorage::Blob]
|
|
42
|
+
def file
|
|
43
|
+
file_record&.attachment
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# @return [String]
|
|
47
|
+
def label
|
|
48
|
+
return '' if file_record.nil?
|
|
49
|
+
|
|
50
|
+
file_record.label.presence || file.filename.to_s
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
Occams::Content::Renderer.register_tag(
|
|
55
|
+
:image, Occams::Content::Tags::Image
|
|
56
|
+
)
|
|
@@ -25,7 +25,7 @@ module Occams::Content::Tags::Mixins
|
|
|
25
25
|
when 'link'
|
|
26
26
|
"<a href='#{attachment_url}'#{html_class_attribute} target='_blank'>#{label}</a>"
|
|
27
27
|
when 'image'
|
|
28
|
-
"<img src='#{attachment_url}'#{html_class_attribute} alt='#{label}'/>"
|
|
28
|
+
"<img src='#{attachment_url}'#{html_class_attribute} alt='#{label}' title='#{label}'/>"
|
|
29
29
|
else
|
|
30
30
|
attachment_url
|
|
31
31
|
end
|
|
@@ -16,11 +16,14 @@ require_relative 'mixins/file_content'
|
|
|
16
16
|
# {{ cms:page_file_link attachments, filename: "cat.jpg" }}
|
|
17
17
|
#
|
|
18
18
|
# `as` - url (default) | link | image - how file gets rendered out
|
|
19
|
+
# `class` - any html classes that you want on the result link or image tag. For example "class1 class2"
|
|
20
|
+
#
|
|
21
|
+
# - the following params are deprecated / not functional, perhaps due to some change in ImageMagick
|
|
22
|
+
# - Simply use a class in your CSS / SASS to style your image display
|
|
19
23
|
# `label` - attach label attribute to link or image tag
|
|
20
24
|
# `resize` - imagemagick option. For example: "100x50>"
|
|
21
25
|
# `gravity` - imagemagick option. For example: "center"
|
|
22
26
|
# `crop` - imagemagick option. For example: "100x50+0+0"
|
|
23
|
-
# `class` - any html classes that you want on the result link or image tag. For example "class1 class2"
|
|
24
27
|
#
|
|
25
28
|
class Occams::Content::Tags::PageFileLink < Occams::Content::Tag
|
|
26
29
|
include Occams::Content::Tags::Mixins::FileContent
|
|
@@ -31,6 +31,9 @@ class Occams::Content::Tags::Siblings < Occams::Content::Tag
|
|
|
31
31
|
@links = ''
|
|
32
32
|
# ActiveRecord_Associations_CollectionProxy
|
|
33
33
|
@sibs = context.self_and_siblings.order(:position).to_ary
|
|
34
|
+
unless Rails.env == 'development'
|
|
35
|
+
@sibs.delete_if { |sib| !sib.is_published }
|
|
36
|
+
end
|
|
34
37
|
@sibs.delete_if { |sib| @exclude.include? sib.slug }
|
|
35
38
|
end
|
|
36
39
|
|
data/lib/occams/content/tags.rb
CHANGED
|
@@ -18,6 +18,7 @@ require_relative 'tags/files'
|
|
|
18
18
|
require_relative 'tags/snippet'
|
|
19
19
|
require_relative 'tags/asset'
|
|
20
20
|
require_relative 'tags/file_link'
|
|
21
|
+
require_relative 'tags/image'
|
|
21
22
|
require_relative 'tags/page_file_link'
|
|
22
23
|
require_relative 'tags/helper'
|
|
23
24
|
require_relative 'tags/partial'
|
data/lib/occams/error.rb
CHANGED
|
@@ -6,19 +6,19 @@ module Occams
|
|
|
6
6
|
|
|
7
7
|
class MissingSite < Occams::Error
|
|
8
8
|
def initialize(identifier)
|
|
9
|
-
super
|
|
9
|
+
super("Cannot find CMS Site with identifier: #{identifier}")
|
|
10
10
|
end
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
class MissingLayout < Occams::Error
|
|
14
14
|
def initialize(identifier)
|
|
15
|
-
super
|
|
15
|
+
super("Cannot find CMS Layout with identifier: #{identifier}")
|
|
16
16
|
end
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
class MissingPage < Occams::Error
|
|
20
20
|
def initialize(path)
|
|
21
|
-
super
|
|
21
|
+
super("Cannot find CMS Page at #{path}")
|
|
22
22
|
end
|
|
23
23
|
end
|
|
24
24
|
end
|
data/lib/occams/version.rb
CHANGED
data/occams.gemspec
CHANGED
|
@@ -16,7 +16,7 @@ Gem::Specification.new do |spec|
|
|
|
16
16
|
f.match(%r{^(test|doc)/})
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
-
spec.required_ruby_version = '>=
|
|
19
|
+
spec.required_ruby_version = '>= 3.0.0'
|
|
20
20
|
spec.metadata['rubygems_mfa_required'] = 'true'
|
|
21
21
|
|
|
22
22
|
spec.add_dependency 'active_link_to', '~> 1.0', '>= 1.0.5'
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: occams
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.1.1.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Andrew vonderLuft
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2024-05-19 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: active_link_to
|
|
@@ -719,6 +719,7 @@ files:
|
|
|
719
719
|
- lib/occams/content/tags/files.rb
|
|
720
720
|
- lib/occams/content/tags/fragment.rb
|
|
721
721
|
- lib/occams/content/tags/helper.rb
|
|
722
|
+
- lib/occams/content/tags/image.rb
|
|
722
723
|
- lib/occams/content/tags/markdown.rb
|
|
723
724
|
- lib/occams/content/tags/mixins/file_content.rb
|
|
724
725
|
- lib/occams/content/tags/number.rb
|
|
@@ -737,8 +738,6 @@ files:
|
|
|
737
738
|
- lib/occams/extensions/has_revisions.rb
|
|
738
739
|
- lib/occams/form_builder.rb
|
|
739
740
|
- lib/occams/render_methods.rb
|
|
740
|
-
- lib/occams/routes/cms.rb
|
|
741
|
-
- lib/occams/routes/cms_admin.rb
|
|
742
741
|
- lib/occams/routing.rb
|
|
743
742
|
- lib/occams/seeds.rb
|
|
744
743
|
- lib/occams/seeds/file/exporter.rb
|
|
@@ -767,14 +766,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
767
766
|
requirements:
|
|
768
767
|
- - ">="
|
|
769
768
|
- !ruby/object:Gem::Version
|
|
770
|
-
version:
|
|
769
|
+
version: 3.0.0
|
|
771
770
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
772
771
|
requirements:
|
|
773
772
|
- - ">="
|
|
774
773
|
- !ruby/object:Gem::Version
|
|
775
774
|
version: '0'
|
|
776
775
|
requirements: []
|
|
777
|
-
rubygems_version: 3.
|
|
776
|
+
rubygems_version: 3.5.9
|
|
778
777
|
signing_key:
|
|
779
778
|
specification_version: 4
|
|
780
779
|
summary: Rails 6.1-7.1+ CMS Engine
|
data/lib/occams/routes/cms.rb
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
class ActionDispatch::Routing::Mapper
|
|
4
|
-
def occams_route_cms(options = {})
|
|
5
|
-
Occams.configuration.public_cms_path = options[:path]
|
|
6
|
-
|
|
7
|
-
scope module: :occams, as: :occams do
|
|
8
|
-
namespace :cms, path: options[:path] do
|
|
9
|
-
get 'cms-css/:site_id/:identifier(/:cache_buster)' => 'assets#render_css', as: 'render_css'
|
|
10
|
-
get 'cms-js/:site_id/:identifier(/:cache_buster)' => 'assets#render_js', as: 'render_js'
|
|
11
|
-
|
|
12
|
-
get '(*cms_path)' => 'content#show', as: 'render_page', action: '/:format'
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
end
|
|
16
|
-
end
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
class ActionDispatch::Routing::Mapper
|
|
4
|
-
def occams_route_cms_admin(path: 'admin')
|
|
5
|
-
scope module: :occams, as: :occams do
|
|
6
|
-
scope module: :admin do
|
|
7
|
-
namespace :cms, as: :admin_cms, path: path, except: :show do
|
|
8
|
-
get '/', to: 'base#jump'
|
|
9
|
-
|
|
10
|
-
concern :with_revisions do |options|
|
|
11
|
-
resources :revisions, options.merge(only: %i[index show]) do
|
|
12
|
-
patch :revert, on: :member
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
concern :with_reorder do
|
|
17
|
-
put :reorder, on: :collection
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
concern :with_form_fragments do
|
|
21
|
-
get :form_fragments, on: :member
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
resources :sites do
|
|
25
|
-
resources :pages do
|
|
26
|
-
concerns :with_reorder
|
|
27
|
-
concerns :with_form_fragments
|
|
28
|
-
concerns :with_revisions, controller: 'revisions/page'
|
|
29
|
-
|
|
30
|
-
get :toggle_branch, on: :member
|
|
31
|
-
|
|
32
|
-
resources :translations, except: [:index] do
|
|
33
|
-
concerns :with_form_fragments
|
|
34
|
-
concerns :with_revisions, controller: 'revisions/translation'
|
|
35
|
-
end
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
resources :files, concerns: [:with_reorder]
|
|
39
|
-
|
|
40
|
-
resources :layouts do
|
|
41
|
-
concerns :with_reorder
|
|
42
|
-
concerns :with_revisions, controller: 'revisions/layout'
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
resources :snippets do
|
|
46
|
-
concerns :with_reorder
|
|
47
|
-
concerns :with_revisions, controller: 'revisions/snippet'
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
resources :categories
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
end
|