puffer_pages 0.0.11 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.11
1
+ 0.0.12
@@ -9,8 +9,8 @@ class PagesController < ApplicationController
9
9
 
10
10
  def drops
11
11
  {
12
- :self => PufferPages::Liquid::PageDrop.new(@page, request),
13
- :root => PufferPages::Liquid::PageDrop.new(Page.root, request)
12
+ :self => PufferPages::Liquid::PageDrop.new(@page, @page, request),
13
+ :root => PufferPages::Liquid::PageDrop.new(@page.root, @page, request)
14
14
  }.stringify_keys
15
15
  end
16
16
 
data/app/models/page.rb CHANGED
@@ -10,12 +10,9 @@ class Page < ActiveRecord::Base
10
10
  %w(draft hidden published)
11
11
  end
12
12
 
13
- def self.root
14
- roots.first
15
- end
16
-
17
13
  def self.find_page location
18
- page = Page.find_by_location location
14
+ page = PufferPages.single_section_page_path ?
15
+ Page.find_by_slug(location) : Page.find_by_location(location)
19
16
  raise ActiveRecord::RecordNotFound if page.nil? || page.draft?
20
17
  page
21
18
  end
@@ -28,7 +25,7 @@ class Page < ActiveRecord::Base
28
25
  validate do |page|
29
26
  page.errors.add(:layout_name, :blank) unless page.inherited_layout_name.present?
30
27
  end
31
- validates_uniqueness_of :slug, :scope => :parent_id
28
+ validates_uniqueness_of :slug, :scope => (:parent_id unless PufferPages.single_section_page_path)
32
29
  validates_format_of :slug,
33
30
  :with => /\A([\w]+[\w-]*(\.[\w]+)?|\*)\Z/,
34
31
  :message => :slug_format,
@@ -65,6 +62,10 @@ class Page < ActiveRecord::Base
65
62
  define_method "#{status_name}?" do status == status_name end
66
63
  end
67
64
 
65
+ def to_location
66
+ PufferPages.single_section_page_path ? slug : location
67
+ end
68
+
68
69
  def render(drops_or_context)
69
70
  if inherited_layout
70
71
  @template = Liquid::Template.parse(inherited_layout.body)
@@ -95,7 +96,7 @@ class Page < ActiveRecord::Base
95
96
  end
96
97
 
97
98
  def inherited_page_parts
98
- scope = PagePart.where(:page_parts => {:page_id => self_and_ancestors.map(&:id)}).joins(:page).order("page_parts.name = '#{PufferPages.primary_page_part_name}' desc, page_parts.name, pages.lft desc").uniq_by &:name
99
+ PagePart.where(:page_parts => {:page_id => self_and_ancestors.map(&:id)}).joins(:page).order("page_parts.name = '#{PufferPages.primary_page_part_name}' desc, page_parts.name, pages.lft desc").uniq_by &:name
99
100
  end
100
101
 
101
102
  def part name
@@ -110,4 +111,8 @@ class Page < ActiveRecord::Base
110
111
  Rack::Mime.mime_type(File.extname(slug), 'text/html')
111
112
  end
112
113
 
114
+ def self_and_children
115
+ [self] + children
116
+ end
117
+
113
118
  end
@@ -5,59 +5,42 @@ module PufferPages
5
5
  include ActionController::UrlFor
6
6
  include Rails.application.routes.url_helpers
7
7
 
8
- def initialize page, request = nil
9
- @page, @request = page, request
10
- end
8
+ delegate *(Page.statuses.map {|s| "#{s}?"} << {:to => :page})
9
+ delegate :root, :name, :title, :description, :keywords, :created_at, :updated_at, :to => :page
11
10
 
12
- (%w(name title description keywords created_at updated_at) + Page.statuses.map{|s| "#{s}?"}).each do |attribute|
13
- define_method attribute do
14
- page.send(attribute)
15
- end
11
+ def initialize page, current_page = nil, request = nil
12
+ @page, @request, @current_page = page, request, current_page
16
13
  end
17
14
 
