bcms_blog 1.2.0 → 1.3.0

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.
Files changed (73) hide show
  1. data/Gemfile +10 -0
  2. data/README.markdown +10 -4
  3. data/app/assets/javascripts/bcms_blog/application.js +15 -0
  4. data/app/assets/stylesheets/bcms_blog/application.css +13 -0
  5. data/app/controllers/bcms_blog/blog_comments_controller.rb +5 -0
  6. data/app/controllers/bcms_blog/blog_posts_controller.rb +37 -0
  7. data/app/controllers/bcms_blog/blogs_controller.rb +13 -0
  8. data/app/controllers/bcms_blog/feeds_controller.rb +10 -0
  9. data/app/helpers/bcms_blog/blog_helper.rb +27 -0
  10. data/app/models/bcms_blog/blog.rb +99 -0
  11. data/app/models/bcms_blog/blog_comment.rb +36 -0
  12. data/app/models/bcms_blog/blog_group_membership.rb +6 -0
  13. data/app/models/bcms_blog/blog_observer.rb +141 -0
  14. data/app/models/bcms_blog/blog_post.rb +108 -0
  15. data/app/portlets/blog_post_portlet.rb +6 -6
  16. data/app/portlets/blog_posts_portlet.rb +4 -4
  17. data/app/views/bcms_blog/blog_comments/_form.html.erb +5 -0
  18. data/app/views/bcms_blog/blog_comments/render.html.erb +2 -0
  19. data/app/views/{cms → bcms_blog}/blog_posts/_form.html.erb +1 -1
  20. data/app/views/{cms → bcms_blog}/blog_posts/no_access.html.erb +0 -0
  21. data/app/views/{cms → bcms_blog}/blog_posts/render.html.erb +0 -0
  22. data/app/views/{cms → bcms_blog}/blogs/_form.html.erb +2 -2
  23. data/app/views/{cms → bcms_blog}/blogs/admin_only.html.erb +0 -0
  24. data/app/views/{cms → bcms_blog}/blogs/render.html.erb +0 -0
  25. data/app/views/{feeds → bcms_blog/feeds}/index.rss.builder +3 -3
  26. data/app/views/portlets/blog_post/_form.html.erb +1 -1
  27. data/app/views/portlets/blog_post/render.html.erb +3 -1
  28. data/app/views/portlets/blog_posts/_form.html.erb +1 -1
  29. data/config/routes.rb +5 -0
  30. data/db/bcms_blog.seeds.rb +4 -0
  31. data/db/migrate/20090415000000_create_blogs.rb +5 -6
  32. data/db/migrate/20090415000001_create_blog_posts.rb +1 -5
  33. data/db/migrate/20090415000002_create_blog_comments.rb +0 -2
  34. data/db/migrate/20120529184028_v130.rb +12 -0
  35. data/lib/bcms_blog/engine.rb +15 -1
  36. data/lib/bcms_blog/route_extensions.rb +8 -0
  37. data/lib/bcms_blog/version.rb +3 -0
  38. data/lib/bcms_blog.rb +5 -2
  39. data/lib/generators/bcms_blog/install/install_generator.rb +11 -11
  40. data/lib/tasks/bcms_blog_tasks.rake +4 -0
  41. data/test/bcms_blog_test.rb +7 -0
  42. data/test/functional/cms/blog_posts_controller_test.rb +47 -0
  43. data/test/functional/cms/blogs_controller_test.rb +27 -0
  44. data/test/integration/blog_controller_test.rb +63 -0
  45. data/test/integration/blog_post_test.rb +31 -0
  46. data/test/support/blog_test_helper.rb +71 -0
  47. data/test/support/factories.rb +54 -0
  48. data/test/support/factory_girl_support.rb +2 -0
  49. data/test/test_helper.rb +15 -0
  50. data/test/test_logging.rb +64 -0
  51. data/test/unit/blog_comment_test.rb +34 -0
  52. data/test/unit/blog_observer_test.rb +84 -0
  53. data/test/unit/blog_post_test.rb +45 -0
  54. data/test/unit/blog_test.rb +42 -0
  55. data/test/unit/helpers/feeds_helper_test.rb +4 -0
  56. metadata +83 -35
  57. data/app/controllers/cms/blog_comments_controller.rb +0 -3
  58. data/app/controllers/cms/blog_posts_controller.rb +0 -35
  59. data/app/controllers/cms/blogs_controller.rb +0 -11
  60. data/app/controllers/feeds_controller.rb +0 -8
  61. data/app/helpers/cms/blog_helper.rb +0 -20
  62. data/app/models/blog.rb +0 -95
  63. data/app/models/blog_comment.rb +0 -34
  64. data/app/models/blog_group_membership.rb +0 -4
  65. data/app/models/blog_observer.rb +0 -140
  66. data/app/models/blog_post.rb +0 -113
  67. data/app/views/cms/blog_comments/_form.html.erb +0 -5
  68. data/app/views/cms/blog_comments/render.html.erb +0 -2
  69. data/app/views/layouts/templates/default.html.erb +0 -17
  70. data/doc/README_FOR_APP +0 -2
  71. data/doc/migrate_to_20100427.rb +0 -77
  72. data/doc/release_notes.txt +0 -48
  73. data/lib/bcms_blog/routes.rb +0 -10
