bcms_blog 1.1.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/app/models/blog.rb CHANGED
@@ -25,8 +25,8 @@ class Blog < ActiveRecord::Base
25
25
  end
26
26
 
27
27
  def self.posts_finder(finder, options)
28
- if options[:tags]
29
- finder = finder.tagged_with(options[:tags])
28
+ if options[:tag]
29
+ finder = finder.tagged_with(options[:tag])
30
30
  end
31
31
  if options[:exclude_tags]
32
32
  finder = finder.not_tagged_with(options[:exclude_tags])
@@ -111,11 +111,12 @@ class BlogObserver < ActiveRecord::Observer
111
111
 
112
112
  def create_route(page, name, pattern)
113
113
  route = page.page_routes.build(:name => name, :pattern => pattern, :code => "")
114
- route.add_condition(:method, "get")
114
+ route.send(:create_without_callbacks)
115
+ route.add_condition(:method, "get").save
115
116
  route.add_requirement(:year, '\d{4,}') if pattern.include?(":year")
116
117
  route.add_requirement(:month, '\d{2,}') if pattern.include?(":month")
117
118
  route.add_requirement(:day, '\d{2,}') if pattern.include?(":day")
118
- route.send(:create_without_callbacks)
119
+ route.requirements.each(&:save)
119
120
  end
120
121
 
121
122
  def create_portlet(page, name, portlet_class)
@@ -0,0 +1,17 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
5
+ <title><%= page_title %></title>
6
+ <%= yield :html_head %>
7
+ </head>
8
+ <body style="margin: 0; padding: 0; text-align: center;">
9
+ <%= cms_toolbar %>
10
+ <div id="wrapper" style="width: 700px; margin: 0 auto; text-align: left; padding: 30px">
11
+ Breadcrumbs: <%= render_breadcrumbs %>
12
+ Main Menu: <%= render_menu %>
13
+ <h1><%= page_title %></h1>
14
+ <%= container :main %>
15
+ </div>
16
+ </body>
17
+ </html>
@@ -1,44 +1,3 @@
1
- <style>
2
- .blog_post {
3
- border-bottom: 1px solid #ccc;
4
- margin-bottom: 20px;
5
- }
6
-
7
- .blog_post h2 {
8
- margin-bottom: 0
9
- }
10
-
11
- .blog_post h2,
12
- .blog_post h2 a {
13
- font: normal 30px/28px 'arial black', arial, sans-serif !important;
14
- text-decoration: none !important;
15
- }
16
- .blog_post h2 a:hover {
17
- text-decoration: underline !important;
18
- }
19
-
20
- .blog_post .image {
21
- float: left;
22
- border: 1px solid #ccc;
23
- margin: 10px;
24
- margin-top: 0;
25
- }
26
- .blog_post .date {
27
- color: #666;
28
- }
29
- .blog_post .read_more {
30
- font-weight: bold;
31
- }
32
-
33
- .blog_post .comment + .comment {
34
- border-top: 1px dashed #ccc;
35
- }
36
-
37
- .clear {
38
- clear: both;
39
- }
40
- </style>
41
-
42
1
  <%
43
2
  # _counter is defined only if we pass :collection to the partial
44
3
  if defined?(blog_post_counter)
@@ -48,8 +7,7 @@
48
7
  blog_post_counter = 0
49
8
  end
50
9
  %>
51
-
52
- <div id="blog_post_<%= blog_post.id %>" class="blog_post clear">
10
+ <div id="blog_post_<%= blog_post.id %>" class="blog_post">
53
11
  <% if blog_post.attachment %>
54
12
  <div class="image">
55
13
  <%= image_tag blog_post.attachment.file_path %>
@@ -87,7 +45,8 @@
87
45
 
88
46
  <%= link_to h(pluralize(blog_post.comments.published.count, "Comment")), "#{_blog_post_path(blog_post)}#comments" %>
89
47
  </div>
90
- <br class="clear" />
48
+
49
+ <br />
91
50
 
92
51
  <% comments = blog_post.comments.published.reject(&:new_record?) %>
93
52
  <% if showing_individual_post and comments.any? -%>
@@ -1,10 +1,6 @@
1
1
  <% page_title @blog_post.name %>
2
2
  <%= render :partial => "partials/blog_post", :object => @blog_post %>
3
3
 
4
- <style>
5
- @import url('/stylesheets/cms/form_layout.css');
6
- </style>
7
-
8
4
  <div class="blog_comment_form">