18
15
  def parent
19
- @parent ||= self.class.new(page.parent, @request)
16
+ @parent ||= self.class.new(page.parent, current_page, request)
20
17
  end
21
18
 
22
- %w(ancestors children).each do |attribute|
19
+ %w(ancestors self_and_ancestors children self_and_children siblings self_and_siblings descendants, self_and_descendants).each do |attribute|
23
20
  define_method attribute do
24
- instance_variable_get("@#{attribute}") || instance_variable_set("@#{attribute}", page.send(attribute).map{ |ac| self.class.new(ac, request)})
21
+ instance_variable_get("@#{attribute}") || instance_variable_set("@#{attribute}", page.send(attribute).map{ |ac| self.class.new(ac, current_page, request)})
25
22
  end
26
23
  end
27
24
 
28
- def ancestors?
29
- !page.root?
30
- end
31
-
32
- def children?
33
- page.children.present?
34
- end
35
-
36
25
  def path
37
- puffer_page_path page.location
26
+ puffer_page_path page.to_location
38
27
  end
39
28
 
40
29
  def url
41
- puffer_page_url page.location
30
+ puffer_page_url page.to_location
42
31
  end
43
32
 
44
33
  def current?
45
- path == request.path_info
34
+ page == current_page
46
35
  end
47
36
 
48
37
  def ancestor?
49
- request.path_info.start_with? path
38
+ page.is_ancestor_of? current_page
50
39
  end
51
40
 
52
41
  private
53
42
 
54
- def request
55
- @request
56
- end
57
-
58
- def page
59
- @page
60
- end
43
+ attr_reader :page, :request, :current_page
61
44
 
62
45
  end
63
46
  end
data/puffer_pages.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{puffer_pages}
8
- s.version = "0.0.11"
8
+ s.version = "0.0.12"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["pyromaniac"]
@@ -4,14 +4,14 @@ describe 'Drops' do
4
4
 
5
5
  include
6
6
 
7
- def render_page(page, one_more = nil)
7
+ def render_page(current_page, page = nil)
8
8
  request = ActionController::TestRequest.new
9
9
  request.env["rack.url_scheme"] = "http"
10
10
  request.host = 'test.com'
11
11
  request.port = 80
12
- request.path = "/#{page.location}"
13
- page.render 'self' => PufferPages::Liquid::PageDrop.new(page, request),
14
- 'page' => (PufferPages::Liquid::PageDrop.new(one_more, request) if one_more)
12
+ request.path = "/#{current_page.location}"
13
+ current_page.render 'self' => PufferPages::Liquid::PageDrop.new(current_page, current_page, request),
14
+ 'page' => (PufferPages::Liquid::PageDrop.new(page, current_page, request) if page)
15
15
  end
16
16
 
17
17
  describe 'page drop' do
@@ -20,6 +20,9 @@ describe 'Drops' do
20
20
  @root = Fabricate :page, :layout_name => 'foo_layout'
21
21
  @foo = Fabricate :page, :slug => 'hello', :parent => @root
22
22
  @bar = Fabricate :page, :slug => 'world', :parent => @foo
23
+ @root.reload
24
+ @foo.reload
25
+ @bar.reload
23
26
  end
24
27
 
25
28
  it 'should render proper url and path' do
@@ -39,7 +42,7 @@ describe 'Drops' do
39
42
  it 'should render proper ancestor?' do
40
43
  @layout = Fabricate :layout, :name => 'foo_layout', :body => "{{ page.ancestor? }}"
41
44
 
42
- render_page(@foo, @foo).should == 'true'
45
+ render_page(@foo, @foo).should == 'false'
43
46
  render_page(@foo, @root).should == 'true'
44
47
  render_page(@foo, @bar).should == 'false'
45
48
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puffer_pages
3
3
  version: !ruby/object:Gem::Version
4
- hash: 9
4
+ hash: 7
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 11
10
- version: 0.0.11
9
+ - 12
10
+ version: 0.0.12
11
11
  platform: ruby
12
12
  authors:
13
13
  - pyromaniac