tb_blog 1.0.4 → 1.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.
Files changed (103) hide show
  1. checksums.yaml +6 -14
  2. data/Readme.markdown +3 -2
  3. data/app/assets/javascripts/admin/blog/application.js +1 -0
  4. data/app/assets/javascripts/{spud/admin → admin/blog}/post_categories.js +0 -3
  5. data/app/assets/javascripts/{spud/admin → admin/blog}/posts.js +0 -6
  6. data/app/controllers/{spud/admin → admin}/news_posts_controller.rb +13 -11
  7. data/app/controllers/{spud/admin → admin}/post_categories_controller.rb +9 -7
  8. data/app/controllers/{spud/admin → admin}/post_comments_controller.rb +6 -7
  9. data/app/controllers/{spud/admin → admin}/posts_controller.rb +14 -11
  10. data/app/controllers/blog/sitemaps_controller.rb +10 -0
  11. data/app/controllers/blog_controller.rb +25 -34
  12. data/app/controllers/news_controller.rb +5 -21
  13. data/app/helpers/admin/news_posts_helper.rb +2 -0
  14. data/app/helpers/admin/post_categories_helper.rb +2 -0
  15. data/app/helpers/admin/post_comments_helper.rb +3 -0
  16. data/app/helpers/{spud/admin → admin}/posts_helper.rb +1 -1
  17. data/app/helpers/blog/sitemaps_helper.rb +2 -0
  18. data/app/helpers/blog_helper.rb +0 -1
  19. data/app/models/spud_post.rb +30 -21
  20. data/app/models/spud_post_categories_post.rb +2 -3
  21. data/app/models/spud_post_category.rb +9 -2
  22. data/app/models/spud_post_comment.rb +1 -3
  23. data/app/models/spud_post_site.rb +0 -1
  24. data/app/views/admin/news_posts/edit.html.erb +3 -0
  25. data/app/views/admin/news_posts/index.html.erb +42 -0
  26. data/app/views/admin/news_posts/new.html.erb +3 -0
  27. data/app/views/{spud/admin → admin}/post_categories/_category.html.erb +2 -2
  28. data/app/views/{spud/admin → admin}/post_categories/_form.html.erb +1 -1
  29. data/app/views/{spud/admin → admin}/post_categories/index.html.erb +1 -1
  30. data/app/views/admin/post_categories/new.html.erb +1 -0
  31. data/app/views/{spud/admin → admin}/post_comments/index.html.erb +3 -3
  32. data/app/views/{spud/admin → admin}/posts/_category.html.erb +1 -1
  33. data/app/views/{spud/admin → admin}/posts/_form.html.erb +3 -3
  34. data/app/views/admin/posts/edit.html.erb +3 -0
  35. data/app/views/admin/posts/index.html.erb +48 -0
  36. data/app/views/admin/posts/new.html.erb +3 -0
  37. data/app/views/blog/_comment.html.erb +6 -4
  38. data/app/views/blog/_comment_form.html.erb +0 -2
  39. data/app/views/blog/index.html.erb +30 -28
  40. data/app/views/blog/show.html.erb +35 -31
  41. data/app/views/news/index.html.erb +26 -24
  42. data/app/views/news/show.html.erb +25 -21
  43. data/config/routes.rb +14 -15
  44. data/lib/spud_blog/configuration.rb +1 -2
  45. data/lib/spud_blog/engine.rb +13 -10
  46. data/lib/spud_blog/version.rb +1 -1
  47. data/lib/tb_blog.rb +1 -1
  48. data/spec/controllers/admin/posts_controller_spec.rb +5 -0
  49. data/spec/dummy/config/application.rb +5 -2
  50. data/spec/dummy/config/environments/production.rb +1 -1
  51. data/spec/dummy/config/environments/test.rb +5 -6
  52. data/spec/dummy/config/initializers/secret_token.rb +1 -0
  53. data/spec/dummy/db/migrate/20140110180411_create_spud_roles.tb_core.rb +11 -0
  54. data/spec/dummy/db/migrate/20140110180412_create_spud_permissions.tb_core.rb +11 -0
  55. data/spec/dummy/db/migrate/20140110180413_create_spud_role_permissions.tb_core.rb +12 -0
  56. data/spec/dummy/db/migrate/20140110180414_drop_spud_admin_permissions.tb_core.rb +16 -0
  57. data/spec/dummy/db/migrate/20140110180415_create_spud_permalinks.tb_permalinks.rb +12 -0
  58. data/spec/dummy/db/migrate/20140110180416_add_site_id_to_spud_permalinks.tb_permalinks.rb +7 -0
  59. data/spec/dummy/db/migrate/20140110180417_modify_site_id_for_spud_permalinks.tb_permalinks.rb +12 -0
  60. data/spec/dummy/db/migrate/20140110180418_create_spud_posts.tb_blog.rb +16 -0
  61. data/spec/dummy/db/migrate/20140110180419_create_spud_post_categories.tb_blog.rb +14 -0
  62. data/spec/dummy/db/migrate/20140110180420_create_spud_post_comments.tb_blog.rb +14 -0
  63. data/spec/dummy/db/migrate/20140110180421_add_url_to_spud_posts.tb_blog.rb +7 -0
  64. data/spec/dummy/db/migrate/20140110180422_add_url_to_spud_post_categories.tb_blog.rb +9 -0
  65. data/spec/dummy/db/migrate/20140110180423_add_is_news_to_spud_posts.tb_blog.rb +7 -0
  66. data/spec/dummy/db/migrate/20140110180424_add_meta_to_posts.tb_blog.rb +7 -0
  67. data/spec/dummy/db/migrate/20140110180425_add_comments_counter_to_spud_posts.tb_blog.rb +13 -0
  68. data/spec/dummy/db/migrate/20140110180426_create_spud_post_sites.tb_blog.rb +12 -0
  69. data/spec/dummy/db/migrate/20140110180427_add_spam_fields_to_spud_post_comments.tb_blog.rb +9 -0
  70. data/spec/dummy/db/migrate/20140110180428_add_permalink_to_spud_post_comments.tb_blog.rb +6 -0
  71. data/spec/dummy/db/migrate/20140110180429_add_nested_set_to_post_categories.tb_blog.rb +22 -0
  72. data/spec/dummy/db/migrate/20140110180430_add_content_format_to_spud_posts.tb_blog.rb +6 -0
  73. data/spec/dummy/db/migrate/20140110180431_add_content_processed_to_spud_post.tb_blog.rb +6 -0
  74. data/spec/dummy/db/migrate/20140113162805_create_tb_liquid_spud_liquid_tags.tb_liquid.rb +13 -0
  75. data/spec/dummy/db/schema.rb +100 -59
  76. metadata +123 -104
  77. data/app/assets/javascripts/spud/blog/sitemaps.js +0 -2
  78. data/app/assets/javascripts/spud/blog.js +0 -41
  79. data/app/assets/stylesheets/news.css +0 -4
  80. data/app/assets/stylesheets/spud/blog/sitemaps.css +0 -4
  81. data/app/assets/stylesheets/spud/blog/validity.css +0 -3
  82. data/app/controllers/spud/blog/sitemaps_controller.rb +0 -9
  83. data/app/helpers/spud/admin/news_posts_helper.rb +0 -2
  84. data/app/helpers/spud/admin/post_categories_helper.rb +0 -2
  85. data/app/helpers/spud/admin/post_comments_helper.rb +0 -3
  86. data/app/helpers/spud/blog/sitemaps_helper.rb +0 -2
  87. data/app/models/spud_post_category_sweeper.rb +0 -41
  88. data/app/models/spud_post_comment_sweeper.rb +0 -33
  89. data/app/models/spud_post_sweeper.rb +0 -47
  90. data/app/views/spud/admin/news_posts/edit.html.erb +0 -3
  91. data/app/views/spud/admin/news_posts/index.html.erb +0 -44
  92. data/app/views/spud/admin/news_posts/new.html.erb +0 -3
  93. data/app/views/spud/admin/post_categories/new.html.erb +0 -1
  94. data/app/views/spud/admin/posts/edit.html.erb +0 -3
  95. data/app/views/spud/admin/posts/index.html.erb +0 -49
  96. data/app/views/spud/admin/posts/new.html.erb +0 -3
  97. data/spec/controllers/spud/admin/posts_controller_spec.rb +0 -5
  98. data/spec/dummy/log/development.log +0 -263
  99. data/spec/dummy/log/test.log +0 -3339
  100. /data/app/assets/javascripts/{spud/admin → admin/blog}/post_comments.js +0 -0
  101. /data/app/assets/stylesheets/{spud/admin/posts.css.scss → admin/blog/application.css.scss} +0 -0
  102. /data/app/views/{spud/admin → admin}/post_categories/edit.html.erb +0 -0
  103. /data/app/views/{spud/blog → blog}/sitemaps/show.xml.builder +0 -0
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- OTI0ODdlNDI3MjE3MWM4ZDIyMmNjOGU5NjZmOTE0ZGRkZjc0ZGJjMQ==
5
- data.tar.gz: !binary |-
6
- MzA5NmJjYjliNmZlYmU0ZjdiYThiYWU1ZTE4NDc0YWQwOWI0ZDVkMQ==
7
- !binary "U0hBNTEy":
8
- metadata.gz: !binary |-
9
- MGU5ZjJhZWU3NWJkNjNlMzU0YmJiYzQ0MDEyNDkyODc5NjdkMzQ2ODg3MzI1
10
- YTI0YzU3ZDk2OTJmMjMxMjdiNTA4ZGZlYzVkOTBiOWQyYWI0OGFlNGZmYjAz
11
- MTBmOWI3NGZhOTE3ODRkMzIzZmVhZDAwOTdiZDIyZGEzNmQ4YjA=
12
- data.tar.gz: !binary |-
13
- YWQzYmI5MmI2MzJiNzEwYmM4NTM4YzNmZjA0NDQ2OTAwM2Y2MDFmNTVmYTcz
14
- YzhhM2EzNDZkZTU3NTllNmUwZGY1ZTMzYWEzOTcyYzllYmNlMGE4Nzg2NTc3
15
- ODJhMzgxYmUzOWUzNDczOTgzOWIwMzYyY2JlMDhlMjJlYTMxMGE=
2
+ SHA1:
3
+ metadata.gz: 0abb0b9fcb8a6000c80e57993fc82eec445d1621
4
+ data.tar.gz: adf69ebae439dcdac7a9b487c857814465dd9fa5
5
+ SHA512:
6
+ metadata.gz: 5ce39a72962d7796bfb9e0c880abfe6bc6ca318f6e7edeed3f1da5740212d0a6693bc011a3b3e02e9b5f5f60fb356ba243db4f0b6c95ada6121ae3f10af7762b
7
+ data.tar.gz: 698bc9ebf8b2c7e878e7213f0814df54e8bda5f6f785793039314ccacfd11ac62301d4b70043fe41e3ca12e5a8335b2489a820fe5e26163592112a07b7e153d2
data/Readme.markdown CHANGED
@@ -13,8 +13,8 @@ __NOTE:__ This project is still in its early infancy.
13
13
 