9
5
  <% form_for @blog_comment, :url => cms_handler_path(@portlet, "create_comment") do |f| %>
10
6
  <%= f.hidden_field :post_id %>
@@ -13,15 +9,15 @@
13
9
  <%= f.label :author, 'Name *' %>
14
10
  <%= f.text_field :author %>
15
11
  </div>
16
- <div class="fields text_fields clear">
12
+ <div class="fields text_fields">
17
13
  <%= f.label :email, 'E-mail address' %>
18
14
  <%= f.text_field :email %>
19
15
  </div>
20
- <div class="fields text_fields clear">
16
+ <div class="fields text_fields">
21
17
  <%= f.label :url, 'Web site' %>
22
18
  <%= f.text_field :url %>
23
19
  </div>
24
- <div class="fields text_editor_fields clear">
20
+ <div class="fields text_editor_fields">
25
21
  <%= f.label :body, 'Body *' %>
26
22
  <br/>
27
23
  <%= f.text_area :body, :size => "50x5", :style => 'height: auto' %>
@@ -1,3 +1,11 @@
1
+ v1.1.1
2
+
3
+ - Blog partials and templates no longer include any css style declarations
4
+ - Fixed browsing by tags, categories and dates
5
+ - Fixed bug on page route conditions and requirements when creating a blog
6
+ - Tests refactoring. Tests now depend on bcms_support gem
7
+
8
+
1
9
  v1.1.0
2
10
 
3
11
  This version introduces significant changes and improvements over version 1.0.0
@@ -34,7 +42,4 @@ https://browsermedia.lighthouseapp.com/projects/28481/tickets/163-review-and-int
34
42
  Contributors:
35
43
  =============
36
44
  Tyler Rick
