radiant-layouts-extension 0.9.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. data/MIT-LICENSE +75 -4
  2. data/README.md +48 -1
  3. data/Rakefile +56 -15
  4. data/VERSION +1 -1
  5. data/app/models/haml_filter.rb +5 -0
  6. data/app/views/layouts/radiant.html.haml +1 -1
  7. data/config/routes.rb +5 -0
  8. data/layouts_extension.rb +13 -5
  9. data/lib/haml_layouts/models/layout.rb +34 -0
  10. data/lib/haml_layouts/models/page.rb +31 -0
  11. data/lib/nested_layouts/tags/core.rb +141 -0
  12. data/lib/share_layouts/controllers/action_controller.rb +25 -0
  13. data/lib/share_layouts/helpers/action_view.rb +50 -0
  14. data/lib/tasks/layouts_extension_tasks.rake +27 -6
  15. data/radiant-layouts-extension.gemspec +37 -26
  16. data/spec/controllers/{share_layouts_spec.rb → share_controller_spec.rb} +0 -0
  17. data/spec/datasets/layouts_layouts.rb +36 -0
  18. data/spec/datasets/layouts_pages.rb +43 -0
  19. data/spec/lib/haml_layouts/haml_layouts_extension_spec.rb +22 -0
  20. data/spec/lib/haml_layouts/models/layout_spec.rb +36 -0
  21. data/spec/lib/haml_layouts/models/page_spec.rb +40 -0
  22. data/spec/lib/nested_layouts/nested_layouts_extension_spec.rb +16 -0
  23. data/spec/lib/nested_layouts/{tags_spec.rb → tags/core_spec.rb} +41 -17
  24. data/spec/{controllers/nested_layouts_spec.rb → lib/share_layouts/controllers/action_controller_spec.rb} +0 -1
  25. data/spec/{helpers/share_layouts_helper_spec.rb → lib/share_layouts/helpers/action_view_spec.rb} +32 -29
  26. data/spec/lib/share_layouts/share_layouts_extension_spec.rb +22 -0
  27. data/spec/models/haml_filter_spec.rb +0 -0
  28. data/spec/models/rails_page_spec.rb +9 -9
  29. data/spec/spec.opts +2 -3
  30. metadata +43 -28
  31. data/lib/nested_layouts.rb +0 -2
  32. data/lib/nested_layouts/tags.rb +0 -127
  33. data/lib/share_layouts.rb +0 -2
  34. data/lib/share_layouts/helper.rb +0 -39
  35. data/lib/share_layouts/radiant_layouts.rb +0 -21
  36. data/spec/datasets/nested_layouts_dataset.rb +0 -38
  37. data/spec/datasets/share_layouts_dataset.rb +0 -38
  38. data/spec/lib/share_layouts_extension_spec.rb +0 -25
  39. data/spec/rcov.opts +0 -2