14
14
  1. In your Gemfile add the following
15
15
 
16
- gem 'spud_core'
17
- gem 'spud_blog'
16
+ gem 'tb_core'
17
+ gem 'tb_blog'
18
18
 
19
19
  2. Run bundle install
20
20
  3. Copy in database migrations to your new rails project
@@ -38,6 +38,7 @@ Spud Blog current accepts the following configuration options.
38
38
  config.has_custom_fields = true
39
39
  config.caching_enabled = true
40
40
  config.caching_expires_in = 1.hour
41
+ config.default_comment_approval = true
41
42
  end
42
43
 
43
44
  ## Customizing Views
@@ -0,0 +1 @@
1
+ //= require_directory
@@ -1,6 +1,3 @@
1
- spud = (typeof(spud) == 'undefined') ? {} : spud;
2
- spud.admin = (typeof(spud.admin) == 'undefined') ? {} : spud.admin;
3
-
4
1
  spud.admin.post_categories = new function(){
5
2
 
6
3
  var self = this;
@@ -1,9 +1,3 @@
1
- //= require spud/admin/post_categories
2
- //= require spud/admin/post_comments
3
-
4
- spud = (typeof(spud) == 'undefined') ? {} : spud;
5
- spud.admin = (typeof(spud.admin) == 'undefined') ? {} : spud.admin;
6
-
7
1
  spud.admin.posts = new function(){
8
2
 
9
3
  var self = this;
@@ -1,11 +1,9 @@
1
- class Spud::Admin::NewsPostsController < Spud::Admin::ApplicationController
1
+ class Admin::NewsPostsController < Admin::ApplicationController
2
2
 
3
- layout 'spud/admin/detail'
4
3
  respond_to :html, :xml, :json
5
4
  before_filter :find_post, :only => [:show, :edit, :update, :destroy]
6
- add_breadcrumb 'News Posts', :spud_admin_news_posts_path
5
+ add_breadcrumb 'News Posts', :admin_news_posts_path
7
6
  belongs_to_spud_app :news_posts
8
- cache_sweeper :spud_post_sweeper, :only => [:create, :update, :destroy]
9
7
 
10
8
  def index
11
9
  @posts = SpudPost.where(:is_news => true).order('published_at desc').includes(:comments).paginate(:page => params[:page], :per_page => 15)
@@ -20,10 +18,10 @@ class Spud::Admin::NewsPostsController < Spud::Admin::ApplicationController
20
18
  def update
21
19
  @categories = SpudPostCategory.grouped
22
20
  params[:spud_post][:spud_site_ids] ||= []
23
- if @post.update_attributes(params[:spud_post])
21
+ if @post.update_attributes(post_params)
24
22
  flash[:notice] = 'News Post was successfully updated.'
25
23
  end
26
- respond_with @post, :location => spud_admin_news_posts_path
24
+ respond_with @post, :location => admin_news_posts_path
27
25
  end
28
26
 
29
27
  def new
@@ -35,28 +33,32 @@ class Spud::Admin::NewsPostsController < Spud::Admin::ApplicationController
35
33
  def create
36
34
  @categories = SpudPostCategory.grouped
37
35
  params[:spud_post][:spud_site_ids] ||= []
38
- @post = SpudPost.new(params[:spud_post])
36
+ @post = SpudPost.new(post_params)
39
37
  if @post.save
40
38
  flash[:notice] = 'News Post was successfully created.'
41
39
  end
42
- respond_with @post, :location => spud_admin_news_posts_path
40
+ respond_with @post, :location => admin_news_posts_path
43
41
  end
44
42
 
45
43
  def destroy
46
44
  if @post.destroy
47
45
  flash[:notice] = 'News Post was successfully deleted.'
48
46
  end
49
- respond_with @post, :location => spud_admin_news_posts_path
47
+ respond_with @post, :location => admin_news_posts_path
50
48
  end
51
49
 
52
- private
50
+ private
53
51
 
54
52
  def find_post
55
53
  @post = SpudPost.find(params[:id])
56
54
  if @post.blank?
57
55
  flash[:error] = 'News Post not found!'
58
- redirect_to spud_admin_news_posts_path and return false
56
+ redirect_to admin_news_posts_path and return false
59
57
  end
60
58
  end
61
59
 
60
+ def post_params
61
+ params.require(:spud_post).permit(:published_at, :title, :content, :spud_user_id, :url_name, :visible, :comments_enabled, :meta_keywords, :meta_description, :content_format, :category_ids => [], :spud_site_ids => [])
62
+ end
63
+
62
64
  end
@@ -1,10 +1,9 @@
1
- class Spud::Admin::PostCategoriesController < Spud::Admin::ApplicationController
1
+ class Admin::PostCategoriesController < Admin::ApplicationController
2
2
 
3
3
  layout false
4
4
  respond_to :html, :json
5
5
 
6
6
  before_filter :find_category, :only => [:show, :edit, :update, :destroy]
7
- cache_sweeper :spud_post_category_sweeper, :only => [:create, :update, :destroy]
8
7
 
9
8
  def index
10
9
  @post_categories = SpudPostCategory.grouped
@@ -16,9 +15,9 @@ class Spud::Admin::PostCategoriesController < Spud::Admin::ApplicationController
16
15
  end
17
16
 
18
17
  def update
19
- if @post_category.update_attributes(params[:spud_post_category])
18
+ if @post_category.update_attributes(category_params)
20
19
  flash[:notice] = 'Post Category was successfully updated'
21
- respond_with @post_category, :location => spud_admin_post_categories_path
20
+ respond_with @post_category, :location => admin_post_categories_path
22
21
  else
23
22
  render 'new', :status => 422
24
23
  end
@@ -30,10 +29,10 @@ class Spud::Admin::PostCategoriesController < Spud::Admin::ApplicationController
30
29
  end
31
30
 
32
31
  def create
33
- @post_category = SpudPostCategory.new(params[:spud_post_category])
32
+ @post_category = SpudPostCategory.new(category_params)
34
33
  if @post_category.save
35
34
  flash[:notice] = 'Post Category was successfully created'
36
- respond_with @post_category, :location => spud_admin_post_categories_path
35
+ respond_with @post_category, :location => admin_post_categories_path
37
36
  else
38
37
  render 'new', :status => 422
39
38
  end
@@ -45,7 +44,7 @@ class Spud::Admin::PostCategoriesController < Spud::Admin::ApplicationController
45
44
  @post_categories = SpudPostCategory.grouped
46
45
  render 'index'
47
46
  else
48
- respond_with @post_category, :location => spud_admin_post_categories_path
47
+ respond_with @post_category, :location => admin_post_categories_path
49
48
  end
50
49
  end
51
50
 
@@ -55,5 +54,8 @@ class Spud::Admin::PostCategoriesController < Spud::Admin::ApplicationController
55
54
  @post_category = SpudPostCategory.find(params[:id])
56
55
  end
57
56
 
57
+ def category_params
58
+ params.require(:spud_post_category).permit(:name, :parent_id)
59
+ end
58
60
 
59
61
  end
@@ -1,11 +1,10 @@
1
- class Spud::Admin::PostCommentsController < Spud::Admin::ApplicationController
1
+ class Admin::PostCommentsController < Admin::ApplicationController
2
2
 
3
3
  respond_to :html, :xml, :json
4
- layout 'spud/admin/detail'
5
4
  belongs_to_spud_app :blog_posts
6
5
  before_filter :find_comment, :only => [:show, :edit, :update, :destroy, :approve, :spam]
7
- add_breadcrumb 'Blog Posts', :spud_admin_posts_path
8
- add_breadcrumb 'Comments', :spud_admin_post_comments_path
6
+ add_breadcrumb 'Blog Posts', :admin_posts_path
7
+ add_breadcrumb 'Comments', :admin_post_comments_path
9
8
 
10
9
  def index
11
10
  @page_name = "Comments"
@@ -41,7 +40,7 @@ class Spud::Admin::PostCommentsController < Spud::Admin::ApplicationController
41
40
  @post_comment.spam = false
42
41
  @post_comment.approved = true
43
42
  @post_comment.save()
44
- redirect_to request.referer || spud_admin_post_comments_path
43
+ redirect_to request.referer || admin_post_comments_path
45
44
  end
46
45
 
47
46
  def spam
@@ -51,14 +50,14 @@ class Spud::Admin::PostCommentsController < Spud::Admin::ApplicationController
51
50
  @post_comment.spam = true
52
51
  @post_comment.approved = false
53
52
  @post_comment.save()
54
- redirect_to request.referer || spud_admin_post_comments_path
53
+ redirect_to request.referer || admin_post_comments_path
55
54
  end
56
55
 
57
56
  def destroy
58
57
  if !@post_comment.destroy
59
58
  flash[:error] = "Whoops! Something odd happened while trying to delete that comment. Thats not fun. please try again."
60
59
  end
61
- respond_with @post_comment, :location => request.referer || spud_admin_post_comments_path
60
+ respond_with @post_comment, :location => request.referer || admin_post_comments_path
62
61
  end
63
62
 
64
63
  private
@@ -1,11 +1,9 @@
1
- class Spud::Admin::PostsController < Spud::Admin::ApplicationController
1
+ class Admin::PostsController < Admin::ApplicationController
2
2
 
3
- layout 'spud/admin/detail'
4
3
  respond_to :html, :xml, :json
5
4
  before_filter :find_post, :only => [:show, :edit, :update, :destroy]
6
- add_breadcrumb 'Blog Posts', :spud_admin_posts_path
5
+ add_breadcrumb 'Blog Posts', :admin_posts_path
7
6
  belongs_to_spud_app :blog_posts
8
- cache_sweeper :spud_post_sweeper, :only => [:create, :update, :destroy]
9
7
 
10
8
  def index
11
9
  @posts = SpudPost.where(:is_news => false).order('published_at desc').includes(:pending_comments, :author).paginate(:page => params[:page], :per_page => 15)
@@ -20,10 +18,11 @@ class Spud::Admin::PostsController < Spud::Admin::ApplicationController
20
18
  def update
21
19
  @categories = SpudPostCategory.grouped
22
20
  params[:spud_post][:spud_site_ids] ||= []
23
- if @post.update_attributes(params[:spud_post])
21
+ params[:spud_post][:updated_at] = Time.now()
22
+ if @post.update_attributes(post_params)
24
23
  flash[:notice] = 'Post was successfully updated.'
25
24
  end
26
- respond_with @post, :location => spud_admin_posts_path
25
+ respond_with @post, :location => admin_posts_path
27
26
  end
28
27
 
29
28
  def new
@@ -35,28 +34,32 @@ class Spud::Admin::PostsController < Spud::Admin::ApplicationController
35
34
  def create
36
35
  @categories = SpudPostCategory.grouped
37
36
  params[:spud_post][:spud_site_ids] ||= []
38
- @post = SpudPost.new(params[:spud_post])
37
+ @post = SpudPost.new(post_params)
39
38
  if @post.save
40
39
  flash[:notice] = 'Post was successfully created.'
41
40
  end
42
- respond_with @post, :location => spud_admin_posts_path
41
+ respond_with @post, :location => admin_posts_path
43
42
  end
44
43
 
45
44
  def destroy
46
45
  if @post.destroy
47
46
  flash[:notice] = 'Post was successfully deleted.'
48
47
  end
49
- respond_with @post, :location => spud_admin_posts_path
48
+ respond_with @post, :location => admin_posts_path
50
49
  end
51
50
 
52
- private
51
+ private
53
52
 
54
53
  def find_post
55
54
  @post = SpudPost.find(params[:id])
56
55
  if @post.blank?
57
56
  flash[:error] = "Post not found!"
58
- redirect_to spud_admin_posts_path and return false
57
+ redirect_to admin_posts_path and return false
59
58
  end
60
59
  end
61
60
 
61
+ def post_params
62
+ params.require(:spud_post).permit(:published_at, :title, :content, :spud_user_id, :url_name, :visible, :comments_enabled, :meta_keywords, :meta_description, :content_format, :category_ids => [], :spud_site_ids => [])
63
+ end
64
+
62
65
  end
@@ -0,0 +1,10 @@
1
+ class Blog::SitemapsController < Spud::ApplicationController
2
+
3
+ respond_to :xml
4
+
5
+ def show
6
+ @posts = SpudPost.publicly.all
7
+ respond_with @pages
8
+ end
9
+
10
+ end
@@ -5,36 +5,8 @@ class BlogController < ApplicationController
5
5
 
6
6
  before_filter :find_post, :only => [:show, :create_comment]
7
7
 
8
- caches_action :show, :index,
9
- :expires => Spud::Blog.config.action_caching_duration,
10
- :if => Proc.new{ |c|
11
- Spud::Blog.cache_mode == :action && !(c.params[:page] && c.params[:page].to_i > 1) && (SpudPost.where(:is_news => false).future_posts.count == 0)
12
- }
13
-
14
- after_filter :only => [:show, :index] do |c|
15
- if Spud::Blog.cache_mode == :full_page && !(c.params[:page] && c.params[:page].to_i > 1)
16
- if (SpudPost.where(:is_news => false).future_posts.count == 0)
17
- c.cache_page(nil, nil, false)
18
- end
19
- end
20
- end
21
-
22
- cache_sweeper :spud_post_comment_sweeper, :only => [:create_comment]
23
-
24
8
  def index
25
- page = 1
26
- if params[:page].blank? == false
27
- page = params[:page].to_i
28
- if page.to_s != params[:page].to_s
29
- if(page > 1)
30
- redirect_to blog_path(:page => page), :status => :moved_permanently and return
31
- else
32
- redirect_to blog_path(:page => nil), :status => :moved_permanently and return
33
- end
34
- end
35
- end
36
-
37
- @posts = SpudPost.public_blog_posts(page, Spud::Blog.config.posts_per_page).includes(:categories, :author)
9
+ @posts = SpudPost.visible.blog_posts.ordered.paginate(:page => get_page_number, :per_page => Spud::Blog.config.posts_per_page)
38
10
  if Spud::Core.config.multisite_mode_enabled
39
11
  @posts = @posts.for_spud_site(current_site_id)
40
12
  end
@@ -69,9 +41,9 @@ class BlogController < ApplicationController
69
41
 
70
42
  if @post_category = SpudPostCategory.find_by_url_name(params[:category_url_name])
71
43
  if Spud::Core.config.multisite_mode_enabled
72
- @posts = @post_category.posts_with_children.public_blog_posts(page, Spud::Blog.config.posts_per_page).for_spud_site(current_site_id).from_archive(params[:archive_date])
44
+ @posts = @post_category.posts_with_children.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)
73
45
  else
74
- @posts = @post_category.posts_with_children.public_blog_posts(page, Spud::Blog.config.posts_per_page).from_archive(params[:archive_date])
46
+ @posts = @post_category.posts_with_children.visible.blog_posts.from_archive(params[:archive_date]).paginate(:page => page, :per_page => Spud::Blog.config.posts_per_page)
75
47
  end
76
48
  else
77
49
  redirect_to blog_path
@@ -84,9 +56,9 @@ class BlogController < ApplicationController
84
56
 
85
57
  def archive
86
58
  if Spud::Core.config.multisite_mode_enabled
87
- @posts = SpudPost.public_blog_posts(params[:page], Spud::Blog.config.posts_per_page).for_spud_site(current_site_id).from_archive(params[:archive_date])
59
+ @posts = SpudPost.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)
88
60
  else