37
- Jon Leighton
38
-
39
-
40
- v1.0.0
45
+ Jon Leighton
@@ -0,0 +1,52 @@
1
+ module BlogTestHelper
2
+
3
+ # Seeds all data created by this module's migrations
4
+ def seed_blog_data
5
+ @content_type_group = ContentTypeGroup.create!(:name => "Blog")
6
+ CategoryType.create!(:name => "Blog Post")
7
+ ContentType.create!(:name => "Blog", :content_type_group => @content_type_group)
8
+ ContentType.create!(:name => "BlogPost", :content_type_group => @content_type_group)
9
+ ContentType.create!(:name => "BlogComment", :content_type_group => @content_type_group)
10
+ end
11
+
12
+ # Creates data specifically used on tests
13
+ def create_test_data
14
+ template = %q[<% page_title @page_title || @blog.name %><%= render :partial => "partials/blog_post", :collection => @blog_posts %>"]
15
+ @blog = Blog.create!(:name => "MyBlog", :template => template)
16
+
17
+ @category_type = CategoryType.find_by_name("Blog Post")
18
+
19
+ @stuff = Category.create!(:name => "Stuff", :category_type => @category_type)
20
+ @general = Category.create!(:name => "General", :category_type => @category_type)
21
+
22
+ opts = {:blog => @blog, :publish_on_save => true}
23
+ @first_post = Factory(:blog_post, opts.merge(:category => @general, :published_at => Time.utc(2008, 7, 5, 6), :name => "The first Post"))
24
+ @foo_post_1 = Factory(:blog_post, opts.merge(:category => @stuff, :published_at => Time.utc(2008, 7, 5, 12), :tag_list => "foo stuff"))
25
+ @foo_post_2 = Factory(:blog_post, opts.merge(:category => @general, :published_at => Time.utc(2008, 7, 21)))
26
+ @bar_post_1 = Factory(:blog_post, opts.merge(:category => @stuff, :published_at => Time.utc(2008, 9, 2), :tag_list => "foo stuff"))
27
+ @bar_post_2 = Factory(:blog_post, opts.merge(:category => @general, :published_at => Time.utc(2009, 3, 18)))
28
+
29
+ publish_all_pages
30
+ end
31
+
32
+ def setup_blog_stubs
33
+ Blog.any_instance.stubs(:reload_routes)
34
+ @section = Section.new
35
+ Section.stubs(:create! => @section)
36
+ @section.stubs(:groups => [], :save! => true)
37
+ Page.stubs(:create! => Page.new)
38
+ Page.any_instance.stubs(:create_connector)
39
+ end
40
+
41
+ def create_group
42
+ @group = Factory(:group, :name => "Test", :group_type => Factory(:group_type, :name => "CMS User", :cms_access => true))
43
+ @group.permissions << Factory(:permission, :name => "edit_content")
44
+ @group.permissions << Factory(:permission, :name => "publish_content")
45
+ end
46
+
47
+ def create_user(opts = {})
48
+ create_group
49
+ @group.permissions << Factory(:permission, :name => "administrate") if opts[:admin]
50
+ @user = Factory(:user, :groups => [@group])
51
+ end
52
+ end
data/test/factories.rb CHANGED
@@ -1,34 +1,3 @@
1
- Factory.define :category_type do |m|
2
- m.name "Blog Post"
3
- end
4
-
5
- Factory.define :group do |m|
6
- m.sequence(:name) {|n| "TestGroup#{n}" }
7
- m.association :group_type
8
- end
9
-
10
- Factory.define :group_type do |m|
11
- m.sequence(:name) {|n| "TestGroupType#{n}" }
12
- end
13
-
14
- Factory.define :permission do |m|
15
- m.name "edit_content"
16
- end
17
-
18
- Factory.define :user do |m|
19
- m.first_name "Test"
20
- m.last_name "User"
21
- m.sequence(:login) {|n| "test_#{n}" }
22
- m.email {|a| "#{a.login}@example.com" }
23
- m.password "password"
24
- m.password_confirmation {|a| a.password }
25
- end
26
-
27
- Factory.define :section do |m|
28
- m.name "A Section"
29
- m.path "/a-section"
30
- end
31
-
32
1
  Factory.define :blog do |m|
33
2
  m.sequence(:name) {|n| "TestBlog#{n}"}
34
3
  m.moderate_comments true
@@ -0,0 +1,63 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class BlogControllerTest < ActionController::TestCase
4
+ tests Cms::ContentController
5
+
6
+ def setup
7
+ seed_bcms_data
8
+ seed_blog_data
9
+ create_test_data
10
+ end
11
+
12
+ test "displays the list of blog posts" do
13
+ get :show, :path => ['myblog']
14
+
15
+ assert_response :success
16
+ assert_select ".blog_post", 5
17
+
18
+ assert_select "#blog_post_#{@first_post.id}" do
19
+ assert_select "h2 a", @first_post.name
20
+ assert_select "div.body", @first_post.body
21
+ assert_select "div.meta" do
22
+ assert_select "a", 2
23
+ end
24
+ end
25
+
26
+ assert_select "#blog_post_#{@foo_post_1.id}" do
27
+ assert_select "h2 a", @foo_post_1.name
28
+ assert_select "div.body", @foo_post_1.body
29
+ assert_select "div.meta .tags a", "foo"
30
+ assert_select "div.meta .tags a", "stuff"
31
+ end
32
+ end
33
+
34
+ test "list of blog posts by category" do
35
+ get :show, :path => ['myblog'], :category => 'General'
36
+ assert_response :success
37
+ assert_select ".blog_post", 3
38
+ end
39
+
40
+ test "list of blog posts by tag" do
41
+ get :show, :path => ['myblog'], :tag => 'foo'
42
+ assert_response :success
43
+ assert_select ".blog_post", 2
44
+ end
45
+
46
+ test "list_of_blog_posts_in_day" do
47
+ get :show, :path => ["myblog"], :year => 2008, :month => 7, :day => 5
48
+ assert_response :success
49
+ assert_select ".blog_post", 2
50
+ end
51
+
52
+ test "list_of_blog_posts_in_month" do
53
+ get :show, :path => ["myblog"], :year => 2008, :month => 7
54
+ assert_response :success
55
+ assert_select ".blog_post", 3
56
+ end
57
+
58
+ test "list_of_blog_posts_in_year" do
59
+ get :show, :path => ["myblog"], :year => 2008
60
+ assert_response :success
61
+ assert_select ".blog_post", 4
62
+ end
63
+ end
@@ -0,0 +1,31 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class BlogPostControllerTest < ActionController::TestCase
4
+ tests Cms::ContentController
5
+
6
+ def setup
7
+ seed_bcms_data
8
+ seed_blog_data
9
+ create_test_data
10
+ end
11
+
12
+ test "show_post" do
13
+ get :show, :path => ['myblog', 'post'], :year => 2008, :month => 07, :day => 05, :slug => 'the-first-post'
14
+ assert_response :success
15
+
16
+ assert_select "title", @first_post.name
17
+ assert_select ".blog_post", 1
18
+
19
+ assert_select "#blog_post_#{@first_post.id}" do
20
+ assert_select "h2 a", @first_post.name
21
+ assert_select "div.body", @first_post.body
22
+ assert_select "div.meta a", "General"
23
+ assert_select "div.meta a", "0 Comments"
24
+ end
25
+ end
26
+
27
+ test "non_existent_post_should_return_404" do
28
+ get :show, :path => ["myblog"], :year => 2005, :month => 6, :day => 14, :slug => "not-here"
29
+ assert_response :not_found
30
+ end
31
+ end
@@ -1,10 +1,11 @@
1
1
  require File.dirname(__FILE__) + '/../../test_helper'
2
2
 
3
3
  class Cms::BlogPostsControllerTest < ActionController::TestCase
4
+
4
5
  def setup
5
- setup_stubs
6
+ setup_blog_stubs
6
7
  ContentType.create!(:name => 'BlogPost', :group_name => 'Blog')
7
- login_as(_create_user)
8
+ login_as(create_user)
8
9
  end
9
10
 
10
11
  def test_access_denied_on_create_if_blog_not_user_editable
@@ -3,13 +3,13 @@ require File.dirname(__FILE__) + '/../../test_helper'
3
3
  class Cms::BlogsControllerTest < ActionController::TestCase
4
4
 
5
5
  def setup
6
- setup_stubs
6
+ setup_blog_stubs
7
7
  ContentType.create!(:name => 'Blog', :group_name => 'Blog')
8
8
  Factory(:blog)
9
9
  end
10
10
 
11
11
  test "should allow access to admin users" do
12
- login_as(_create_user(:admin => true))
12
+ login_as(create_user(:admin => true))
13
13
  get :index
14
14
  assert_response :success
15
15
  assert assigns(:blocks)
@@ -17,7 +17,7 @@ class Cms::BlogsControllerTest < ActionController::TestCase
17
17
  end
18
18
 
19
19
  test "should not allow access to non-admin users" do
20
- login_as(_create_user)
20
+ login_as(create_user)
21
21
  get :index
22
22
  assert_response :success
23
23
  assert_template("admin_only.html.erb")
data/test/test_helper.rb CHANGED
@@ -1,81 +1,18 @@
1
1
  ENV["RAILS_ENV"] = "test"
2
2
  require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
3
3
  require 'test_help'
4
- require 'factory_girl'
5
4
  require 'mocha'
5
+ require 'factory_girl'
6
+ require 'bcms_support'
7
+ require 'bcms_support/factories'
8
+ require 'blog_test_helper'
9
+ require 'test_logging'
6
10
 
7
11
  class ActiveSupport::TestCase
8
- require File.dirname(__FILE__) + '/test_logging'
9
- include TestLogging
10
- include Cms::DataLoader
12
+ include BcmsSupport::Test
13
+ include BlogTestHelper
14
+ include TestLogging
11
15
 
12
16
  self.use_transactional_fixtures = true
13
17
  self.use_instantiated_fixtures = false
14
-
15
- fixtures :all
16
-
17
- def create_baseline_data
18
- load_bcms_seed_data
19
-
20
- @blog = Blog.create!(:name => "MyBlog")
21
- @blog.publish!
22
- Page.all.each(&:publish)
23
- @category_type = Factory(:category_type)
24
-
25
- # For some reason this is necessary otherwise the relevant page routes aren't loaded when
26
- # the tests are run via "rake" (as opposed to running them directly). I don't know exactly
27
- # why this is the case.
28
- # ActionController::Routing::Routes.load!
29
-
30
- @stuff = Category.create!(:name => "Stuff", :category_type => @category_type)
31
- @general = Category.create!(:name => "General", :category_type => @category_type)
32
-
33
- @first_post = Factory(:blog_post, :blog => @blog, :category => @general,
34
- :published_at => Time.utc(2008, 7, 5, 6), :publish_on_save => true)
35
-
36
- @foo_post_1 = Factory(:blog_post, :blog => @blog, :category => @stuff,
37
- :published_at => Time.utc(2008, 7, 5, 12), :tag_list => "foo stuff", :publish_on_save => true)
38
-
39
- @foo_post_2 = Factory(:blog_post, :blog => @blog, :category => @general,
40
- :published_at => Time.utc(2008, 7, 21), :publish_on_save => true)
41
-
42
- @bar_post_1 = Factory(:blog_post, :blog => @blog, :category => @stuff,
43
- :published_at => Time.utc(2008, 9, 2), :tag_list => "foo stuff", :publish_on_save => true)
44
-
45
- @bar_post_2 = Factory(:blog_post, :blog => @blog, :category => @general,
46
- :published_at => Time.utc(2009, 3, 18), :publish_on_save => true)
47
- end
48
-
49
- def setup_stubs
50
- Blog.any_instance.stubs(:reload_routes)
51
- @section = Section.new
52
- Section.stubs(:create! => @section)
53
- @section.stubs(:groups => [], :save! => true)
54
- Page.stubs(:create! => Page.new)
55
- Page.any_instance.stubs(:create_connector)
56
- end
57
-
58
- def login_as(user)
59
- @request.session[:user_id] = user ? user.id : nil
60
- end
61
-
62
- private
63
- # TODO Find a better way to load this data
64
- def load_bcms_seed_data
65
- require File.join(Rails.root, 'db', 'migrate', '20081114172307_load_seed_data.rb')
66
- LoadSeedData.up
67
- end
68
-
69
- #Cms::DataLoader defines methods create_group and create_user
70
- def _create_group
71
- @group = Factory(:group, :name => "Test", :group_type => Factory(:group_type, :name => "CMS User", :cms_access => true))
72
- @group.permissions << Factory(:permission, :name => "edit_content")
73
- @group.permissions << Factory(:permission, :name => "publish_content")
74
- end
75
-
76
- def _create_user(opts = {})
77
- _create_group
78
- @group.permissions << Factory(:permission, :name => "administrate") if opts[:admin]
79
- @user = Factory(:user, :groups => [@group])
80
- end
81
18
  end
@@ -3,7 +3,7 @@ require File.dirname(__FILE__) + "/../test_helper"
3
3
  class BlogCommentTest < ActiveSupport::TestCase
4
4
 
5
5
  def setup
6
- setup_stubs
6
+ setup_blog_stubs
7
7
  end
8
8
 
9
9
  test "crates a valid instance" do
@@ -3,7 +3,7 @@ require 'test_helper'
3
3
  class BlogObserverTest < ActiveSupport::TestCase
4
4
 
5
5
  def setup
6
- setup_stubs
6
+ setup_blog_stubs
7
7
  [Section, PageRoute, Page].each {|klass| klass.stubs(:find_by_name)}
8
8
  BlogPostPortlet.stubs(:create!)
9
9
  @blog = Factory(:blog, :name => 'TestBlog')
@@ -3,7 +3,7 @@ require File.dirname(__FILE__) + "/../test_helper"
3
3
  class BlogPostTest < ActiveSupport::TestCase
4
4
 
5
5
  def setup
6
- setup_stubs
6
+ setup_blog_stubs
7
7
  @post = Factory(:blog_post, :name => "This is the first Post")
8
8
  end
9
9
 
@@ -3,7 +3,7 @@ require File.dirname(__FILE__) + "/../test_helper"
3
3
  class BlogTest < ActiveSupport::TestCase
4
4
 
5
5
  def setup
6
- setup_stubs
6
+ setup_blog_stubs
7
7
  @blog = Factory(:blog, :name => 'TestBlog')
8
8
  end
9
9
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bcms_blog
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 17
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
8
  - 1
9
- - 0
10
- version: 1.1.0
9
+ - 1
10
+ version: 1.1.1
11
11
  platform: ruby
12
12
  authors:
13
13
  - BrowserMedia
@@ -15,10 +15,23 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-07-02 00:00:00 -05:00
18
+ date: 2010-07-11 00:00:00 -05:00
19
19
  default_executable:
20
- dependencies: []
21
-
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: bcms_support
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ type: :development
34
+ version_requirements: *id001
22
35
  description: The Blog Module for BrowserCMS
23
36
  email: github@browsermedia.com
24
37
  executables: []
@@ -53,8 +66,8 @@ files:
53
66
  - app/views/cms/blogs/admin_only.html.erb
54
67
  - app/views/cms/blogs/render.html.erb
55
68
  - app/views/feeds/index.rss.builder
69
+ - app/views/layouts/templates/default.html.erb
56
70
  - app/views/partials/_blog_post.html.erb
57
- - app/views/partials/_blog_post.html.haml
58
71
  - app/views/portlets/blog_post/_form.html.erb
59
72
  - app/views/portlets/blog_post/render.html.erb
60
73
  - app/views/portlets/blog_posts/_form.html.erb
@@ -72,12 +85,12 @@ files:
72
85
  - rails/init.rb
73
86
  - LICENSE.txt
74
87
  - README.markdown
88
+ - test/blog_test_helper.rb
75
89
  - test/factories.rb
76
- - test/functional/blog_post_test.rb
77
- - test/functional/blog_test.rb
90
+ - test/functional/blog_controller_test.rb
91
+ - test/functional/blog_post_controller_test.rb
78
92
  - test/functional/cms/blog_posts_controller_test.rb
79
93
  - test/functional/cms/blogs_controller_test.rb
80
- - test/functional/feeds_controller_test.rb
81
94
  - test/performance/browsing_test.rb
82
95
  - test/test_helper.rb
83
96
  - test/test_logging.rb
@@ -121,12 +134,12 @@ signing_key:
121
134
  specification_version: 3
122
135
  summary: The Blog Module for BrowserCMS
123
136
  test_files:
137
+ - test/blog_test_helper.rb
124
138
  - test/factories.rb
125
- - test/functional/blog_post_test.rb
126
- - test/functional/blog_test.rb
139
+ - test/functional/blog_controller_test.rb
140
+ - test/functional/blog_post_controller_test.rb
127
141
  - test/functional/cms/blog_posts_controller_test.rb
128
142
  - test/functional/cms/blogs_controller_test.rb
129
- - test/functional/feeds_controller_test.rb
130
143
  - test/performance/browsing_test.rb
131
144
  - test/test_helper.rb
132
145
  - test/test_logging.rb
@@ -1,91 +0,0 @@
1
- %style
2
- :sass
3
- .blog_post.first
4
- h2, h2 a
5
- font: normal 30px/28px 'arial black', arial, sans-serif !important
6
- border-bottom: 1px solid #ccc
7
-
8
- .blog_post
9
- border: 0px solid gray
10
- margin-bottom: 20px
11
-
12
- h2
13
- margin-bottom: 0
14
- h2, h2 a
15
- font: normal 20px/23px 'arial black', arial, sans-serif !important
16
- text-decoration: none !important
17
- h2 a:hover
18
- text-decoration: underline !important
19
-
20
- .image
21
- float: left
22
- border: 1px solid #ccc
23
- margin: 10px
24
- margin-top: 0
25
-
26
- .date
27
- color: #666
28
- .read_more
29
- font-weight: bold
30
-
31
- .comment + .comment
32
- border-top: 1px dashed #ccc
33
-
34
- .clear
35
- clear: both
36
-
37
- :ruby
38
- # _counter is defined only if we pass :collection to the partial
39
- if defined?(blog_post_counter)
40
- showing_individual_post = false
41
- else
42
- showing_individual_post = true
43
- blog_post_counter = 0
44
- end
45
-
46
- if blog_post_counter == 0
47
- max_width = 250
48
- css_class = 'first'
49
- else
50
- max_width = 75
51
- css_class = ''
52
- end
53
-
54
- .blog_post.clear{:id => "blog_post_#{blog_post.id}", :class => css_class}
55
- - if blog_post.attachment
56
- -# .image= image_tag_with_max_size blog_post.attachment.file_path, blog_post.attachment.full_file_location, :width => max_width
57
- .image= image_tag blog_post.attachment.file_path
58
-
59
- %h2= link_to h(blog_post.name), href = _blog_post_path(blog_post)
60
-
61
- .date= blog_post.published_at.to_s(:long)
62
-
63
- .body
64
- - if showing_individual_post or blog_post.summary.blank?
65
- = blog_post.body
66
- - else
67
- = blog_post.summary
68
- %p.read_more= link_to 'Read More »', href
69
-
70
- - if showing_individual_post || blog_post_counter == 0
71
- .meta
72
- - unless blog_post.category_id.blank?
73
- Posted in #{link_to h(blog_post.category_name), _blog_path(blog_post.blog, 'posts_in_category', :category => blog_post.category_name)}
74
- %strong |
75
- - if blog_post.tags.any?
76
- Tags:
77
- %span.tags
78
- = blog_post.tags.map{|t| link_to(h(t.name), _blog_path(blog_post.blog, 'posts_with_tag', :tag => t.name)) }.join(", ")
79
- %strong |
80
- = link_to h(pluralize(blog_post.comments_count, "Comment")), "#{_blog_post_path(blog_post)}#comments"
81
- %br.clear/
82
-
83
- - comments = blog_post.comments.reject(&:new_record?)
84
- - if showing_individual_post and comments.any?
85
- %h2 Comments
86
- - comments.each_with_index do |comment, i|
87
- %div{:class => "comment #{'first' if i == 0}"}
88
- = h comment.body
89
- %p
90
- \&mdash;#{comment.url.present? ? link_to(h(comment.author), comment.url) : h(comment.author)}
91
-
@@ -1,37 +0,0 @@
1
- require File.dirname(__FILE__) + '/../test_helper'
2
-
3
- class BlogPostTest < ActionController::TestCase
4
- tests Cms::ContentController
5
-
6
- def setup
7
- create_baseline_data
8
- end
9
-
10
- =begin
11
- def test_show_post
12
- get :show, :path => ["myblog"],
13
- :year => 2008,
14
- :month => 07,
15
- :day => 05
16
- log @response.body
17
- assert_response :success
18
- assert_select "title", @first_post.name
19
- assert_select ".blog_post", 1
20
-
21
- assert_select "#blog_post_#{@first_post.id}" do
22
- assert_select "h2 a", @first_post.name
23
- assert_select "p.body", @first_post.body
24
- assert_select "p.meta a", "General"
25
- assert_select "p.meta a", "0 Comments"
26
- end
27
- end
28
- =end
29
-
30
- def test_non_existent_slug_should_return_404
31
- get :show, :path => ["blog", "post"],
32
- :year => 2005, :month => 6, :day => 14,
33
- :slug => "not-here"
34
- assert_response :not_found
35
- end
36
-
37
- end
@@ -1,67 +0,0 @@
1
- require File.dirname(__FILE__) + '/../test_helper'
2
-
3
- class BlogTest < ActionController::TestCase
4
- tests Cms::ContentController
5
-
6
- def setup
7
- create_baseline_data
8
- end
9
-
10
- =begin
11
- test "displays the list of blog posts" do
12
- get :show, :path => ['myblog']
13
- log @response.body
14
- assert_response :success
15
- assert_select ".blog_post", 5
16
-
17
- assert_select "#blog_post_#{@first_post.id}" do
18
- assert_select "h2 a", @first_post.name
19
- assert_select "p.body", @first_post.body
20
- assert_select "p.meta a", "General"
21
- assert_select "p.meta a", "0 Comments"
22
- end
23
-
24
- assert_select "#blog_post_#{@foo_post_1.id}" do
25
- assert_select "h2 a", @foo_post_1.name
26
- assert_select "p.body", @foo_post_1.body
27
- assert_select "p.meta .tags a", "foo"
28
- assert_select "p.meta .tags a", "stuff"
29
- end
30
- end
31
-
32
- def test_list_of_tagged_blog_posts
33
- get :show, :category => "General"
34
- puts @response.body
35
- assert_response :success
36
- assert_select ".blog_post", 3
37
- end
38
-
39
- def test_list_of_categorized_blog_posts
40
- get :show, :tag => "foo"
41
- assert_response :success
42
- assert_select ".blog_post", 2
43
- end
44
-
45
- def test_list_of_blog_posts_in_day
46
- get :show, :path => ["blog", "posts_in_day"],
47
- :year => 2008, :month => 7, :day => 5
48
- assert_response :success
49
- assert_select ".blog_post", 2
50
- end
51
-
52
- def test_list_of_blog_posts_in_month
53
- get :show, :path => ["blog", "posts_in_month"],
54
- :year => 2008, :month => 7
55
- assert_response :success
56
- assert_select ".blog_post", 3
57
- end
58
-
59
- def test_list_of_blog_posts_in_year
60
- get :show, :path => ["blog", "posts_in_year"],
61
- :year => 2008
62
- assert_response :success
63
- assert_select ".blog_post", 4
64
- end
65
- =end
66
-
67
- end
@@ -1,8 +0,0 @@
1
- require 'test_helper'
2
-
3
- class FeedsControllerTest < ActionController::TestCase
4
- # Replace this with your real tests.
5
- test "the truth" do
6
- assert true
7
- end
8
- end