locomotive_cms 2.3.1 → 2.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/locomotive/models/content_entry.js.coffee +4 -0
- data/app/assets/javascripts/locomotive/views/content_assets/picker_view.js.coffee +0 -2
- data/app/assets/javascripts/locomotive/views/content_entries/_form_view.js.coffee +1 -1
- data/app/assets/javascripts/locomotive/views/content_entries/_popup_form_view.js.coffee +7 -0
- data/app/assets/javascripts/locomotive/views/inline_editor/application_view.js.coffee +1 -1
- data/app/assets/javascripts/locomotive/views/pages/_form_view.js.coffee +2 -1
- data/app/assets/javascripts/locomotive/views/shared/fields/_relationship_view.js.coffee +45 -0
- data/app/assets/javascripts/locomotive/views/shared/fields/belongs_to_view.js.coffee +4 -20
- data/app/assets/javascripts/locomotive/views/shared/fields/many_to_many_view.js.coffee +53 -42
- data/app/assets/javascripts/locomotive/views/snippets/_form_view.js.coffee +0 -1
- data/app/assets/stylesheets/locomotive/backoffice/application.css.scss +31 -0
- data/app/assets/stylesheets/locomotive/backoffice/formtastic_changes.css.scss +19 -0
- data/app/controllers/locomotive/api/accounts_controller.rb +6 -0
- data/app/controllers/locomotive/content_entries_controller.rb +1 -1
- data/app/helpers/locomotive/content_entries_helper.rb +22 -0
- data/app/models/locomotive/content_entry.rb +16 -47
- data/app/models/locomotive/content_type.rb +19 -3
- data/app/models/locomotive/editable_text.rb +7 -1
- data/app/models/locomotive/extensions/content_entry/localized.rb +62 -0
- data/app/models/locomotive/extensions/page/tree.rb +5 -0
- data/app/models/locomotive/extensions/shared/slug.rb +33 -0
- data/app/models/locomotive/page.rb +4 -11
- data/app/models/locomotive/snippet.rb +6 -7
- data/app/models/locomotive/translation.rb +2 -2
- data/app/presenters/locomotive/account_presenter.rb +1 -1
- data/app/views/locomotive/content_entries/_list.html.haml +3 -1
- data/app/views/locomotive/custom_fields/types/_boolean.html.haml +1 -1
- data/app/views/locomotive/custom_fields/types/_date.html.haml +1 -1
- data/app/views/locomotive/custom_fields/types/_date_time.html.haml +1 -1
- data/app/views/locomotive/custom_fields/types/_email.html.haml +1 -1
- data/app/views/locomotive/custom_fields/types/_file.html.haml +1 -1
- data/app/views/locomotive/custom_fields/types/_float.html.haml +1 -1
- data/app/views/locomotive/custom_fields/types/_integer.html.haml +1 -1
- data/app/views/locomotive/custom_fields/types/_many_to_many.html.haml +1 -5
- data/app/views/locomotive/custom_fields/types/_select.html.haml +1 -1
- data/app/views/locomotive/custom_fields/types/_string.html.haml +1 -1
- data/app/views/locomotive/custom_fields/types/_tags.html.haml +1 -1
- data/app/views/locomotive/custom_fields/types/_text.html.haml +1 -1
- data/config/locales/admin_ui.de.yml +4 -0
- data/config/locales/default.zh-CN.yml +162 -52
- data/config/locales/devise.bg.yml +1 -1
- data/config/locales/devise.cs.yml +1 -1
- data/config/locales/devise.de.yml +1 -1
- data/config/locales/devise.en.yml +1 -1
- data/config/locales/devise.es.yml +2 -2
- data/config/locales/devise.et.yml +1 -1
- data/config/locales/devise.fr.yml +1 -1
- data/config/locales/devise.it.yml +1 -1
- data/config/locales/devise.ja.yml +1 -1
- data/config/locales/devise.nb.yml +1 -1
- data/config/locales/devise.nl.yml +2 -2
- data/config/locales/devise.pl.yml +1 -1
- data/config/locales/devise.pt-BR.yml +2 -2
- data/config/locales/devise.ru.yml +1 -1
- data/config/locales/devise.zh-CN.yml +1 -1
- data/config/routes.rb +2 -2
- data/features/api/accounts.feature +19 -1
- data/features/api/authorization/accounts.feature +52 -12
- data/features/backoffice/content_types/has_many.feature +3 -3
- data/features/backoffice/content_types/integer.feature +4 -4
- data/features/backoffice/content_types/many_to_many.feature +1 -1
- data/features/backoffice/my_account.feature +1 -0
- data/features/step_definitions/web_steps.rb +7 -0
- data/lib/locomotive/action_controller/public_responder.rb +24 -1
- data/lib/locomotive/core_ext.rb +8 -2
- data/lib/locomotive/devise.rb +21 -0
- data/lib/locomotive/httparty/webservice.rb +17 -9
- data/lib/locomotive/liquid.rb +1 -0
- data/lib/locomotive/liquid/tags/consume.rb +12 -11
- data/lib/locomotive/liquid/tags/link_to.rb +6 -60
- data/lib/locomotive/liquid/tags/path_helper.rb +82 -0
- data/lib/locomotive/liquid/tags/path_to.rb +21 -0
- data/lib/locomotive/liquid/tags/snippet.rb +1 -1
- data/lib/locomotive/render.rb +2 -1
- data/lib/locomotive/version.rb +1 -1
- data/spec/lib/locomotive/liquid/tags/consume_spec.rb +12 -0
- data/spec/lib/locomotive/liquid/tags/path_to_spec.rb +111 -0
- data/spec/models/locomotive/content_entry_spec.rb +2 -2
- data/spec/models/locomotive/snippet_spec.rb +21 -0
- metadata +13 -6
@@ -3,30 +3,12 @@ module Locomotive
|
|
3
3
|
module Tags
|
4
4
|
class LinkTo < Hybrid
|
5
5
|
|
6
|
-
|
7
|
-
|
6
|
+
include PathHelper
|
8
7
|
include ActionView::Helpers::UrlHelper
|
9
8
|
|
10
|
-
def initialize(tag_name, markup, tokens, context)
|
11
|
-
if markup =~ Syntax
|
12
|
-
@handle = $1
|
13
|
-
@options = {}
|
14
|
-
markup.scan(::Liquid::TagAttributes) do |key, value|
|
15
|
-
@options[key] = value
|
16
|
-
end
|
17
|
-
else
|
18
|
-
raise SyntaxError.new("Syntax Error in 'link_to' - Valid syntax: link_to page_handle, locale es (locale is optional)")
|
19
|
-
end
|
20
|
-
|
21
|
-
super
|
22
|
-
end
|
23
|
-
|
24
9
|
def render(context)
|
25
|
-
|
26
|
-
|
27
|
-
if page = self.retrieve_page_from_handle(site, context)
|
28
|
-
label = self.label_from_page(page)
|
29
|
-
path = self.public_page_url(site, page)
|
10
|
+
render_path(context) do |page, path|
|
11
|
+
label = label_from_page(page)
|
30
12
|
|
31
13
|
if @render_as_block
|
32
14
|
context.scopes.last['target'] = page
|
@@ -34,40 +16,14 @@ module Locomotive
|
|
34
16
|
end
|
35
17
|
|
36
18
|
link_to label, path
|
37
|
-
else
|
38
|
-
'' # no page found
|
39
19
|
end
|
40
20
|
end
|
41
21
|
|
42
|
-
|
43
|
-
|
44
|
-
def retrieve_page_from_handle(site, context)
|
45
|
-
handle = context[@handle] || @handle
|
46
|
-
|
47
|
-
case handle
|
48
|
-
when Locomotive::Page then handle
|
49
|
-
when Locomotive::Liquid::Drops::Page then handle.instance_variable_get(:@_source)
|
50
|
-
when String then fetch_page(site, handle)
|
51
|
-
when Locomotive::ContentEntry then fetch_page(site, handle, true)
|
52
|
-
when Locomotive::Liquid::Drops::ContentEntry then fetch_page(site, handle.instance_variable_get(:@_source), true)
|
53
|
-
else
|
54
|
-
nil
|
55
|
-
end
|
22
|
+
def wrong_syntax!
|
23
|
+
raise SyntaxError.new("Syntax Error in 'link_to' - Valid syntax: link_to page_handle, locale es (locale is optional)")
|
56
24
|
end
|
57
25
|
|
58
|
-
|
59
|
-
::Mongoid::Fields::I18n.with_locale(@options['locale']) do
|
60
|
-
if templatized
|
61
|
-
criteria = site.pages.where(target_klass_name: handle.class.to_s, templatized: true)
|
62
|
-
criteria = criteria.where(handle: @options['with']) if @options['with']
|
63
|
-
criteria.first.tap do |page|
|
64
|
-
page.content_entry = handle if page
|
65
|
-
end
|
66
|
-
else
|
67
|
-
site.pages.where(handle: handle).first
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
26
|
+
protected
|
71
27
|
|
72
28
|
def label_from_page(page)
|
73
29
|
::Mongoid::Fields::I18n.with_locale(@options['locale']) do
|
@@ -79,16 +35,6 @@ module Locomotive
|
|
79
35
|
end
|
80
36
|
end
|
81
37
|
|
82
|
-
def public_page_url(site, page)
|
83
|
-
fullpath = site.localized_page_fullpath(page, @options['locale'])
|
84
|
-
|
85
|
-
if page.templatized?
|
86
|
-
fullpath.gsub!('content_type_template', page.content_entry._slug)
|
87
|
-
end
|
88
|
-
|
89
|
-
File.join('/', fullpath)
|
90
|
-
end
|
91
|
-
|
92
38
|
end
|
93
39
|
|
94
40
|
::Liquid::Template.register_tag('link_to', LinkTo)
|
@@ -0,0 +1,82 @@
|
|
1
|
+
module Locomotive
|
2
|
+
module Liquid
|
3
|
+
module Tags
|
4
|
+
module PathHelper
|
5
|
+
|
6
|
+
Syntax = /(#{::Liquid::Expression}+)(#{::Liquid::TagAttributes}?)/
|
7
|
+
|
8
|
+
def initialize(tag_name, markup, tokens, context)
|
9
|
+
if markup =~ Syntax
|
10
|
+
@handle = $1
|
11
|
+
@options = {}
|
12
|
+
markup.scan(::Liquid::TagAttributes) do |key, value|
|
13
|
+
@options[key] = value
|
14
|
+
end
|
15
|
+
else
|
16
|
+
self.wrong_syntax!
|
17
|
+
end
|
18
|
+
|
19
|
+
super
|
20
|
+
end
|
21
|
+
|
22
|
+
def render_path(context, &block)
|
23
|
+
site = context.registers[:site]
|
24
|
+
|
25
|
+
if page = self.retrieve_page_from_handle(site, context)
|
26
|
+
path = self.public_page_fullpath(site, page)
|
27
|
+
|
28
|
+
if block_given?
|
29
|
+
block.call page, path
|
30
|
+
else
|
31
|
+
path
|
32
|
+
end
|
33
|
+
else
|
34
|
+
'' # no page found
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
protected
|
39
|
+
|
40
|
+
def retrieve_page_from_handle(site, context)
|
41
|
+
handle = context[@handle] || @handle
|
42
|
+
|
43
|
+
case handle
|
44
|
+
when Locomotive::Page then handle
|
45
|
+
when Locomotive::Liquid::Drops::Page then handle.instance_variable_get(:@_source)
|
46
|
+
when String then fetch_page(site, handle)
|
47
|
+
when Locomotive::ContentEntry then fetch_page(site, handle, true)
|
48
|
+
when Locomotive::Liquid::Drops::ContentEntry then fetch_page(site, handle.instance_variable_get(:@_source), true)
|
49
|
+
else
|
50
|
+
nil
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def fetch_page(site, handle, templatized = false)
|
55
|
+
::Mongoid::Fields::I18n.with_locale(@options['locale']) do
|
56
|
+
if templatized
|
57
|
+
criteria = site.pages.where(target_klass_name: handle.class.to_s, templatized: true)
|
58
|
+
criteria = criteria.where(handle: @options['with']) if @options['with']
|
59
|
+
criteria.first.tap do |page|
|
60
|
+
page.content_entry = handle if page
|
61
|
+
end
|
62
|
+
else
|
63
|
+
site.pages.where(handle: handle).first
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def public_page_fullpath(site, page)
|
69
|
+
fullpath = site.localized_page_fullpath(page, @options['locale'])
|
70
|
+
|
71
|
+
if page.templatized?
|
72
|
+
fullpath.gsub!('content_type_template', page.content_entry._slug)
|
73
|
+
end
|
74
|
+
|
75
|
+
File.join('/', fullpath)
|
76
|
+
end
|
77
|
+
|
78
|
+
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Locomotive
|
2
|
+
module Liquid
|
3
|
+
module Tags
|
4
|
+
class PathTo < ::Liquid::Tag
|
5
|
+
|
6
|
+
include PathHelper
|
7
|
+
|
8
|
+
def render(context)
|
9
|
+
render_path(context)
|
10
|
+
end
|
11
|
+
|
12
|
+
def wrong_syntax!
|
13
|
+
raise SyntaxError.new("Syntax Error in 'path_to' - Valid syntax: path_to <page|page_handle|content_entry>(, locale: [fr|de|...], with: <page_handle>")
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
::Liquid::Template.register_tag('path_to', PathTo)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -54,7 +54,7 @@ module Locomotive
|
|
54
54
|
@partial = nil
|
55
55
|
else
|
56
56
|
@snippet_id = snippet.id
|
57
|
-
@partial = ::Liquid::Template.parse(snippet.template, @context
|
57
|
+
@partial = ::Liquid::Template.parse(snippet.template, context.merge(@context))
|
58
58
|
@partial.root.context.clear
|
59
59
|
end
|
60
60
|
end
|
data/lib/locomotive/render.rb
CHANGED
@@ -198,7 +198,8 @@ module Locomotive
|
|
198
198
|
'locales' => current_site.locales,
|
199
199
|
'current_user' => Locomotive::Liquid::Drops::CurrentUser.new(current_locomotive_account),
|
200
200
|
'session' => Locomotive::Liquid::Drops::SessionProxy.new,
|
201
|
-
'wagon' => false
|
201
|
+
'wagon' => false,
|
202
|
+
'editing' => self.editing_page?
|
202
203
|
}
|
203
204
|
end
|
204
205
|
|
data/lib/locomotive/version.rb
CHANGED
@@ -48,6 +48,18 @@ describe Locomotive::Liquid::Tags::Consume do
|
|
48
48
|
template = "{% consume blog from url %}{{ blog.title }}{% endconsume %}"
|
49
49
|
Liquid::Template.parse(template).render('url' => "http://blog.locomotiveapp.org/api/read").should == 'Locomotive rocks !'
|
50
50
|
end
|
51
|
+
|
52
|
+
it 'puts the response into the liquid variable using a url from a variable that changes within an iteration' do
|
53
|
+
base_uri = 'http://blog.locomotiveapp.org'
|
54
|
+
template = "{% consume blog from url %}{{ blog.title }}{% endconsume %}"
|
55
|
+
compiled_template = Liquid::Template.parse(template)
|
56
|
+
|
57
|
+
[['/api/read', 'Locomotive rocks !'], ['/api/read_again', 'Locomotive still rocks !']].each do |path, title|
|
58
|
+
response = mock('response', code: 200, parsed_response: parsed_response('title' => title))
|
59
|
+
Locomotive::Httparty::Webservice.stubs(:get).with(path, {:base_uri => base_uri}).returns(response)
|
60
|
+
compiled_template.render('url' => base_uri + path).should == title
|
61
|
+
end
|
62
|
+
end
|
51
63
|
end
|
52
64
|
|
53
65
|
context 'timeout' do
|
@@ -0,0 +1,111 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Locomotive::Liquid::Tags::PathTo do
|
4
|
+
|
5
|
+
before(:each) { I18n.locale = :en }
|
6
|
+
|
7
|
+
let(:site) { FactoryGirl.create("test site") }
|
8
|
+
let(:assigns) { {} }
|
9
|
+
|
10
|
+
subject { render(template, assigns) }
|
11
|
+
|
12
|
+
context 'no page responding to the handle' do
|
13
|
+
|
14
|
+
let(:template) { "{% path_to unknown-page %}" }
|
15
|
+
|
16
|
+
it { should be_blank }
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
context 'no page responding to the handle' do
|
21
|
+
|
22
|
+
let(:assigns) { { 'project' => Locomotive::ContentEntry.new(_slug: 'hello-world', _label_field_name: :_slug ) } }
|
23
|
+
let(:template) { "{% path_to project %}" }
|
24
|
+
|
25
|
+
it { should be_blank }
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
describe 'page responding to the handle' do
|
30
|
+
|
31
|
+
let(:page) { create_page(site, 'Hello world', 'my-page') }
|
32
|
+
let(:template) { "{% path_to my-page %}" }
|
33
|
+
before(:each) { page }
|
34
|
+
|
35
|
+
it { should == %{/hello-world} }
|
36
|
+
|
37
|
+
context 'passing a page directly' do
|
38
|
+
|
39
|
+
let(:assigns) { { 'page' => page } }
|
40
|
+
let(:template) { "{% path_to page %}" }
|
41
|
+
|
42
|
+
it { should == %{/hello-world} }
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
describe 'templatized page' do
|
49
|
+
|
50
|
+
let(:parent_page) { create_page(site, 'List of projects') }
|
51
|
+
let(:page) { create_templatized_page(site, 'Template', 'project-template', parent_page, content_type) }
|
52
|
+
let(:content_type) { create_content_type(site, 'Projects') }
|
53
|
+
let(:content_entry) { create_content_entry(content_type, name: 'My fancy project') }
|
54
|
+
let(:assigns) { { 'project' => content_entry } }
|
55
|
+
before(:each) { page }
|
56
|
+
|
57
|
+
context 'without passing the handle' do
|
58
|
+
|
59
|
+
let(:template) { "{% path_to project %}" }
|
60
|
+
|
61
|
+
it { should == %{/list-of-projects/my-fancy-project} }
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
context 'forcing the page' do
|
66
|
+
|
67
|
+
let(:another_parent_page) { create_page(site, 'Another list of projects') }
|
68
|
+
let(:another_page) { create_templatized_page(site, 'Template', 'another-project-template', another_parent_page, content_type) }
|
69
|
+
let(:template) { "{% path_to project, with: another-project-template %}" }
|
70
|
+
before(:each) { another_page }
|
71
|
+
|
72
|
+
it { should == %{/another-list-of-projects/my-fancy-project} }
|
73
|
+
|
74
|
+
end
|
75
|
+
|
76
|
+
end
|
77
|
+
|
78
|
+
def render(template, assigns = {})
|
79
|
+
liquid_context = ::Liquid::Context.new({},
|
80
|
+
{ 'contents' => Locomotive::Liquid::Drops::ContentTypes.new }.merge(assigns),
|
81
|
+
{ site: site })
|
82
|
+
output = Liquid::Template.parse(template).render(liquid_context)
|
83
|
+
output.gsub(/\n\s{0,}/, '')
|
84
|
+
end
|
85
|
+
|
86
|
+
def create_page(site, title, handle = nil, parent = nil)
|
87
|
+
parent ||= site.pages.root.first
|
88
|
+
site.pages.create!(parent: parent, title: title, slug: title.permalink, handle: handle)
|
89
|
+
end
|
90
|
+
|
91
|
+
def create_templatized_page(site, title, handle, parent, content_type)
|
92
|
+
site.pages.create!(
|
93
|
+
parent: parent,
|
94
|
+
title: title,
|
95
|
+
handle: handle,
|
96
|
+
templatized: true,
|
97
|
+
target_klass_name: content_type.klass_with_custom_fields(:entries).to_s)
|
98
|
+
end
|
99
|
+
|
100
|
+
def create_content_type(site, name)
|
101
|
+
FactoryGirl.build(:content_type, site: site, name: name).tap do |content_type|
|
102
|
+
content_type.entries_custom_fields.build(name: 'name', type: 'string', label: 'name')
|
103
|
+
content_type.save!
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
def create_content_entry(content_type, attributes)
|
108
|
+
content_type.entries.create!(attributes)
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
@@ -176,8 +176,8 @@ describe Locomotive::ContentEntry do
|
|
176
176
|
@content_type.save
|
177
177
|
|
178
178
|
%w(first second third).each_with_index do |item, index|
|
179
|
-
content = build_content_entry(title: item.to_s, _position: index)
|
180
|
-
content.save
|
179
|
+
content = build_content_entry(title: item.to_s, _position: index, visible: true)
|
180
|
+
content.save!
|
181
181
|
instance_variable_set "@#{item}", content
|
182
182
|
end
|
183
183
|
end
|
@@ -49,6 +49,27 @@ describe Locomotive::Snippet do
|
|
49
49
|
|
50
50
|
end
|
51
51
|
|
52
|
+
context 'for snippets inside a snippet' do
|
53
|
+
before :each do
|
54
|
+
@nested_snippet = FactoryGirl.create(:snippet, site: @site, slug: 'my_nested_test_snippet', template: "{% include 'my_test_snippet' %}")
|
55
|
+
@page = FactoryGirl.create(:page, site: @site, slug: 'my_page_here', raw_template: "{% include 'my_nested_test_snippet' %}")
|
56
|
+
end
|
57
|
+
|
58
|
+
it 'renders the nested snippet' do
|
59
|
+
Locomotive::Page.find(@page.id).render({}).should == 'a testing template'
|
60
|
+
end
|
61
|
+
|
62
|
+
it 'updates parent snippets with the new snippet template' do
|
63
|
+
@snippet.update_attributes(template: 'a new template')
|
64
|
+
Locomotive::Page.find(@page.id).render({}).should == 'a new template'
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'when the parent snippet is updated child snippets are rendered correctly' do
|
68
|
+
@nested_snippet.update_attributes(template: "hello {% include 'my_test_snippet' %}")
|
69
|
+
Locomotive::Page.find(@page.id).render({}).should == 'hello a testing template'
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
52
73
|
context '#i18n' do
|
53
74
|
|
54
75
|
before :each do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: locomotive_cms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Didier Lafforgue
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-12-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -42,16 +42,16 @@ dependencies:
|
|
42
42
|
name: devise
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - '='
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 2.2.
|
47
|
+
version: 2.2.7
|
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: 2.2.
|
54
|
+
version: 2.2.7
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: devise-encryptable
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -610,6 +610,7 @@ files:
|
|
610
610
|
- app/assets/javascripts/locomotive/views/pages/list_view.js.coffee
|
611
611
|
- app/assets/javascripts/locomotive/views/pages/new_view.js.coffee
|
612
612
|
- app/assets/javascripts/locomotive/views/shared/asset_picker_view.js.coffee
|
613
|
+
- app/assets/javascripts/locomotive/views/shared/fields/_relationship_view.js.coffee
|
613
614
|
- app/assets/javascripts/locomotive/views/shared/fields/belongs_to_view.js.coffee
|
614
615
|
- app/assets/javascripts/locomotive/views/shared/fields/file_view.js.coffee
|
615
616
|
- app/assets/javascripts/locomotive/views/shared/fields/has_many_view.js.coffee
|
@@ -788,6 +789,7 @@ files:
|
|
788
789
|
- app/models/locomotive/extensions/asset/types.rb
|
789
790
|
- app/models/locomotive/extensions/asset/vignette.rb
|
790
791
|
- app/models/locomotive/extensions/content_entry/csv.rb
|
792
|
+
- app/models/locomotive/extensions/content_entry/localized.rb
|
791
793
|
- app/models/locomotive/extensions/content_type/default_values.rb
|
792
794
|
- app/models/locomotive/extensions/content_type/item_template.rb
|
793
795
|
- app/models/locomotive/extensions/content_type/sync.rb
|
@@ -799,6 +801,7 @@ files:
|
|
799
801
|
- app/models/locomotive/extensions/page/templatized.rb
|
800
802
|
- app/models/locomotive/extensions/page/tree.rb
|
801
803
|
- app/models/locomotive/extensions/shared/seo.rb
|
804
|
+
- app/models/locomotive/extensions/shared/slug.rb
|
802
805
|
- app/models/locomotive/extensions/site/first_installation.rb
|
803
806
|
- app/models/locomotive/extensions/site/locales.rb
|
804
807
|
- app/models/locomotive/extensions/site/subdomain_domains.rb
|
@@ -1084,6 +1087,8 @@ files:
|
|
1084
1087
|
- lib/locomotive/liquid/tags/locale_switcher.rb
|
1085
1088
|
- lib/locomotive/liquid/tags/nav.rb
|
1086
1089
|
- lib/locomotive/liquid/tags/paginate.rb
|
1090
|
+
- lib/locomotive/liquid/tags/path_helper.rb
|
1091
|
+
- lib/locomotive/liquid/tags/path_to.rb
|
1087
1092
|
- lib/locomotive/liquid/tags/seo.rb
|
1088
1093
|
- lib/locomotive/liquid/tags/session_assign.rb
|
1089
1094
|
- lib/locomotive/liquid/tags/snippet.rb
|
@@ -1299,6 +1304,7 @@ files:
|
|
1299
1304
|
- spec/lib/locomotive/liquid/tags/locale_switcher_spec.rb
|
1300
1305
|
- spec/lib/locomotive/liquid/tags/nav_spec.rb
|
1301
1306
|
- spec/lib/locomotive/liquid/tags/paginate_spec.rb
|
1307
|
+
- spec/lib/locomotive/liquid/tags/path_to_spec.rb
|
1302
1308
|
- spec/lib/locomotive/liquid/tags/seo_spec.rb
|
1303
1309
|
- spec/lib/locomotive/liquid/tags/with_scope_spec.rb
|
1304
1310
|
- spec/lib/locomotive/presentable_spec.rb
|
@@ -1514,6 +1520,7 @@ test_files:
|
|
1514
1520
|
- spec/lib/locomotive/liquid/tags/locale_switcher_spec.rb
|
1515
1521
|
- spec/lib/locomotive/liquid/tags/nav_spec.rb
|
1516
1522
|
- spec/lib/locomotive/liquid/tags/paginate_spec.rb
|
1523
|
+
- spec/lib/locomotive/liquid/tags/path_to_spec.rb
|
1517
1524
|
- spec/lib/locomotive/liquid/tags/seo_spec.rb
|
1518
1525
|
- spec/lib/locomotive/liquid/tags/with_scope_spec.rb
|
1519
1526
|
- spec/lib/locomotive/presentable_spec.rb
|