refinerycms-pages 2.0.1 → 2.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/generators/refinery/pages/templates/config/initializers/refinery/pages.rb.erb +8 -0
- data/lib/refinery/pages/content_page_presenter.rb +16 -16
- data/lib/refinery/pages/content_presenter.rb +20 -19
- data/lib/refinery/pages/instance_methods.rb +3 -2
- data/lib/refinery/pages/page_part_section_presenter.rb +4 -4
- data/lib/refinery/pages/section_presenter.rb +15 -11
- data/lib/refinery/pages/title_section_presenter.rb +4 -4
- data/refinerycms-pages.gemspec +0 -1
- data/spec/requests/refinery/admin/pages_spec.rb +20 -0
- metadata +6 -6
@@ -7,6 +7,12 @@ Refinery::Pages.configure do |config|
|
|
7
7
|
# Configure global page default parts
|
8
8
|
# config.default_parts = <%= Refinery::Pages.default_parts.inspect %>
|
9
9
|
|
10
|
+
# Configure whether to allow adding new page parts
|
11
|
+
# config.new_page_parts = <%= Refinery::Pages.new_page_parts.inspect %>
|
12
|
+
|
13
|
+
# Configure whether to enable marketable_urls
|
14
|
+
# config.marketable_urls = <%= Refinery::Pages.marketable_urls.inspect %>
|
15
|
+
|
10
16
|
# Configure how many pages per page should be displayed when a dialog is presented that contains a links to pages
|
11
17
|
# config.pages_per_dialog = <%= Refinery::Pages.pages_per_dialog.inspect %>
|
12
18
|
|
@@ -40,5 +46,7 @@ Refinery::Pages.configure do |config|
|
|
40
46
|
|
41
47
|
# config.use_view_templates = <%= Refinery::Pages.use_view_templates.inspect %>
|
42
48
|
|
49
|
+
# config.page_title = <%= Refinery::Pages.page_title.inspect %>
|
50
|
+
|
43
51
|
# config.absolute_page_links = <%= Refinery::Pages.absolute_page_links.inspect %>
|
44
52
|
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
module Refinery
|
2
2
|
module Pages
|
3
|
-
# A type of ContentPresenter which specifically knows how to render the html
|
4
|
-
#
|
5
|
-
# page's parts. The page is not retained
|
6
|
-
# this ContentPagePresenter.
|
3
|
+
# A type of ContentPresenter which specifically knows how to render the html
|
4
|
+
# for a Refinery::Page object. Pass the page object into the constructor,
|
5
|
+
# and it will build sections from the page's parts. The page is not retained
|
6
|
+
# internally, so if the page changes, you need to rebuild this ContentPagePresenter.
|
7
7
|
class ContentPagePresenter < ContentPresenter
|
8
8
|
def initialize(page, page_title)
|
9
9
|
super()
|
@@ -12,22 +12,22 @@ module Refinery
|
|
12
12
|
add_default_post_page_sections
|
13
13
|
end
|
14
14
|
|
15
|
-
|
15
|
+
private
|
16
16
|
|
17
|
-
|
18
|
-
|
19
|
-
|
17
|
+
def add_default_title_section(title)
|
18
|
+
add_section TitleSectionPresenter.new(:id => :body_content_title, :fallback_html => title)
|
19
|
+
end
|
20
20
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
21
|
+
def add_default_post_page_sections
|
22
|
+
add_section_if_missing(:id => :body_content_left)
|
23
|
+
add_section_if_missing(:id => :body_content_right)
|
24
|
+
end
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
end
|
26
|
+
def add_page_parts(parts)
|
27
|
+
parts.each do |part|
|
28
|
+
add_section PagePartSectionPresenter.new(part)
|
30
29
|
end
|
30
|
+
end
|
31
31
|
end
|
32
32
|
end
|
33
33
|
end
|
@@ -1,8 +1,9 @@
|
|
1
1
|
module Refinery
|
2
2
|
module Pages
|
3
|
-
# Knows how to render a set of sections as html. This can be used in any
|
4
|
-
# a group of sections. Pass the sections
|
5
|
-
# then render by
|
3
|
+
# Knows how to render a set of sections as html. This can be used in any
|
4
|
+
# Refinery view that is built from a group of sections. Pass the sections
|
5
|
+
# into the constructor or call add_section on the instance, then render by
|
6
|
+
# calling 'to_html'.
|
6
7
|
class ContentPresenter
|
7
8
|
include ActionView::Helpers::TagHelper
|
8
9
|
|
@@ -14,15 +15,13 @@ module Refinery
|
|
14
15
|
@sections.reject {|section| section.has_content?(can_use_fallback)}.map(&:not_present_css_class)
|
15
16
|
end
|
16
17
|
|
17
|
-
def hide_sections(ids_to_hide)
|
18
|
-
@sections.select {|section| ids_to_hide.include?(section.id)}.each(&:hide)
|
18
|
+
def hide_sections(*ids_to_hide)
|
19
|
+
@sections.select {|section| ids_to_hide.include?(section.id)}.each(&:hide) if ids_to_hide.any?
|
19
20
|
end
|
20
21
|
|
21
22
|
def fetch_template_overrides
|
22
23
|
@sections.each do |section|
|
23
|
-
if section.id.present?
|
24
|
-
section.override_html = yield section.id
|
25
|
-
end
|
24
|
+
section.override_html = yield section.id if section.id.present?
|
26
25
|
end
|
27
26
|
end
|
28
27
|
|
@@ -35,22 +34,24 @@ module Refinery
|
|
35
34
|
end
|
36
35
|
|
37
36
|
def to_html(can_use_fallback = true)
|
38
|
-
content_tag :section, sections_html(can_use_fallback),
|
37
|
+
content_tag :section, sections_html(can_use_fallback),
|
38
|
+
:id => 'body_content',
|
39
|
+
:class => blank_section_css_classes(can_use_fallback).join(' ')
|
39
40
|
end
|
40
41
|
|
41
|
-
|
42
|
+
private
|
42
43
|
|
43
|
-
|
44
|
-
|
45
|
-
|
44
|
+
def sections_html(can_use_fallback)
|
45
|
+
@sections.map {|section| section.wrapped_html(can_use_fallback)}.compact.join("\n").html_safe
|
46
|
+
end
|
46
47
|
|
47
|
-
|
48
|
-
|
49
|
-
|
48
|
+
def add_section_if_missing(options)
|
49
|
+
add_section SectionPresenter.new(options) unless has_section?(options[:id])
|
50
|
+
end
|
50
51
|
|
51
|
-
|
52
|
-
|
53
|
-
|
52
|
+
def has_section?(id)
|
53
|
+
@sections.detect {|section| section.id == id}
|
54
|
+
end
|
54
55
|
end
|
55
56
|
end
|
56
57
|
end
|
@@ -4,6 +4,7 @@ module Refinery
|
|
4
4
|
|
5
5
|
def self.included(base)
|
6
6
|
base.send :helper_method, :refinery_menu_pages
|
7
|
+
base.send :alias_method_chain, :render, :presenters
|
7
8
|
end
|
8
9
|
|
9
10
|
def error_404(exception=nil)
|
@@ -22,9 +23,9 @@ module Refinery
|
|
22
23
|
end
|
23
24
|
|
24
25
|
protected
|
25
|
-
def
|
26
|
+
def render_with_presenters(*args)
|
26
27
|
present(@page) unless admin? or @meta.present?
|
27
|
-
|
28
|
+
render_without_presenters(*args)
|
28
29
|
end
|
29
30
|
|
30
31
|
private
|
@@ -9,11 +9,11 @@ module Refinery
|
|
9
9
|
self.id = convert_title_to_id(page_part.title) if page_part.title
|
10
10
|
end
|
11
11
|
|
12
|
-
|
12
|
+
private
|
13
13
|
|
14
|
-
|
15
|
-
|
16
|
-
|
14
|
+
def convert_title_to_id(title)
|
15
|
+
title.to_s.gsub(/\ /, '').underscore.to_sym
|
16
|
+
end
|
17
17
|
end
|
18
18
|
end
|
19
19
|
end
|
@@ -47,23 +47,27 @@ module Refinery
|
|
47
47
|
"no_#{id}"
|
48
48
|
end
|
49
49
|
|
50
|
-
|
50
|
+
protected
|
51
51
|
|
52
|
-
|
53
|
-
|
52
|
+
def content_html(can_use_fallback)
|
53
|
+
if override_html.present?
|
54
|
+
override_html
|
55
|
+
else
|
56
|
+
html_from_fallback(can_use_fallback)
|
54
57
|
end
|
58
|
+
end
|
55
59
|
|
56
|
-
|
57
|
-
|
58
|
-
|
60
|
+
def html_from_fallback(can_use_fallback)
|
61
|
+
fallback_html if fallback_html.present? && can_use_fallback
|
62
|
+
end
|
59
63
|
|
60
|
-
|
64
|
+
private
|
61
65
|
|
62
|
-
|
66
|
+
attr_writer :id, :fallback_html, :hidden
|
63
67
|
|
64
|
-
|
65
|
-
|
66
|
-
|
68
|
+
def wrap_content_in_tag(content)
|
69
|
+
content_tag(:section, content_tag(:div, content, :class => 'inner'), :id => id)
|
70
|
+
end
|
67
71
|
end
|
68
72
|
end
|
69
73
|
end
|
@@ -4,11 +4,11 @@ module Refinery
|
|
4
4
|
# a title. These are much like normal sections except they are wrapped in
|
5
5
|
# a h1 tag rather than a div.
|
6
6
|
class TitleSectionPresenter < SectionPresenter
|
7
|
-
|
7
|
+
private
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
def wrap_content_in_tag(content)
|
10
|
+
content_tag(:h1, content, :id => id)
|
11
|
+
end
|
12
12
|
end
|
13
13
|
end
|
14
14
|
end
|
data/refinerycms-pages.gemspec
CHANGED
@@ -20,7 +20,6 @@ Gem::Specification.new do |s|
|
|
20
20
|
|
21
21
|
s.files = `git ls-files`.split("\n")
|
22
22
|
s.test_files = `git ls-files -- spec/*`.split("\n")
|
23
|
-
s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
24
23
|
|
25
24
|
s.add_dependency 'awesome_nested_set', '~> 2.1.0'
|
26
25
|
s.add_dependency 'seo_meta', '~> 1.2.0'
|
@@ -474,6 +474,26 @@ module Refinery
|
|
474
474
|
end
|
475
475
|
end
|
476
476
|
end
|
477
|
+
|
478
|
+
describe "new page part", :js => true do
|
479
|
+
before do
|
480
|
+
Refinery::Pages.stub(:new_page_parts).and_return(true)
|
481
|
+
end
|
482
|
+
|
483
|
+
it "adds new page part" do
|
484
|
+
visit refinery.new_admin_page_path
|
485
|
+
click_link "add_page_part"
|
486
|
+
|
487
|
+
within "#new_page_part_dialog" do
|
488
|
+
fill_in "new_page_part_title", :with => "testy"
|
489
|
+
click_button "Save"
|
490
|
+
end
|
491
|
+
|
492
|
+
within "#page_parts" do
|
493
|
+
page.should have_content("testy")
|
494
|
+
end
|
495
|
+
end
|
496
|
+
end
|
477
497
|
end
|
478
498
|
|
479
499
|
describe "TranslatePages" do
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: refinerycms-pages
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 11
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 2
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 2.0.
|
9
|
+
- 2
|
10
|
+
version: 2.0.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Philip Arndt
|
@@ -59,12 +59,12 @@ dependencies:
|
|
59
59
|
requirements:
|
60
60
|
- - "="
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
hash:
|
62
|
+
hash: 11
|
63
63
|
segments:
|
64
64
|
- 2
|
65
65
|
- 0
|
66
|
-
-
|
67
|
-
version: 2.0.
|
66
|
+
- 2
|
67
|
+
version: 2.0.2
|
68
68
|
version_requirements: *id003
|
69
69
|
name: refinerycms-core
|
70
70
|
type: :runtime
|