@@ -0,0 +1,34 @@
1
+ require 'test_helper'
2
+
3
+ class BlogCommentTest < ActiveSupport::TestCase
4
+
5
+ def setup
6
+ setup_blog_stubs
7
+ end
8
+
9
+ test "crates a valid instance" do
10
+ assert build(:blog_comment).valid?
11
+ end
12
+
13
+ test "requires post" do
14
+ assert build(:blog_comment, :post => nil).invalid?
15
+ end
16
+
17
+ test "requires author" do
18
+ assert build(:blog_comment, :author => nil).invalid?
19
+ end
20
+
21
+ test "requires body" do
22
+ assert build(:blog_comment, :body => nil).invalid?
23
+ end
24
+
25
+ test "should not be published if Blog#moderate_comments is true" do
26
+ assert !create(:blog_comment).published?
27
+ end
28
+
29
+ test "should be published if Blog#moderate_comments is false" do
30
+ blog = create(:blog, :moderate_comments => false)
31
+ post = create(:blog_post, :blog => blog)
32
+ assert create(:blog_comment, :post => post).published?
33
+ end
34
+ end
@@ -0,0 +1,84 @@
1
+ require 'test_helper'
2
+
3
+ module BcmsBlog
4
+ class BlogPersistenceTest < ActiveSupport::TestCase
5
+
6
+ def setup
7
+ @root = create(:root_section)
8
+ @blog = create(:blog, :name => 'TestBlog')
9
+ end
10
+
11
+ test "Update pages/routes when a section changes" do
12
+ BlogObserver.any_instance.expects(:update_section_pages_and_route).with(@blog)
13
+ @blog.name = "Change the Name"
14
+ @blog.save!
15
+ end
16
+
17
+ test "Published afters saving" do
18
+ BlogObserver.any_instance.expects(:update_section_pages_and_route).with(@blog)
19
+ @blog.name = "Change the Name"
20
+ @blog.save!
21
+ assert @blog.published?
22
+ end
23
+ end
24
+
25
+ class BlogObserverTest < ActiveSupport::TestCase
26
+
27
+ def setup
28
+ setup_blog_stubs
29
+ [Cms::Section, Cms::PageRoute, Cms::Page].each {|klass| klass.stubs(:find_by_name)}
30
+ BlogPostPortlet.stubs(:create!)
31
+ @blog = create(:blog, :name => 'TestBlog')
32
+ end
33
+
34
+ test "does not update section, pageroute and pages if name did not change when updated" do
35
+ [Cms::Section, Cms::PageRoute, Cms::Page].each {|klass| klass.expects(:find_by_name).never}
36
+ @blog.toggle!(:moderate_comments)
37
+ end
38
+
39
+ test "updates section, pageroute and pages if name changed" do
40
+ route = mock('page_route', :update_attribute => true)
41
+ page = mock('page')
42
+ Cms::Section.expects(:find_by_name).returns(Cms::Section.new)
43
+ Cms::PageRoute.expects(:find_by_name).returns(route)
44
+ Cms::Page.expects(:find_by_name).twice.returns(page)
45
+ page.expects(:update_attribute).twice.returns(true)
46
+ page.expects(:publish).twice.returns(true)
47
+
48
+ @blog.update_attribute(:name, "OtherName")
49
+ end
50
+
51
+ test "should create a section with the same name and route" do
52
+ Cms::Section.expects(:create!).with(:name => 'Test', :path => '/test', :parent => Cms::Section.root.first).returns(@section)
53
+ create(:blog, :name => 'Test')
54
+ end
55
+
56
+ test "should create a hidden page with the same name in the section with the blog's name" do
57
+ Cms::Page.expects(:create!).with(:name => 'Test',
58
+ :path => '/test',
59
+ :section => @section,
60
+ :template_file_name => 'default.html.erb',
61
+ :hidden => true).returns(Cms::Page.new)
62
+ create(:blog, :name => 'Test')
63
+ end
64
+
65
+ test "should create a page to hold the BlogPostPortlet" do
66
+ Cms::Page.expects(:create!).with(:name => 'Test: Post',
67
+ :path => '/test/post',
68
+ :section => @section,
69
+ :template_file_name => 'default.html.erb',
70
+ :hidden => true).returns(Cms::Page.new)
71
+ create(:blog, :name => 'Test')
72
+ end
73
+
74
+ test "should create an instance of BlogPostPortlet" do
75
+ BlogPostPortlet.expects(:create!).with(:name => 'Test: Post Portlet',
76
+ :blog_id => 2,
77
+ :template => BlogPostPortlet.default_template,
78
+ :connect_to_page_id => nil,
79
+ :connect_to_container => 'main',
80
+ :publish_on_save => true).returns(BlogPostPortlet.new)
81
+ create(:blog, :name => 'Test')
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,45 @@
1
+ require 'test_helper'
2
+
3
+ module BcmsBlog
4
+ class BlogPostTest < ActiveSupport::TestCase
5
+
6
+ def setup
7
+ setup_blog_stubs
8
+ @post = create(:blog_post, :name => "This is the first Post")
9
+ end
10
+
11
+ test "cretates a valid instance" do
12
+ assert @post.valid?
13
+ end
14
+
15
+ test "requires name" do
16
+ assert build(:blog_post, :name => nil).invalid?
17
+ end
18
+
19
+ test "requires blog_id" do
20
+ assert build(:blog_post, :blog => nil).invalid?
21
+ end
22
+
23
+ test "requires author_id" do
24
+ assert build(:blog_post, :author => nil).invalid?
25
+ end
26
+
27
+ test "should set slug" do
28
+ assert_equal('this-is-the-first-post', @post.slug)
29
+ end
30
+
31
+ test "should set published_at when published" do
32
+ assert_nil @post.published_at
33
+ @post.publish!
34
+ assert_not_nil @post.published_at
35
+ end
36
+
37
+ test "BlogPost should find posts published between 2 given dates" do
38
+ @post.publish!
39
+ create(:blog_post, :published_at => 5.days.ago)
40
+ create(:blog_post, :published_at => 10.days.ago)
41
+ assert_equal(1, BlogPost.published_between(6.days.ago, 4.days.ago).count)
42
+ end
43
+
44
+ end
45
+ end
@@ -0,0 +1,42 @@
1
+ require 'test_helper'
2
+
3
+ class BlogTest < ActiveSupport::TestCase
4
+
5
+ def setup
6
+ setup_blog_stubs
7
+ @blog = create(:blog, :name => 'TestBlog')
8
+ end
9
+
10
+ test "creates a valid instance" do
11
+ assert @blog.valid?
12
+ end
13
+
14
+ test "requires name" do
15
+ assert build(:blog, :name => nil).invalid?
16
+ end
17
+
18
+ test "should be editable by user" do
19
+ group = create(:group, :group_type => create(:group_type,:cms_access => true))
20
+ user = create(:user, :groups => [group])
21
+ blog = build(:blog, :groups => [group])
22
+ assert blog.editable_by?(user)
23
+ assert !@blog.editable_by?(user)
24
+ end
25
+
26
+ test "should be editable by administrators" do
27
+ admin = create(:user)
28
+ admin.expects(:able_to?).with(:administrate).returns(true)
29
+ assert @blog.editable_by?(admin)
30
+ end
31
+
32
+ test "should create an instance of BlogPostPortlet" do
33
+ BlogPostPortlet.expects(:create!).with(:name => 'Test: Post Portlet',
34
+ :blog_id => 2,
35
+ :template => BlogPostPortlet.default_template,
36
+ :connect_to_page_id => nil,
37
+ :connect_to_container => 'main',
38
+ :publish_on_save => true).returns(BlogPostPortlet.new)
39
+ create(:blog, :name => 'Test')
40
+ end
41
+
42
+ end
@@ -0,0 +1,4 @@
1
+ require 'test_helper'
2
+
3
+ class FeedsHelperTest < ActionView::TestCase
4
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bcms_blog
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,19 +9,30 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2010-07-11 00:00:00.000000000 Z
12
+ date: 2012-05-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: browsercms
16
- requirement: &70330799771200 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
- - - ~>
19
+ - - <
20
20
  - !ruby/object:Gem::Version
