mcms_blog 0.0.2

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 (216) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.rdoc +3 -0
  3. data/Rakefile +40 -0
  4. data/app/assets/images/icons/accept.png +0 -0
  5. data/app/assets/images/icons/add.png +0 -0
  6. data/app/assets/images/icons/ajax-loader.gif +0 -0
  7. data/app/assets/images/icons/application_edit.png +0 -0
  8. data/app/assets/images/icons/application_go.png +0 -0
  9. data/app/assets/images/icons/arrow_left.png +0 -0
  10. data/app/assets/images/icons/arrow_switch.png +0 -0
  11. data/app/assets/images/icons/arrow_up.png +0 -0
  12. data/app/assets/images/icons/bin.png +0 -0
  13. data/app/assets/images/icons/bin_closed.png +0 -0
  14. data/app/assets/images/icons/cancel.png +0 -0
  15. data/app/assets/images/icons/cog_add.png +0 -0
  16. data/app/assets/images/icons/cog_edit.png +0 -0
  17. data/app/assets/images/icons/cross.png +0 -0
  18. data/app/assets/images/icons/delete.png +0 -0
  19. data/app/assets/images/icons/doc.png +0 -0
  20. data/app/assets/images/icons/down.gif +0 -0
  21. data/app/assets/images/icons/edit.png +0 -0
  22. data/app/assets/images/icons/email.png +0 -0
  23. data/app/assets/images/icons/email_edit.png +0 -0
  24. data/app/assets/images/icons/email_go.png +0 -0
  25. data/app/assets/images/icons/email_open.png +0 -0
  26. data/app/assets/images/icons/eye.png +0 -0
  27. data/app/assets/images/icons/folder_page_white.png +0 -0
  28. data/app/assets/images/icons/image_add.png +0 -0
  29. data/app/assets/images/icons/image_edit.png +0 -0
  30. data/app/assets/images/icons/img.png +0 -0
  31. data/app/assets/images/icons/information.png +0 -0
  32. data/app/assets/images/icons/layout_add.png +0 -0
  33. data/app/assets/images/icons/layout_edit.png +0 -0
  34. data/app/assets/images/icons/music.png +0 -0
  35. data/app/assets/images/icons/page_add.png +0 -0
  36. data/app/assets/images/icons/page_edit.png +0 -0
  37. data/app/assets/images/icons/page_white_edit.png +0 -0
  38. data/app/assets/images/icons/page_white_gear.png +0 -0
  39. data/app/assets/images/icons/page_white_put.png +0 -0
  40. data/app/assets/images/icons/pdf.png +0 -0
  41. data/app/assets/images/icons/ppt.png +0 -0
  42. data/app/assets/images/icons/star.png +0 -0
  43. data/app/assets/images/icons/tick.png +0 -0
  44. data/app/assets/images/icons/up.gif +0 -0
  45. data/app/assets/images/icons/user_add.png +0 -0
  46. data/app/assets/images/icons/user_comment.png +0 -0
  47. data/app/assets/images/icons/user_edit.png +0 -0
  48. data/app/assets/images/icons/xls.png +0 -0
  49. data/app/assets/images/icons/zip.png +0 -0
  50. data/app/assets/images/icons/zoom.png +0 -0
  51. data/app/assets/images/page_bg.png +0 -0
  52. data/app/assets/images/rails.png +0 -0
  53. data/app/assets/javascripts/admin/blog/mcms-blog-submenu.js +50 -0
  54. data/app/assets/javascripts/contrib/ui.core.js +519 -0
  55. data/app/assets/javascripts/contrib/ui.tabs.js +688 -0
  56. data/app/assets/javascripts/posts.js +3 -0
  57. data/app/assets/stylesheets/blog_global.css +1587 -0
  58. data/app/assets/stylesheets/blog_home.css +1432 -0
  59. data/app/assets/stylesheets/home.css +1429 -0
  60. data/app/assets/stylesheets/images/back_ui-bg_gloss-wave_55_5c9ccc_500x100.png +0 -0
  61. data/app/assets/stylesheets/images/spellayt.gif +0 -0
  62. data/app/assets/stylesheets/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  63. data/app/assets/stylesheets/images/ui-bg_flat_55_fbec88_40x100.png +0 -0
  64. data/app/assets/stylesheets/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  65. data/app/assets/stylesheets/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  66. data/app/assets/stylesheets/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  67. data/app/assets/stylesheets/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  68. data/app/assets/stylesheets/images/ui-bg_glass_75_d0e5f5_1x400.png +0 -0
  69. data/app/assets/stylesheets/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  70. data/app/assets/stylesheets/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  71. data/app/assets/stylesheets/images/ui-bg_glass_85_dfeffc_1x400.png +0 -0
  72. data/app/assets/stylesheets/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  73. data/app/assets/stylesheets/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png +0 -0
  74. data/app/assets/stylesheets/images/ui-bg_green.png +1 -0
  75. data/app/assets/stylesheets/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  76. data/app/assets/stylesheets/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  77. data/app/assets/stylesheets/images/ui-bg_inset-hard_100_f5f8f9_1x100.png +0 -0
  78. data/app/assets/stylesheets/images/ui-bg_inset-hard_100_fcfdfd_1x100.png +0 -0
  79. data/app/assets/stylesheets/images/ui-icons_217bc0_256x240.png +0 -0
  80. data/app/assets/stylesheets/images/ui-icons_222222_256x240.png +0 -0
  81. data/app/assets/stylesheets/images/ui-icons_2e83ff_256x240.png +0 -0
  82. data/app/assets/stylesheets/images/ui-icons_454545_256x240.png +0 -0
  83. data/app/assets/stylesheets/images/ui-icons_469bdd_256x240.png +0 -0
  84. data/app/assets/stylesheets/images/ui-icons_6da8d5_256x240.png +0 -0
  85. data/app/assets/stylesheets/images/ui-icons_888888_256x240.png +0 -0
  86. data/app/assets/stylesheets/images/ui-icons_cd0a0a_256x240.png +0 -0
  87. data/app/assets/stylesheets/images/ui-icons_d8e7f3_256x240.png +0 -0
  88. data/app/assets/stylesheets/images/ui-icons_f9bd01_256x240.png +0 -0
  89. data/app/assets/stylesheets/jquery-ui-1.8.6.custom.css +572 -0
  90. data/app/assets/stylesheets/submenu.css.scss +32 -0
  91. data/app/controllers/admin/blog/categories_controller.rb +47 -0
  92. data/app/controllers/admin/blog/comments_controller.rb +64 -0
  93. data/app/controllers/admin/blog/posts_controller.rb +80 -0
  94. data/app/controllers/admin/blog/settings_controller.rb +67 -0
  95. data/app/controllers/application_controller.rb +29 -0
  96. data/app/controllers/blog/categories_controller.rb +34 -0
  97. data/app/controllers/blog/comments_controller.rb +34 -0
  98. data/app/controllers/blog/posts_controller.rb +123 -0
  99. data/app/controllers/blog_controller.rb +31 -0
  100. data/app/helpers/application_helper.rb +5 -0
  101. data/app/helpers/blog_helper.rb +66 -0
  102. data/app/helpers/notification_hepler.rb +5 -0
  103. data/app/helpers/settings_helper.rb +38 -0
  104. data/app/mailers/blog/comment_mailer.rb +12 -0
  105. data/app/models/blog_category.rb +29 -0
  106. data/app/models/blog_comment.rb +109 -0
  107. data/app/models/blog_post.rb +121 -0
  108. data/app/models/categorization.rb +16 -0
  109. data/app/models/ckeditor/asset.rb +6 -0
  110. data/app/models/ckeditor/attachment_file.rb +12 -0
  111. data/app/models/ckeditor/picture.rb +13 -0
  112. data/app/models/setting.rb +59 -0
  113. data/app/views/admin/blog/_submenu.html.erb +89 -0
  114. data/app/views/admin/blog/categories/_category.html.erb +20 -0
  115. data/app/views/admin/blog/categories/_form.html.erb +21 -0
  116. data/app/views/admin/blog/categories/_sortable_list.html.erb +3 -0
  117. data/app/views/admin/blog/categories/edit.html.erb +1 -0
  118. data/app/views/admin/blog/categories/index.html.erb +23 -0
  119. data/app/views/admin/blog/categories/new.html.erb +2 -0
  120. data/app/views/admin/blog/comments/_comment.html.erb +27 -0
  121. data/app/views/admin/blog/comments/_sortable_list.html.erb +11 -0
  122. data/app/views/admin/blog/comments/index.html.erb +12 -0
  123. data/app/views/admin/blog/comments/show.html.erb +70 -0
  124. data/app/views/admin/blog/posts/_form.css.erb +22 -0
  125. data/app/views/admin/blog/posts/_form.html.erb +92 -0
  126. data/app/views/admin/blog/posts/_form.js.erb +34 -0
  127. data/app/views/admin/blog/posts/_form_part.html.erb +10 -0
  128. data/app/views/admin/blog/posts/_post.html.erb +26 -0
  129. data/app/views/admin/blog/posts/_sortable_list.html.erb +3 -0
  130. data/app/views/admin/blog/posts/_teaser_part.html.erb +11 -0
  131. data/app/views/admin/blog/posts/edit.html.erb +1 -0
  132. data/app/views/admin/blog/posts/index.html.erb +29 -0
  133. data/app/views/admin/blog/posts/new.html.erb +13 -0
  134. data/app/views/admin/blog/settings/notification_recipients.html.erb +23 -0
  135. data/app/views/blog/categories/show.html.erb +17 -0
  136. data/app/views/blog/posts/_comment.html.erb +17 -0
  137. data/app/views/blog/posts/_nav.html.erb +18 -0
  138. data/app/views/blog/posts/_post.html.erb +25 -0
  139. data/app/views/blog/posts/archive.html.erb +17 -0
  140. data/app/views/blog/posts/index.html.erb +15 -0
  141. data/app/views/blog/posts/show.html.erb +64 -0
  142. data/app/views/blog/posts/tagged.html.erb +20 -0
  143. data/app/views/blog/shared/_categories.html.erb +19 -0
  144. data/app/views/blog/shared/_post.html.erb +34 -0
  145. data/app/views/blog/shared/_posts.html.erb +17 -0
  146. data/app/views/blog/shared/_rss_feed.html.erb +2 -0
  147. data/app/views/blog/shared/_tags.html.erb +17 -0
  148. data/app/views/layouts/_javascript.html.erb +3 -0
  149. data/app/views/layouts/_scripts.html.erb +6 -0
  150. data/app/views/layouts/_stylesheets.html.erb +6 -0
  151. data/app/views/layouts/admin.html.erb +25 -0
  152. data/app/views/layouts/application.html.erb +38 -0
  153. data/app/views/layouts/home.html.erb +38 -0
  154. data/app/views/shared/_footer.html.erb +3 -0
  155. data/app/views/shared/_head.html.erb +4 -0
  156. data/app/views/shared/_header.html.erb +7 -0
  157. data/app/views/shared/_javascripts.html.erb +3 -0
  158. data/app/views/shared/_menu.html.erb +9 -0
  159. data/app/views/shared/_stylesheets.html.erb +6 -0
  160. data/app/views/shared/admin/_error_messages.html.erb +16 -0
  161. data/app/views/shared/admin/_form_actions.html.erb +34 -0
  162. data/config/locales/en.yml +192 -0
  163. data/config/routes.rb +65 -0
  164. data/db/migrate/20120606150655_create_mcms_assets.rb +26 -0
  165. data/db/migrate/20120608071959_create_blog_categories.rb +9 -0
  166. data/db/migrate/20120608072013_create_blog_comments.rb +14 -0
  167. data/db/migrate/20120608072027_create_blog_posts.rb +16 -0
  168. data/db/migrate/20120612055745_create_categorizations.rb +9 -0
  169. data/db/migrate/20120618104134_add_index_in_blog_comments.rb +5 -0
  170. data/db/migrate/20120618105246_add_custom_index_in_mcms_blog_comments.rb +5 -0
  171. data/db/migrate/20120618105511_add_custom_index_in_mcms_blog_posts.rb +5 -0
  172. data/db/migrate/20120619094143_create_settings.rb +12 -0
  173. data/db/migrate/20120627063009_acts_as_taggable_on_migration.rb +28 -0
  174. data/db/migrate/20120629065434_add_slug_to_blog_post.rb +6 -0
  175. data/db/migrate/20120629113457_add_slug_to_mcms_blog_category.rb +6 -0
  176. data/db/seeds.rb +26 -0
  177. data/lib/generators/mcms_blog/USAGE +8 -0
  178. data/lib/generators/mcms_blog/mcms_blog_generator.rb +60 -0
  179. data/lib/generators/mcms_blog/templates/asset_manager.rb +107 -0
  180. data/lib/generators/mcms_blog/templates/ckeditor.rb +18 -0
  181. data/lib/mcms_blog/engine.rb +18 -0
  182. data/lib/mcms_blog/version.rb +3 -0
  183. data/lib/mcms_blog.rb +4 -0
  184. data/lib/tasks/mcms_blog_tasks.rake +4 -0
  185. data/test/dummy/README.rdoc +261 -0
  186. data/test/dummy/Rakefile +7 -0
  187. data/test/dummy/app/assets/javascripts/application.js +15 -0
  188. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  189. data/test/dummy/app/controllers/application_controller.rb +3 -0
  190. data/test/dummy/app/helpers/application_helper.rb +2 -0
  191. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  192. data/test/dummy/config/application.rb +59 -0
  193. data/test/dummy/config/boot.rb +10 -0
  194. data/test/dummy/config/database.yml +25 -0
  195. data/test/dummy/config/environment.rb +5 -0
  196. data/test/dummy/config/environments/development.rb +37 -0
  197. data/test/dummy/config/environments/production.rb +67 -0
  198. data/test/dummy/config/environments/test.rb +37 -0
  199. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  200. data/test/dummy/config/initializers/inflections.rb +15 -0
  201. data/test/dummy/config/initializers/mime_types.rb +5 -0
  202. data/test/dummy/config/initializers/secret_token.rb +7 -0
  203. data/test/dummy/config/initializers/session_store.rb +8 -0
  204. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  205. data/test/dummy/config/locales/en.yml +5 -0
  206. data/test/dummy/config/routes.rb +58 -0
  207. data/test/dummy/config.ru +4 -0
  208. data/test/dummy/public/404.html +26 -0
  209. data/test/dummy/public/422.html +26 -0
  210. data/test/dummy/public/500.html +25 -0
  211. data/test/dummy/public/favicon.ico +0 -0
  212. data/test/dummy/script/rails +6 -0
  213. data/test/integration/navigation_test.rb +10 -0
  214. data/test/mcms_blog_test.rb +7 -0
  215. data/test/test_helper.rb +15 -0
  216. metadata +403 -0
