bcms_blog 1.2.0 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +10 -0
- data/README.markdown +10 -4
- data/app/assets/javascripts/bcms_blog/application.js +15 -0
- data/app/assets/stylesheets/bcms_blog/application.css +13 -0
- data/app/controllers/bcms_blog/blog_comments_controller.rb +5 -0
- data/app/controllers/bcms_blog/blog_posts_controller.rb +37 -0
- data/app/controllers/bcms_blog/blogs_controller.rb +13 -0
- data/app/controllers/bcms_blog/feeds_controller.rb +10 -0
- data/app/helpers/bcms_blog/blog_helper.rb +27 -0
- data/app/models/bcms_blog/blog.rb +99 -0
- data/app/models/bcms_blog/blog_comment.rb +36 -0
- data/app/models/bcms_blog/blog_group_membership.rb +6 -0
- data/app/models/bcms_blog/blog_observer.rb +141 -0
- data/app/models/bcms_blog/blog_post.rb +108 -0
- data/app/portlets/blog_post_portlet.rb +6 -6
- data/app/portlets/blog_posts_portlet.rb +4 -4
- data/app/views/bcms_blog/blog_comments/_form.html.erb +5 -0
- data/app/views/bcms_blog/blog_comments/render.html.erb +2 -0
- data/app/views/{cms → bcms_blog}/blog_posts/_form.html.erb +1 -1
- data/app/views/{cms → bcms_blog}/blog_posts/no_access.html.erb +0 -0
- data/app/views/{cms → bcms_blog}/blog_posts/render.html.erb +0 -0
- data/app/views/{cms → bcms_blog}/blogs/_form.html.erb +2 -2
- data/app/views/{cms → bcms_blog}/blogs/admin_only.html.erb +0 -0
- data/app/views/{cms → bcms_blog}/blogs/render.html.erb +0 -0
- data/app/views/{feeds → bcms_blog/feeds}/index.rss.builder +3 -3
- data/app/views/portlets/blog_post/_form.html.erb +1 -1
- data/app/views/portlets/blog_post/render.html.erb +3 -1
- data/app/views/portlets/blog_posts/_form.html.erb +1 -1
- data/config/routes.rb +5 -0
- data/db/bcms_blog.seeds.rb +4 -0
- data/db/migrate/20090415000000_create_blogs.rb +5 -6
- data/db/migrate/20090415000001_create_blog_posts.rb +1 -5
- data/db/migrate/20090415000002_create_blog_comments.rb +0 -2
- data/db/migrate/20120529184028_v130.rb +12 -0
- data/lib/bcms_blog/engine.rb +15 -1
- data/lib/bcms_blog/route_extensions.rb +8 -0
- data/lib/bcms_blog/version.rb +3 -0
- data/lib/bcms_blog.rb +5 -2
- data/lib/generators/bcms_blog/install/install_generator.rb +11 -11
- data/lib/tasks/bcms_blog_tasks.rake +4 -0
- data/test/bcms_blog_test.rb +7 -0
- data/test/functional/cms/blog_posts_controller_test.rb +47 -0
- data/test/functional/cms/blogs_controller_test.rb +27 -0
- data/test/integration/blog_controller_test.rb +63 -0
- data/test/integration/blog_post_test.rb +31 -0
- data/test/support/blog_test_helper.rb +71 -0
- data/test/support/factories.rb +54 -0
- data/test/support/factory_girl_support.rb +2 -0
- data/test/test_helper.rb +15 -0
- data/test/test_logging.rb +64 -0
- data/test/unit/blog_comment_test.rb +34 -0
- data/test/unit/blog_observer_test.rb +84 -0
- data/test/unit/blog_post_test.rb +45 -0
- data/test/unit/blog_test.rb +42 -0
- data/test/unit/helpers/feeds_helper_test.rb +4 -0
- metadata +83 -35
- data/app/controllers/cms/blog_comments_controller.rb +0 -3
- data/app/controllers/cms/blog_posts_controller.rb +0 -35
- data/app/controllers/cms/blogs_controller.rb +0 -11
- data/app/controllers/feeds_controller.rb +0 -8
- data/app/helpers/cms/blog_helper.rb +0 -20
- data/app/models/blog.rb +0 -95
- data/app/models/blog_comment.rb +0 -34
- data/app/models/blog_group_membership.rb +0 -4
- data/app/models/blog_observer.rb +0 -140
- data/app/models/blog_post.rb +0 -113
- data/app/views/cms/blog_comments/_form.html.erb +0 -5
- data/app/views/cms/blog_comments/render.html.erb +0 -2
- data/app/views/layouts/templates/default.html.erb +0 -17
- data/doc/README_FOR_APP +0 -2
- data/doc/migrate_to_20100427.rb +0 -77
- data/doc/release_notes.txt +0 -48
- 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
|
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.
|
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:
|
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:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - <
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 3.
|
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:
|
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/
|
34
|
-
- app/
|
35
|
-
- app/controllers/
|
36
|
-
- app/controllers/
|
37
|
-
- app/
|
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/
|
47
|
-
- app/views/
|
48
|
-
- app/views/
|
49
|
-
- app/views/
|
50
|
-
- app/views/
|
51
|
-
- app/views/
|
52
|
-
- app/views/
|
53
|
-
- app/views/
|
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
|
-
-
|
62
|
-
-
|
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/
|
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: -
|
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.
|
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,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,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
|
data/app/models/blog_comment.rb
DELETED
@@ -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
|