21
- version: 3.3.0
21
+ version: 3.6.0
22
+ - - ! '>='
23
+ - !ruby/object:Gem::Version
24
+ version: 3.5.0.rc4
22
25
  type: :runtime
23
26
  prerelease: false
24
- version_requirements: *70330799771200
27
+ version_requirements: !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - <
31
+ - !ruby/object:Gem::Version
32
+ version: 3.6.0
33
+ - - ! '>='
34
+ - !ruby/object:Gem::Version
35
+ version: 3.5.0.rc4
25
36
  description: The Blog Module for BrowserCMS
26
37
  email: github@browsermedia.com
27
38
  executables: []
@@ -30,49 +41,68 @@ extra_rdoc_files:
30
41
  - LICENSE.txt
31
42
  - README.markdown
32
43
  files:
33
- - app/controllers/cms/blog_comments_controller.rb
34
- - app/controllers/cms/blog_posts_controller.rb
35
- - app/controllers/cms/blogs_controller.rb
36
- - app/controllers/feeds_controller.rb
37
- - app/helpers/cms/blog_helper.rb
44
+ - app/assets/javascripts/bcms_blog/application.js
45
+ - app/assets/stylesheets/bcms_blog/application.css
46
+ - app/controllers/bcms_blog/blog_comments_controller.rb
47
+ - app/controllers/bcms_blog/blog_posts_controller.rb
48
+ - app/controllers/bcms_blog/blogs_controller.rb
49
+ - app/controllers/bcms_blog/feeds_controller.rb
50
+ - app/helpers/bcms_blog/blog_helper.rb
38
51
  - app/helpers/feeds_helper.rb