89
- @posts = SpudPost.public_blog_posts(params[:page], Spud::Blog.config.posts_per_page).from_archive(params[:archive_date])
61
+ @posts = SpudPost.visible.blog_posts.from_archive(params[:archive_date]).paginate(:page => get_page_number, :per_page => Spud::Blog.config.posts_per_page)
90
62
  end
91
63
  respond_with @posts do |format|
92
64
  format.html { render 'index' }
@@ -105,7 +77,7 @@ class BlogController < ApplicationController
105
77
  render :nothing => true
106
78
  return
107
79
  end
108
- @comment = @post.comments.new(params[:spud_post_comment])
80
+ @comment = @post.comments.new(comment_params)
109
81
  @comment.user_agent = request.env["HTTP_USER_AGENT"]
110
82
  @comment.user_ip = request.remote_ip
111
83
  @comment.referrer = request.referrer
@@ -136,4 +108,23 @@ class BlogController < ApplicationController
136
108
  end
137
109
  end
138
110
 
111
+ def comment_params
112
+ params.require(:spud_post_comment).permit(:author, :content)
113
+ end
114
+
115
+ def get_page_number
116
+ page = 1
117
+ if params[:page].blank? == false
118
+ page = params[:page].to_i
119
+ if page.to_s != params[:page].to_s
120
+ if(page > 1)
121
+ redirect_to blog_path(:page => page), :status => :moved_permanently and return
122
+ else
123
+ redirect_to blog_path(:page => nil), :status => :moved_permanently and return
124
+ end
125
+ end
126
+ end
127
+ return page
128
+ end
129
+
139
130
  end