@@ -0,0 +1,32 @@
1
+ ul.collapsible-menu li {
2
+ position: relative;
3
+ }
4
+ ul.collapsible-menu li span.arrow {
5
+ background-repeat: no-repeat;
6
+ position: absolute;
7
+ right: 10px;
8
+ top: 13px;
9
+ width: 11px;
10
+ height: 7px;
11
+ cursor: pointer;
12
+ }
13
+ ul.collapsible-menu li span.arrow {
14
+ background-image: url('icons/up.gif');
15
+ }
16
+ ul.collapsible-menu li.closed span.arrow {
17
+ background-image: url('icons/down.gif');
18
+ }
19
+ ul.collapsible-menu > div {
20
+ width: 93%;
21
+ margin: 0px auto;
22
+ }
23
+
24
+ .collapsible-menu {
25
+
26
+ .success-icon {
27
+ background :url('icons/tick.png');
28
+ }
29
+ .failure-icon {
30
+ background :url('icons/cross.png');
31
+ }
32
+ }
@@ -0,0 +1,47 @@
1
+ =begin
2
+ @Name: Admin Blog Categories controller
3
+ @Purpose: Creating , modifying, deleting blog posts for the cms
4
+ @Created date: 08-06-2012
5
+ @Modified Date: 09-06-2012
6
+ @Company : Mindfire Solutions
7
+ =end
8
+ class Admin::Blog::CategoriesController < ::ApplicationController
9
+
10
+ prepend_before_filter :authenticate_user!
11
+
12
+ load_and_authorize_resource
13
+ #Assigning a layout admin for admin side controller
14
+ layout 'admin'
15
+
16
+ #calling load_assets method before all method to include css and javascript files
17
+ before_filter :load_assets1
18
+
19
+ #Crudify method used for a normal crud methods by crudify gem
20
+ #It creates new, create, edit, update, delete, show methods for blog category
21
+ crudify :blog_category,
22
+ :title_attribute => :title,
23
+ :order => 'title ASC'
24
+
25
+
26
+ #Create method for creating blog category
27
+ #parameters: title
28
+
29
+ def create
30
+ @blog_category = BlogCategory.new(params[:blog_category]) #Creating BlogCategory model object with the params blog_post
31
+
32
+ if @blog_category.save
33
+ redirect_to admin_blog_categories_path
34
+ else
35
+ render new_admin_blog_category_path
36
+ end
37
+ end
38
+
39
+ protected
40
+
41
+ #include css and javascript files to AssetManager class global array
42
+ def load_assets1
43
+ AssetManager.include_css [:blog_global, :submenu]
44
+ end
45
+
46
+
47
+ end
@@ -0,0 +1,64 @@
1
+ =begin
2
+ @Name: Admin Blog Comments controller
3
+ @Purpose: Creating , modifying, deleting blog comments for the cms
4
+ @Created date: 08-06-2012
5
+ @Modified Date: 12-06-2012
6
+ @Company : Mindfire Solutions
7
+ =end
8
+ class Admin::Blog::CommentsController < ApplicationController
9
+
10
+ prepend_before_filter :authenticate_user!
11
+
12
+ load_and_authorize_resource
13
+
14
+
15
+ before_filter :load_assets
16
+
17
+ #Assigning a layout admin for admin side controller
18
+ layout 'admin'
19
+
20
+ #Crudify method used for a normal crud methods by crudify gem
21
+ #It creates new, create, edit, update, delete, show methods for blog comment
22
+ crudify :blog_comment,
23
+ :title_attribute => :name,
24
+ :order => 'published_at DESC'
25
+
26
+ #showing all comments where state are nil
27
+ def index
28
+ @blog_comments = BlogComment.unmoderated
29
+ render :action => 'index'
30
+ end
31
+
32
+ #approving comments if there is a request to approve comment
33
+ #showing all approved comments when params[:id] is not present
34
+ def approved
35
+ unless params[:id].present?
36
+ @blog_comments = BlogComment.approved
37
+ render :action => 'index'
38
+ else
39
+ @blog_comment = BlogComment.find(params[:id])
40
+ @blog_comment.approve!
41
+ flash[:notice] = t('admin.blog.comments.approved', :author => @blog_comment.name)
42
+ redirect_to :action => params[:return_to] || 'index'
43
+ end
44
+ end
45
+
46
+ #rejecting comments if there is a request to reject comment
47
+ #showing all rejected comments when params[:id] is not present
48
+ def rejected
49
+ unless params[:id].present?
50
+ @blog_comments = BlogComment.rejected
51
+ render :action => 'index'
52
+ else
53
+ @blog_comment = BlogComment.find(params[:id])
54
+ @blog_comment.reject!
55
+ flash[:notice] = t('admin.blog.comments.rejected', :author => @blog_comment.name)
56
+ redirect_to :action => params[:return_to] || 'index'
57
+ end
58
+ end
59
+
60
+ def load_assets
61
+ AssetManager.include_css [:blog_global, :submenu]
62
+ end
63
+
64
+ end
@@ -0,0 +1,80 @@
1
+ =begin
2
+ @Name: Admin BlogPosts controller
3
+ @Use: Creating , modifying, deleting blog posts for the cms
4
+ @Created date: 08-06-2012
5
+ @Modified Date: 12-06-2012
6
+ @Company: Mindfire Solutions
7
+ =end
8
+ require 'will_paginate/array'
9
+ class Admin::Blog::PostsController < ::ApplicationController
10
+
11
+ #prepend_before_filter :authenticate_user!
12
+
13
+ #load_and_authorize_resource
14
+ #include will_paginate
15
+ #
16
+
17
+ #Including javascripts and css files as per the controller method basis
18
+ before_filter :load_js
19
+
20
+ #Crudify method used for a normal crud methods by crudify gem
21
+ #It creates new, create, edit, update, delete, show methods for blog post
22
+ crudify :blog_post,
23
+ :title_attribute => :title,
24
+ :order => 'published_at DESC'
25
+
26
+
27
+ #Calling before filter for find all categories assign @blog categories
28
+ before_filter :find_all_categories,
29
+ :only => [:new, :edit, :create, :update]
30
+
31
+
32
+
33
+ #Assigning a layout admin for admin side controller
34
+ layout 'admin'
35
+ #create method for creating blogbosts
36
+ #parameters: title, body, cached_slug
37
+ def create
38
+ # if the position field exists, set this object as last object, given the conditions of this class.
39
+
40
+ #Creating BlogPost model object with the params blog_post
41
+ @blog_post = BlogPost.new(params[:blog_post])
42
+
43
+ @blog_post.user_id = current_user ? current_user.id: 0
44
+ @blog_post.body = params[:blog_post][:body] #assigning params[:content] as blog_post body
45
+ @blog_post.cached_slug = params[:blog_post][:cached_slug] #assigning params[:content1] as blog_post cached_slug
46
+
47
+
48
+ if @blog_post.save
49
+ redirect_to admin_blog_root_path
50
+ else
51
+ render new_admin_blog_post_path
52
+ end
53
+ end
54
+
55
+ #assigning all uncategorized blog posts to @blog_posts
56
+ def uncategorized
57
+ @blog_posts = BlogPost.uncategorized.paginate({
58
+ :page => params[:page],
59
+ :per_page => BlogPost.per_page
60
+ })
61
+ render 'index'
62
+ end
63
+
64
+ protected #protected methods started from here
65
+
66
+ #assigning all blog categories as @blog_categories
67
+ def find_all_categories
68
+ @blog_categories = BlogCategory.find(:all)
69
+ end
70
+
71
+ #initailizing the array of javascript and css files by Asset manger for including in page
72
+ def load_js
73
+ AssetManager.include_contrib_library [:core_ui, :jquery_tab]
74
+ AssetManager.include_local_library [:posts, 'ckeditor/init']
75
+
76
+ AssetManager.include_css [:blog_global, :submenu]
77
+ end
78
+
79
+ end
80
+
@@ -0,0 +1,67 @@
1
+ =begin
2
+ @Name: Admin Blog Settings controller
3
+ @Use: Creating , modifying, deleting blog settings for the cms
4
+ @Created date: 08-06-2012
5
+ @Modified Date: 29-06-2012
6
+ @Company: Mindfire Solutions
7
+ =end
8
+ class Admin::Blog::SettingsController < ::ApplicationController
9
+
10
+ prepend_before_filter :authenticate_user!
11
+
12
+ load_and_authorize_resource
13
+
14
+ before_filter :load_assets
15
+
16
+ #Assigning a layout admin for admin side controller
17
+ layout 'admin'
18
+
19
+ #Checking for the blog is commentable or not then do commentable or uncommentable
20
+ def comments
21
+ value = BlogPost::CommentSetting.is_comments_allowed?
22
+
23
+ if value
24
+ BlogPost::CommentSetting.do_uncommentable
25
+ else
26
+ BlogPost::CommentSetting.do_commentable
27
+ end
28
+
29
+ redirect_to request.env['HTTP_REFERER']
30
+ end
31
+
32
+ #Checking for the blog is moderatable or not then do moderatable or moderatable
33
+ def moderation
34
+ value = BlogPost::CommentSetting.is_comments_moderated?
35
+
36
+ if value
37
+ BlogPost::CommentSetting.do_unmoderatable
38
+ else
39
+ BlogPost::CommentSetting.do_moderatable
40
+ end
41
+
42
+ redirect_to request.env['HTTP_REFERER']
43
+ end
44
+
45
+ #notification_recipients for notifying recipients
46
+ def notification_recipients
47
+ @recipients = BlogComment::Notification.recipients
48
+
49
+ if request.post?
50
+ BlogComment::Notification.recipients = params[:recipients]
51
+ flash[:notice] = t('admin.blog.settings.notification_recipients.updated',
52
+ :recipients => BlogComment::Notification.recipients)
53
+ unless request.xhr?
54
+ redirect_to admin_blog_posts_path
55
+ else
56
+ render :text => "<script type='text/javascript'>parent.window.location = '#{admin_blog_posts_path}';</script>",
57
+ :layout => false
58
+ end
59
+ end
60
+ end
61
+
62
+ protected
63
+
64
+ def load_assets
65
+ AssetManager.include_css [:blog_global, :submenu]
66
+ end
67
+ end
@@ -0,0 +1,29 @@
1
+ =begin
2
+ @Name: Application controller
3
+ @Use: This is the main application controller which is public to all project files
4
+ @Created date: 08-06-2012
5
+ @Modified Date: 12-06-2012
6
+ @Company: Mindfire Solutions
7
+ =end
8
+ class ApplicationController < ActionController::Base
9
+ protect_from_forgery
10
+
11
+ include BlogHelper
12
+
13
+ #calling before filter for load_js
14
+
15
+ before_filter :find_tags
16
+
17
+ #Assigning array of javascript needed for all pages defaultly
18
+ def load_assets
19
+ AssetManager.include_contrib_library [:core_ui, :jquery_tab]
20
+ AssetManager.include_css "blog_global"
21
+ end
22
+
23
+
24
+
25
+ def find_tags
26
+ @tags = BlogPost.tag_counts_on(:tags)
27
+ end
28
+
29
+ end
@@ -0,0 +1,34 @@
1
+ =begin
2
+ Name: Categories controller
3
+ Use: Creating , modifying, deleting blog categories for the cms
4
+ Created date: 27-06-2012
5
+ Modified date: 27-06-2012
6
+ Company : Mindfire Solutions
7
+ =end
8
+ class Blog::CategoriesController < BlogController
9
+
10
+ layout 'home'
11
+ #including Settings Helper
12
+ include SettingsHelper
13
+
14
+ before_filter :load_css, :find_tags
15
+
16
+ #show to show category per id
17
+ def show
18
+ @category = BlogCategory.find(params[:id])
19
+ @blog_posts = @category.posts.live.includes(:comments, :categories).paginate({
20
+ :page => params[:page],
21
+ :per_page => blog_posts_per_page
22
+ })
23
+ end
24
+
25
+ #load_assets includes all css files for this controller
26
+ def load_css
27
+ AssetManager.include_css [:blog_home, :home]
28
+ end
29
+
30
+ #finding tags for blog posts
31
+ def find_tags
32
+ @tags = BlogPost.tag_counts_on(:tags)
33
+ end
34
+ end
@@ -0,0 +1,34 @@
1
+ =begin
2
+ Name: Comments controller
3
+ Use: Creating , modifying, deleting blog comments for the cms
4
+ Created date: 08-06-2012
5
+ Modified Date:
6
+ =end
7
+ class Blog::CommentsController < BlogController
8
+
9
+ crudify :blog_comment
10
+
11
+ def index
12
+
13
+ end
14
+
15
+ def new
16
+
17
+ end
18
+
19
+ def create
20
+
21
+ end
22
+
23
+ def edit
24
+
25
+ end
26
+
27
+ def update
28
+
29
+ end
30
+
31
+ def destroy
32
+
33
+ end
34
+ end
@@ -0,0 +1,123 @@
1
+ =begin
2
+ Name: Posts controller
3
+ Use: Creating , modifying, deleting blog posts for the cms
4
+ Created date: 08-06-2012
5
+ Modified Date:
6
+ =end
7
+ class Blog::PostsController < BlogController
8
+
9
+ layout 'home'
10
+
11
+ #include settings helper
12
+ include SettingsHelper
13
+ include BlogHelper
14
+
15
+ #before_filter method starts here
16
+ before_filter :find_blog_post, :find_tags
17
+ before_filter :find_all_blog_posts, :except =>[:archive]
18
+ before_filter :load_css
19
+
20
+ #before_filter :layout_include
21
+
22
+
23
+ respond_to :html, :js, :rss
24
+
25
+
26
+ #Crudify method used for a normal crud methods by crudify gem
27
+ #It creates new, create, edit, update, delete, show methods for blog post
28
+ crudify :blog_post,
29
+ :title_attribute => :title,
30
+ :order => 'published_at DESC'
31
+
32
+ def comment
33
+ @blog_post = BlogPost.find(params[:id])
34
+ if (@blog_comment = @blog_post.comments.create(params[:blog_comment])).valid?
35
+ if BlogComment::Moderation.enabled? or @blog_comment.ham?
36
+ begin
37
+ Blog::CommentMailer.notification(@blog_comment).deliver
38
+ rescue
39
+ logger.warn "There was an error delivering a blog comment notification.\n#{$!}\n"
40
+ end
41
+ end
42
+
43
+ if BlogComment::Moderation.enabled?
44
+ flash[:notice] = t('blog.posts.comments.thank_you_moderated')
45
+ redirect_to blog_post_url(params[:id])
46
+ else
47
+ flash[:notice] = t('blog.posts.comments.thank_you')
48
+ redirect_to blog_post_url(params[:id],
49
+ :anchor => "comment-#{@blog_comment.to_param}")
50
+ end
51
+ else
52
+ render :action => 'show'
53
+ end
54
+ end
55
+
56
+ #tagged method for listing tagged blog posts
57
+ def tagged
58
+ @tag = ActsAsTaggableOn::Tag.find(params[:tag_id])
59
+ @tag_name = @tag.name
60
+ @blog_posts = BlogPost.tagged_with(@tag_name).paginate({
61
+ :page => params[:page],
62
+ :per_page => blog_posts_per_page
63
+ })
64
+ end
65
+
66
+ #archive method for listing archived blog posts
67
+ def archive
68
+
69
+ if params[:month].present?
70
+ date = "#{params[:month]}/#{params[:year]}"
71
+ @archive_date = Time.parse(date)
72
+ @date_title = @archive_date.strftime('%B %Y')
73
+ @blog_posts = BlogPost.live.by_archive(@archive_date).paginate({
74
+ :page => params[:page],
75
+ :per_page => blog_posts_per_page
76
+ })
77
+ else
78
+ date = "01/#{params[:year]}"
79
+ @archive_date = Time.parse(date)
80
+ @date_title = @archive_date.strftime('%Y')
81
+ @blog_posts = BlogPost.live.by_year(@archive_date).paginate({
82
+ :page => params[:page],
83
+ :per_page => blog_posts_per_page
84
+ })
85
+ end
86
+ respond_with (@blog_posts)
87
+ end
88
+
89
+ #protected methods start here
90
+ protected
91
+
92
+ def load_css
93
+ AssetManager.include_css [ :blog_home, :home]
94
+ end
95
+
96
+ #find blog post for a parameter of blog post id
97
+ def find_blog_post
98
+ @blog_categories = BlogCategory.all
99
+ unless (@blog_post = BlogPost.find(params[:id])).try(:live?)
100
+ #if refinery_user? and current_user.authorized_plugins.include?("refinerycms_blog")
101
+ @blog_post = BlogPost.find(params[:id])
102
+ #else
103
+ # error_404
104
+ #end
105
+ end
106
+ end
107
+
108
+ #This method refers to find all blog posts
109
+ def find_all_blog_posts
110
+ @blog_posts = BlogPost.live.includes(:comments, :categories).paginate({
111
+ :page => params[:page],
112
+ :per_page => blog_posts_per_page
113
+ })
114
+ end
115
+
116
+ #finding tags for blog posts
117
+ def find_tags
118
+ @tags = BlogPost.tag_counts_on(:tags)
119
+ end
120
+
121
+
122
+
123
+ end
@@ -0,0 +1,31 @@
1
+ =begin
2
+ @Name: Blog controller
3
+ @Use: Creating , modifying, deleting blogs for the cms
4
+ @Created date: 08-06-2012
5
+ @Modified Date: 12-06-2012
6
+ @Company : Mindfire Solutions
7
+ =end
8
+ class BlogController < ApplicationController
9
+
10
+ #Helper files added
11
+ helper :blog
12
+
13
+ #before filter added functionalities
14
+ before_filter :find_page, :find_all_blog_categories
15
+
16
+ #protected methods start here
17
+ protected
18
+
19
+ #find_page
20
+ def find_page
21
+ #@page = Page.find_by_link_url("/blog")
22
+ end
23
+
24
+ #method for retrieving all blog categories
25
+ def find_all_blog_categories
26
+ @blog_categories = BlogCategory.all
27
+ end
28
+
29
+
30
+
31
+ end
@@ -0,0 +1,5 @@
1
+ module ApplicationHelper
2
+ def notify_me
3
+ 'debadattap@mindfiresolutions.com'
4
+ end
5
+ end
@@ -0,0 +1,66 @@
1
+ =begin
2
+ @Name: Blog helper
3
+ @Use: defining helper methods to be used in controllers, models, views of blog posts
4
+ @Created date: 08-06-2012
5
+ @Modified Date: 27-06-2012
6
+ @Company : Mindfire Solutions
7
+ =end
8
+ module BlogHelper
9
+
10
+ #blog_archive_list
11
+ def blog_archive_list
12
+ posts = BlogPost.select('published_at').all_previous
13
+ return nil if posts.blank?
14
+ html = '<section id="blog_archive_list" class="module-archives module"><h2>'
15
+ html << t('blog.shared.archives')
16
+ html << '</h2><nav><ul>'
17
+ links = []
18
+ super_old_links = []
19
+
20
+ posts.each do |e|
21
+ if e.published_at >= Time.now.end_of_year.advance(:years => -3)
22
+ links << e.published_at.strftime('%m/%Y')
23
+ else
24
+ super_old_links << e.published_at.strftime('01/%Y')
25
+ end
26
+ end
27
+ links.uniq!
28
+ super_old_links.uniq!
29
+ links.each do |l|
30
+ year = l.split('/')[1]
31
+ month = l.split('/')[0]
32
+ count = BlogPost.by_archive(Time.parse(l)).size
33
+ text = t("date.month_names")[month.to_i] + " #{year} (#{count})"
34
+ html << "<li>"
35
+ html << link_to(text, archive_blog_posts_path(:year => year, :month => month))
36
+ html << "</li>"
37
+ end
38
+ super_old_links.each do |l|
39
+ year = l.split('/')[1]
40
+ count = BlogPost.by_year(Time.parse(l)).size
41
+ text = "#{year} (#{count})"
42
+ html << "<li>"
43
+ html << link_to(text, archive_blog_posts_path(:year => year))
44
+ html << "</li>"
45
+ end
46
+ html << '</ul></nav></section>'
47
+ html.html_safe
48
+ end
49
+
50
+ #next or previous posts
51
+ def next_or_previous?(post)
52
+ post.next.present? or post.prev.present?
53
+ end
54
+
55
+ #blog post
56
+ def blog_post_teaser(post)
57
+ if post.respond_to?(:custom_teaser) && post.custom_teaser.present?
58
+ post.custom_teaser.html_safe
59
+ else
60
+ truncate(post.body, {
61
+ :length => RefinerySetting.find_or_set(:blog_post_teaser_length, 250),
62
+ :preserve_html_tags => true
63
+ }).html_safe
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,5 @@
1
+ module NotificationHelper
2
+ def notify_me
3
+ return 'debadattap@mindfiresolutions.com'
4
+ end
5
+ end
@@ -0,0 +1,38 @@
1
+ =begin
2
+ @Name : SettingsHelper
3
+ @Purpose: This is a helper file for settings related configurations
4
+ @Created_at : 20-06-2012
5
+ @Modified_at : 20-06-2012
6
+ @Company : Mindfire Solutions
7
+ =end
8
+ module SettingsHelper
9
+
10
+ #settings for blog posts to be commentable
11
+ #returns 1
12
+ def self.commentable
13
+ return 1
14
+ end
15
+
16
+ #settings for blog posts to be uncommentable
17
+ #returns 0
18
+ def self.uncommentable
19
+ return 0
20
+ end
21
+
22
+ #settings for blog posts to be moderatable
23
+ #returns 1
24
+ def self.moderatable
25
+ return 1
26
+ end
27
+
28
+ #settings for blog posts to be unmoderatable
29
+ #returns 0
30
+ def self.unmoderatable
31
+ return 0
32
+ end
33
+
34
+ def blog_posts_per_page
35
+ 10
36
+ end
37
+
38
+ end
@@ -0,0 +1,12 @@
1
+ class Blog::CommentMailer < ActionMailer::Base
2
+
3
+ def notification(comment)
4
+ subject = BlogComment::Notification.subject
5
+ recipients = BlogComment::Notification.find_notification_recipient
6
+ from = 'fake@mcmsdevolper.com'
7
+ sent_on = Time.now
8
+ @comment = comment.body
9
+ mail(:subject => subject, :from => from, :body => @comment, :to => recipients)
10
+ end
11
+
12
+ end