39
- - app/models/blog.rb
40
- - app/models/blog_comment.rb
41
- - app/models/blog_group_membership.rb
42
- - app/models/blog_observer.rb
43
- - app/models/blog_post.rb
52
+ - app/models/bcms_blog/blog.rb
53
+ - app/models/bcms_blog/blog_comment.rb
54
+ - app/models/bcms_blog/blog_group_membership.rb
55
+ - app/models/bcms_blog/blog_observer.rb
56
+ - app/models/bcms_blog/blog_post.rb
44
57
  - app/portlets/blog_post_portlet.rb
45
58
  - app/portlets/blog_posts_portlet.rb
46
- - app/views/cms/blog_comments/_form.html.erb
47
- - app/views/cms/blog_comments/render.html.erb
48
- - app/views/cms/blog_posts/_form.html.erb
49
- - app/views/cms/blog_posts/no_access.html.erb
50
- - app/views/cms/blog_posts/render.html.erb
51
- - app/views/cms/blogs/_form.html.erb
52
- - app/views/cms/blogs/admin_only.html.erb
53
- - app/views/cms/blogs/render.html.erb
54
- - app/views/feeds/index.rss.builder
55
- - app/views/layouts/templates/default.html.erb
59
+ - app/views/bcms_blog/blog_comments/_form.html.erb
60
+ - app/views/bcms_blog/blog_comments/render.html.erb
61
+ - app/views/bcms_blog/blog_posts/_form.html.erb
62
+ - app/views/bcms_blog/blog_posts/no_access.html.erb
63
+ - app/views/bcms_blog/blog_posts/render.html.erb
64
+ - app/views/bcms_blog/blogs/_form.html.erb
65
+ - app/views/bcms_blog/blogs/admin_only.html.erb
66
+ - app/views/bcms_blog/blogs/render.html.erb
67
+ - app/views/bcms_blog/feeds/index.rss.builder
56
68
  - app/views/partials/_blog_post.html.erb
