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.
- 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
|