comfy_blog 0.0.0 → 0.1.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/README.md +48 -6
- data/VERSION +1 -1
- data/app/controllers/admin/blog/base_controller.rb +3 -0
- data/app/controllers/{blog/admin → admin/blog}/comments_controller.rb +1 -1
- data/app/controllers/{blog/admin → admin/blog}/posts_controller.rb +7 -7
- data/app/controllers/admin/blog/tags_controller.rb +56 -0
- data/app/controllers/blog/comments_controller.rb +35 -0
- data/app/controllers/blog/posts_controller.rb +8 -1
- data/app/helpers/blog/application_helper.rb +5 -2
- data/app/models/blog/comment.rb +11 -1
- data/app/models/blog/post.rb +8 -4
- data/app/models/blog/tag.rb +3 -3
- data/app/models/blog/tagging.rb +1 -1
- data/app/views/{blog/admin → admin/blog}/_html_head.html.erb +0 -0
- data/app/views/admin/blog/_navigation.html.erb +2 -0
- data/app/views/{blog/admin → admin/blog}/comments/_comment.html.erb +2 -2
- data/app/views/{blog/admin → admin/blog}/comments/destroy.js.erb +0 -0
- data/app/views/{blog/admin → admin/blog}/comments/index.html.erb +3 -1
- data/app/views/{blog/admin → admin/blog}/comments/publish.js.erb +0 -0
- data/app/views/{blog/admin → admin/blog}/posts/_form.html.erb +11 -0
- data/app/views/{blog/admin → admin/blog}/posts/_post.html.erb +4 -4
- data/app/views/{blog/admin → admin/blog}/posts/edit.html.erb +0 -0
- data/app/views/admin/blog/posts/index.html.erb +11 -0
- data/app/views/{blog/admin → admin/blog}/posts/new.html.erb +0 -0
- data/app/views/admin/blog/tags/_form.html.erb +20 -0
- data/app/views/admin/blog/tags/_tag.html.erb +16 -0
- data/app/views/admin/blog/tags/edit.html.erb +5 -0
- data/app/views/admin/blog/tags/index.html.erb +9 -0
- data/app/views/admin/blog/tags/new.html.erb +5 -0
- data/app/views/blog/comments/_comment.html.erb +4 -0
- data/app/views/blog/comments/_form.html.erb +6 -0
- data/app/views/blog/comments/create.js.erb +6 -0
- data/app/views/blog/posts/_post.html.erb +2 -12
- data/app/views/blog/posts/index.rss.builder +18 -0
- data/app/views/blog/posts/show.html.erb +9 -1
- data/comfy_blog.gemspec +33 -18
- data/config/initializers/comfy_blog.rb +7 -0
- data/config/initializers/wrap_parameters.rb +1 -1
- data/config/routes.rb +9 -7
- data/db/migrate/01_create_comfy_blog.rb +4 -5
- data/db/schema.rb +8 -9
- data/lib/comfy_blog/configuration.rb +20 -6
- data/lib/comfy_blog/engine.rb +6 -6
- data/lib/comfy_blog.rb +1 -1
- data/lib/generators/README +6 -6
- data/lib/generators/blog_generator.rb +3 -3
- data/lib/tasks/comfy_blog.rake +4 -0
- data/test/fixtures/blog/tags.yml +5 -0
- data/test/functional/{blog/admin → admin/blog}/comments_controller_test.rb +1 -1
- data/test/functional/{blog/admin → admin/blog}/posts_controller_test.rb +6 -8
- data/test/functional/admin/blog/tags_controller_test.rb +88 -0
- data/test/functional/blog/comments_controller_test.rb +78 -0
- data/test/functional/blog/posts_controller_test.rb +8 -0
- data/test/integration/routing_test.rb +26 -0
- data/test/test_helper.rb +9 -6
- data/test/unit/comment_test.rb +13 -1
- data/test/unit/configuration_test.rb +8 -5
- data/test/unit/post_test.rb +19 -0
- data/test/unit/tag_test.rb +2 -1
- metadata +42 -27
- data/app/controllers/blog/admin/base_controller.rb +0 -3
- data/app/views/blog/admin/_navigation.html.erb +0 -1
- data/app/views/blog/admin/posts/index.html.erb +0 -9
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
|
-
# ComfyBlog
|
1
|
+
# ComfyBlog [](http://travis-ci.org/comfy/comfy-blog) [](https://gemnasium.com/comfy/comfy-blog)
|
2
2
|
|
3
|
-
ComfyBlog is an simple blog management engine for Rails 3.1 apps.
|
3
|
+
ComfyBlog is an simple blog management engine for Rails 3.1 apps. It also integrates with [ComfortableMexicanSofa](https://github.com/comfy/comfortable-mexican-sofa) CMS Engine
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
@@ -13,11 +13,53 @@ Then from the Rails project's root run:
|
|
13
13
|
bundle install
|
14
14
|
rails g blog
|
15
15
|
rake db:migrate
|
16
|
+
|
17
|
+
Now you should be able to go to `/admin/blog/posts` and add new blog posts.
|
18
|
+
|
19
|
+
## Configuration
|
20
|
+
|
21
|
+
First thing you want to do is change title and description of the blog.
|
22
|
+
For that you need to adjust `comfy_blog` initializer.
|
23
|
+
|
24
|
+
config.title = 'ComfyBlog'
|
25
|
+
config.description = 'A Simple Blog'
|
26
|
+
|
27
|
+
You'll notice that you can access blog's admin area without any type of authentication.
|
28
|
+
This is because ComfyBlog doesn't deal with users, it only knows how to save and show
|
29
|
+
blog posts. You probably want to put blog's admin controllers behind your controller
|
30
|
+
that handles authentication.
|
31
|
+
|
32
|
+
config.admin_controller = 'YourAdminBaseController'
|
33
|
+
|
34
|
+
If you want blog's controller paths to match your admin path, like `cms-admin`. Change
|
35
|
+
the following configuration.
|
36
|
+
|
37
|
+
config.admin_route_prefix = 'cms-admin'
|
38
|
+
|
39
|
+
By default blog posts are served from the root. If you want to section off blog content
|
40
|
+
to a `/blog` path. Adjust this configuration:
|
41
|
+
|
42
|
+
config.public_route_prefix = 'blog'
|
43
|
+
|
44
|
+
Provided views to display blog posts are pretty basic and you'll probably want to change
|
45
|
+
them right away. You can change the layout from the default `application` to something else.
|
46
|
+
|
47
|
+
config.public_layout = 'blog'
|
48
|
+
|
49
|
+
Since ComfyBlog is an engine, it allows you to completely overwrite views. It's enough to
|
50
|
+
create `app/views/blog/posts/index.html.erb` (could be HAML or whatever you want) and structure
|
51
|
+
it in any way you want. There's also `show.html.erb` and `_post.html.erb` available.
|
52
|
+
|
53
|
+
You can control number of posts per page by adjusting this config:
|
54
|
+
|
55
|
+
config.posts_per_page = 10
|
56
|
+
|
57
|
+
Posted comments will be sitting in the queue waiting to be published. You can auto publish them
|
58
|
+
by setting this to `true`:
|
16
59
|
|
17
|
-
|
60
|
+
config.auto_publish_comments = true
|
18
61
|
|
19
|
-
TODO
|
20
62
|
|
21
|
-
|
63
|
+
ComfyBlog is released under the [MIT license](https://github.com/comfy/comfy-blog/raw/master/LICENSE)
|
22
64
|
|
23
|
-
Copyright
|
65
|
+
Copyright 2012 Oleg Khabarov, [The Working Group Inc](http://www.twg.ca)
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.1.0
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class Blog::
|
1
|
+
class Admin::Blog::PostsController < Admin::Blog::BaseController
|
2
2
|
|
3
3
|
before_filter :build_post, :only => [:new, :create]
|
4
4
|
before_filter :load_post, :only => [:edit, :update, :destroy]
|
@@ -13,11 +13,11 @@ class Blog::Admin::PostsController < Blog::Admin::BaseController
|
|
13
13
|
|
14
14
|
def create
|
15
15
|
@post.save!
|
16
|
-
flash
|
17
|
-
|
16
|
+
flash[:notice] = 'Blog Post created'
|
17
|
+
redirect_to :action => :edit, :id => @post
|
18
18
|
|
19
19
|
rescue ActiveRecord::RecordInvalid
|
20
|
-
flash
|
20
|
+
flash[:error] = 'Failed to create Blog Post'
|
21
21
|
render :action => :new
|
22
22
|
end
|
23
23
|
|
@@ -27,11 +27,11 @@ class Blog::Admin::PostsController < Blog::Admin::BaseController
|
|
27
27
|
|
28
28
|
def update
|
29
29
|
@post.update_attributes!(params[:post])
|
30
|
-
flash
|
31
|
-
|
30
|
+
flash[:notice] = 'Blog Post updated'
|
31
|
+
redirect_to :action => :edit, :id => @post
|
32
32
|
|
33
33
|
rescue ActiveRecord::RecordInvalid
|
34
|
-
flash
|
34
|
+
flash[:error] = 'Failed to update Blog Post'
|
35
35
|
render :action => :edit
|
36
36
|
end
|
37
37
|
|
@@ -0,0 +1,56 @@
|
|
1
|
+
class Admin::Blog::TagsController < Admin::Blog::BaseController
|
2
|
+
|
3
|
+
before_filter :build_tag, :only => [:new, :create]
|
4
|
+
before_filter :load_tag, :only => [:edit, :update, :destroy]
|
5
|
+
|
6
|
+
def index
|
7
|
+
@tags = Blog::Tag.order('is_category DESC', :name)
|
8
|
+
end
|
9
|
+
|
10
|
+
def edit
|
11
|
+
render
|
12
|
+
end
|
13
|
+
|
14
|
+
def new
|
15
|
+
render
|
16
|
+
end
|
17
|
+
|
18
|
+
def update
|
19
|
+
@tag.update_attributes!(params[:tag])
|
20
|
+
flash[:notice] = 'Blog Tag updated'
|
21
|
+
redirect_to :action => :index
|
22
|
+
|
23
|
+
rescue ActiveRecord::RecordInvalid
|
24
|
+
flash[:error] = 'Failed to update Blog Tag'
|
25
|
+
render :action => :edit
|
26
|
+
end
|
27
|
+
|
28
|
+
def create
|
29
|
+
@tag.save!
|
30
|
+
flash[:notice] = 'Blog Tag created'
|
31
|
+
redirect_to :action => :index
|
32
|
+
|
33
|
+
rescue ActiveRecord::RecordInvalid
|
34
|
+
flash[:error] = 'Failed to create Blog Tag'
|
35
|
+
render :action => :new
|
36
|
+
end
|
37
|
+
|
38
|
+
def destroy
|
39
|
+
@tag.destroy
|
40
|
+
flash[:notice] = 'Blog Tag removed'
|
41
|
+
redirect_to :action => :index
|
42
|
+
end
|
43
|
+
|
44
|
+
protected
|
45
|
+
|
46
|
+
def build_tag
|
47
|
+
@tag = Blog::Tag.new(params[:tag])
|
48
|
+
end
|
49
|
+
|
50
|
+
def load_tag
|
51
|
+
@tag = Blog::Tag.find(params[:id])
|
52
|
+
rescue ActiveRecord::RecordNotFound
|
53
|
+
flash[:error] = 'Blog Tag not found'
|
54
|
+
redirect_to :action => :index
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
class Blog::CommentsController < ApplicationController
|
2
|
+
|
3
|
+
def create
|
4
|
+
@post = Blog::Post.published.find(params[:post_id])
|
5
|
+
@comment = @post.comments.new(params[:comment])
|
6
|
+
@comment.save!
|
7
|
+
|
8
|
+
respond_to do |f|
|
9
|
+
f.html do
|
10
|
+
flash[:notice] = 'Comment created'
|
11
|
+
redirect_to dated_blog_post_path(@post.year, @post.month, @post.slug)
|
12
|
+
end
|
13
|
+
f.js
|
14
|
+
end
|
15
|
+
|
16
|
+
rescue ActiveRecord::RecordNotFound
|
17
|
+
respond_to do |f|
|
18
|
+
f.html do
|
19
|
+
flash[:error] = 'Blog Post not found'
|
20
|
+
redirect_to blog_posts_path
|
21
|
+
end
|
22
|
+
f.js do
|
23
|
+
render :nothing => true, :status => 404
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
rescue ActiveRecord::RecordInvalid
|
28
|
+
respond_to do |f|
|
29
|
+
f.html do
|
30
|
+
render 'blog/posts/show'
|
31
|
+
end
|
32
|
+
f.js
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -14,7 +14,14 @@ class Blog::PostsController < ApplicationController
|
|
14
14
|
Blog::Post.published
|
15
15
|
end
|
16
16
|
|
17
|
-
|
17
|
+
respond_to do |f|
|
18
|
+
f.html do
|
19
|
+
@posts = scope.paginate :per_page => ComfyBlog.config.posts_per_page, :page => params[:page]
|
20
|
+
end
|
21
|
+
f.rss do
|
22
|
+
@posts = scope.limit(ComfyBlog.config.posts_per_page)
|
23
|
+
end
|
24
|
+
end
|
18
25
|
end
|
19
26
|
|
20
27
|
def show
|
@@ -9,8 +9,11 @@ module Blog::ApplicationHelper
|
|
9
9
|
)
|
10
10
|
end
|
11
11
|
|
12
|
-
|
13
|
-
|
12
|
+
# URL helpers for blog_post_(path/url)
|
13
|
+
%w(path url).each do |type|
|
14
|
+
define_method "blog_post_#{type}" do |post|
|
15
|
+
send("dated_blog_post_#{type}", post.year, post.month, post.slug)
|
16
|
+
end
|
14
17
|
end
|
15
18
|
|
16
19
|
end
|
data/app/models/blog/comment.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
class Blog::Comment < ActiveRecord::Base
|
2
2
|
|
3
|
-
|
3
|
+
self.table_name = :blog_comments
|
4
4
|
|
5
5
|
attr_accessible :author,
|
6
6
|
:email,
|
@@ -8,6 +8,9 @@ class Blog::Comment < ActiveRecord::Base
|
|
8
8
|
|
9
9
|
# -- Relationships --------------------------------------------------------
|
10
10
|
belongs_to :post
|
11
|
+
|
12
|
+
# -- Callbacks ------------------------------------------------------------
|
13
|
+
before_create :set_publish
|
11
14
|
|
12
15
|
# -- Validations ----------------------------------------------------------
|
13
16
|
validates :post_id, :content, :author, :email,
|
@@ -18,4 +21,11 @@ class Blog::Comment < ActiveRecord::Base
|
|
18
21
|
# -- Scopes ---------------------------------------------------------------
|
19
22
|
scope :published, where(:is_published => true)
|
20
23
|
|
24
|
+
protected
|
25
|
+
|
26
|
+
def set_publish
|
27
|
+
self.is_published = ComfyBlog.config.auto_publish_comments
|
28
|
+
return
|
29
|
+
end
|
30
|
+
|
21
31
|
end
|
data/app/models/blog/post.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
class Blog::Post < ActiveRecord::Base
|
2
2
|
|
3
|
-
|
3
|
+
self.table_name = :blog_posts
|
4
4
|
|
5
5
|
# -- Attributes -----------------------------------------------------------
|
6
6
|
attr_accessor :tag_names,
|
@@ -46,6 +46,10 @@ class Blog::Post < ActiveRecord::Base
|
|
46
46
|
@tag_names ||= self.tags.tags.collect(&:name).join(', ')
|
47
47
|
end
|
48
48
|
|
49
|
+
def category_ids
|
50
|
+
@category_ids ||= self.tags.categories.inject({}){|h, c| h[c.id.to_s] = '1'; h}
|
51
|
+
end
|
52
|
+
|
49
53
|
protected
|
50
54
|
|
51
55
|
def set_slug
|
@@ -61,16 +65,16 @@ protected
|
|
61
65
|
return unless tag_names
|
62
66
|
self.taggings.for_tags.destroy_all
|
63
67
|
self.tag_names.split(',').map{ |t| t.strip }.uniq.each do |tag_name|
|
64
|
-
self.tags << Blog::Tag.find_or_create_by_name(tag_name)
|
68
|
+
self.tags << Blog::Tag.find_or_create_by_name(tag_name) rescue nil
|
65
69
|
end
|
66
70
|
end
|
67
71
|
|
68
72
|
def sync_categories
|
69
|
-
|
73
|
+
self.category_ids.each do |category_id, flag|
|
70
74
|
case flag.to_i
|
71
75
|
when 1
|
72
76
|
if category = Blog::Tag.categories.find_by_id(category_id)
|
73
|
-
category.taggings.create(:post => self)
|
77
|
+
category.taggings.create(:post => self) rescue nil
|
74
78
|
end
|
75
79
|
when 0
|
76
80
|
self.taggings.for_categories.where(:tag_id => category_id).destroy_all
|
data/app/models/blog/tag.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
class Blog::Tag < ActiveRecord::Base
|
2
2
|
|
3
|
-
|
3
|
+
self.table_name = :blog_tags
|
4
4
|
|
5
5
|
# -- Relationships --------------------------------------------------------
|
6
6
|
has_many :taggings, :dependent => :destroy
|
7
7
|
has_many :posts, :through => :taggings
|
8
8
|
|
9
9
|
# -- Validations ----------------------------------------------------------
|
10
|
-
validates_uniqueness_of :name
|
10
|
+
validates_uniqueness_of :name, :case_sensitive => false
|
11
11
|
|
12
12
|
# -- Callbacks ------------------------------------------------------------
|
13
13
|
before_validation :strip_name
|
@@ -19,7 +19,7 @@ class Blog::Tag < ActiveRecord::Base
|
|
19
19
|
protected
|
20
20
|
|
21
21
|
def strip_name
|
22
|
-
self.name.strip
|
22
|
+
self.name = self.name.strip if self.name
|
23
23
|
end
|
24
24
|
|
25
25
|
end
|
data/app/models/blog/tagging.rb
CHANGED
File without changes
|
@@ -3,9 +3,9 @@
|
|
3
3
|
<div class='icon' style="background-image:url(http://www.gravatar.com/avatar/<%=Digest::MD5.hexdigest(comment.email.downcase)%>?s=28&d=identicon)"></div>
|
4
4
|
<div class='action_links'>
|
5
5
|
<% unless comment.is_published? %>
|
6
|
-
<%= link_to 'Publish',
|
6
|
+
<%= link_to 'Publish', publish_admin_blog_comment_path(comment), :remote => true, :method => :put %>
|
7
7
|
<% end %>
|
8
|
-
<%= link_to 'Delete',
|
8
|
+
<%= link_to 'Delete', admin_blog_comment_path(comment), :method => 'delete', :confirm => 'Are you sure?' %>
|
9
9
|
</div>
|
10
10
|
<div class='label'>
|
11
11
|
<div class='sublabel'>
|
File without changes
|
File without changes
|
@@ -1,5 +1,16 @@
|
|
1
1
|
<%= form.text_field :title %>
|
2
2
|
<%= form.text_field :author %>
|
3
|
+
<% if Blog::Tag.categories.present? %>
|
4
|
+
<%= form.simple_field 'Categories' do %>
|
5
|
+
<% Blog::Tag.categories.each do |category| %>
|
6
|
+
<%= hidden_field_tag "post[category_ids][#{category.id}]", 0, :id => nil %>
|
7
|
+
<label>
|
8
|
+
<%= check_box_tag "post[category_ids][#{category.id}]", 1, @post.category_ids[category.id.to_s].to_i == 1, :id => nil %>
|
9
|
+
<%= category.name %>
|
10
|
+
</label>
|
11
|
+
<% end %>
|
12
|
+
<% end %>
|
13
|
+
<% end %>
|
3
14
|
<%= form.text_field :tag_names, :label => 'Tags' %>
|
4
15
|
<%= form.text_area :content, :class => 'rich_text' %>
|
5
16
|
<%= form.text_field :excerpt %>
|
@@ -1,12 +1,12 @@
|
|
1
1
|
<li>
|
2
2
|
<div class='item'>
|
3
3
|
<div class='action_links'>
|
4
|
-
<%= link_to pluralize(post.comments.count, 'comment'),
|
5
|
-
<%= link_to 'Edit',
|
6
|
-
<%= link_to 'Delete',
|
4
|
+
<%= link_to pluralize(post.comments.count, 'comment'), admin_blog_post_comments_path(post) %>
|
5
|
+
<%= link_to 'Edit', edit_admin_blog_post_path(post) %>
|
6
|
+
<%= link_to 'Delete', admin_blog_post_path(post), :method => :delete, :confirm => 'Are you sure?' %>
|
7
7
|
</div>
|
8
8
|
<div class='label'>
|
9
|
-
<%= link_to post.title.titleize,
|
9
|
+
<%= link_to post.title.titleize, edit_admin_blog_post_path(post) %>
|
10
10
|
<div class='sublabel'>
|
11
11
|
Published <%= time_ago_in_words(post.updated_at) %> ago
|
12
12
|
by <strong><%= post.author %></strong>
|
File without changes
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<%= link_to 'Add new blog post', new_admin_blog_post_path, :class => 'big button' %>
|
2
|
+
|
3
|
+
<h1>Blog Posts</h1>
|
4
|
+
|
5
|
+
<ul class='list posts'>
|
6
|
+
<% @posts.each do |post| %>
|
7
|
+
<%= render :partial => 'post', :object => post %>
|
8
|
+
<% end %>
|
9
|
+
</ul>
|
10
|
+
|
11
|
+
<%= will_paginate @posts %>
|
File without changes
|
@@ -0,0 +1,20 @@
|
|
1
|
+
<%= form.text_field :name %>
|
2
|
+
<%= form.check_box :is_category %>
|
3
|
+
|
4
|
+
<% if defined?(ComfortableMexicanSofa) %>
|
5
|
+
<%= form.simple_field nil, nil, :class => 'submit_element' do %>
|
6
|
+
<% if @tag.is_category %>
|
7
|
+
<%= form.submit @tag.new_record?? 'Create category' : 'Update category', :disable_builder => true %>
|
8
|
+
<% else %>
|
9
|
+
<%= form.submit @tag.new_record?? 'Create tag' : 'Update tag', :disable_builder => true %>
|
10
|
+
<% end %>
|
11
|
+
<% end %>
|
12
|
+
|
13
|
+
<% else %>
|
14
|
+
<% if @tag.is_category %>
|
15
|
+
<%= form.submit @tag.new_record?? 'Create category' : 'Update category' %>
|
16
|
+
<% else %>
|
17
|
+
<%= form.submit @tag.new_record?? 'Create tag' : 'Update tag' %>
|
18
|
+
<% end %>
|
19
|
+
<% end %>
|
20
|
+
|
@@ -0,0 +1,16 @@
|
|
1
|
+
<li>
|
2
|
+
<div class='item'>
|
3
|
+
<div class='action_links'>
|
4
|
+
<%= link_to 'Edit', :action => :edit, :id => tag %>
|
5
|
+
<%= link_to 'Delete', {:action => :destroy, :id => tag}, :method => :delete, :confirm => 'Are you sure you want to delete this tag?' %>
|
6
|
+
</div>
|
7
|
+
<div class='label'>
|
8
|
+
<%= link_to tag.name, :action => :edit, :id => tag %>
|
9
|
+
<div class='sublabel'>
|
10
|
+
<% if tag.is_category? %>
|
11
|
+
Category
|
12
|
+
<% end %>
|
13
|
+
</div>
|
14
|
+
</div>
|
15
|
+
</div>
|
16
|
+
</li>
|
@@ -0,0 +1,6 @@
|
|
1
|
+
<% if @comment.new_record? %>
|
2
|
+
$('form#comment').replaceWith('<%= escape_javascript(render(:partial => "form")) %>');
|
3
|
+
<% else %>
|
4
|
+
$('form#comment')[0].reset();
|
5
|
+
$('#comments').append('<%= escape_javascript(render(:partial => "comment", :object => @comment)) %>');
|
6
|
+
<% end %>
|
@@ -1,18 +1,8 @@
|
|
1
1
|
<div class='post'>
|
2
|
-
<h1><%= post.title %></h1>
|
2
|
+
<h1><%= @post ? post.title : link_to(post.title, blog_post_path(post))%></h1>
|
3
3
|
<div class='author'><%= post.author %></div>
|
4
4
|
<div class='date'><%= post.created_at %></div>
|
5
5
|
<div class='content'>
|
6
6
|
<%= post.content.html_safe %>
|
7
7
|
</div>
|
8
|
-
|
9
|
-
|
10
|
-
<% if @post %>
|
11
|
-
<div class='comments'>
|
12
|
-
<% @post.comments.each do |comment| %>
|
13
|
-
<div class='comment'>
|
14
|
-
<%= comment.content %>
|
15
|
-
</div>
|
16
|
-
<% end %>
|
17
|
-
</div>
|
18
|
-
<% end %>
|
8
|
+
</div>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
xml.instruct! :xml, :version => '1.0'
|
2
|
+
xml.rss :version => '2.0' do
|
3
|
+
xml.channel do
|
4
|
+
xml.title ComfyBlog.config.title
|
5
|
+
xml.description ComfyBlog.config.description
|
6
|
+
xml.link request.url
|
7
|
+
|
8
|
+
@posts.each do |post|
|
9
|
+
xml.item do
|
10
|
+
xml.title post.title
|
11
|
+
xml.description post.content
|
12
|
+
xml.pubDate post.created_at.to_s(:rfc822)
|
13
|
+
xml.link blog_post_url(post)
|
14
|
+
xml.guid blog_post_url(post)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -1 +1,9 @@
|
|
1
|
-
<%= render :partial => 'post', :object => @post %>
|
1
|
+
<%= render :partial => 'blog/posts/post', :object => @post %>
|
2
|
+
|
3
|
+
<div id='comments'>
|
4
|
+
<% @post.comments.each do |comment| %>
|
5
|
+
<%= render :partial => 'blog/comments/comment', :object => comment %>
|
6
|
+
<% end %>
|
7
|
+
</div>
|
8
|
+
|
9
|
+
<%= render :partial => 'blog/comments/form' %>
|