mcms_blog 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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