data/lib/share_layouts.rb DELETED
@@ -1,2 +0,0 @@
1
- module ShareLayouts
2
- end
@@ -1,39 +0,0 @@
1
- module ShareLayouts::Helper
2
-
3
- def radiant_layout(name = @radiant_layout)
4
- page = find_page
5
- assign_attributes!(page, name)
6
- page.build_parts_from_hash!(extract_captures)
7
- page.render
8
- end
9
-
10
- def assign_attributes!(page, name = @radiant_layout)
11
- page.layout = Layout.find_by_name(name) || page.layout
12
- page.title = @title || @content_for_title || page.title || ''
13
- page.breadcrumb = @breadcrumb || @content_for_breadcrumb || page.breadcrumb || page.title
14
- page.breadcrumbs = @breadcrumbs || @content_for_breadcrumbs || nil
15
- page.url = request.path
16
- page.slug = page.url.split("/").last
17
- page.published_at ||= Time.now
18
- page.request = request
19
- page.response = response
20
- end
21
-
22
- def extract_captures
23
- variables = instance_variables.grep(/@content_for_/)
24
- variables.inject({}) do |h, var|
25
- var =~ /^@content_for_(.*)$/
26
- key = $1.intern
27
- key = :body if key == :layout
28
- unless key == :title || key == :breadcrumbs
29
- h[key] = instance_variable_get(var)
30
- end
31
- h
32
- end
33
- end
34
-
35
- def find_page
36
- page = Page.find_by_url(request.path) rescue nil
37
- page.is_a?(RailsPage) ? page : RailsPage.new(:class_name => "RailsPage")
38
- end
39
- end
@@ -1,21 +0,0 @@
1
- module ShareLayouts::RadiantLayouts
2
-
3
- def self.included(base)
4
- base.extend ClassMethods
5
- end
6
-
7
- module ClassMethods
8
- def radiant_layout(name=nil, options={}, &block)
9
- raise ArgumentError, "A layout name or block is required!" unless name || block
10
- write_inheritable_attribute 'radiant_layout', name || block
11
- before_filter :set_radiant_layout
12
- layout 'radiant', options
13
- end
14
- end
15
-
16
- def set_radiant_layout
17
- @radiant_layout = self.class.read_inheritable_attribute 'radiant_layout'
18
- @radiant_layout = @radiant_layout.call(self) if @radiant_layout.is_a? Proc
19
- end
20
-
21
- end
@@ -1,38 +0,0 @@
1
- class NestedLayoutsDataset < Dataset::Base
2
- def load
3
- create_record :layout, :parent,
4
- :name => 'parent',
5
- :content => <<-CONTENT
6
- <html>
7
- <body class="<r:layout />">
8
- <r:content_for_layout />
9
- </body>
10
- </html>
11
- CONTENT
12
-
13
- create_record :layout, :child,
14
- :name => 'child',
15
- :content => <<-CONTENT
16
- <r:inside_layout name='parent'>
17
- <h1>child</h1>
18
- </r:inside_layout>
19
- CONTENT
20
-
21
- create_record :page, :parent_layout,
22
- :title => 'child layout',
23
- :layout_id => layouts(:parent).id,
24
- :breadcrumb => 'Homepage',
25
- :slug => '/',
26
- :status_id => 100,
27
- :published_at => '2008-01-01 08:00:00'
28
-
29
- create_record :page, :child_layout,
30
- :title => 'child layout',
31
- :layout_id => layouts(:child).id,
32
- :breadcrumb => 'Homepage',
33
- :slug => '/',
34
- :status_id => 100,
35
- :published_at => '2008-01-01 08:00:00'
36
-
37
- end
38
- end
@@ -1,38 +0,0 @@
1
- class ShareLayoutsDataset < Dataset::Base
2
- def load
3
- create_record :page, :homepage, :id => 1,
4
- :title => 'Homepage',
5
- :breadcrumb => 'Homepage',
6
- :slug => '/',
7
- :status_id => 100,
8
- :published_at => '2008-01-01 08:00:00'
9
-
10
- create_record :page, :rails_page,
11
- :id => 2,
12
- :title => 'App page',
13
- :breadcrumb => 'App page',
14
- :slug => 'app',
15
- :class_name => 'RailsPage',
16
- :status_id => 100,
17
- :parent_id => 1,
18
- :published_at => '2008-01-01 08:00:00'
19
-
20
- create_record :page, :rails_page_child,
21
- :id => 3,
22
- :title => 'Child',
23
- :breadcrumb => 'Child',
24
- :slug => 'child-page',
25
- :status_id => 100,
26
- :parent_id => 2,
27
- :published_at => '2008-01-01 08:00:00'
28
-
29
- create_record :page, :other,
30
- :id => 4,
31
- :title => 'Other',
32
- :breadcrumb => 'Other',
33
- :slug => 'other',
34
- :status_id => 100,
35
- :parent_id => 1,
36
- :published_at => '2008-01-01 08:00:00'
37
- end
38
- end
@@ -1,25 +0,0 @@
1
- require 'spec/spec_helper'
2
-
3
- describe LayoutsExtension do
4
-
5
- context 'activate' do
6
-
7
- it 'should have a RailsPage class to call' do
8
- RailsPage.should_not be_nil
9
- end
10
-
11
- it 'should extend ActionController base methods' do
12
- ActionController::Base.included_modules.include?(ShareLayouts::RadiantLayouts).should be_true
13
- end
14
-
15
- it 'should extend ActionView helper methods' do
16
- ActionView::Base.included_modules.include?(ShareLayouts::Helper).should be_true
17
- end
18
-
19
- it 'should extend Page base methods' do
20
- Page.included_modules.include?(NestedLayouts::Tags).should be_true
21
- end
22
-
23
- end
24
-
25
- end
data/spec/rcov.opts DELETED
@@ -1,2 +0,0 @@
1
- --exclude "spec/*,gems/*"
2
- --rails