@@ -3,24 +3,8 @@ class NewsController < ApplicationController
3
3
  respond_to :html, :xml, :json, :rss
4
4
  layout Spud::Blog.news_layout
5
5
 
6
- caches_action :show, :index,
7
- :expires => Spud::Blog.config.action_caching_duration,
8
- :if => Proc.new{ |c|
9
- Spud::Blog.cache_mode == :action && !(c.params[:page] && c.params[:page].to_i > 1) && (SpudPost.where(:is_news => true).future_posts.count == 0)
10
- }
11
-
12
- after_filter :only => [:show, :index] do |c|
13
- if Spud::Blog.cache_mode == :full_page && !(c.params[:page] && c.params[:page].to_i > 1)
14
- if (SpudPost.where(:is_news => true).future_posts.count == 0)
15
- c.cache_page(nil, nil, false)
16
- end
17
- end
18
- end
19
-
20
- cache_sweeper :spud_post_comment_sweeper, :only => [:create_comment]
21
-
22
6
  def index
23
- @posts = SpudPost.public_news_posts(params[:page], Spud::Blog.config.posts_per_page)
7
+ @posts = SpudPost.visible.news_posts.ordered.paginate(:page => params[:page], :per_page => Spud::Blog.config.posts_per_page)
24
8
  if Spud::Core.config.multisite_mode_enabled
