refinerycms-pages 2.0.2 → 2.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/app/controllers/refinery/admin/page_parts_controller.rb +1 -1
- data/app/controllers/refinery/admin/pages_dialogs_controller.rb +1 -1
- data/app/helpers/refinery/admin/page_parts_helper.rb +6 -0
- data/app/helpers/refinery/admin/pages_dialogs_helper.rb +6 -0
- data/app/helpers/refinery/admin/pages_helper.rb +6 -0
- data/app/helpers/refinery/pages/content_pages_helper.rb +1 -1
- data/app/helpers/refinery/pages_helper.rb +1 -1
- data/app/models/refinery/page.rb +7 -0
- data/app/presenters/refinery/page_presenter.rb +6 -4
- data/app/views/refinery/admin/pages/_form_advanced_options.html.erb +3 -3
- data/lib/refinery/pages.rb +4 -2
- data/lib/refinery/pages/content_page_presenter.rb +4 -0
- data/lib/refinery/pages/content_presenter.rb +20 -1
- data/lib/refinery/pages/engine.rb +10 -13
- data/refinerycms-pages.gemspec +1 -1
- data/spec/lib/pages/content_page_presenter_spec.rb +4 -4
- data/spec/lib/pages/content_presenter_spec.rb +16 -2
- data/spec/requests/refinery/admin/pages_spec.rb +12 -0
- metadata +78 -85
data/app/models/refinery/page.rb
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
# Encoding: utf-8
|
2
|
+
require 'acts_as_indexed'
|
3
|
+
require 'friendly_id'
|
2
4
|
|
3
5
|
module Refinery
|
4
6
|
class Page < Refinery::Core::BaseModel
|
@@ -9,6 +11,11 @@ module Refinery
|
|
9
11
|
|
10
12
|
translates :title, :menu_title, :custom_slug, :slug, :include => :seo_meta
|
11
13
|
|
14
|
+
class Translation
|
15
|
+
is_seo_meta
|
16
|
+
attr_accessible :browser_title, :meta_description, :meta_keywords, :locale
|
17
|
+
end
|
18
|
+
|
12
19
|
attr_accessible :title
|
13
20
|
|
14
21
|
# Delegate SEO Attributes to globalize3 translation
|
@@ -24,7 +24,7 @@
|
|
24
24
|
<% if Refinery::Pages.use_layout_templates %>
|
25
25
|
<div class='field'>
|
26
26
|
<span class='label_with_help'>
|
27
|
-
<%=
|
27
|
+
<%= f.label :layout_template, t('.layout_template') %>
|
28
28
|
<%= refinery_help_tag t('.layout_template_help') %>
|
29
29
|
</span>
|
30
30
|
<%= f.select(:layout_template, @valid_layout_templates) %>
|
@@ -33,7 +33,7 @@
|
|
33
33
|
<% if Refinery::Pages.use_view_templates %>
|
34
34
|
<div class='field'>
|
35
35
|
<span class='label_with_help'>
|
36
|
-
<%=
|
36
|
+
<%= f.label :view_template, t('.view_template') %>
|
37
37
|
<%= refinery_help_tag t('.view_template_help') %>
|
38
38
|
</span>
|
39
39
|
<%= f.select(:view_template, @valid_view_templates.map{|t| [t.titleize, t]}) %>
|
@@ -42,7 +42,7 @@
|
|
42
42
|
|
43
43
|
<div class='field'>
|
44
44
|
<span class='label_with_help'>
|
45
|
-
<%=
|
45
|
+
<%= f.label :menu_title, t('.menu_title') %>
|
46
46
|
<%= refinery_help_tag t('.menu_title_help') %>
|
47
47
|
</span>
|
48
48
|
<%= f.text_field :menu_title, :style=> 'width:400px;' %>
|
data/lib/refinery/pages.rb
CHANGED
@@ -48,8 +48,10 @@ module Refinery
|
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
|
-
|
52
|
-
require '
|
51
|
+
ActiveSupport.on_load(:active_record) do
|
52
|
+
require 'awesome_nested_set'
|
53
|
+
require 'globalize3'
|
54
|
+
end
|
53
55
|
require 'friendly_id'
|
54
56
|
require 'seo_meta'
|
55
57
|
require 'babosa'
|
@@ -19,6 +19,10 @@ module Refinery
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def add_default_post_page_sections
|
22
|
+
add_section_if_missing(:id => :body)
|
23
|
+
add_section_if_missing(:id => :side_body)
|
24
|
+
|
25
|
+
# Deprecated in 2.1
|
22
26
|
add_section_if_missing(:id => :body_content_left)
|
23
27
|
add_section_if_missing(:id => :body_content_right)
|
24
28
|
end
|
@@ -16,9 +16,14 @@ module Refinery
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def hide_sections(*ids_to_hide)
|
19
|
+
ids_to_hide.flatten!
|
19
20
|
@sections.select {|section| ids_to_hide.include?(section.id)}.each(&:hide) if ids_to_hide.any?
|
20
21
|
end
|
21
22
|
|
23
|
+
def hidden_sections
|
24
|
+
@sections.select {|section| section.hidden? }
|
25
|
+
end
|
26
|
+
|
22
27
|
def fetch_template_overrides
|
23
28
|
@sections.each do |section|
|
24
29
|
section.override_html = yield section.id if section.id.present?
|
@@ -42,7 +47,21 @@ module Refinery
|
|
42
47
|
private
|
43
48
|
|
44
49
|
def sections_html(can_use_fallback)
|
45
|
-
@sections.map
|
50
|
+
@sections.map do |section|
|
51
|
+
# Remove in 2.1
|
52
|
+
check_deprecated_sections(section)
|
53
|
+
section.wrapped_html(can_use_fallback)
|
54
|
+
end.compact.join("\n").html_safe
|
55
|
+
end
|
56
|
+
|
57
|
+
def check_deprecated_sections(section)
|
58
|
+
if section.has_content?
|
59
|
+
if section.id == :body_content_left
|
60
|
+
Refinery.deprecate "content_for :body_content_left", :when => '2.1.0', :replacement => "content_for :body"
|
61
|
+
elsif section.id == :body_content_right
|
62
|
+
Refinery.deprecate "content_for :body_content_right", :when => '2.1.0', :replacement => "content_for :side_body"
|
63
|
+
end
|
64
|
+
end
|
46
65
|
end
|
47
66
|
|
48
67
|
def add_section_if_missing(options)
|
@@ -8,11 +8,6 @@ module Refinery
|
|
8
8
|
|
9
9
|
config.autoload_paths += %W( #{config.root}/lib )
|
10
10
|
|
11
|
-
config.to_prepare do |app|
|
12
|
-
Refinery::Page.translation_class.send(:is_seo_meta)
|
13
|
-
Refinery::Page.translation_class.send(:attr_accessible, :browser_title, :meta_description, :meta_keywords, :locale)
|
14
|
-
end
|
15
|
-
|
16
11
|
before_inclusion do
|
17
12
|
::ApplicationController.send :helper, Refinery::Pages::ContentPagesHelper
|
18
13
|
Refinery::AdminController.send :helper, Refinery::Pages::ContentPagesHelper
|
@@ -38,8 +33,8 @@ module Refinery
|
|
38
33
|
append_marketable_routes if Refinery::Pages.marketable_urls
|
39
34
|
end
|
40
35
|
|
41
|
-
initializer "add marketable route parts to reserved words", :after => :set_routes_reloader_hook do
|
42
|
-
add_route_parts_as_reserved_words
|
36
|
+
initializer "add marketable route parts to reserved words", :after => :set_routes_reloader_hook do
|
37
|
+
add_route_parts_as_reserved_words if Refinery::Pages.marketable_urls
|
43
38
|
end
|
44
39
|
|
45
40
|
config.after_initialize do
|
@@ -56,12 +51,14 @@ module Refinery
|
|
56
51
|
end
|
57
52
|
|
58
53
|
# Add any parts of routes as reserved words.
|
59
|
-
def add_route_parts_as_reserved_words
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
54
|
+
def add_route_parts_as_reserved_words
|
55
|
+
ActiveSupport.on_load(:active_record) do
|
56
|
+
route_paths = Rails.application.routes.named_routes.routes.map { |name, route| route.path.spec }
|
57
|
+
route_paths.reject! {|path| path.to_s =~ %r{^/(rails|refinery)}}
|
58
|
+
Refinery::Page.friendly_id_config.reserved_words |= route_paths.map { |path|
|
59
|
+
path.to_s.gsub(%r{^/}, '').to_s.split('(').first.to_s.split(':').first.to_s.split('/')
|
60
|
+
}.flatten.reject { |w| w =~ %r{_|\.} }.uniq
|
61
|
+
end
|
65
62
|
end
|
66
63
|
end
|
67
64
|
end
|
data/refinerycms-pages.gemspec
CHANGED
@@ -22,7 +22,7 @@ Gem::Specification.new do |s|
|
|
22
22
|
s.test_files = `git ls-files -- spec/*`.split("\n")
|
23
23
|
|
24
24
|
s.add_dependency 'awesome_nested_set', '~> 2.1.0'
|
25
|
-
s.add_dependency 'seo_meta', '~> 1.
|
25
|
+
s.add_dependency 'seo_meta', '~> 1.3.0'
|
26
26
|
s.add_dependency 'refinerycms-core', version
|
27
27
|
s.add_dependency 'babosa', '!= 0.3.6'
|
28
28
|
end
|
@@ -24,18 +24,18 @@ module Refinery
|
|
24
24
|
|
25
25
|
it "adds body content left and right after page parts" do
|
26
26
|
content = ContentPagePresenter.new(page_with_one_part, title)
|
27
|
-
content.get_section(2).id.should == :
|
28
|
-
content.get_section(3).id.should == :
|
27
|
+
content.get_section(2).id.should == :body
|
28
|
+
content.get_section(3).id.should == :side_body
|
29
29
|
end
|
30
30
|
|
31
31
|
it "doesnt add page parts if page is nil" do
|
32
32
|
content = ContentPagePresenter.new(nil, title)
|
33
|
-
content.get_section(1).id.should == :
|
33
|
+
content.get_section(1).id.should == :body
|
34
34
|
end
|
35
35
|
|
36
36
|
it "doesnt add title if it is blank" do
|
37
37
|
content = ContentPagePresenter.new(nil, '')
|
38
|
-
content.get_section(0).id.should == :
|
38
|
+
content.get_section(0).id.should == :body
|
39
39
|
end
|
40
40
|
end
|
41
41
|
end
|
@@ -34,9 +34,23 @@ module Refinery
|
|
34
34
|
end
|
35
35
|
|
36
36
|
it "hides a section specified by id" do
|
37
|
-
section2.should_receive
|
38
|
-
@content.hide_sections
|
37
|
+
section2.should_receive :hide
|
38
|
+
@content.hide_sections 'bar'
|
39
39
|
end
|
40
|
+
|
41
|
+
# Regression for https://github.com/resolve/refinerycms/issues/1516
|
42
|
+
it "accepts an array" do
|
43
|
+
section2.should_receive :hide
|
44
|
+
@content.hide_sections ['bar']
|
45
|
+
end
|
46
|
+
|
47
|
+
it "hides nothing if nil" do
|
48
|
+
section1.stub(:hidden?).and_return false
|
49
|
+
section2.stub(:hidden?).and_return false
|
50
|
+
@content.hide_sections nil
|
51
|
+
@content.hidden_sections.count.should == 0
|
52
|
+
end
|
53
|
+
|
40
54
|
end
|
41
55
|
|
42
56
|
describe "when fetching template overrides" do
|
@@ -136,6 +136,18 @@ module Refinery
|
|
136
136
|
|
137
137
|
Refinery::Page.count.should == 1
|
138
138
|
end
|
139
|
+
|
140
|
+
it "includes menu title field" do
|
141
|
+
visit refinery.new_admin_page_path
|
142
|
+
|
143
|
+
fill_in "Title", :with => "My first page"
|
144
|
+
fill_in "Menu title", :with => "The first page"
|
145
|
+
|
146
|
+
click_button "Save"
|
147
|
+
|
148
|
+
page.should have_content("'My first page' was successfully added.")
|
149
|
+
page.body.should =~ %r{/pages/the-first-page}
|
150
|
+
end
|
139
151
|
end
|
140
152
|
|
141
153
|
describe "edit/update" do
|
metadata
CHANGED
@@ -1,103 +1,98 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: refinerycms-pages
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 2.0.3
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 2
|
8
|
-
- 0
|
9
|
-
- 2
|
10
|
-
version: 2.0.2
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Philip Arndt
|
14
|
-
-
|
9
|
+
- Uģis Ozols
|
15
10
|
- David Jones
|
16
11
|
- Steven Heidel
|
17
12
|
autorequire:
|
18
13
|
bindir: bin
|
19
14
|
cert_chain: []
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
15
|
+
date: 2011-10-12 00:00:00.000000000 Z
|
16
|
+
dependencies:
|
17
|
+
- !ruby/object:Gem::Dependency
|
18
|
+
name: awesome_nested_set
|
19
|
+
requirement: !ruby/object:Gem::Requirement
|
26
20
|
none: false
|
27
|
-
requirements:
|
21
|
+
requirements:
|
28
22
|
- - ~>
|
29
|
-
- !ruby/object:Gem::Version
|
30
|
-
hash: 11
|
31
|
-
segments:
|
32
|
-
- 2
|
33
|
-
- 1
|
34
|
-
- 0
|
23
|
+
- !ruby/object:Gem::Version
|
35
24
|
version: 2.1.0
|
36
|
-
version_requirements: *id001
|
37
|
-
name: awesome_nested_set
|
38
25
|
type: :runtime
|
39
|
-
- !ruby/object:Gem::Dependency
|
40
26
|
prerelease: false
|
41
|
-
|
27
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
28
|
none: false
|
43
|
-
requirements:
|
29
|
+
requirements:
|
44
30
|
- - ~>
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
|
47
|
-
|
48
|
-
- 1
|
49
|
-
- 2
|
50
|
-
- 0
|
51
|
-
version: 1.2.0
|
52
|
-
version_requirements: *id002
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 2.1.0
|
33
|
+
- !ruby/object:Gem::Dependency
|
53
34
|
name: seo_meta
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
36
|
+
none: false
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 1.3.0
|
54
41
|
type: :runtime
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
42
|
prerelease: false
|
57
|
-
|
43
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
44
|
none: false
|
59
|
-
requirements:
|
60
|
-
- -
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
|
63
|
-
|
64
|
-
- 2
|
65
|
-
- 0
|
66
|
-
- 2
|
67
|
-
version: 2.0.2
|
68
|
-
version_requirements: *id003
|
45
|
+
requirements:
|
46
|
+
- - ~>
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: 1.3.0
|
49
|
+
- !ruby/object:Gem::Dependency
|
69
50
|
name: refinerycms-core
|
51
|
+
requirement: !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - '='
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: 2.0.3
|
70
57
|
type: :runtime
|
71
|
-
- !ruby/object:Gem::Dependency
|
72
58
|
prerelease: false
|
73
|
-
|
59
|
+
version_requirements: !ruby/object:Gem::Requirement
|
74
60
|
none: false
|
75
|
-
requirements:
|
76
|
-
- -
|
77
|
-
- !ruby/object:Gem::Version
|
78
|
-
|
79
|
-
|
80
|
-
- 0
|
81
|
-
- 3
|
82
|
-
- 6
|
83
|
-
version: 0.3.6
|
84
|
-
version_requirements: *id004
|
61
|
+
requirements:
|
62
|
+
- - '='
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: 2.0.3
|
65
|
+
- !ruby/object:Gem::Dependency
|
85
66
|
name: babosa
|
67
|
+
requirement: !ruby/object:Gem::Requirement
|
68
|
+
none: false
|
69
|
+
requirements:
|
70
|
+
- - ! '!='
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: 0.3.6
|
86
73
|
type: :runtime
|
87
|
-
|
74
|
+
prerelease: false
|
75
|
+
version_requirements: !ruby/object:Gem::Requirement
|
76
|
+
none: false
|
77
|
+
requirements:
|
78
|
+
- - ! '!='
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: 0.3.6
|
81
|
+
description: The default content extension of Refinery CMS. This extension handles
|
82
|
+
the administration and display of user-editable pages.
|
88
83
|
email: info@refinerycms.com
|
89
84
|
executables: []
|
90
|
-
|
91
85
|
extensions: []
|
92
|
-
|
93
86
|
extra_rdoc_files: []
|
94
|
-
|
95
|
-
files:
|
87
|
+
files:
|
96
88
|
- app/controllers/refinery/admin/page_parts_controller.rb
|
97
89
|
- app/controllers/refinery/admin/pages_controller.rb
|
98
90
|
- app/controllers/refinery/admin/pages_dialogs_controller.rb
|
99
91
|
- app/controllers/refinery/page_sweeper.rb
|
100
92
|
- app/controllers/refinery/pages_controller.rb
|
93
|
+
- app/helpers/refinery/admin/page_parts_helper.rb
|
94
|
+
- app/helpers/refinery/admin/pages_dialogs_helper.rb
|
95
|
+
- app/helpers/refinery/admin/pages_helper.rb
|
101
96
|
- app/helpers/refinery/pages/content_pages_helper.rb
|
102
97
|
- app/helpers/refinery/pages_helper.rb
|
103
98
|
- app/models/refinery/page.rb
|
@@ -185,39 +180,37 @@ files:
|
|
185
180
|
- spec/requests/refinery/admin/pages_spec.rb
|
186
181
|
- spec/requests/refinery/pages_spec.rb
|
187
182
|
homepage: http://refinerycms.com
|
188
|
-
licenses:
|
183
|
+
licenses:
|
189
184
|
- MIT
|
190
185
|
post_install_message:
|
191
186
|
rdoc_options: []
|
192
|
-
|
193
|
-
require_paths:
|
187
|
+
require_paths:
|
194
188
|
- lib
|
195
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
189
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
196
190
|
none: false
|
197
|
-
requirements:
|
198
|
-
- -
|
199
|
-
- !ruby/object:Gem::Version
|
200
|
-
|
201
|
-
segments:
|
191
|
+
requirements:
|
192
|
+
- - ! '>='
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '0'
|
195
|
+
segments:
|
202
196
|
- 0
|
203
|
-
|
204
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
197
|
+
hash: 515173493532561148
|
198
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
205
199
|
none: false
|
206
|
-
requirements:
|
207
|
-
- -
|
208
|
-
- !ruby/object:Gem::Version
|
209
|
-
|
210
|
-
segments:
|
200
|
+
requirements:
|
201
|
+
- - ! '>='
|
202
|
+
- !ruby/object:Gem::Version
|
203
|
+
version: '0'
|
204
|
+
segments:
|
211
205
|
- 0
|
212
|
-
|
206
|
+
hash: 515173493532561148
|
213
207
|
requirements: []
|
214
|
-
|
215
208
|
rubyforge_project: refinerycms
|
216
|
-
rubygems_version: 1.8.
|
209
|
+
rubygems_version: 1.8.19
|
217
210
|
signing_key:
|
218
211
|
specification_version: 3
|
219
212
|
summary: Pages extension for Refinery CMS
|
220
|
-
test_files:
|
213
|
+
test_files:
|
221
214
|
- spec/factories/pages.rb
|
222
215
|
- spec/helpers/refinery/pages/content_pages_helper_spec.rb
|
223
216
|
- spec/lib/generators/refinery/pages/pages_generator_spec.rb
|