57
69
  - app/views/portlets/blog_post/_form.html.erb
58
70
  - app/views/portlets/blog_post/render.html.erb
59
71
  - app/views/portlets/blog_posts/_form.html.erb
60
72
  - app/views/portlets/blog_posts/render.html.haml
61
- - LICENSE.txt
62
- - README.markdown
63
- - doc/migrate_to_20100427.rb
64
- - doc/README_FOR_APP
65
- - doc/release_notes.txt
73
+ - config/routes.rb
74
+ - db/bcms_blog.seeds.rb
66
75
  - db/migrate/20090415000000_create_blogs.rb
67
76
  - db/migrate/20090415000001_create_blog_posts.rb
68
77
  - db/migrate/20090415000002_create_blog_comments.rb
69
78
  - db/migrate/20090415000003_add_attachment_to_blog_posts.rb
70
79
  - db/migrate/20100521042244_add_moderate_comments_to_blog.rb
80
+ - db/migrate/20120529184028_v130.rb
71
81
  - lib/bcms_blog/engine.rb
72
- - lib/bcms_blog/routes.rb
82
+ - lib/bcms_blog/route_extensions.rb
83
+ - lib/bcms_blog/version.rb
73
84
  - lib/bcms_blog.rb
74
85
  - lib/generators/bcms_blog/install/install_generator.rb
75
86
  - lib/generators/bcms_blog/install/USAGE
87
+ - lib/tasks/bcms_blog_tasks.rake
88
+ - LICENSE.txt
89
+ - README.markdown
90
+ - Gemfile
91
+ - test/bcms_blog_test.rb
92
+ - test/functional/cms/blog_posts_controller_test.rb
93
+ - test/functional/cms/blogs_controller_test.rb
94
+ - test/integration/blog_controller_test.rb
95
+ - test/integration/blog_post_test.rb
96
+ - test/support/blog_test_helper.rb
97
+ - test/support/factories.rb
98
+ - test/support/factory_girl_support.rb
99
+ - test/test_helper.rb
100
+ - test/test_logging.rb
101
+ - test/unit/blog_comment_test.rb
102
+ - test/unit/blog_observer_test.rb
103
+ - test/unit/blog_post_test.rb
104
+ - test/unit/blog_test.rb
105
+ - test/unit/helpers/feeds_helper_test.rb
76
106
  homepage: http://www.github.com/browsermedia/bcms_blog
77
107
  licenses: []
78
108
  post_install_message:
@@ -87,17 +117,35 @@ required_ruby_version: !ruby/object:Gem::Requirement
87
117
  version: '0'
88
118
  segments:
89
119
  - 0
90
- hash: -3905715097688536829
120
+ hash: -3961525454364369353
91
121
  required_rubygems_version: !ruby/object:Gem::Requirement
92
122
  none: false
93
123
  requirements:
94
124
  - - ! '>='
95
125
  - !ruby/object:Gem::Version
96
126
  version: '0'
127
+ segments:
128
+ - 0
129
+ hash: -3961525454364369353
97
130
  requirements: []
98
131
  rubyforge_project: bcms_blog
99
- rubygems_version: 1.8.10
132
+ rubygems_version: 1.8.24
100
133
  signing_key:
101
134
  specification_version: 3
102
135
  summary: The Blog Module for BrowserCMS