25
9
  @posts = @posts.for_spud_site(current_site_id)
26
10
  end
@@ -43,9 +27,9 @@ class NewsController < ApplicationController
43
27
  def category
44
28
  if @post_category = SpudPostCategory.find_by_url_name(params[:category_url_name])
45
29
  if Spud::Core.config.multisite_mode_enabled
46
- @posts = @post_category.posts_with_children.public_news_posts(params[:page], Spud::Blog.config.posts_per_page).for_spud_site(current_site_id).from_archive(params[:archive_date])
30
+ @posts = @post_category.posts_with_children.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)
47
31
  else
48
- @posts = @post_category.posts_with_children.public_news_posts(params[:page], Spud::Blog.config.posts_per_page).from_archive(params[:archive_date])
32
+ @posts = @post_category.posts_with_children.visible.news_posts.from_archive(params[:archive_date]).paginate(:page => params[:page], :per_page => Spud::Blog.config.posts_per_page)
49
33
  end
50
34
  else
51
35
  redirect_to news_path
@@ -58,9 +42,9 @@ class NewsController < ApplicationController
58
42
 
59
43
  def archive
60
44
  if Spud::Core.config.multisite_mode_enabled
61
- @posts = SpudPost.public_news_posts(params[:page], Spud::Blog.config.posts_per_page).for_spud_site(current_site_id).from_archive(params[:archive_date])
45
+ @posts = SpudPost.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)
62
46
  else
