tb_blog 1.1.3 → 1.2.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.
- checksums.yaml +4 -4
- data/Readme.md +23 -6
- data/app/controllers/admin/post_comments_controller.rb +21 -8
- data/app/controllers/admin/posts_controller.rb +17 -10
- data/app/controllers/concerns/blog_url_helpers.rb +60 -0
- data/app/controllers/posts_controller.rb +140 -0
- data/app/helpers/blog_helper.rb +6 -11
- data/app/models/spud/spud_post_model.rb +12 -38
- data/app/models/spud_blog_config.rb +26 -0
- data/app/models/spud_post_category.rb +0 -4
- data/app/models/spud_post_comment.rb +15 -0
- data/app/views/admin/post_comments/index.html.erb +1 -1
- data/app/views/admin/posts/_form.html.erb +9 -11
- data/app/views/admin/posts/index.html.erb +2 -2
- data/app/views/{blog → posts}/_comment_form.html.erb +1 -1
- data/app/views/{blog → posts}/index.html.erb +5 -5
- data/app/views/{blog → posts}/index.rss.builder +4 -4
- data/app/views/{blog → posts}/show.html.erb +9 -2
- data/config/routes.rb +30 -64
- data/db/migrate/20140808132950_add_blog_key_to_spud_posts.rb +6 -0
- data/db/migrate/20140811152252_add_blog_key_to_spud_post_comments.rb +6 -0
- data/lib/generators/spud/blog/blog_generator.rb +33 -0
- data/lib/generators/spud/blog/views_generator.rb +2 -3
- data/lib/spud_blog/configuration.rb +12 -12
- data/lib/spud_blog/engine.rb +37 -26
- data/lib/spud_blog/version.rb +1 -1
- data/lib/tasks/spud_blog_tasks.rake +14 -0
- data/spec/controllers/{blog_controller_spec.rb → posts_controller_spec.rb} +6 -6
- data/spec/dummy/db/migrate/20140811161502_add_blog_key_to_spud_posts.tb_blog.rb +7 -0
- data/spec/dummy/db/migrate/20140811161503_add_blog_key_to_spud_post_comments.tb_blog.rb +7 -0
- data/spec/dummy/db/schema.rb +5 -1
- data/spec/factories/spud_post_factories.rb +1 -0
- metadata +18 -20
- data/app/controllers/admin/news_posts_controller.rb +0 -69
- data/app/controllers/blog/sitemaps_controller.rb +0 -10
- data/app/controllers/blog_controller.rb +0 -129
- data/app/controllers/news_controller.rb +0 -69
- data/app/views/admin/news_posts/edit.html.erb +0 -3
- data/app/views/admin/news_posts/index.html.erb +0 -42
- data/app/views/admin/news_posts/new.html.erb +0 -3
- data/app/views/blog/_comment.html.erb +0 -6
- data/app/views/blog/sitemaps/show.xml.builder +0 -16
- data/app/views/news/index.html.erb +0 -37
- data/app/views/news/index.rss.builder +0 -18
- data/app/views/news/show.html.erb +0 -31
@@ -1,69 +0,0 @@
|
|
1
|
-
class Admin::NewsPostsController < Admin::ApplicationController
|
2
|
-
|
3
|
-
respond_to :html, :xml, :json
|
4
|
-
before_filter :find_post, :only => [:show, :edit, :update, :destroy]
|
5
|
-
add_breadcrumb 'News Posts', :admin_news_posts_path
|
6
|
-
belongs_to_spud_app :news_posts
|
7
|
-
|
8
|
-
def index
|
9
|
-
@posts = SpudPost.where(:is_news => true).order('published_at desc').includes(:author).paginate(:page => params[:page], :per_page => 15)
|
10
|
-
respond_with @posts
|
11
|
-
end
|
12
|
-
|
13
|
-
def edit
|
14
|
-
@categories = SpudPostCategory.ordered
|
15
|
-
respond_with @post
|
16
|
-
end
|
17
|
-
|
18
|
-
def update
|
19
|
-
@categories = SpudPostCategory.ordered
|
20
|
-
params[:spud_post][:spud_site_ids] ||= []
|
21
|
-
if @post.update_attributes(post_params)
|
22
|
-
flash[:notice] = 'News Post was successfully updated.'
|
23
|
-
end
|
24
|
-
respond_with @post, :location => admin_news_posts_path
|
25
|
-
end
|
26
|
-
|
27
|
-
def new
|
28
|
-
@categories = SpudPostCategory.ordered
|
29
|
-
@post = SpudPost.new(:published_at => Time.zone.now, :spud_user_id => current_user.id, :is_news => true, :comments_enabled => false, :spud_site_ids => [current_site_id])
|
30
|
-
respond_with @post
|
31
|
-
end
|
32
|
-
|
33
|
-
def create
|
34
|
-
@categories = SpudPostCategory.ordered
|
35
|
-
params[:spud_post][:spud_site_ids] ||= []
|
36
|
-
@post = SpudPost.new(post_params)
|
37
|
-
@post.is_news = true
|
38
|
-
if @post.save
|
39
|
-
flash[:notice] = 'News Post was successfully created.'
|
40
|
-
end
|
41
|
-
respond_with @post, :location => admin_news_posts_path
|
42
|
-
end
|
43
|
-
|
44
|
-
def destroy
|
45
|
-
if @post.destroy
|
46
|
-
flash[:notice] = 'News Post was successfully deleted.'
|
47
|
-
end
|
48
|
-
respond_with @post, :location => admin_news_posts_path
|
49
|
-
end
|
50
|
-
|
51
|
-
private
|
52
|
-
|
53
|
-
def find_post
|
54
|
-
@post = SpudPost.find(params[:id])
|
55
|
-
if @post.blank?
|
56
|
-
flash[:error] = 'News Post not found!'
|
57
|
-
redirect_to admin_news_posts_path and return false
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
def post_params
|
62
|
-
permitted = [:published_at, :title, :content, :spud_user_id, :url_name, :visible, :comments_enabled, :meta_keywords, :meta_description, :content_format, :category_ids => [], :spud_site_ids => []]
|
63
|
-
if Spud::Blog.permitted_attributes.present?
|
64
|
-
permitted = permitted + Spud::Blog.permitted_attributes
|
65
|
-
end
|
66
|
-
params.require(:spud_post).permit(permitted)
|
67
|
-
end
|
68
|
-
|
69
|
-
end
|
@@ -1,129 +0,0 @@
|
|
1
|
-
class BlogController < ApplicationController
|
2
|
-
|
3
|
-
respond_to :html, :xml, :json, :rss
|
4
|
-
layout Spud::Blog.base_layout
|
5
|
-
|
6
|
-
before_filter :find_post, :only => [:show, :create_comment]
|
7
|
-
|
8
|
-
def index
|
9
|
-
@posts = SpudPost.for_user(current_user).visible.blog_posts.ordered.paginate(:page => get_page_number, :per_page => Spud::Blog.config.posts_per_page)
|
10
|
-
if Spud::Core.config.multisite_mode_enabled
|
11
|
-
@posts = @posts.for_spud_site(current_site_id)
|
12
|
-
end
|
13
|
-
respond_with @posts
|
14
|
-
end
|
15
|
-
|
16
|
-
# The sole purpose of this action is to redirect from a POST to an seo-friendly url
|
17
|
-
def filter
|
18
|
-
if !params[:category_url_name].blank? && !params[:archive_date].blank?
|
19
|
-
redirect_to blog_category_archive_path(params[:category_url_name], params[:archive_date])
|
20
|
-
elsif !params[:category_url_name].blank?
|
21
|
-
redirect_to blog_category_path(params[:category_url_name])
|
22
|
-
elsif !params[:archive_date].blank?
|
23
|
-
redirect_to blog_archive_path(params[:archive_date])
|
24
|
-
else
|
25
|
-
redirect_to blog_path
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def category
|
30
|
-
page = 1
|
31
|
-
if params[:page].blank? == false
|
32
|
-
page = params[:page].to_i
|
33
|
-
if page.to_s != params[:page].to_s
|
34
|
-
if(page > 1)
|
35
|
-
redirect_to blog_category_path(:page => page),:status => :moved_permanently and return
|
36
|
-
else
|
37
|
-
redirect_to blog_category_path(:page => nil),:status => :moved_permanently and return
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
if @post_category = SpudPostCategory.find_by_url_name(params[:category_url_name])
|
43
|
-
if Spud::Core.config.multisite_mode_enabled
|
44
|
-
@posts = @post_category.posts.for_user(current_user).visible.blog_posts.for_spud_site(current_site_id).from_archive(params[:archive_date]).paginate(:page => page, :per_page => Spud::Blog.config.posts_per_page)
|
45
|
-
else
|
46
|
-
@posts = @post_category.posts.for_user(current_user).visible.blog_posts.from_archive(params[:archive_date]).paginate(:page => page, :per_page => Spud::Blog.config.posts_per_page)
|
47
|
-
end
|
48
|
-
else
|
49
|
-
redirect_to blog_path
|
50
|
-
return
|
51
|
-
end
|
52
|
-
respond_with @posts do |format|
|
53
|
-
format.html { render 'index' }
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
def archive
|
58
|
-
if Spud::Core.config.multisite_mode_enabled
|
59
|
-
@posts = SpudPost.for_user(current_user).visible.blog_posts.from_archive(params[:archive_date]).for_spud_site(current_site_id).paginate(:page => get_page_number, :per_page => Spud::Blog.config.posts_per_page)
|
60
|
-
else
|
61
|
-
@posts = SpudPost.for_user(current_user).visible.blog_posts.from_archive(params[:archive_date]).paginate(:page => get_page_number, :per_page => Spud::Blog.config.posts_per_page)
|
62
|
-
end
|
63
|
-
respond_with @posts do |format|
|
64
|
-
format.html { render 'index' }
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
def show
|
69
|
-
if @post.comments_enabled
|
70
|
-
@comment = SpudPostComment.new()
|
71
|
-
end
|
72
|
-
respond_with @post
|
73
|
-
end
|
74
|
-
|
75
|
-
def create_comment
|
76
|
-
unless params[:comment_validation].blank? # trap spam bots
|
77
|
-
render :nothing => true
|
78
|
-
return
|
79
|
-
end
|
80
|
-
@comment = @post.comments.new(comment_params)
|
81
|
-
@comment.user_agent = request.env["HTTP_USER_AGENT"]
|
82
|
-
@comment.user_ip = request.remote_ip
|
83
|
-
@comment.referrer = request.referrer
|
84
|
-
@comment.approved = Spud::Blog.default_comment_approval
|
85
|
-
@comment.permalink = blog_post_url(@post.url_name)
|
86
|
-
if @comment.save
|
87
|
-
if @comment.approved?
|
88
|
-
flash[:notice] = 'Your comment has been posted.'
|
89
|
-
else
|
90
|
-
flash[:notice] = 'Your comment has been saved and will appear after being reviewed by an administrator.'
|
91
|
-
end
|
92
|
-
@comment = SpudPostComment.new()
|
93
|
-
end
|
94
|
-
respond_with @comment do |format|
|
95
|
-
format.html {
|
96
|
-
render 'show'
|
97
|
-
}
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
private
|
102
|
-
|
103
|
-
def find_post
|
104
|
-
@post = SpudPost.for_user(current_user).where(:url_name => params[:id]).first
|
105
|
-
if @post.blank? || @post.is_private? || (Spud::Core.config.multisite_mode_enabled && !@post.spud_site_ids.include?(current_site_id))
|
106
|
-
raise Spud::NotFoundError.new(:item => 'post')
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
|
-
def comment_params
|
111
|
-
params.require(:spud_post_comment).permit(:author, :content)
|
112
|
-
end
|
113
|
-
|
114
|
-
def get_page_number
|
115
|
-
page = 1
|
116
|
-
if params[:page].blank? == false
|
117
|
-
page = params[:page].to_i
|
118
|
-
if page.to_s != params[:page].to_s
|
119
|
-
if(page > 1)
|
120
|
-
redirect_to blog_path(:page => page), :status => :moved_permanently and return
|
121
|
-
else
|
122
|
-
redirect_to blog_path(:page => nil), :status => :moved_permanently and return
|
123
|
-
end
|
124
|
-
end
|
125
|
-
end
|
126
|
-
return page
|
127
|
-
end
|
128
|
-
|
129
|
-
end
|
@@ -1,69 +0,0 @@
|
|
1
|
-
class NewsController < ApplicationController
|
2
|
-
|
3
|
-
respond_to :html, :xml, :json, :rss
|
4
|
-
layout Spud::Blog.news_layout
|
5
|
-
|
6
|
-
before_filter :find_post, :only => [:show]
|
7
|
-
|
8
|
-
def index
|
9
|
-
@posts = SpudPost.for_user(current_user).visible.news_posts.ordered.paginate(:page => params[:page], :per_page => Spud::Blog.config.posts_per_page)
|
10
|
-
if Spud::Core.config.multisite_mode_enabled
|
11
|
-
@posts = @posts.for_spud_site(current_site_id)
|
12
|
-
end
|
13
|
-
respond_with @posts
|
14
|
-
end
|
15
|
-
|
16
|
-
# The sole purpose of this action is to redirect from a POST to an seo-friendly url
|
17
|
-
def filter
|
18
|
-
if !params[:category_url_name].blank? && !params[:archive_date].blank?
|
19
|
-
redirect_to news_category_archive_path(params[:category_url_name], params[:archive_date])
|
20
|
-
elsif !params[:category_url_name].blank?
|
21
|
-
redirect_to news_category_path(params[:category_url_name])
|
22
|
-
elsif !params[:archive_date].blank?
|
23
|
-
redirect_to news_archive_path(params[:archive_date])
|
24
|
-
else
|
25
|
-
redirect_to news_path
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def category
|
30
|
-
if @post_category = SpudPostCategory.find_by_url_name(params[:category_url_name])
|
31
|
-
if Spud::Core.config.multisite_mode_enabled
|
32
|
-
@posts = @post_category.posts.for_user(current_user).visible.news_posts.for_spud_site(current_site_id).from_archive(params[:archive_date]).paginate(:page => params[:page], :per_page => Spud::Blog.config.posts_per_page)
|
33
|
-
else
|
34
|
-
@posts = @post_category.posts.for_user(current_user).visible.news_posts.from_archive(params[:archive_date]).paginate(:page => params[:page], :per_page => Spud::Blog.config.posts_per_page)
|
35
|
-
end
|
36
|
-
else
|
37
|
-
redirect_to news_path
|
38
|
-
return
|
39
|
-
end
|
40
|
-
respond_with @posts do |format|
|
41
|
-
format.html { render 'index' }
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
def archive
|
46
|
-
if Spud::Core.config.multisite_mode_enabled
|
47
|
-
@posts = SpudPost.for_user(current_user).visible.news_posts.for_spud_site(current_site_id).from_archive(params[:archive_date]).paginate(:page => params[:page], :per_page => Spud::Blog.config.posts_per_page)
|
48
|
-
else
|
49
|
-
@posts = SpudPost.for_user(current_user).visible.news_posts.from_archive(params[:archive_date]).paginate(:page => params[:page], :per_page => Spud::Blog.config.posts_per_page)
|
50
|
-
end
|
51
|
-
respond_with @posts do |format|
|
52
|
-
format.html { render 'index' }
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
def show
|
57
|
-
respond_with @post
|
58
|
-
end
|
59
|
-
|
60
|
-
private
|
61
|
-
|
62
|
-
def find_post
|
63
|
-
@post = SpudPost.for_user(current_user).where(:url_name => params[:id]).first
|
64
|
-
if @post.blank? || @post.is_private? || (Spud::Core.config.multisite_mode_enabled && !@post.spud_site_ids.include?(current_site_id))
|
65
|
-
raise Spud::NotFoundError.new(:item => 'post')
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
end
|
@@ -1,42 +0,0 @@
|
|
1
|
-
<%= content_for :data_controls do %>
|
2
|
-
<%= link_to "Manage Categories", admin_post_categories_path, :class => 'btn spud_blog_manage_categories', :title => 'Manage Categories' %>
|
3
|
-
<%= link_to "New Post", new_admin_news_post_path, :class => "btn btn-primary", :title => "New Post" %>
|
4
|
-
<% end %>
|
5
|
-
|
6
|
-
<%=content_for :detail do %>
|
7
|
-
<table class="table table-striped">
|
8
|
-
<thead>
|
9
|
-
<tr>
|
10
|
-
<th>Title</th>
|
11
|
-
<th>Author</th>
|
12
|
-
<th>Published At</th>
|
13
|
-
<th> </th>
|
14
|
-
</tr>
|
15
|
-
</thead>
|
16
|
-
<tbody>
|
17
|
-
<% @posts.each do |post| %>
|
18
|
-
<tr>
|
19
|
-
<td>
|
20
|
-
<%= link_to post.title, news_post_path(post.url_name), :target => :blank %>
|
21
|
-
<% if !post.visible? %>
|
22
|
-
<span class="badge">Draft</span>
|
23
|
-
<% end %>
|
24
|
-
</td>
|
25
|
-
<td><%= post.author.full_name %></td>
|
26
|
-
<td><%= post.published_at.strftime('%m/%d/%Y') %></td>
|
27
|
-
<td class="text-right">
|
28
|
-
<%= link_to 'Edit', edit_admin_news_post_path(post), :class => 'btn btn-small' %>
|
29
|
-
<%= link_to 'Delete', admin_news_post_path(post), :method => :delete, :data => {:confirm => 'Are you sure you want to delete this post?'}, :class => 'btn btn-small btn-danger' %>
|
30
|
-
</td>
|
31
|
-
</tr>
|
32
|
-
<%end%>
|
33
|
-
</tbody>
|
34
|
-
</table>
|
35
|
-
<div class="spud_admin_pagination">
|
36
|
-
<%= will_paginate @posts %>
|
37
|
-
</div>
|
38
|
-
|
39
|
-
<script>
|
40
|
-
$(document).ready(spud.admin.post_categories.index);
|
41
|
-
</script>
|
42
|
-
<%end%>
|
@@ -1,16 +0,0 @@
|
|
1
|
-
|
2
|
-
xml.instruct! :xml, :version => '1.0', :encoding => 'UTF-8'
|
3
|
-
|
4
|
-
# create the urlset
|
5
|
-
xml.urlset :xmlns => 'http://www.sitemaps.org/schemas/sitemap/0.9' do
|
6
|
-
@posts.each do |post|
|
7
|
-
xml.url do
|
8
|
-
if post.is_news
|
9
|
-
xml.loc news_post_url(post.url_name)
|
10
|
-
else
|
11
|
-
xml.loc blog_post_url(post.url_name)
|
12
|
-
end
|
13
|
-
xml.lastmod post.published_at.xmlschema
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
<% @page_title = 'News' %>
|
2
|
-
|
3
|
-
<% content_for :head do %>
|
4
|
-
<%= spud_news_rss_link %>
|
5
|
-
<% end %>
|
6
|
-
|
7
|
-
<% cache(cache_key_for_spud_collection(@posts, :cache_params => [:category_url_name, :archive_date, :page], :for_user => true)) do %>
|
8
|
-
<div id="spud_news_filters">
|
9
|
-
<%= form_tag news_path, :class => 'spud_blog_filter_form' do %>
|
10
|
-
<label>Category:</label>
|
11
|
-
<%= spud_post_category_select %>
|
12
|
-
<label>Month:</label>
|
13
|
-
<%= spud_post_archive_select %>
|
14
|
-
<input type="submit" value="Submit" />
|
15
|
-
<% end %>
|
16
|
-
</div>
|
17
|
-
|
18
|
-
<div id="spud_news_posts">
|
19
|
-
<% if @posts.length > 0 %>
|
20
|
-
<% @posts.includes(:categories, :author).each do |post| %>
|
21
|
-
<% cache(post) do %>
|
22
|
-
<div class="spud_news_post">
|
23
|
-
<h3><%= link_to post.title, news_post_path(post.url_name) %></h3>
|
24
|
-
<h4>Posted by <%= post.author.full_name %> on <%= post.display_date %></h4>
|
25
|
-
<div class="spud_news_post_content">
|
26
|
-
<%= truncate_html post.content_processed.html_safe, :length => 250 %>
|
27
|
-
</div>
|
28
|
-
</div>
|
29
|
-
<% end %>
|
30
|
-
<% end %>
|
31
|
-
<% else %>
|
32
|
-
<p>No posts were found in this category</p>
|
33
|
-
<% end %>
|
34
|
-
</div>
|
35
|
-
<% end %>
|
36
|
-
|
37
|
-
<%= will_paginate @posts %>
|
@@ -1,18 +0,0 @@
|
|
1
|
-
xml.instruct! :xml, :version => "1.0"
|
2
|
-
xml.rss :version => "2.0" do
|
3
|
-
xml.channel do
|
4
|
-
xml.title "#{Spud::Core.site_name} News"
|
5
|
-
xml.description "News articles for #{Spud::Core.site_name}"
|
6
|
-
xml.link news_url(:format => :rss)
|
7
|
-
|
8
|
-
for article in @posts
|
9
|
-
xml.item do
|
10
|
-
xml.title article.title
|
11
|
-
xml.description strip_tags(article.content_processed).truncate(250)
|
12
|
-
xml.pubDate article.created_at.to_s(:rfc822)
|
13
|
-
xml.link news_post_url(article.url_name)
|
14
|
-
xml.guid news_post_url(article.url_name)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
<% content_for :title do %>
|
2
|
-
<%= @post.title %> | <%=current_site_name%>
|
3
|
-
<% end %>
|
4
|
-
|
5
|
-
<% content_for :head do %>
|
6
|
-
<% cache([@post, 'head']) do %>
|
7
|
-
<%= spud_news_rss_link %>
|
8
|
-
<meta name="description" content="<%= @post.meta_description %>" />
|
9
|
-
<% if @post.meta_keywords.blank? %>
|
10
|
-
<meta name="keywords" content="<%= @post.categories.collect{ |c| c.name }.join(',') %>" />
|
11
|
-
<% else %>
|
12
|
-
<meta name="keywords" content="<%= @post.meta_keywords %>" />
|
13
|
-
<% end %>
|
14
|
-
<% end %>
|
15
|
-
<% end %>
|
16
|
-
|
17
|
-
<% cache(@post) do %>
|
18
|
-
<div class="spud_news_post">
|
19
|
-
<h3><%= @post.title %></h3>
|
20
|
-
<h4>Posted by <%= @post.author.full_name %> on <%= @post.display_date %></h4>
|
21
|
-
<% if @post.categories.any? %>
|
22
|
-
<p id="spud_news_post_categories">
|
23
|
-
Filed under
|
24
|
-
<%= raw(@post.categories.collect{ |c| link_to c.name, news_category_path(c.url_name) }.join(', ')) %>
|
25
|
-
</p>
|
26
|
-
<% end %>
|
27
|
-
<div id="spud_news_post_content">
|
28
|
-
<%= raw @post.content_processed %>
|
29
|
-
</div>
|
30
|
-
</div>
|
31
|
-
<% end %>
|