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