63
- @posts = SpudPost.public_news_posts(params[:page], Spud::Blog.config.posts_per_page).from_archive(params[:archive_date])
47
+ @posts = SpudPost.visible.news_posts.from_archive(params[:archive_date]).paginate(:page => params[:page], :per_page => Spud::Blog.config.posts_per_page)
64
48
  end
65
49
  respond_with @posts do |format|
66
50
  format.html { render 'index' }
@@ -0,0 +1,2 @@
1
+ module Admin::NewsPostsHelper
2
+ end
@@ -0,0 +1,2 @@
1
+ module Admin::PostCategoriesHelper
2
+ end
@@ -0,0 +1,3 @@
1
+ module Admin::PostCommentsHelper
2
+
3
+ end
@@ -1,4 +1,4 @@
1
- module Spud::Admin::PostsHelper
1
+ module Admin::PostsHelper
2
2
 
3
3
  def options_for_parent_category(parent_id = 0)
4
4
  if @categories[parent_id]
@@ -0,0 +1,2 @@
1
+ module Blog::SitemapsHelper
2
+ end
@@ -8,7 +8,6 @@ module BlogHelper
8
8
  end
9
9
 
10
10
  def spud_post_archive_select
11
- dates = SpudPost.months_with_public_posts
12
11
  return select_tag 'archive_date', options_for_select(SpudPost.months_with_public_posts.collect{ |d|
13
12
  [d.strftime('%B %Y'), d.strftime('%Y-%b').downcase]
14
13
  }, params[:archive_date]), :include_blank => true, :rel => 'archive'
