cmor_cms 0.0.39.pre → 0.0.40.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/{lib → app/resolvers}/cmor/cms/database_resolver.rb +0 -0
- data/app/resolvers/cmor/cms/page_resolver.rb +0 -2
- data/app/resolvers/cmor/cms/partial_resolver.rb +0 -2
- data/app/resolvers/cmor/cms/template_resolver.rb +0 -2
- data/lib/cmor/cms/database_resolver.rb~ +121 -0
- metadata +8 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c14aea3d250b94a5c6a20ae11c0adc0d8404ec1d552809f203abf6596a437df5
|
4
|
+
data.tar.gz: 3a41881e403d72d8a11ccfd619e59ff803e0dd3eb46fd5ce4fe5b4d2feccf746
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ea8e4e13c05f9ca30da20e7832946ff9c553bb66630cf57563a8fec6d820395fd9ec9e71145d75bed57236b3d022486fd944a5a41ffc50757eced1b16102b075
|
7
|
+
data.tar.gz: 2a9a4bd52710d2649aba11cecb535f8de9a798921b8b821c08f954464ecb414502d5057daefbce4ddf6208cb723dc193a4bd2f6ffa2adbfcd0737e339d681484
|
File without changes
|
@@ -0,0 +1,121 @@
|
|
1
|
+
module Cmor
|
2
|
+
module Cms
|
3
|
+
module DatabaseResolver
|
4
|
+
# Include hook for class methods
|
5
|
+
def self.included(base)
|
6
|
+
base.extend(ClassMethods)
|
7
|
+
end
|
8
|
+
|
9
|
+
# class methods go here
|
10
|
+
module ClassMethods
|
11
|
+
end
|
12
|
+
|
13
|
+
# instance methods go here
|
14
|
+
def find_templates(name, prefix, partial, details, outside_app_allowed = false)
|
15
|
+
return [] unless resolve(partial)
|
16
|
+
|
17
|
+
conditions = {
|
18
|
+
pathname: assert_slashs(prefix.to_s),
|
19
|
+
basename: normalize_basename(name),
|
20
|
+
locale: normalize_array(details[:locale]).first,
|
21
|
+
format: normalize_array(details[:formats]).first,
|
22
|
+
handler: normalize_array(details[:handlers])
|
23
|
+
}
|
24
|
+
|
25
|
+
format = conditions.delete(:format)
|
26
|
+
locale = conditions.delete(:locale)
|
27
|
+
|
28
|
+
query = template_class.constantize.where(conditions)
|
29
|
+
|
30
|
+
# 2) Check for templates with the given format or format is nil
|
31
|
+
query = query.where(["format = ? OR format = '' OR format IS NULL", format])
|
32
|
+
|
33
|
+
# 3) Ensure templates with format come first
|
34
|
+
query = query.order('format DESC')
|
35
|
+
|
36
|
+
# 4) Check for templates with the given locale or locale is nil
|
37
|
+
query = query.where(["locale = ? OR locale = '' OR locale IS NULL", locale])
|
38
|
+
|
39
|
+
# 5) Ensure templates with locale come first
|
40
|
+
query = query.order('locale DESC')
|
41
|
+
|
42
|
+
# 6) Now trigger the query passing on conditions to initialization
|
43
|
+
query.map do |record|
|
44
|
+
initialize_template(record, details)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
# Initialize an ActionView::Template object based on the record found.
|
49
|
+
if Rails.version < '6.0'
|
50
|
+
def initialize_template(record, details)
|
51
|
+
source = build_source(record)
|
52
|
+
identifier = "#{record.class} - #{record.id} - #{record.pathname}#{record.basename}"
|
53
|
+
handler = ::ActionView::Template.registered_template_handler(record.handler)
|
54
|
+
|
55
|
+
# 5) Check for the record.format, if none is given, try the template
|
56
|
+
# handler format and fallback to the one given on conditions
|
57
|
+
format = record.format && Mime[record.format]
|
58
|
+
format ||= handler.default_format if handler.respond_to?(:default_format)
|
59
|
+
format ||= details[:formats]
|
60
|
+
details = {
|
61
|
+
format: format,
|
62
|
+
updated_at: record.updated_at,
|
63
|
+
virtual_path: "#{record.pathname}#{record.basename}"
|
64
|
+
}
|
65
|
+
|
66
|
+
details[:layout] = record.layout if record.respond_to?(:layout) && record.layout.present?
|
67
|
+
|
68
|
+
::ActionView::Template.new(source, identifier, handler, details)
|
69
|
+
end
|
70
|
+
else
|
71
|
+
def initialize_template(record, details)
|
72
|
+
source = build_source(record)
|
73
|
+
identifier = "#{record.class} - #{record.id} - #{record.pathname}#{record.basename}"
|
74
|
+
handler = ::ActionView::Template.registered_template_handler(record.handler)
|
75
|
+
virtual_path = "#{record.pathname}#{record.basename}"
|
76
|
+
layout = record.layout if record.respond_to?(:layout) && record.layout.present?
|
77
|
+
locals = []
|
78
|
+
|
79
|
+
# 5) Check for the record.format, if none is given, try the template
|
80
|
+
# handler format and fallback to the one given on conditions
|
81
|
+
format = record.format && Mime[record.format]
|
82
|
+
format ||= handler.default_format if handler.respond_to?(:default_format)
|
83
|
+
format ||= details[:formats]
|
84
|
+
|
85
|
+
# Rails 6 passes an array of formats instead of a symbol
|
86
|
+
format = format.is_a?(Array) ? format.first : format.symbol
|
87
|
+
|
88
|
+
::ActionView::Template.new(source, identifier, handler, format: format, virtual_path: virtual_path, layout: layout, locals: locals)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
def assert_slashs(prefix)
|
93
|
+
output = prefix.dup
|
94
|
+
output << '/' unless output.end_with?('/')
|
95
|
+
output = '/' << output unless output.start_with?('/')
|
96
|
+
output
|
97
|
+
end
|
98
|
+
|
99
|
+
# Normalize arrays by converting all symbols to strings.
|
100
|
+
def normalize_array(array)
|
101
|
+
array.map(&:to_s)
|
102
|
+
end
|
103
|
+
|
104
|
+
def build_source
|
105
|
+
fail 'call to abstract method #build_source'
|
106
|
+
end
|
107
|
+
|
108
|
+
def normalize_basename(_basename)
|
109
|
+
fail 'call to abstract method #normalize_basename'
|
110
|
+
end
|
111
|
+
|
112
|
+
def resolve(_partial_flag)
|
113
|
+
fail 'call to abstract method #resolve'
|
114
|
+
end
|
115
|
+
|
116
|
+
def template_class
|
117
|
+
fail 'call to abstract method #template_class'
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
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.40.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: 2019-
|
11
|
+
date: 2019-11-04 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.40.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.40.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.40.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.40.pre
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: sqlite3
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -402,6 +402,7 @@ files:
|
|
402
402
|
- app/models/cmor/cms/partial.rb
|
403
403
|
- app/models/cmor/cms/template.rb
|
404
404
|
- app/models/concerns/model/cmor/cms/navigation_item/properties_concern.rb
|
405
|
+
- app/resolvers/cmor/cms/database_resolver.rb
|
405
406
|
- app/resolvers/cmor/cms/page_resolver.rb
|
406
407
|
- app/resolvers/cmor/cms/partial_resolver.rb
|
407
408
|
- app/resolvers/cmor/cms/template_resolver.rb
|
@@ -437,7 +438,7 @@ files:
|
|
437
438
|
- lib/cmor/cms/controller_extensions/page_resolver.rb
|
438
439
|
- lib/cmor/cms/controller_extensions/partial_resolver.rb
|
439
440
|
- lib/cmor/cms/controller_extensions/template_resolver.rb
|
440
|
-
- lib/cmor/cms/database_resolver.rb
|
441
|
+
- lib/cmor/cms/database_resolver.rb~
|
441
442
|
- lib/cmor/cms/database_template.rb
|
442
443
|
- lib/cmor/cms/engine.rb
|
443
444
|
- lib/cmor/cms/version.rb
|