occams 1.0.1 → 1.0.2
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/.rubocop.yml +23 -40
- data/CHANGELOG.md +8 -0
- data/Gemfile +17 -17
- data/LICENSE +1 -1
- data/README.md +15 -18
- data/Rakefile +1 -1
- data/TODOS.md +6 -0
- data/app/controllers/occams/admin/base_controller.rb +1 -1
- data/app/controllers/occams/admin/cms/base_controller.rb +7 -7
- data/app/controllers/occams/admin/cms/files_controller.rb +17 -17
- data/app/controllers/occams/admin/cms/layouts_controller.rb +7 -7
- data/app/controllers/occams/admin/cms/pages_controller.rb +25 -25
- data/app/controllers/occams/admin/cms/revisions/base_controller.rb +5 -5
- data/app/controllers/occams/admin/cms/revisions/layout_controller.rb +1 -1
- data/app/controllers/occams/admin/cms/revisions/page_controller.rb +3 -3
- data/app/controllers/occams/admin/cms/revisions/snippet_controller.rb +1 -1
- data/app/controllers/occams/admin/cms/revisions/translation_controller.rb +3 -3
- data/app/controllers/occams/admin/cms/sites_controller.rb +6 -6
- data/app/controllers/occams/admin/cms/snippets_controller.rb +6 -6
- data/app/controllers/occams/admin/cms/translations_controller.rb +24 -24
- data/app/controllers/occams/cms/assets_controller.rb +5 -5
- data/app/controllers/occams/cms/base_controller.rb +7 -12
- data/app/controllers/occams/cms/content_controller.rb +14 -10
- data/app/helpers/occams/admin/cms_helper.rb +3 -3
- data/app/helpers/occams/cms_helper.rb +8 -8
- data/app/models/concerns/occams/cms/with_categories.rb +3 -3
- data/app/models/concerns/occams/cms/with_fragments.rb +3 -3
- data/app/models/occams/cms/categorization.rb +1 -1
- data/app/models/occams/cms/category.rb +1 -1
- data/app/models/occams/cms/file.rb +4 -4
- data/app/models/occams/cms/fragment.rb +2 -2
- data/app/models/occams/cms/layout.rb +5 -5
- data/app/models/occams/cms/page.rb +6 -6
- data/app/models/occams/cms/revision.rb +1 -1
- data/app/models/occams/cms/site.rb +8 -8
- data/app/models/occams/cms/snippet.rb +1 -1
- data/app/models/occams/cms/translation.rb +1 -1
- data/app/views/layouts/occams/admin/cms/_left.html.haml +1 -0
- data/config/application.rb +4 -4
- data/config/boot.rb +4 -3
- data/config/environment.rb +1 -1
- data/config/environments/development.rb +2 -2
- data/config/environments/test.rb +1 -1
- data/config/initializers/occams.rb +2 -2
- data/config.ru +1 -1
- data/lib/generators/occams/cms/assets_generator.rb +3 -3
- data/lib/generators/occams/cms/cms_generator.rb +13 -13
- data/lib/generators/occams/cms/controllers_generator.rb +2 -2
- data/lib/generators/occams/cms/models_generator.rb +2 -2
- data/lib/generators/occams/cms/views_generator.rb +2 -2
- data/lib/generators/occams/scaffold/scaffold_generator.rb +18 -18
- data/lib/occams/configuration.rb +33 -33
- data/lib/occams/content/params_parser.rb +3 -3
- data/lib/occams/content/renderer.rb +8 -8
- data/lib/occams/content/tag.rb +1 -1
- data/lib/occams/content/tags/asset.rb +13 -13
- data/lib/occams/content/tags/checkbox.rb +4 -4
- data/lib/occams/content/tags/date.rb +2 -2
- data/lib/occams/content/tags/datetime.rb +4 -4
- data/lib/occams/content/tags/file.rb +8 -8
- data/lib/occams/content/tags/file_link.rb +8 -8
- data/lib/occams/content/tags/files.rb +5 -5
- data/lib/occams/content/tags/fragment.rb +4 -4
- data/lib/occams/content/tags/helper.rb +6 -6
- data/lib/occams/content/tags/markdown.rb +2 -2
- data/lib/occams/content/tags/mixins/file_content.rb +3 -3
- data/lib/occams/content/tags/number.rb +1 -1
- data/lib/occams/content/tags/page_file_link.rb +8 -8
- data/lib/occams/content/tags/partial.rb +5 -5
- data/lib/occams/content/tags/snippet.rb +3 -3
- data/lib/occams/content/tags/template.rb +5 -5
- data/lib/occams/content/tags/text.rb +1 -1
- data/lib/occams/content/tags/textarea.rb +1 -1
- data/lib/occams/content/tags/wysiwyg.rb +1 -1
- data/lib/occams/content.rb +22 -22
- data/lib/occams/engine.rb +10 -10
- data/lib/occams/extensions/acts_as_tree.rb +1 -1
- data/lib/occams/extensions/has_revisions.rb +3 -3
- data/lib/occams/form_builder.rb +4 -4
- data/lib/occams/render_methods.rb +2 -2
- data/lib/occams/routes/cms.rb +3 -3
- data/lib/occams/routes/cms_admin.rb +6 -6
- data/lib/occams/routing.rb +2 -2
- data/lib/occams/seeds/file/exporter.rb +7 -11
- data/lib/occams/seeds/file/importer.rb +5 -5
- data/lib/occams/seeds/layout/exporter.rb +9 -9
- data/lib/occams/seeds/layout/importer.rb +9 -9
- data/lib/occams/seeds/page/exporter.rb +19 -21
- data/lib/occams/seeds/page/importer.rb +14 -14
- data/lib/occams/seeds/snippet/exporter.rb +6 -6
- data/lib/occams/seeds/snippet/importer.rb +6 -6
- data/lib/occams/seeds.rb +5 -5
- data/lib/occams/version.rb +1 -1
- data/lib/occams/view_hooks.rb +1 -1
- data/lib/occams.rb +24 -24
- data/lib/tasks/cms_seeds.rake +2 -2
- data/occams.gemspec +22 -21
- metadata +5 -4
- data/LICENSE.comfy +0 -20
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ce680397bd166f37f751f3809e6bae83bfa630626d20e21d479631487ba03f59
|
|
4
|
+
data.tar.gz: 6b0bb13446c96370910182f7acdcb66ba9bc93cacb1815483fa182e1b51d9af5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3389d7c086da5dd49d5a3e54c81e0036abd459b13c9885ff7159aa49d74d39ca0667b2618438edd8414c3a4d97f8b1ced0d5abd6bddf4ffdbb9b9f8bf28e538d
|
|
7
|
+
data.tar.gz: 9c47baa318396a1f77fc19cec2b0c8b7498a7946edb1ab6c0bbe66ca5df5de425211bcdf822758b4a8d752150327cfbbbf043031999bf410cfce97a1ed3ce304
|
data/.rubocop.yml
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
AllCops:
|
|
2
2
|
TargetRubyVersion: 2.7
|
|
3
|
+
NewCops: enable
|
|
3
4
|
Exclude:
|
|
4
5
|
- bin/*
|
|
5
6
|
- db/schema.rb
|
|
@@ -11,77 +12,59 @@ AllCops:
|
|
|
11
12
|
Layout/FirstArrayElementIndentation:
|
|
12
13
|
EnforcedStyle: consistent
|
|
13
14
|
|
|
14
|
-
Layout/
|
|
15
|
-
|
|
15
|
+
Layout/LineLength:
|
|
16
|
+
Max: 148
|
|
16
17
|
|
|
17
18
|
Layout/MultilineMethodCallIndentation:
|
|
18
19
|
EnforcedStyle: indented
|
|
19
20
|
|
|
20
|
-
Layout/MultilineOperationIndentation:
|
|
21
|
-
Enabled: false
|
|
22
|
-
|
|
23
|
-
Layout/ParameterAlignment:
|
|
24
|
-
Enabled: false
|
|
25
|
-
|
|
26
21
|
Layout/AccessModifierIndentation:
|
|
27
22
|
EnforcedStyle: outdent
|
|
28
23
|
|
|
29
24
|
# -- Metrics -------------------------------------------------------------------
|
|
30
|
-
Metrics/
|
|
31
|
-
Enabled: false
|
|
32
|
-
|
|
33
|
-
Metrics/MethodLength:
|
|
25
|
+
Metrics/AbcSize:
|
|
34
26
|
Enabled: false
|
|
35
27
|
|
|
36
|
-
Metrics/
|
|
37
|
-
|
|
28
|
+
Metrics/BlockLength:
|
|
29
|
+
Max: 45
|
|
38
30
|
|
|
39
|
-
Metrics/
|
|
31
|
+
Metrics/ClassLength:
|
|
40
32
|
Enabled: false
|
|
41
33
|
|
|
42
|
-
Metrics/LineLength:
|
|
43
|
-
Max: 120
|
|
44
|
-
|
|
45
34
|
Metrics/CyclomaticComplexity:
|
|
46
|
-
|
|
35
|
+
Max: 12
|
|
47
36
|
|
|
48
|
-
Metrics/
|
|
49
|
-
Enabled: false
|
|
50
|
-
|
|
51
|
-
Metrics/BlockLength:
|
|
37
|
+
Metrics/MethodLength:
|
|
52
38
|
Enabled: false
|
|
53
39
|
|
|
54
|
-
Metrics/
|
|
55
|
-
|
|
40
|
+
Metrics/PerceivedComplexity:
|
|
41
|
+
Max: 12
|
|
56
42
|
|
|
57
43
|
# -- Naming --------------------------------------------------------------------
|
|
58
44
|
Naming/MethodParameterName:
|
|
59
45
|
Enabled: false
|
|
60
46
|
|
|
61
47
|
# -- Style ---------------------------------------------------------------------
|
|
62
|
-
Style/
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
Style/RegexpLiteral:
|
|
66
|
-
EnforcedStyle: percent_r
|
|
67
|
-
|
|
68
|
-
Style/Lambda:
|
|
69
|
-
EnforcedStyle: literal
|
|
48
|
+
Style/ClassAndModuleChildren:
|
|
49
|
+
Enabled: false
|
|
70
50
|
|
|
71
|
-
Style/
|
|
51
|
+
Style/Documentation:
|
|
72
52
|
Enabled: false
|
|
73
53
|
|
|
74
|
-
Style/
|
|
54
|
+
Style/DocumentDynamicEvalDefinition:
|
|
75
55
|
Enabled: false
|
|
76
56
|
|
|
77
|
-
Style/
|
|
57
|
+
Style/IfUnlessModifier:
|
|
78
58
|
Enabled: false
|
|
79
59
|
|
|
80
|
-
Style/
|
|
60
|
+
Style/Lambda:
|
|
61
|
+
EnforcedStyle: literal
|
|
62
|
+
|
|
63
|
+
Style/OptionalBooleanParameter:
|
|
81
64
|
Enabled: false
|
|
82
65
|
|
|
83
|
-
Style/
|
|
66
|
+
Style/SafeNavigation:
|
|
84
67
|
Enabled: false
|
|
85
68
|
|
|
86
|
-
Style/
|
|
87
|
-
|
|
69
|
+
Style/RegexpLiteral:
|
|
70
|
+
EnforcedStyle: percent_r
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v1.0.2 -
|
|
4
|
+
|
|
5
|
+
- Fixed image rendering which rubocop broke in v1.0.1
|
|
6
|
+
- Show unpublished pages in Rails development mode
|
|
7
|
+
- Show Rails ENV at foot of Admin menu, along with versions of Occams, Rails and Ruby
|
|
8
|
+
- Updated documentation at [Occams Wiki](https://github.com/avonderluft/occams/wiki)
|
|
9
|
+
- Comprehensive rubocop linting
|
|
10
|
+
|
|
3
11
|
## v1.0.1 - 8/7/2023
|
|
4
12
|
|
|
5
13
|
- Fixed image thumbnail hover for Rails 7
|
data/Gemfile
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
source
|
|
3
|
+
source 'http://rubygems.org'
|
|
4
4
|
|
|
5
5
|
gemspec
|
|
6
6
|
|
|
7
7
|
group :development, :test do
|
|
8
|
-
gem
|
|
9
|
-
gem
|
|
10
|
-
gem
|
|
11
|
-
gem
|
|
12
|
-
gem
|
|
13
|
-
gem
|
|
14
|
-
gem
|
|
15
|
-
gem
|
|
16
|
-
gem
|
|
8
|
+
gem 'autoprefixer-rails', '~> 8.1.0'
|
|
9
|
+
gem 'byebug', '~> 10.0.0', platforms: %i[mri mingw x64_mingw]
|
|
10
|
+
gem 'capybara', '~> 3.39.0'
|
|
11
|
+
gem 'image_processing', '>= 1.2'
|
|
12
|
+
gem 'kaminari', '~> 1.2', '>= 1.2.2'
|
|
13
|
+
gem 'puma', '~> 3.12.2'
|
|
14
|
+
gem 'rubocop', '~> 0.55.0', require: false
|
|
15
|
+
gem 'selenium-webdriver', '~> 4.9.0'
|
|
16
|
+
gem 'sqlite3', '~> 1.4.2'
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
group :development do
|
|
20
|
-
gem
|
|
21
|
-
gem
|
|
20
|
+
gem 'listen', '~> 3.8.0'
|
|
21
|
+
gem 'web-console', '~> 3.5.1'
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
group :test do
|
|
25
|
-
gem
|
|
26
|
-
gem
|
|
27
|
-
gem
|
|
28
|
-
gem
|
|
29
|
-
gem
|
|
25
|
+
gem 'coveralls', '~> 0.8.23', require: false
|
|
26
|
+
gem 'diffy', '~> 3.4.2'
|
|
27
|
+
gem 'equivalent-xml', '~> 0.6.0'
|
|
28
|
+
gem 'mocha', '~> 2.1.0', require: false
|
|
29
|
+
gem 'rails-controller-testing', '~> 1.0.5'
|
|
30
30
|
end
|
data/LICENSE
CHANGED
data/README.md
CHANGED
|
@@ -26,8 +26,8 @@ ocCaM'S, pronounced "AH-kums" is a nod to [Occam's Razor](https://en.wikipedia.o
|
|
|
26
26
|
|
|
27
27
|
Referring to the [ComfortableMexicanSofa](https://github.com/comfy/comfortable-mexican-sofa) documentation, substituting 'Occams' for 'ComfortableMexicanSofa' where appropriate.
|
|
28
28
|
|
|
29
|
-
* Powerful page templating capability using [Content Tags](https://github.com/
|
|
30
|
-
* [Multiple Sites](https://github.com/
|
|
29
|
+
* Powerful page templating capability using [Content Tags](https://github.com/avonderluft/occams/wiki/Content-Tags)
|
|
30
|
+
* [Multiple Sites](https://github.com/avonderluft/occams/wiki/Sites) from a single installation
|
|
31
31
|
* Multi-Language Support (i18n) (ca, cs, da, de, en, es, fi, fr, gr, hr, it, ja, nb, nl, pl, pt-BR, ru, sv, tr, uk, zh-CN, zh-TW) and page localization.
|
|
32
32
|
* [CMS Seeds](https://github.com/comfy/comfortable-mexican-sofa/wiki/Docs:-CMS-Seeds) for initial content population
|
|
33
33
|
* [Revision History](https://github.com/comfy/comfortable-mexican-sofa/wiki/Docs:-Revisions) to revert changes
|
|
@@ -36,13 +36,13 @@ Referring to the [ComfortableMexicanSofa](https://github.com/comfy/comfortable-m
|
|
|
36
36
|
## Dependencies
|
|
37
37
|
|
|
38
38
|
* File attachments are handled by [ActiveStorage](https://github.com/rails/rails/tree/master/activestorage). Make sure that you can run appropriate migrations by running: `rails active_storage:install` and then `rake db:migrate`
|
|
39
|
-
* Image resizing is done
|
|
39
|
+
* Image resizing is done on Rails 7 or greater, with[ImageMagick](http://www.imagemagick.org/script/download.php), so make sure it's installed
|
|
40
40
|
* Pagination is handled by [kaminari](https://github.com/amatsuda/kaminari) or [will_paginate](https://github.com/mislav/will_paginate). Please add one of those to your Gemfile.
|
|
41
41
|
|
|
42
42
|
## Compatibility
|
|
43
43
|
|
|
44
|
-
- Install and basic functionality validated on Ruby 3.2.2. with Rails 6.1.7.4 and 7.0.6
|
|
45
|
-
-
|
|
44
|
+
- Install and basic functionality validated on Ruby 3.2.2. with Rails 6.1.7.4 and 7.0.6 and 7.0.6
|
|
45
|
+
- Rails 7 is recommended, since performance is noticably better
|
|
46
46
|
|
|
47
47
|
## Installation
|
|
48
48
|
|
|
@@ -89,27 +89,24 @@ After creating a Site, you need to make a Layout. Layout is the template of your
|
|
|
89
89
|
|
|
90
90
|
Once you have a layout, you may start creating pages and populating content. It's that easy.
|
|
91
91
|
|
|
92
|
-
## ToDos
|
|
93
|
-
|
|
94
|
-
- Linting via current version of rubocop
|
|
95
|
-
- get the original [ComfortableMexicanSofa](https://github.com/comfy/comfortable-mexican-sofa) tests working
|
|
96
|
-
- add documentation to Occams to replace ComfortableMexicanSofa
|
|
97
|
-
|
|
98
92
|
## Documentation
|
|
99
93
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
For more information on how to use this CMS please refer to the [Wiki](https://github.com/comfy/comfortable-mexican-sofa/wiki). Section that might be of interest is the entry
|
|
103
|
-
on [Content Tags](https://github.com/comfy/comfortable-mexican-sofa/wiki/Docs:-Content-Tags).
|
|
94
|
+
[Occams](https://github.com/avonderluft/occams)
|
|
104
95
|
|
|
105
|
-
|
|
106
|
-
|
|
96
|
+
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
|
|
97
|
+
on [Content Tags](https://github.com/comfy/avonderluft/occams/Content-Tags).
|
|
107
98
|
|
|
108
99
|
#### Contributing
|
|
109
100
|
|
|
110
101
|
The Occams repository can run like any Rails application in development. It's as easy to work on as any other Rails app.
|
|
111
102
|
For more detail see [CONTRIBUTING](CONTRIBUTING.md)
|
|
112
103
|
|
|
104
|
+
#### Testing
|
|
105
|
+
|
|
106
|
+
- `bin/rails db:migrate`
|
|
107
|
+
- `rake db:test:prepare`
|
|
108
|
+
- `rake test`
|
|
109
|
+
|
|
113
110
|
#### Acknowledgements
|
|
114
111
|
|
|
115
112
|
- Obviously to Oleg Khabarov, the creator of [ComfortableMexicanSofa](https://github.com/comfy/comfortable-mexican-sofa). This is his work, with just a few updates and additions.
|
|
@@ -117,4 +114,4 @@ For more detail see [CONTRIBUTING](CONTRIBUTING.md)
|
|
|
117
114
|
|
|
118
115
|
---
|
|
119
116
|
- [ComfortableMexicanSofa](https://github.com/comfy/comfortable-mexican-sofa) Copyright 2010-2019 Oleg Khabarov. Released under the [MIT license](LICENSE)
|
|
120
|
-
- [Occams](https://github.com/avonderluft/occams) follows suit, being also released under the [MIT license](LICENSE)
|
|
117
|
+
- [Occams] Copyright 2023 Andrew vonderLuft (https://github.com/avonderluft/occams) follows suit, being also released under the [MIT license](LICENSE)
|
data/Rakefile
CHANGED
data/TODOS.md
ADDED
|
@@ -28,7 +28,7 @@ protected
|
|
|
28
28
|
session[:site_id] = @site.id
|
|
29
29
|
else
|
|
30
30
|
I18n.locale = Occams.config.admin_locale || I18n.default_locale
|
|
31
|
-
flash[:danger] = I18n.t(
|
|
31
|
+
flash[:danger] = I18n.t('occams.admin.cms.base.site_not_found')
|
|
32
32
|
redirect_to(new_occams_admin_cms_site_path)
|
|
33
33
|
end
|
|
34
34
|
end
|
|
@@ -41,14 +41,14 @@ protected
|
|
|
41
41
|
def load_seeds
|
|
42
42
|
return unless Occams.config.enable_seeds
|
|
43
43
|
|
|
44
|
-
controllers = %w[layouts pages snippets files].collect { |c| "occams/admin/cms
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
44
|
+
controllers = %w[layouts pages snippets files].collect { |c| "occams/admin/cms/#{c}" }
|
|
45
|
+
return unless controllers.member?(params[:controller]) && params[:action] == 'index'
|
|
46
|
+
|
|
47
|
+
Occams::Seeds::Importer.new(@site.identifier).import!
|
|
48
|
+
flash.now[:warning] = I18n.t('occams.admin.cms.base.seeds_enabled')
|
|
49
49
|
end
|
|
50
50
|
|
|
51
51
|
def infer_layout
|
|
52
|
-
false if params[:layout] ==
|
|
52
|
+
false if params[:layout] == 'false'
|
|
53
53
|
end
|
|
54
54
|
end
|
|
@@ -16,11 +16,11 @@ class Occams::Admin::Cms::FilesController < Occams::Admin::Cms::BaseController
|
|
|
16
16
|
case params[:source]
|
|
17
17
|
|
|
18
18
|
# Integration with Redactor 1.0 Wysiwyg
|
|
19
|
-
when
|
|
19
|
+
when 'redactor'
|
|
20
20
|
file_scope = files_scope.limit(100).order(:position)
|
|
21
21
|
file_hashes =
|
|
22
22
|
case params[:type]
|
|
23
|
-
when
|
|
23
|
+
when 'image'
|
|
24
24
|
file_scope.with_images.collect do |file|
|
|
25
25
|
{ thumb: url_for(file.attachment.variant(combine_options: Occams::Cms::File::VARIANT_SIZE[:redactor])),
|
|
26
26
|
image: url_for(file.attachment),
|
|
@@ -41,7 +41,7 @@ class Occams::Admin::Cms::FilesController < Occams::Admin::Cms::BaseController
|
|
|
41
41
|
files_scope = files_scope
|
|
42
42
|
.includes(:categories)
|
|
43
43
|
.for_category(params[:categories])
|
|
44
|
-
.order(
|
|
44
|
+
.order('occams_cms_files.position')
|
|
45
45
|
@files = occams_paginate(files_scope, per_page: 50)
|
|
46
46
|
end
|
|
47
47
|
end
|
|
@@ -51,7 +51,7 @@ class Occams::Admin::Cms::FilesController < Occams::Admin::Cms::BaseController
|
|
|
51
51
|
end
|
|
52
52
|
|
|
53
53
|
def create
|
|
54
|
-
categories_scope = @site.categories.of_type(
|
|
54
|
+
categories_scope = @site.categories.of_type('Occams::Cms::File')
|
|
55
55
|
|
|
56
56
|
if params[:categories]
|
|
57
57
|
ids = categories_scope.where(label: params[:categories]).pluck(:id)
|
|
@@ -59,33 +59,33 @@ class Occams::Admin::Cms::FilesController < Occams::Admin::Cms::BaseController
|
|
|
59
59
|
end
|
|
60
60
|
|
|
61
61
|
# Automatically tagging upload if it's done through redactor
|
|
62
|
-
if params[:source] ==
|
|
63
|
-
category = categories_scope.find_or_create_by(label:
|
|
62
|
+
if params[:source] == 'redactor'
|
|
63
|
+
category = categories_scope.find_or_create_by(label: 'wysiwyg')
|
|
64
64
|
@file.category_ids = [category.id]
|
|
65
65
|
end
|
|
66
66
|
|
|
67
67
|
@file.save!
|
|
68
68
|
|
|
69
69
|
case params[:source]
|
|
70
|
-
when
|
|
71
|
-
render partial:
|
|
72
|
-
when
|
|
70
|
+
when 'plupload'
|
|
71
|
+
render partial: 'file', object: @file
|
|
72
|
+
when 'redactor'
|
|
73
73
|
render json: {
|
|
74
74
|
filelink: url_for(@file.attachment),
|
|
75
75
|
filename: @file.attachment.filename
|
|
76
76
|
}
|
|
77
77
|
else
|
|
78
|
-
flash[:success] = I18n.t(
|
|
78
|
+
flash[:success] = I18n.t('occams.admin.cms.files.created')
|
|
79
79
|
redirect_to action: :edit, id: @file
|
|
80
80
|
end
|
|
81
81
|
rescue ActiveRecord::RecordInvalid
|
|
82
82
|
case params[:source]
|
|
83
|
-
when
|
|
83
|
+
when 'plupload'
|
|
84
84
|
render body: @file.errors.full_messages.to_sentence, status: :unprocessable_entity
|
|
85
|
-
when
|
|
85
|
+
when 'redactor'
|
|
86
86
|
render body: nil, status: :unprocessable_entity
|
|
87
87
|
else
|
|
88
|
-
flash.now[:danger] = I18n.t(
|
|
88
|
+
flash.now[:danger] = I18n.t('occams.admin.cms.files.creation_failure')
|
|
89
89
|
render action: :new
|
|
90
90
|
end
|
|
91
91
|
end
|
|
@@ -96,10 +96,10 @@ class Occams::Admin::Cms::FilesController < Occams::Admin::Cms::BaseController
|
|
|
96
96
|
|
|
97
97
|
def update
|
|
98
98
|
if @file.update(file_params)
|
|
99
|
-
flash[:success] = I18n.t(
|
|
99
|
+
flash[:success] = I18n.t('occams.admin.cms.files.updated')
|
|
100
100
|
redirect_to action: :edit, id: @file
|
|
101
101
|
else
|
|
102
|
-
flash.now[:danger] = I18n.t(
|
|
102
|
+
flash.now[:danger] = I18n.t('occams.admin.cms.files.update_failure')
|
|
103
103
|
render action: :edit
|
|
104
104
|
end
|
|
105
105
|
end
|
|
@@ -109,7 +109,7 @@ class Occams::Admin::Cms::FilesController < Occams::Admin::Cms::BaseController
|
|
|
109
109
|
respond_to do |format|
|
|
110
110
|
format.js
|
|
111
111
|
format.html do
|
|
112
|
-
flash[:success] = I18n.t(
|
|
112
|
+
flash[:success] = I18n.t('occams.admin.cms.files.deleted')
|
|
113
113
|
redirect_to action: :index
|
|
114
114
|
end
|
|
115
115
|
end
|
|
@@ -124,7 +124,7 @@ protected
|
|
|
124
124
|
def load_file
|
|
125
125
|
@file = @site.files.find(params[:id])
|
|
126
126
|
rescue ActiveRecord::RecordNotFound
|
|
127
|
-
flash[:danger] = I18n.t(
|
|
127
|
+
flash[:danger] = I18n.t('occams.admin.cms.files.not_found')
|
|
128
128
|
redirect_to action: :index
|
|
129
129
|
end
|
|
130
130
|
|
|
@@ -24,25 +24,25 @@ class Occams::Admin::Cms::LayoutsController < Occams::Admin::Cms::BaseController
|
|
|
24
24
|
|
|
25
25
|
def create
|
|
26
26
|
@layout.save!
|
|
27
|
-
flash[:success] = I18n.t(
|
|
27
|
+
flash[:success] = I18n.t('occams.admin.cms.layouts.created')
|
|
28
28
|
redirect_to action: :edit, id: @layout
|
|
29
29
|
rescue ActiveRecord::RecordInvalid
|
|
30
|
-
flash.now[:danger] = I18n.t(
|
|
30
|
+
flash.now[:danger] = I18n.t('occams.admin.cms.layouts.creation_failure')
|
|
31
31
|
render action: :new
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
def update
|
|
35
35
|
@layout.update!(layout_params)
|
|
36
|
-
flash[:success] = I18n.t(
|
|
36
|
+
flash[:success] = I18n.t('occams.admin.cms.layouts.updated')
|
|
37
37
|
redirect_to action: :edit, id: @layout
|
|
38
38
|
rescue ActiveRecord::RecordInvalid
|
|
39
|
-
flash.now[:danger] = I18n.t(
|
|
39
|
+
flash.now[:danger] = I18n.t('occams.admin.cms.layouts.update_failure')
|
|
40
40
|
render action: :edit
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
def destroy
|
|
44
44
|
@layout.destroy
|
|
45
|
-
flash[:success] = I18n.t(
|
|
45
|
+
flash[:success] = I18n.t('occams.admin.cms.layouts.deleted')
|
|
46
46
|
redirect_to action: :index
|
|
47
47
|
end
|
|
48
48
|
|
|
@@ -52,13 +52,13 @@ protected
|
|
|
52
52
|
@layout = @site.layouts.new(layout_params)
|
|
53
53
|
@layout.parent ||= ::Occams::Cms::Layout.find_by_id(params[:parent_id])
|
|
54
54
|
@layout.app_layout ||= @layout.parent.try(:app_layout)
|
|
55
|
-
@layout.content ||=
|
|
55
|
+
@layout.content ||= '{{ cms:wysiwyg content }}'
|
|
56
56
|
end
|
|
57
57
|
|
|
58
58
|
def load_layout
|
|
59
59
|
@layout = @site.layouts.find(params[:id])
|
|
60
60
|
rescue ActiveRecord::RecordNotFound
|
|
61
|
-
flash[:danger] = I18n.t(
|
|
61
|
+
flash[:danger] = I18n.t('occams.admin.cms.layouts.not_found')
|
|
62
62
|
redirect_to action: :index
|
|
63
63
|
end
|
|
64
64
|
|
|
@@ -15,7 +15,7 @@ class Occams::Admin::Cms::PagesController < Occams::Admin::Cms::BaseController
|
|
|
15
15
|
def index
|
|
16
16
|
return redirect_to action: :new if site_has_no_pages?
|
|
17
17
|
|
|
18
|
-
return index_for_redactor if params[:source] ==
|
|
18
|
+
return index_for_redactor if params[:source] == 'redactor'
|
|
19
19
|
|
|
20
20
|
@pages_by_parent = pages_grouped_by_parent
|
|
21
21
|
|
|
@@ -37,25 +37,25 @@ class Occams::Admin::Cms::PagesController < Occams::Admin::Cms::BaseController
|
|
|
37
37
|
|
|
38
38
|
def create
|
|
39
39
|
@page.save!
|
|
40
|
-
flash[:success] = I18n.t(
|
|
40
|
+
flash[:success] = I18n.t('occams.admin.cms.pages.created')
|
|
41
41
|
redirect_to action: :edit, id: @page
|
|
42
42
|
rescue ActiveRecord::RecordInvalid
|
|
43
|
-
flash.now[:danger] = I18n.t(
|
|
43
|
+
flash.now[:danger] = I18n.t('occams.admin.cms.pages.creation_failure')
|
|
44
44
|
render action: :new
|
|
45
45
|
end
|
|
46
46
|
|
|
47
47
|
def update
|
|
48
48
|
@page.save!
|
|
49
|
-
flash[:success] = I18n.t(
|
|
49
|
+
flash[:success] = I18n.t('occams.admin.cms.pages.updated')
|
|
50
50
|
redirect_to action: :edit, id: @page
|
|
51
51
|
rescue ActiveRecord::RecordInvalid
|
|
52
|
-
flash.now[:danger] = I18n.t(
|
|
52
|
+
flash.now[:danger] = I18n.t('occams.admin.cms.pages.update_failure')
|
|
53
53
|
render action: :edit
|
|
54
54
|
end
|
|
55
55
|
|
|
56
56
|
def destroy
|
|
57
57
|
@page.destroy
|
|
58
|
-
flash[:success] = I18n.t(
|
|
58
|
+
flash[:success] = I18n.t('occams.admin.cms.pages.deleted')
|
|
59
59
|
redirect_to action: :index
|
|
60
60
|
end
|
|
61
61
|
|
|
@@ -64,7 +64,7 @@ class Occams::Admin::Cms::PagesController < Occams::Admin::Cms::BaseController
|
|
|
64
64
|
@page.layout = @site.layouts.find_by(id: params[:layout_id])
|
|
65
65
|
|
|
66
66
|
render(
|
|
67
|
-
partial:
|
|
67
|
+
partial: 'occams/admin/cms/fragments/form_fragments',
|
|
68
68
|
locals: { record: @page, scope: :page },
|
|
69
69
|
layout: false
|
|
70
70
|
)
|
|
@@ -95,7 +95,7 @@ protected
|
|
|
95
95
|
end
|
|
96
96
|
|
|
97
97
|
page_select_options = [{
|
|
98
|
-
name: I18n.t(
|
|
98
|
+
name: I18n.t('occams.admin.cms.pages.form.choose_link'),
|
|
99
99
|
url: false
|
|
100
100
|
}] + tree_walker.call(@site.pages.root, [], 0)
|
|
101
101
|
|
|
@@ -111,10 +111,10 @@ protected
|
|
|
111
111
|
end
|
|
112
112
|
|
|
113
113
|
def check_for_layouts
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
114
|
+
return unless @site.layouts.count.zero?
|
|
115
|
+
|
|
116
|
+
flash[:danger] = I18n.t('occams.admin.cms.pages.layout_not_found')
|
|
117
|
+
redirect_to new_occams_admin_cms_site_layout_path(@site)
|
|
118
118
|
end
|
|
119
119
|
|
|
120
120
|
def build_page
|
|
@@ -127,26 +127,26 @@ protected
|
|
|
127
127
|
@page = @site.pages.find(params[:id])
|
|
128
128
|
@page.attributes = page_params
|
|
129
129
|
rescue ActiveRecord::RecordNotFound
|
|
130
|
-
flash[:danger] = I18n.t(
|
|
130
|
+
flash[:danger] = I18n.t('occams.admin.cms.pages.not_found')
|
|
131
131
|
redirect_to action: :index
|
|
132
132
|
end
|
|
133
133
|
|
|
134
134
|
def preview_page
|
|
135
|
-
|
|
136
|
-
layout = @page.layout.app_layout.blank? ? false : @page.layout.app_layout
|
|
137
|
-
@cms_site = @page.site
|
|
138
|
-
@cms_layout = @page.layout
|
|
139
|
-
@cms_page = @page
|
|
135
|
+
return unless params[:preview]
|
|
140
136
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
137
|
+
layout = @page.layout.app_layout.blank? ? false : @page.layout.app_layout
|
|
138
|
+
@cms_site = @page.site
|
|
139
|
+
@cms_layout = @page.layout
|
|
140
|
+
@cms_page = @page
|
|
144
141
|
|
|
145
|
-
|
|
146
|
-
|
|
142
|
+
# Make sure to use the site locale to render the preview becaue it might
|
|
143
|
+
# be different from the admin locale.
|
|
144
|
+
I18n.locale = @cms_site.locale
|
|
147
145
|
|
|
148
|
-
|
|
149
|
-
|
|
146
|
+
# Chrome chokes on content with iframes. Issue #434
|
|
147
|
+
response.headers['X-XSS-Protection'] = '0'
|
|
148
|
+
|
|
149
|
+
render inline: @page.render, layout: layout, content_type: 'text/html'
|
|
150
150
|
end
|
|
151
151
|
|
|
152
152
|
def page_params
|
|
@@ -20,29 +20,29 @@ class Occams::Admin::Cms::Revisions::BaseController < Occams::Admin::Cms::BaseCo
|
|
|
20
20
|
@current_content = @record.revision_fields.each_with_object({}) { |f, c| c[f] = @record.send(f) }
|
|
21
21
|
@versioned_content = @record.revision_fields.each_with_object({}) { |f, c| c[f] = @revision.data[f] }
|
|
22
22
|
|
|
23
|
-
render
|
|
23
|
+
render 'occams/admin/cms/revisions/show'
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
def revert
|
|
27
27
|
@record.restore_from_revision(@revision)
|
|
28
|
-
flash[:success] = I18n.t(
|
|
28
|
+
flash[:success] = I18n.t('occams.admin.cms.revisions.reverted')
|
|
29
29
|
redirect_to record_path
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
protected
|
|
33
33
|
|
|
34
34
|
def load_record
|
|
35
|
-
raise
|
|
35
|
+
raise 'not implemented'
|
|
36
36
|
end
|
|
37
37
|
|
|
38
38
|
def load_revision
|
|
39
39
|
@revision = @record.revisions.find(params[:id])
|
|
40
40
|
rescue ActiveRecord::RecordNotFound
|
|
41
|
-
flash[:danger] = I18n.t(
|
|
41
|
+
flash[:danger] = I18n.t('occams.admin.cms.revisions.not_found')
|
|
42
42
|
redirect_to record_path
|
|
43
43
|
end
|
|
44
44
|
|
|
45
45
|
def record_path
|
|
46
|
-
raise
|
|
46
|
+
raise 'no implemented'
|
|
47
47
|
end
|
|
48
48
|
end
|
|
@@ -6,7 +6,7 @@ private
|
|
|
6
6
|
def load_record
|
|
7
7
|
@record = @site.layouts.find(params[:layout_id])
|
|
8
8
|
rescue ActiveRecord::RecordNotFound
|
|
9
|
-
flash[:danger] = I18n.t(
|
|
9
|
+
flash[:danger] = I18n.t('occams.admin.cms.revisions.record_not_found')
|
|
10
10
|
redirect_to occams_admin_cms_site_layouts_path(@site)
|
|
11
11
|
end
|
|
12
12
|
|
|
@@ -6,11 +6,11 @@ class Occams::Admin::Cms::Revisions::PageController < Occams::Admin::Cms::Revisi
|
|
|
6
6
|
c[b.identifier] = b.content
|
|
7
7
|
end
|
|
8
8
|
@versioned_content = @record.fragments.each_with_object({}) do |b, c|
|
|
9
|
-
d = @revision.data[
|
|
9
|
+
d = @revision.data['fragments_attributes'].detect { |r| r[:identifier] == b.identifier }
|
|
10
10
|
c[b.identifier] = d.try(:[], :content)
|
|
11
11
|
end
|
|
12
12
|
|
|
13
|
-
render
|
|
13
|
+
render 'occams/admin/cms/revisions/show'
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
private
|
|
@@ -18,7 +18,7 @@ private
|
|
|
18
18
|
def load_record
|
|
19
19
|
@record = @site.pages.find(params[:page_id])
|
|
20
20
|
rescue ActiveRecord::RecordNotFound
|
|
21
|
-
flash[:danger] = I18n.t(
|
|
21
|
+
flash[:danger] = I18n.t('occams.admin.cms.revisions.record_not_found')
|
|
22
22
|
redirect_to occams_admin_cms_site_pages_path(@site)
|
|
23
23
|
end
|
|
24
24
|
|