refinerycms-pages 2.0.2 → 2.0.3
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/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
|