@@ -1,28 +1,34 @@
1
1
  class SpudPost < ActiveRecord::Base
2
2
  spud_searchable
3
3
 
4
- has_and_belongs_to_many :categories,
4
+ has_many :spud_post_categories_posts
5
+ has_many :categories,
5
6
  :class_name => 'SpudPostCategory',
6
- :join_table => 'spud_post_categories_posts',
7
- :foreign_key => 'spud_post_id'
7
+ :through => :spud_post_categories_posts,
8
+ :source => :spud_post_category
9
+
8
10
  belongs_to :author, :class_name => 'SpudUser', :foreign_key => 'spud_user_id'
9
11
  has_many :comments, :class_name => 'SpudPostComment', :inverse_of => :post
10
- has_many :pending_comments, :class_name => "SpudPostComment", :conditions => {:spam => [nil, false], :approved => false}
11
- has_many :visible_comments, :class_name => 'SpudPostComment',:conditions => {:spam => [nil,false], :approved => true}
12
- has_many :spam_comments, :class_name => "SpudPostComment", :conditions => {:spam => true}
12
+ has_many :pending_comments, ->{ where(:spam => [nil, false], :approved => false) }, :class_name => "SpudPostComment"
13
+ has_many :visible_comments, ->{ where(:spam => [nil,false], :approved => true) }, :class_name => 'SpudPostComment'
14
+ has_many :spam_comments, ->{ where(:spam => true) }, :class_name => "SpudPostComment"
13
15
  has_many :spud_permalinks,:as => :attachment
14
16
  has_many :spud_post_sites, :dependent => :destroy
15
17
 
16
- scope :publicly, where('visible = true AND published_at <= ?', Time.now.utc).order('published_at desc')
17
- scope :future_posts, where('visible = true AND published_at > ?', Time.now.utc)
18
+ scope :publicly, ->{ where('visible = true AND published_at <= ?', Time.now.utc).order('published_at desc') }
19
+ scope :future_posts, ->{ where('visible = true AND published_at > ?', Time.now.utc) }
20
+
21
+ scope :blog_posts, ->{ where(:is_news => false) }
22
+ scope :news_posts, ->{ where(:is_news => true) }
23
+ scope :visible, ->{ where('visible = true AND published_at <= ?', Time.now.utc) }
24
+ scope :ordered, ->{ order('published_at desc') }
25
+
18
26
  validates_presence_of :title, :content, :published_at, :spud_user_id, :url_name
19
27
  validates_uniqueness_of :url_name
20
28
  before_validation :set_url_name
21
- before_save :postprocess_content
22
-
23
29
  after_save :set_spud_site_ids
30
+ acts_as_spud_liquid_content
24
31
 
25
- attr_accessible :is_news,:published_at,:title,:content,:spud_user_id,:url_name,:visible,:comments_enabled,:meta_keywords,:meta_description,:category_ids, :spud_site_ids, :content_format
26
32
  attr_accessor :spud_site_ids
27
33
 
28
34
  def self.for_spud_site(spud_site_id)
@@ -30,14 +36,17 @@ class SpudPost < ActiveRecord::Base
30
36
  end
31
37
 
32
38
  def self.public_posts(page, per_page)
