locomotive_cms 2.2.0 → 2.2.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.
- data/app/models/locomotive/content_entry.rb +5 -1
- data/app/models/locomotive/page.rb +6 -1
- data/app/views/locomotive/notifications/new_content_entry.html.haml +5 -3
- data/lib/locomotive/engine.rb +1 -0
- data/lib/locomotive/liquid/drops/content_types.rb +35 -14
- data/lib/locomotive/liquid/drops/site.rb +2 -0
- data/lib/locomotive/version.rb +1 -1
- data/lib/tasks/locomotive.rake +3 -1
- data/spec/models/locomotive/content_entry_spec.rb +4 -0
- data/spec/models/locomotive/page_spec.rb +6 -2
- metadata +4 -4
|
@@ -176,7 +176,11 @@ module Locomotive
|
|
|
176
176
|
self._slug = self._label.dup if self._slug.blank? && self._label.present?
|
|
177
177
|
|
|
178
178
|
if self._slug.present?
|
|
179
|
-
|
|
179
|
+
# if the slug includes one "_" at least, we consider that the "_" is used instead of "-".
|
|
180
|
+
underscore = !self._slug.index('_').nil?
|
|
181
|
+
|
|
182
|
+
self._slug.permalink!(underscore)
|
|
183
|
+
|
|
180
184
|
self._slug = self.next_unique_slug if self.slug_already_taken?
|
|
181
185
|
end
|
|
182
186
|
|
|
@@ -106,7 +106,12 @@ module Locomotive
|
|
|
106
106
|
|
|
107
107
|
def normalize_slug
|
|
108
108
|
self.slug = self.title.clone if self.slug.blank? && self.title.present?
|
|
109
|
-
|
|
109
|
+
if self.slug.present?
|
|
110
|
+
# if the slug includes one "_" at least, we consider that the "_" is used instead of "-".
|
|
111
|
+
underscore = !self.slug.index('_').nil?
|
|
112
|
+
|
|
113
|
+
self.slug.permalink!(underscore)
|
|
114
|
+
end
|
|
110
115
|
end
|
|
111
116
|
|
|
112
117
|
def set_default_raw_template
|
|
@@ -15,8 +15,6 @@
|
|
|
15
15
|
-
|
|
16
16
|
%i
|
|
17
17
|
- case field.type.to_s
|
|
18
|
-
- when 'string', 'text', 'boolean', 'date'
|
|
19
|
-
= value
|
|
20
18
|
- when 'file'
|
|
21
19
|
- url = value.guess_url
|
|
22
20
|
- url = url =~ /^http/ ? url : URI.join("http://#{@domain}", url).to_s # Amazon S3 (http/https) or local files ?
|
|
@@ -26,4 +24,8 @@
|
|
|
26
24
|
- when 'belongs_to'
|
|
27
25
|
= value.try(:_label)
|
|
28
26
|
- when 'has_many', 'many_to_many'
|
|
29
|
-
= value.map(&:_label).join(', ')
|
|
27
|
+
= value.map(&:_label).join(', ')
|
|
28
|
+
- when 'tags'
|
|
29
|
+
= value.join(', ')
|
|
30
|
+
- else
|
|
31
|
+
= value
|
data/lib/locomotive/engine.rb
CHANGED
|
@@ -36,6 +36,7 @@ module Locomotive
|
|
|
36
36
|
tinymce/plugins/locomotive_media/*.js
|
|
37
37
|
tinymce/plugins/locomotive_media/langs/*.js
|
|
38
38
|
tinymce/themes/advanced/skins/locomotive/*.css
|
|
39
|
+
aloha/plugins/custom/locomotive_media/**/*.css
|
|
39
40
|
aloha/plugins/custom/locomotive_media/**/*.js
|
|
40
41
|
aloha/plugins/custom/inputcontrol/**/*.css
|
|
41
42
|
aloha/plugins/custom/inputcontrol/**/*.js)
|
|
@@ -42,32 +42,53 @@ module Locomotive
|
|
|
42
42
|
|
|
43
43
|
def collection
|
|
44
44
|
if @context['with_scope']
|
|
45
|
-
self.
|
|
45
|
+
self.modify_with_scope
|
|
46
46
|
end
|
|
47
47
|
|
|
48
48
|
@collection ||= @content_type.ordered_entries(@context['with_scope']).visible
|
|
49
49
|
end
|
|
50
50
|
|
|
51
|
-
def
|
|
52
|
-
|
|
53
|
-
@context['with_scope'].dup.each do |key, value|
|
|
54
|
-
if relation = self.relation_with(key, relations)
|
|
55
|
-
model = Locomotive::ContentType.class_name_to_content_type(relation.class_name, @context.registers[:site])
|
|
56
|
-
entry = model.entries.where(model.label_field_name => value).first
|
|
51
|
+
def modify_with_scope
|
|
52
|
+
fields = @content_type.ordered_custom_fields(:entries)
|
|
57
53
|
|
|
58
|
-
|
|
59
|
-
|
|
54
|
+
@context['with_scope'].dup.each do |key, value|
|
|
55
|
+
if relation = self.relation_with(key)
|
|
56
|
+
# belongs_to, has_many, many_to_many relationships: use the _id
|
|
57
|
+
self.modify_with_scope_with_relation(key, value, relation)
|
|
58
|
+
elsif field = fields.detect { |f| f.name == key && f.type == 'select' }
|
|
59
|
+
# use the id of the option instead of the name
|
|
60
|
+
self.modify_with_scope_with_select(key, value, field)
|
|
60
61
|
end
|
|
61
62
|
end
|
|
62
63
|
end
|
|
63
64
|
|
|
64
|
-
def
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
65
|
+
def modify_with_scope_with_relation(key, value, relation)
|
|
66
|
+
model = Locomotive::ContentType.class_name_to_content_type(relation.class_name, @context.registers[:site])
|
|
67
|
+
entry = model.entries.where(model.label_field_name => value).first
|
|
68
|
+
|
|
69
|
+
# modify the scope
|
|
70
|
+
@context['with_scope'].delete(key)
|
|
71
|
+
@context['with_scope'][relation.key] = entry
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def relation_with(name)
|
|
75
|
+
@relations ||= @content_type.klass_with_custom_fields(:entries).relations
|
|
76
|
+
|
|
77
|
+
if @relations.keys.include?(name.to_s)
|
|
78
|
+
@relations[name]
|
|
79
|
+
elsif @relations.keys.include?(name.to_s.pluralize)
|
|
80
|
+
@relations[name.to_s.pluralize]
|
|
69
81
|
end
|
|
70
82
|
end
|
|
83
|
+
|
|
84
|
+
def modify_with_scope_with_select(key, value, field)
|
|
85
|
+
option = field.select_options.detect { |option| [option.name, option._id.to_s].include?(value) }
|
|
86
|
+
|
|
87
|
+
# modify the scope
|
|
88
|
+
@context['with_scope'].delete(key)
|
|
89
|
+
@context['with_scope']["#{key}_id"] = option.try(:_id)
|
|
90
|
+
end
|
|
91
|
+
|
|
71
92
|
end
|
|
72
93
|
|
|
73
94
|
end
|
data/lib/locomotive/version.rb
CHANGED
data/lib/tasks/locomotive.rake
CHANGED
|
@@ -23,8 +23,10 @@ namespace :locomotive do
|
|
|
23
23
|
page.send :_parse_and_serialize_template
|
|
24
24
|
page.save
|
|
25
25
|
puts "[#{site.name}][#{locale}] processing...#{page.title}"
|
|
26
|
-
rescue TypeError
|
|
26
|
+
rescue TypeError
|
|
27
27
|
pages.insert(0, page)
|
|
28
|
+
rescue ::Liquid::Error => e
|
|
29
|
+
puts "\tLiquid error: #{e.message} (#{page._id})"
|
|
28
30
|
end
|
|
29
31
|
end
|
|
30
32
|
end
|
|
@@ -43,6 +43,10 @@ describe Locomotive::ContentEntry do
|
|
|
43
43
|
build_content_entry(_slug: 'dogs').tap(&:save!)._slug.should == 'dogs'
|
|
44
44
|
end
|
|
45
45
|
|
|
46
|
+
it 'accepts underscore instead of dashes' do
|
|
47
|
+
build_content_entry(_slug: 'monkey_wrench').tap(&:save!)._slug.should == 'monkey_wrench'
|
|
48
|
+
end
|
|
49
|
+
|
|
46
50
|
it 'uses the given slug if it is unique' do
|
|
47
51
|
build_content_entry(_slug: 'monkeys').tap(&:save!)._slug.should == 'monkeys'
|
|
48
52
|
build_content_entry(_slug: 'cats-2').tap(&:save!)._slug.should == 'cats-2'
|
|
@@ -114,6 +114,10 @@ describe Locomotive::Page do
|
|
|
114
114
|
page = FactoryGirl.build(:page, title: ' Valid ité.html ', slug: nil, site: page.site)
|
|
115
115
|
page.should be_valid
|
|
116
116
|
page.slug.should == 'valid-ite-dot-html'
|
|
117
|
+
|
|
118
|
+
page = FactoryGirl.build(:page, slug: ' convention_Valid ité.html ')
|
|
119
|
+
page.valid?
|
|
120
|
+
page.slug.should == 'convention_valid_ite_dot_html'
|
|
117
121
|
end
|
|
118
122
|
|
|
119
123
|
it 'has no cache strategy' do
|
|
@@ -180,9 +184,9 @@ describe Locomotive::Page do
|
|
|
180
184
|
archives.reload.children.count.should == 2
|
|
181
185
|
archives.children.last.depth.should == 2
|
|
182
186
|
archives.children.last.children.first.depth.should == 3
|
|
183
|
-
|
|
187
|
+
|
|
184
188
|
end
|
|
185
|
-
|
|
189
|
+
|
|
186
190
|
it "builds children fullpaths" do
|
|
187
191
|
sub_child_1 = FactoryGirl.create(:page, title: 'Sub Subpage 1', slug: 'bar', parent: @child_1, site: @home.site)
|
|
188
192
|
sub_child_1.fullpath.should == "foo/bar"
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: locomotive_cms
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.2.
|
|
4
|
+
version: 2.2.1
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2013-07-
|
|
12
|
+
date: 2013-07-11 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: rake
|
|
@@ -1416,7 +1416,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
1416
1416
|
version: '0'
|
|
1417
1417
|
segments:
|
|
1418
1418
|
- 0
|
|
1419
|
-
hash:
|
|
1419
|
+
hash: 4035827424997986314
|
|
1420
1420
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1421
1421
|
none: false
|
|
1422
1422
|
requirements:
|
|
@@ -1425,7 +1425,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
1425
1425
|
version: '0'
|
|
1426
1426
|
segments:
|
|
1427
1427
|
- 0
|
|
1428
|
-
hash:
|
|
1428
|
+
hash: 4035827424997986314
|
|
1429
1429
|
requirements: []
|
|
1430
1430
|
rubyforge_project:
|
|
1431
1431
|
rubygems_version: 1.8.23
|