cmor_cms 0.0.53.pre → 0.0.58.pre
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/app/concerns/cmor/cms/models/database_template_concern.rb +63 -0
- data/app/controllers/cmor/cms/page_controller.rb +8 -5
- data/app/models/cmor/cms/layout.rb +10 -0
- data/app/models/cmor/cms/page.rb +1 -1
- data/app/models/cmor/cms/partial.rb +1 -1
- data/app/models/cmor/cms/template.rb +1 -1
- data/app/resolvers/cmor/cms/layout_resolver.rb +9 -0
- data/app/view_helpers/cmor/cms/application_view_helper.rb +2 -2
- data/app/views/cmor/cms/application_view_helper/_link_to_top.html.erb +12 -0
- data/config/locales/de.yml +13 -4
- data/config/locales/en.yml +14 -5
- data/config/routes.rb +3 -1
- data/db/migrate/20200514115526_create_cmor_cms_layouts.rb +15 -0
- data/lib/cmor/cms.rb +1 -2
- data/lib/cmor/cms/action_view/template_renderer_patch.rb +23 -0
- data/lib/cmor/cms/controller_extensions/layout_resolver.rb +12 -0
- data/lib/cmor/cms/engine.rb +4 -0
- data/spec/factories/cmor/cms/layouts.rb +7 -0
- metadata +14 -10
- data/app/views/cmor/cms/_link_to_top.html.erb +0 -5
- data/config/initializers/textile_support.rb +0 -3
- data/lib/cmor/cms/database_template.rb +0 -64
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 7e62b58cc0f32abc8a8e6cac3b17b5350a7ba6350033c2cb56daee44999c18d7
|
|
4
|
+
data.tar.gz: 868f1976844967465b2d1927eb3663451a2765d1f4af6dad2b46a5aeb023fe48
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e5d90528cdf4eca40def1bed25061495afecd6c4e262f422745e299d8d93bfd6f326283d4bb66f525255e508d62031301127318b20cb759cb275845bb2720f9c
|
|
7
|
+
data.tar.gz: 6aa4f799ca502629eec72427a7463cc62ee57b0ae0a3718478f7d73d1234e14c66b8257afdd3f474fecd7aaf19930c6f58ed66b8b12166d98264cd5c03f43a91
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
module Cmor
|
|
2
|
+
module Cms
|
|
3
|
+
module Models
|
|
4
|
+
module DatabaseTemplateConcern
|
|
5
|
+
extend ActiveSupport::Concern
|
|
6
|
+
|
|
7
|
+
included do
|
|
8
|
+
# callbacks
|
|
9
|
+
after_initialize :set_defaults
|
|
10
|
+
before_validation :assert_trailing_slash_on_pathname
|
|
11
|
+
after_save :clear_resolver_cache
|
|
12
|
+
|
|
13
|
+
# validations
|
|
14
|
+
validates :basename, presence: true,
|
|
15
|
+
uniqueness: { scope: [:pathname, :locale, :format, :handler] }
|
|
16
|
+
validates :handler, inclusion: { in: ActionView::Template::Handlers.extensions.map(&:to_s) }
|
|
17
|
+
validates :locale, inclusion: { in: I18n.available_locales.map(&:to_s) },
|
|
18
|
+
allow_nil: true,
|
|
19
|
+
allow_blank: true
|
|
20
|
+
validates :format, inclusion: { in: Mime::SET.symbols.map(&:to_s) },
|
|
21
|
+
allow_nil: true,
|
|
22
|
+
allow_blank: true
|
|
23
|
+
validates :pathname, presence: true
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def human
|
|
27
|
+
"#{self.class.name}: #{path_and_filename}"
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def filename
|
|
31
|
+
filename = basename.nil? ? '' : basename.dup
|
|
32
|
+
filename << ".#{locale}" if locale.present?
|
|
33
|
+
filename << ".#{format}" if format.present?
|
|
34
|
+
filename << ".#{handler}" if handler.present?
|
|
35
|
+
filename
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def path_and_filename
|
|
39
|
+
"#{pathname}#{filename}"
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
private
|
|
43
|
+
|
|
44
|
+
def assert_trailing_slash_on_pathname
|
|
45
|
+
self.pathname = '/' and return if pathname.blank?
|
|
46
|
+
pathname << '/' unless pathname.end_with?('/')
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def clear_resolver_cache
|
|
50
|
+
klass = "#{self.class.name}Resolver"
|
|
51
|
+
klass.constantize.instance.clear_cache
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def set_defaults
|
|
55
|
+
if new_record?
|
|
56
|
+
self.locale ||= I18n.default_locale.to_s
|
|
57
|
+
self.handler ||= Cmor::Cms::Configuration.default_handlers[self.class.name.demodulize.underscore.to_sym].to_s
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
module Cmor
|
|
2
2
|
module Cms
|
|
3
3
|
class PageController < Cmor::Cms::Configuration.base_controller.constantize
|
|
4
|
+
include Cmor::Cms::ControllerExtensions::LayoutResolver
|
|
4
5
|
include Cmor::Cms::ControllerExtensions::PageResolver
|
|
5
6
|
include Cmor::Cms::ControllerExtensions::PartialResolver
|
|
6
7
|
|
|
@@ -22,11 +23,13 @@ module Cmor
|
|
|
22
23
|
extend ActiveSupport::Concern
|
|
23
24
|
|
|
24
25
|
included do
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
unless Rails.env.development?
|
|
27
|
+
rescue_from ActionView::MissingTemplate do |exception|
|
|
28
|
+
if exception.message.start_with?('Missing partial')
|
|
29
|
+
handle_missing_partial(exception)
|
|
30
|
+
else
|
|
31
|
+
handle_missing_template(exception)
|
|
32
|
+
end
|
|
30
33
|
end
|
|
31
34
|
end
|
|
32
35
|
end
|
data/app/models/cmor/cms/page.rb
CHANGED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<%= content_tag(:div, class: 'pull-right') do %>
|
|
2
|
+
<%= link_to('#top', id: 'top-link', class: 'btn btn-primary') do %>
|
|
3
|
+
<% case icons %>
|
|
4
|
+
<% when :glyphicons %>
|
|
5
|
+
<%= content_tag(:span, nil, class: 'glyphicon glyphicon-arrow-up') %>
|
|
6
|
+
<% when :font_awesome %>
|
|
7
|
+
<%= content_tag(:i, nil, class: 'fas fa-arrow-up') %>
|
|
8
|
+
<% else %>
|
|
9
|
+
<%= content_tag(:span, "⌃".html_safe) %>
|
|
10
|
+
<% end %>
|
|
11
|
+
<% end %>
|
|
12
|
+
<% end %>
|
data/config/locales/de.yml
CHANGED
|
@@ -7,6 +7,9 @@ de:
|
|
|
7
7
|
cmor/cms/content_box:
|
|
8
8
|
one: Content Box
|
|
9
9
|
other: Content Boxen
|
|
10
|
+
cmor/cms/layout:
|
|
11
|
+
one: Layout
|
|
12
|
+
other: Layouts
|
|
10
13
|
cmor/cms/navigation:
|
|
11
14
|
one: Navigation
|
|
12
15
|
other: Navigationen
|
|
@@ -44,6 +47,16 @@ de:
|
|
|
44
47
|
body: Inhalt
|
|
45
48
|
content_blocks: Content Blöcke
|
|
46
49
|
content_blocks_count: Content Blöcke
|
|
50
|
+
cmor/cms/layout:
|
|
51
|
+
<<: *defaults
|
|
52
|
+
basename: Name
|
|
53
|
+
body: Inhalt
|
|
54
|
+
filename: Dateiname
|
|
55
|
+
format: Format
|
|
56
|
+
handler: Handler
|
|
57
|
+
locale: Sprache
|
|
58
|
+
path_and_filename: Dateipfad
|
|
59
|
+
pathname: Pfad
|
|
47
60
|
cmor/cms/navigation:
|
|
48
61
|
<<: *defaults
|
|
49
62
|
navigation_items: Navigationseinträge
|
|
@@ -93,8 +106,6 @@ de:
|
|
|
93
106
|
<<: *defaults
|
|
94
107
|
basename: Name
|
|
95
108
|
body: Inhalt
|
|
96
|
-
cmor_cms_folder_id: Ordner
|
|
97
|
-
cmor_cms_folder: Ordner
|
|
98
109
|
filename: Dateiname
|
|
99
110
|
format: Format
|
|
100
111
|
handler: Handler
|
|
@@ -106,8 +117,6 @@ de:
|
|
|
106
117
|
<<: *defaults
|
|
107
118
|
basename: Name
|
|
108
119
|
body: Inhalt
|
|
109
|
-
cmor_cms_folder_id: Ordner
|
|
110
|
-
cmor_cms_folder: Ordner
|
|
111
120
|
filename: Dateiname
|
|
112
121
|
format: Format
|
|
113
122
|
handler: Handler
|
data/config/locales/en.yml
CHANGED
|
@@ -7,6 +7,9 @@ en:
|
|
|
7
7
|
cmor/cms/content_box:
|
|
8
8
|
one: Content box
|
|
9
9
|
other: Content boxes
|
|
10
|
+
cmor/cms/layout:
|
|
11
|
+
one: Layout
|
|
12
|
+
other: Layouts
|
|
10
13
|
cmor/cms/navigation:
|
|
11
14
|
one: Navigation
|
|
12
15
|
other: Navigations
|
|
@@ -41,7 +44,17 @@ en:
|
|
|
41
44
|
name: Name
|
|
42
45
|
body: Body
|
|
43
46
|
content_blocks: Content blocks
|
|
44
|
-
content_blocks_count: Content
|
|
47
|
+
content_blocks_count: Content blocks
|
|
48
|
+
cmor/cms/layout:
|
|
49
|
+
<<: *defaults
|
|
50
|
+
basename: Name
|
|
51
|
+
body: Body
|
|
52
|
+
filename: Filename
|
|
53
|
+
format: Format
|
|
54
|
+
handler: Handler
|
|
55
|
+
locale: Language
|
|
56
|
+
path_and_filename: Filepath
|
|
57
|
+
pathname: Path
|
|
45
58
|
cmor/cms/navigation:
|
|
46
59
|
<<: *defaults
|
|
47
60
|
navigation_items: Navigation items
|
|
@@ -91,8 +104,6 @@ en:
|
|
|
91
104
|
<<: *defaults
|
|
92
105
|
basename: Name
|
|
93
106
|
body: Body
|
|
94
|
-
cmor_cms_folder_id: Folder
|
|
95
|
-
cmor_cms_folder: Folder
|
|
96
107
|
filename: Filename
|
|
97
108
|
format: Format
|
|
98
109
|
handler: Handler
|
|
@@ -104,8 +115,6 @@ en:
|
|
|
104
115
|
<<: *defaults
|
|
105
116
|
basename: Name
|
|
106
117
|
body: Body
|
|
107
|
-
cmor_cms_folder_id: Folder
|
|
108
|
-
cmor_cms_folder: Folder
|
|
109
118
|
filename: Filename
|
|
110
119
|
format: Format
|
|
111
120
|
handler: Handler
|
data/config/routes.rb
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
Cmor::Cms::Engine.routes.draw do
|
|
2
2
|
localized do
|
|
3
|
-
get '/*page', to: 'page#respond', as: :page
|
|
3
|
+
get '/*page', to: 'page#respond', as: :page, constraints: lambda { |req|
|
|
4
|
+
req.path.exclude? 'rails/active_storage'
|
|
5
|
+
}
|
|
4
6
|
get '/', to: 'page#respond', page: 'home'
|
|
5
7
|
end
|
|
6
8
|
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
class CreateCmorCmsLayouts < ActiveRecord::Migration[5.2]
|
|
2
|
+
def change
|
|
3
|
+
create_table :cmor_cms_layouts do |t|
|
|
4
|
+
t.string :basename
|
|
5
|
+
t.string :pathname
|
|
6
|
+
t.text :body
|
|
7
|
+
t.string :locale
|
|
8
|
+
t.string :format
|
|
9
|
+
t.string :handler
|
|
10
|
+
t.timestamp :published_at
|
|
11
|
+
|
|
12
|
+
t.timestamps
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
data/lib/cmor/cms.rb
CHANGED
|
@@ -4,8 +4,7 @@ require 'cmor/cms/action_view/template_renderer_patch'
|
|
|
4
4
|
require 'cmor/cms/engine'
|
|
5
5
|
require 'cmor/cms/configuration'
|
|
6
6
|
|
|
7
|
-
require 'cmor/cms/
|
|
8
|
-
|
|
7
|
+
require 'cmor/cms/controller_extensions/layout_resolver'
|
|
9
8
|
require 'cmor/cms/controller_extensions/page_resolver'
|
|
10
9
|
require 'cmor/cms/controller_extensions/partial_resolver'
|
|
11
10
|
require 'cmor/cms/controller_extensions/template_resolver'
|
|
@@ -36,6 +36,29 @@ module ActionView
|
|
|
36
36
|
|
|
37
37
|
render_template(template, layout, options[:locals])
|
|
38
38
|
end
|
|
39
|
+
elsif Rails::VERSION::MAJOR < 6
|
|
40
|
+
def render(context, options)
|
|
41
|
+
@view = context
|
|
42
|
+
@details = extract_details(options)
|
|
43
|
+
template = determine_template(options)
|
|
44
|
+
layout = template.respond_to?(:layout) && template.layout.present? ? template.layout : options[:layout]
|
|
45
|
+
|
|
46
|
+
prepend_formats(template.formats)
|
|
47
|
+
|
|
48
|
+
@lookup_context.rendered_format ||= (template.formats.first || formats.first)
|
|
49
|
+
|
|
50
|
+
render_template(template, layout, options[:locals])
|
|
51
|
+
end
|
|
52
|
+
else
|
|
53
|
+
def render(context, options)
|
|
54
|
+
@details = extract_details(options)
|
|
55
|
+
template = determine_template(options)
|
|
56
|
+
|
|
57
|
+
prepend_formats(template.format)
|
|
58
|
+
|
|
59
|
+
layout = (template.respond_to?(:layout) ? template.layout : nil) || options[:layout]
|
|
60
|
+
render_template(context, template, (layout || options[:layout]), options[:locals] || {})
|
|
61
|
+
end
|
|
39
62
|
end
|
|
40
63
|
end
|
|
41
64
|
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
module Cmor
|
|
2
|
+
module Cms
|
|
3
|
+
module ControllerExtensions
|
|
4
|
+
module LayoutResolver
|
|
5
|
+
def self.included(base)
|
|
6
|
+
# add the template resolver
|
|
7
|
+
base.prepend_view_path ::Cmor::Cms::LayoutResolver.instance unless base.view_paths.include?(::Cmor::Cms::LayoutResolver.instance)
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
data/lib/cmor/cms/engine.rb
CHANGED
|
@@ -11,6 +11,10 @@ module Cmor
|
|
|
11
11
|
c.performance_tool :rspec
|
|
12
12
|
|
|
13
13
|
end
|
|
14
|
+
|
|
15
|
+
initializer "cmor_cms_engine.register_template_handlers" do |app|
|
|
16
|
+
::ActionView::Template.register_template_handler :textile, ::ActionView::Template::Handlers::Textile.new
|
|
17
|
+
end
|
|
14
18
|
end
|
|
15
19
|
end
|
|
16
20
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: cmor_cms
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.58.pre
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Roberto Vasquez Angel
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-
|
|
11
|
+
date: 2020-07-17 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rails
|
|
@@ -30,28 +30,28 @@ dependencies:
|
|
|
30
30
|
requirements:
|
|
31
31
|
- - '='
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: 0.0.
|
|
33
|
+
version: 0.0.58.pre
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
38
|
- - '='
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: 0.0.
|
|
40
|
+
version: 0.0.58.pre
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: cmor_core_frontend
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
45
|
- - '='
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: 0.0.
|
|
47
|
+
version: 0.0.58.pre
|
|
48
48
|
type: :runtime
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
52
|
- - '='
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: 0.0.
|
|
54
|
+
version: 0.0.58.pre
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: sqlite3
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -418,6 +418,7 @@ files:
|
|
|
418
418
|
- app/assets/stylesheets/cmor/cms/application.css
|
|
419
419
|
- app/assets/stylesheets/cmor/cms/application/keep.css
|
|
420
420
|
- app/assets/stylesheets/cmor_cms.css
|
|
421
|
+
- app/concerns/cmor/cms/models/database_template_concern.rb
|
|
421
422
|
- app/concerns/cmor/cms/navigation_item/properties_concern.rb~
|
|
422
423
|
- app/controllers/cmor/cms/page_controller.rb
|
|
423
424
|
- app/importers/cmor/cms/importers/navigation.rb
|
|
@@ -425,12 +426,14 @@ files:
|
|
|
425
426
|
- app/importers/cmor/cms/importers/page.rb
|
|
426
427
|
- app/models/cmor/cms/content_block.rb
|
|
427
428
|
- app/models/cmor/cms/content_box.rb
|
|
429
|
+
- app/models/cmor/cms/layout.rb
|
|
428
430
|
- app/models/cmor/cms/navigation.rb
|
|
429
431
|
- app/models/cmor/cms/navigation_item.rb
|
|
430
432
|
- app/models/cmor/cms/page.rb
|
|
431
433
|
- app/models/cmor/cms/partial.rb
|
|
432
434
|
- app/models/cmor/cms/template.rb
|
|
433
435
|
- app/resolvers/cmor/cms/database_resolver.rb
|
|
436
|
+
- app/resolvers/cmor/cms/layout_resolver.rb
|
|
434
437
|
- app/resolvers/cmor/cms/page_resolver.rb
|
|
435
438
|
- app/resolvers/cmor/cms/partial_resolver.rb
|
|
436
439
|
- app/resolvers/cmor/cms/template_resolver.rb
|
|
@@ -441,13 +444,12 @@ files:
|
|
|
441
444
|
- app/view_helpers/cmor/cms/application_view_helper.rb
|
|
442
445
|
- app/view_helpers/cmor/cms/navigation_view_helper.rb
|
|
443
446
|
- app/view_helpers/cmor/cms/page_view_helper.rb
|
|
444
|
-
- app/views/cmor/cms/_link_to_top.html.erb
|
|
447
|
+
- app/views/cmor/cms/application_view_helper/_link_to_top.html.erb
|
|
445
448
|
- app/views/cmor/cms/page/fallback.html.erb
|
|
446
449
|
- app/views/cmor/cms/page/fallback.txt
|
|
447
450
|
- config/initializers/assets.rb
|
|
448
451
|
- config/initializers/mime_types.rb
|
|
449
452
|
- config/initializers/simple_navigation.rb
|
|
450
|
-
- config/initializers/textile_support.rb
|
|
451
453
|
- config/locales/de.yml
|
|
452
454
|
- config/locales/en.yml
|
|
453
455
|
- config/navigation.rb
|
|
@@ -464,15 +466,16 @@ files:
|
|
|
464
466
|
- db/migrate/20200120134400_add_published_at_to_cmor_cms_partials.rb
|
|
465
467
|
- db/migrate/20200120134422_add_published_at_to_cmor_cms_navigation_items.rb
|
|
466
468
|
- db/migrate/20200120141440_set_all_publishable_to_published.rb
|
|
469
|
+
- db/migrate/20200514115526_create_cmor_cms_layouts.rb
|
|
467
470
|
- lib/cmor/cms.rb
|
|
468
471
|
- lib/cmor/cms/action_view/template_patch.rb
|
|
469
472
|
- lib/cmor/cms/action_view/template_renderer_patch.rb
|
|
470
473
|
- lib/cmor/cms/configuration.rb
|
|
474
|
+
- lib/cmor/cms/controller_extensions/layout_resolver.rb
|
|
471
475
|
- lib/cmor/cms/controller_extensions/page_resolver.rb
|
|
472
476
|
- lib/cmor/cms/controller_extensions/partial_resolver.rb
|
|
473
477
|
- lib/cmor/cms/controller_extensions/template_resolver.rb
|
|
474
478
|
- lib/cmor/cms/database_resolver.rb~
|
|
475
|
-
- lib/cmor/cms/database_template.rb
|
|
476
479
|
- lib/cmor/cms/engine.rb
|
|
477
480
|
- lib/cmor/cms/version.rb
|
|
478
481
|
- lib/cmor_cms.rb
|
|
@@ -482,6 +485,7 @@ files:
|
|
|
482
485
|
- lib/tasks/cmor_cms_tasks.rake
|
|
483
486
|
- spec/factories/cmor/cms/content_block.rb
|
|
484
487
|
- spec/factories/cmor/cms/content_box.rb
|
|
488
|
+
- spec/factories/cmor/cms/layouts.rb
|
|
485
489
|
- spec/factories/cmor/cms/navigation_items.rb
|
|
486
490
|
- spec/factories/cmor/cms/navigations.rb
|
|
487
491
|
- spec/factories/cmor/cms/pages.rb
|
|
@@ -506,7 +510,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
506
510
|
- !ruby/object:Gem::Version
|
|
507
511
|
version: 1.3.1
|
|
508
512
|
requirements: []
|
|
509
|
-
rubygems_version: 3.1.
|
|
513
|
+
rubygems_version: 3.1.4
|
|
510
514
|
signing_key:
|
|
511
515
|
specification_version: 4
|
|
512
516
|
summary: CMS base module for ruby on rails.
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
module Cmor
|
|
2
|
-
module Cms
|
|
3
|
-
module DatabaseTemplate
|
|
4
|
-
def self.included(base)
|
|
5
|
-
base.extend(ClassMethods)
|
|
6
|
-
|
|
7
|
-
# callbacks
|
|
8
|
-
base.after_initialize :set_defaults
|
|
9
|
-
base.before_validation :assert_trailing_slash_on_pathname
|
|
10
|
-
base.after_save :clear_resolver_cache
|
|
11
|
-
|
|
12
|
-
# validations
|
|
13
|
-
base.validates :basename, presence: true,
|
|
14
|
-
uniqueness: { scope: [:pathname, :locale, :format, :handler] }
|
|
15
|
-
base.validates :handler, inclusion: ActionView::Template::Handlers.extensions.map(&:to_s)
|
|
16
|
-
base.validates :locale, inclusion: I18n.available_locales.map(&:to_s),
|
|
17
|
-
allow_nil: true,
|
|
18
|
-
allow_blank: true
|
|
19
|
-
base.validates :format, inclusion: Mime::SET.symbols.map(&:to_s),
|
|
20
|
-
allow_nil: true,
|
|
21
|
-
allow_blank: true
|
|
22
|
-
base.validates :pathname, presence: true
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
module ClassMethods
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def human
|
|
29
|
-
"#{self.class.name}: #{path_and_filename}"
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def filename
|
|
33
|
-
filename = basename.nil? ? '' : basename.dup
|
|
34
|
-
filename << ".#{locale}" if locale.present?
|
|
35
|
-
filename << ".#{format}" if format.present?
|
|
36
|
-
filename << ".#{handler}" if handler.present?
|
|
37
|
-
filename
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def path_and_filename
|
|
41
|
-
"#{pathname}#{filename}"
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
private
|
|
45
|
-
|
|
46
|
-
def assert_trailing_slash_on_pathname
|
|
47
|
-
self.pathname = '/' and return if pathname.blank?
|
|
48
|
-
pathname << '/' unless pathname.end_with?('/')
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def clear_resolver_cache
|
|
52
|
-
klass = "#{self.class.name}Resolver"
|
|
53
|
-
klass.constantize.instance.clear_cache
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def set_defaults
|
|
57
|
-
if new_record?
|
|
58
|
-
self.locale ||= I18n.default_locale.to_s
|
|
59
|
-
self.handler ||= Cmor::Cms::Configuration.default_handlers[self.class.name.demodulize.underscore.to_sym].to_s
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
end
|