39
+ ActiveSupport::Deprecation.warn "SpudPost.public_posts is deprecated. Please the :visible, and :ordered scopes instead.", caller
33
40
  return where('visible = ? AND published_at <= ?', true,Time.now.utc).order('published_at desc').paginate(:page => page, :per_page => per_page)
34
41
  end
35
42
 
36
43
  def self.public_blog_posts(page, per_page)
44
+ ActiveSupport::Deprecation.warn "SpudPost.public_blog_posts is deprecated. Please the :blog_posts, :visible, and :ordered scopes instead.", caller
37
45
  return self.public_posts(page, per_page).where(:is_news => false)
38
46
  end
39
47
 
40
48
  def self.public_news_posts(page, per_page)
49
+ ActiveSupport::Deprecation.warn "SpudPost.public_news_posts is deprecated. Please the :news_posts, :visible, and :ordered scopes instead.", caller
41
50
  return self.public_posts(page, per_page).where(:is_news => true)
42
51
  end
43
52
 
@@ -46,11 +55,11 @@ class SpudPost < ActiveRecord::Base
46
55
  end
47
56
 
48
57
  def self.recent_blog_posts(limit=5)
49
- return self.recent_posts(limit).where(:is_news => false)
58
+ return self.blog_posts.recent_posts(limit)
50
59
  end
51
60
 
52
61
  def self.recent_news_posts(limit=5)
53
- return self.recent_posts(limit).where(:is_news => true)
62
+ return self.news_posts.recent_posts(limit)
54
63
  end
55
64
 
56
65
  def self.from_archive(date_string)
@@ -102,16 +111,16 @@ class SpudPost < ActiveRecord::Base
102
111
  end
103
112
 
104
113
  def postprocess_content
105
- if self.content_format == 'Markdown'
106
- require 'redcarpet'
107
- renderer = Redcarpet::Render::HTML.new
108
- extensions = {fenced_code_blocks: true}
109
- redcarpet = Redcarpet::Markdown.new(renderer, extensions)
110
- self.content_processed = redcarpet.render self.content
111
- else
114
+ # if self.content_format == 'Markdown'
115
+ # require 'redcarpet'
116
+ # renderer = Redcarpet::Render::HTML.new
117
+ # extensions = {fenced_code_blocks: true}
118
+ # redcarpet = Redcarpet::Markdown.new(renderer, extensions)
119
+ # self.content_processed = redcarpet.render self.content
120
+ # else
112
121
  template = Liquid::Template.parse(self.content)
113
122
  self.content_processed = template.render()
114
- end
123
+ # end
115
124
  end
116
125
 
117
126
  def content_processed
@@ -1,5 +1,4 @@
1
1
  class SpudPostCategoriesPost < ActiveRecord::Base
2
- attr_accessible :spud_post_id, :spud_post_category_id
3
- belongs_to :spud_post
2
+ belongs_to :spud_post, :touch => true
4
3
  belongs_to :spud_post_category
5
- end
4
+ end
@@ -12,8 +12,8 @@ class SpudPostCategory < ActiveRecord::Base
12
12
  before_validation :set_url_name
13
13
 
14
14
  before_destroy :update_child_categories
15
-
16
- attr_accessible :name, :url_name, :parent_id
15
+ after_update :touch_posts
16
+ after_destroy :touch_posts
17
17
 
18
18
  # tell awesome_nested_set not to destroy descendants
19
19
  def skip_before_destroy
@@ -67,4 +67,11 @@ class SpudPostCategory < ActiveRecord::Base
67
67
  self.children.update_all(:parent_id => self.parent_id)
68
68
  self.class.rebuild!
69
69
  end
70
+
71
+ def touch_posts
72
+ if self.name_changed?
73
+ self.posts.update_all(:updated_at => Time.now)
74
+ end
75
+ end
76
+
70
77
  end
@@ -1,14 +1,12 @@
1
1
  class SpudPostComment < ActiveRecord::Base
2
2
 
3
- attr_accessible :author, :content, :spud_post_id, :referrer, :spam, :user_agent, :user_ip, :permalink
4
-
5
3
  if Spud::Blog.enable_rakismet
6
4
  include Rakismet::Model
7
5
  before_save :rakismet_check_for_spam
8
6
  end
9
7
 
10
8
  validates_presence_of :author, :content
11
- belongs_to :post, :class_name => 'SpudPost', :foreign_key => 'spud_post_id', :counter_cache => :comments_count, :inverse_of => :comments
9
+ belongs_to :post, :class_name => 'SpudPost', :foreign_key => 'spud_post_id', :counter_cache => :comments_count, :inverse_of => :comments, :touch => true
12
10
 
13
11
  def visible?
14
12
  return approved && !spam
@@ -1,5 +1,4 @@
1
1
  class SpudPostSite < ActiveRecord::Base
2
- attr_accessible :spud_post_id, :spud_site_id
3
2
  belongs_to :spud_post
4
3
 
5
4
  def spud_site
@@ -0,0 +1,3 @@
1
+ <%= form_for @post, :url => admin_news_post_path(@post), :html => {:class => 'form-horizontal'} do |f| %>
2
+ <%= render :partial => '/admin/posts/form', :locals => {:f => f} %>
3
+ <% end %>