103
- test_files: []
136
+ test_files:
137
+ - test/bcms_blog_test.rb
138
+ - test/functional/cms/blog_posts_controller_test.rb
139
+ - test/functional/cms/blogs_controller_test.rb
140
+ - test/integration/blog_controller_test.rb
141
+ - test/integration/blog_post_test.rb
142
+ - test/support/blog_test_helper.rb
143
+ - test/support/factories.rb
144
+ - test/support/factory_girl_support.rb
145
+ - test/test_helper.rb
146
+ - test/test_logging.rb
147
+ - test/unit/blog_comment_test.rb
148
+ - test/unit/blog_observer_test.rb
149
+ - test/unit/blog_post_test.rb
150
+ - test/unit/blog_test.rb
151
+ - test/unit/helpers/feeds_helper_test.rb
@@ -1,3 +0,0 @@
1
- class Cms::BlogCommentsController < Cms::ContentBlockController
2
-
3
- end
@@ -1,35 +0,0 @@
1
- class Cms::BlogPostsController < Cms::ContentBlockController
2
- before_filter :show_no_access_if_none_editable
3
-
4
- def build_block
5
- super
6
- ensure_blog_editable
7
- @block.author = current_user
8
- end
9
-
10
- def load_block
11
- super
12
- ensure_blog_editable
13
- end
14
-
15
- def load_blocks
16
- super
17
- @blocks.delete_if { |b| !b.editable_by?(current_user) }
18
- end
19
-
20
- private
21
-
22
- # If the current user is not able to edit any blog, just show them a page saying so
23
- def show_no_access_if_none_editable
24
- if Blog.editable_by(current_user).empty?
25
- render :action => "no_access"
26
- end
27
- end
28
-
29
- # Ensure the current user can actually edit the blog this blog post is associated with
30
- def ensure_blog_editable
31
- if @block.blog
32
- raise Cms::Errors::AccessDenied unless @block.blog.editable_by?(current_user)
33
- end
34
- end
35
- end
@@ -1,11 +0,0 @@
1
- class Cms::BlogsController < Cms::ContentBlockController
2
- check_permissions :administrate, :except => :index
3
-
4
- def index
5
- if current_user.able_to?(:administrate)
6
- super
7
- else
8
- render :action => "admin_only"
9
- end
10
- end
11
- end
@@ -1,8 +0,0 @@
1
- class FeedsController < ApplicationController
2
-
3
- def index
4
- @blog = Blog.find(params[:blog_id])
5
- @blog_posts = @blog.posts.published.all(:limit => 10, :order => "published_at DESC")
6
- end
7
-
8
- end
@@ -1,20 +0,0 @@
1
- module Cms::BlogHelper
2
- # We can't call it 'blog_path' because that would conflict with the actual named route method if there's a blog named "Blog".
3
- def _blog_path(blog, route_name, route_params)
4
- send("#{blog.name_for_path}_#{route_name}_path", route_params)
5
- end
6
-
7
- def _blog_post_path(blog_post)
8
- send("#{blog_post.route_name}_path", blog_post.route_params)
9
- end
10
-
11
- def feeds_link_tag_for(name)
12
- blog = Blog.find_by_name(name)
13
- auto_discovery_link_tag(:rss, blog_feeds_url(:blog_id => blog), :title => "#{blog.name}")
14
- end
15
-
16
- def new_comment_path(portlet)
17
- url_for(:controller=>"cms/portlet", :action=>"execute_handler", :id=>portlet.id, :handler=>"create_comment")
18
- end
19
- end
20
-
data/app/models/blog.rb DELETED
@@ -1,95 +0,0 @@
1
- class Blog < ActiveRecord::Base
2
- acts_as_content_block
3
-
4
- has_many :posts, :class_name => "BlogPost", :conditions => { :published => true }, :order => "published_at desc"
5
- has_many :blog_group_memberships
6
- has_many :groups, :through => :blog_group_memberships
7
-
8
- validates_presence_of :name
9
- validates_uniqueness_of :name
10
-
11
- scope :editable_by, lambda { |user|
12
- if user.able_to?(:administrate)
13
- { }
14
- else
15
- { :include => :groups, :conditions => ["groups.id IN (?)", user.group_ids.join(",")] }
16
- end
17
- }
18
-
19
- def self.default_template
20
- template_file = ActionController::Base.view_paths.map do |vp|
21
- path = vp.to_s.first == "/" ? vp.to_s : File.join(Rails.root, vp.to_s)
22
- File.join(path, "cms/blogs/render.html.erb")
23
- end.detect{|f| File.exists? f }
24
- template_file ? open(template_file){|f| f.read } : ""
25
- end
26
-
27
- def self.posts_finder(finder, options)
28
- if options[:tag]
29
- finder = finder.tagged_with(options[:tag])
30
- end
31
- if options[:exclude_tags]
32
- finder = finder.not_tagged_with(options[:exclude_tags])
33
- end
34
- if options[:category] || options[:category_id]
35
- category_type = CategoryType.named("Blog Post").first
36
- category = category_type.categories.named(options[:category]).first if options[:category]
37
- category = category_type.categories. find(options[:category_id]) if options[:category_id]
38
- finder = finder.in_category(category)
39
- end
40
- finder
41
- end
42
-
43
- def render
44
- @blog = self
45
- finder = @blog.posts.published
46
- finder = Blog.posts_finder(finder, params)
47
-
48
- if params[:year] && params[:month] && params[:day]
49
- @date = Date.new(params[:year].to_i, params[:month].to_i, params[:day].to_i)
50
- finder = posts.published_between(@date, @date + 1.day)
51
- elsif params[:year] && params[:month]
52
- @date = Date.new(params[:year].to_i, params[:month].to_i)
53
- finder = posts.published_between(@date, @date + 1.month)
54
- elsif params[:year]
55
- @date = Date.new(params[:year].to_i)
56
- finder = posts.published_between(@date, @date + 1.year)
57
- end
58
-
59
- @blog_posts = finder.all(:limit => 25, :order => "published_at desc")
60
- raise ActiveRecord::RecordNotFound.new("No posts found") if @blog_posts.empty?
61
-
62
- if params[:category]
63
- @page_title = "#{params[:category]}"
64
- elsif params[:tag]
65
- @page_title = "Posts tagged with #{params[:tag]}"
66
- elsif params[:year] && params[:month] && params[:day]
67
- @page_title = "Posts from #{@date.to_s(:long)}"
68
- elsif params[:year] && params[:month]
69
- @page_title = "Posts from #{Date::MONTHNAMES[@date.month]} #{@date.year}"
70
- elsif params[:year]
71
- @page_title = "Posts from #{@date.year}"
72
- end
73
- end
74
-
75
- def inline_options
76
- {:inline => self.template}
77
- end
78
-
79
- def self.default_order
80
- "name"
81
- end
82
-
83
- def editable_by?(user)
84
- user.able_to?(:administrate) || !(group_ids & user.group_ids).empty?
85
- end
86
-
87
- def potential_authors
88
- groups.map(&:users).flatten.uniq
89
- end
90
-
91
- def name_for_path
92
- name.to_slug.gsub('-', '_')
93
- end
94
-
95
- end
@@ -1,34 +0,0 @@
1
- class BlogComment < ActiveRecord::Base
2
- acts_as_content_block :is_searachable => "body"
3
- belongs_to :post, :class_name => "BlogPost", :counter_cache => "comments_count"
4
-
5
- validates_presence_of :post_id, :author, :body
6
-
7
- before_create :publish_if_comments_are_enabled
8
-
9
- def publish_if_comments_are_enabled
10
- self.published = true unless post.blog.moderate_comments?
11
- end
12
-
13
- def self.default_order
14
- "blog_comments.created_at desc"
15
- end
16
-
17
- def self.default_order_for_search
18
- default_order
19
- end
20
-
21
- def self.columns_for_index
22
- [ {:label => "Comment", :method => :name, :order => "blog_comments.body" },
23
- {:label => "Created At", :method => :formatted_created_at, :order => "blog_comments.created_at"} ]
24
- end
25
-
26
- def name
27
- body ? body[0..50] : ""
28
- end
29
-
30
- def formatted_created_at
31
- created_at.to_s(:date)
32
- end
33
-
34
- end
@@ -1,4 +0,0 @@
1
- class BlogGroupMembership < ActiveRecord::Base
2
- belongs_to :blog
3
- belongs_to :group
4
- end