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,29 @@
1
+ =begin
2
+ @Name :BlogCategory model
3
+ @Created at :12-06-2012
4
+ @Updated at :12-06-2012
5
+ @Purpose :Needed for initailizing activerecord for blog_categories table in rails
6
+ @Company : Mindfire Solutions
7
+ =end
8
+ class BlogCategory < ActiveRecord::Base
9
+ extend FriendlyId
10
+ friendly_id :title, use: :slugged
11
+
12
+ #set table name prefix as mcms_
13
+ self.table_name = 'mcms_blog_categories'
14
+
15
+ #attribute accessibles
16
+ attr_accessible :title
17
+
18
+ #validation rules
19
+ validates :title, :presence => true
20
+
21
+
22
+ #model association rules
23
+ has_many :categorizations
24
+ has_many :posts, :through => :categorizations, :source => :blog_post
25
+
26
+ def post_count
27
+ posts.select(&:live?).count
28
+ end
29
+ end
@@ -0,0 +1,109 @@
1
+ =begin
2
+ @Name :BlogComment model
3
+ @Created at :12-06-2012
4
+ @Updated at :12-06-2012
5
+ @Purpose :Needed for initailizing activerecord for blog_comments table in rails
6
+ @Company :Mindfire Solutions
7
+ =end
8
+ class BlogComment < ActiveRecord::Base
9
+
10
+ #set a table name prefix
11
+ self.table_name = 'mcms_blog_comments'
12
+
13
+ #including NotificationHelper for notification helper methods
14
+ include ApplicationHelper
15
+
16
+ #attribute accessibles
17
+ attr_accessible :name, :email, :body, :blog_post_id, :state
18
+
19
+ #defining model associations
20
+ belongs_to :post, :class_name => 'BlogPost', :foreign_key => 'blog_post_id'
21
+
22
+ #validation rules
23
+ validates :name, :body, :presence => true
24
+ validates :email, :format => { :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i }
25
+
26
+ #defining some scopes for lambda call
27
+ scope :unmoderated, :conditions => {:state=> nil}
28
+ scope :approved, :conditions => {:state => 'approved'}
29
+ scope :rejected, :conditions => {:state => 'rejected'}
30
+
31
+
32
+ #Set the approved state for the comment
33
+ def approve!
34
+ self.update_attribute(:state, 'approved')
35
+ end
36
+
37
+ #Set the reject state for the comment
38
+ def reject!
39
+ self.update_attribute(:state, 'rejected')
40
+ end
41
+
42
+ #Findout whether the comment is rejected or not
43
+ def is_rejected?
44
+ self.state == 'rejected'
45
+ end
46
+
47
+ #Findout whether the comment is approved or not
48
+ def is_approved?
49
+ self.state == 'approved'
50
+ end
51
+
52
+ #Findout whether the comment is unmoderated or not
53
+ def is_unmoderated?
54
+ self.state.nil?
55
+ end
56
+
57
+ #Notification module related to comment notifications
58
+ module Notification
59
+
60
+ class << self
61
+ #recipients method setting or finding a perticular recipient for mcms
62
+ def recipients
63
+ #notify_me
64
+ end
65
+
66
+ def recipients=(emails)
67
+ Setting.set_notification_recipient(emails)
68
+ end
69
+
70
+ def subject
71
+ "New inquiry from your website"
72
+ end
73
+
74
+ def find_notification_recipient
75
+ Setting.find_notification_recipient
76
+ end
77
+
78
+ end
79
+ end
80
+
81
+ #Moderation module for comments
82
+ module Moderation
83
+ class << self
84
+ def enabled?
85
+ value = Setting.find_by_name('comment_moderation').value
86
+ if value.to_i == 1
87
+ return true
88
+ else
89
+ return false
90
+ end
91
+ end
92
+
93
+ def toggle!
94
+ new_value = {
95
+ :value => !BlogComment::Moderation.enabled?,
96
+ :scoping => 'blog',
97
+ :restricted => false
98
+ }
99
+ if RefinerySetting.respond_to?(:set)
100
+ RefinerySetting.set(:comment_moderation, new_value)
101
+ else
102
+ RefinerySetting[:comment_moderation] = new_value
103
+ end
104
+ end
105
+ end
106
+ end
107
+
108
+
109
+ end
@@ -0,0 +1,121 @@
1
+ =begin
2
+ @Name :BlogPost model
3
+ @Created at :12-06-2012
4
+ @Updated at :12-06-2012
5
+ @Purpose :Needed for initailizing activerecord for blog_posts table in rails
6
+ @Company : Mindfire Solutions
7
+ =end
8
+
9
+ class BlogPost < ActiveRecord::Base
10
+ extend FriendlyId
11
+ friendly_id :title, use: :slugged
12
+
13
+ #setting a table name prefix with mcms_
14
+ self.table_name = 'mcms_blog_posts'
15
+
16
+
17
+
18
+
19
+ #attribute accessibles
20
+ attr_accessible :title, :body, :tag_list, :draft, :published_at, :browser_title, :meta_keywords, :meta_description, :user_id, :category_ids, :custom_url, :custom_teaser,
21
+ :cached_slug
22
+
23
+ #Defining model associations
24
+ belongs_to :author, :class_name => 'User', :foreign_key => :user_id
25
+ has_many :comments, :class_name => 'BlogComment', :dependent => :destroy
26
+ has_many :categorizations
27
+ has_many :categories, :through => :categorizations, :source => :blog_category
28
+
29
+ #validation rules
30
+ validates :title, :presence => true
31
+ validates :body, :presence => true
32
+
33
+ #acts_as_taggable for blog posts
34
+ acts_as_taggable
35
+
36
+ #setting a default scope for all records
37
+ default_scope :order => 'published_at DESC'
38
+
39
+ #defining scope for user-defined functionality
40
+ scope :live, lambda { where( "published_at <= ? and draft = ?", Time.now, false) }
41
+ scope :all_previous, lambda { where(['published_at <= ?', Time.now.beginning_of_month]) }
42
+ scope :by_archive, lambda { |archive_date|
43
+ where(['published_at between ? and ?', archive_date.beginning_of_month, archive_date.end_of_month])
44
+ }
45
+
46
+ scope :by_year, lambda { |archive_year|
47
+ where(['published_at between ? and ?', archive_year.beginning_of_year, archive_year.end_of_year])
48
+ }
49
+
50
+
51
+ def live?
52
+ !draft and published_at <= Time.now
53
+ end
54
+
55
+ #class methods started here
56
+ class << self
57
+ def next current_record
58
+ self.send(:with_exclusive_scope) do
59
+ where(["published_at > ? and draft = ?", current_record.published_at, false]).order("published_at ASC")
60
+ end
61
+ end
62
+
63
+ def comments_allowed?
64
+ # RefinerySetting.find_or_set(:comments_allowed, true, {
65
+ # :scoping => 'blog'
66
+ # })
67
+ end
68
+
69
+ def uncategorized
70
+ BlogPost.live.reject { |p| p.categories.any? }
71
+ end
72
+ end
73
+
74
+ #Added module for settings
75
+ module CommentSetting
76
+ class << self
77
+
78
+ #this method returns true if comments_allowed value is true or 1 neither false in settings table
79
+ def is_comments_allowed?
80
+ value = Setting.find_by_name('comment_allowed').value
81
+ if value.to_i == 1
82
+ return true
83
+ else
84
+ return false
85
+ end
86
+ end
87
+
88
+ #this method returns true if comments_moderated value is true or 1 neither false in settings table
89
+ def is_comments_moderated?
90
+ value = Setting.find_by_name('comment_moderation').value
91
+ if value.to_i == 1
92
+ true
93
+ else
94
+ false
95
+ end
96
+ end
97
+
98
+ #this method update the comments_allowed value to false
99
+ def do_uncommentable
100
+ Setting.blog_uncommentable_setting
101
+ end
102
+
103
+ #this method update the comments_allowed value to true
104
+ def do_commentable
105
+ Setting.blog_commentable_setting
106
+ end
107
+
108
+ #this method update the comments_allowed value to false
109
+ def do_unmoderatable
110
+ Setting.blog_unmoderatable_setting
111
+ end
112
+
113
+ #this method update the comments_allowed value to true
114
+ def do_moderatable
115
+ Setting.blog_moderatable_setting
116
+ end
117
+
118
+ end
119
+ end
120
+
121
+ end
@@ -0,0 +1,16 @@
1
+ =begin
2
+ @Name Categorization model
3
+ @Created at :12-06-2012
4
+ @Updated at :12-06-2012
5
+ @Purpose :Needed for initailizing activerecord for blog_categories_blog_posts table in rails
6
+ @Company : Mindfire Solutions
7
+ =end
8
+ class Categorization < ActiveRecord::Base
9
+
10
+ #Setting table name
11
+ self.table_name = 'mcms_blog_categories_blog_posts'
12
+
13
+ #Defining model associations
14
+ belongs_to :blog_post
15
+ belongs_to :blog_category
16
+ end
@@ -0,0 +1,6 @@
1
+ class Ckeditor::Asset < ActiveRecord::Base
2
+ self.table_name = 'mcms_assets'
3
+ include Ckeditor::Orm::ActiveRecord::AssetBase
4
+ include Ckeditor::Backend::Paperclip
5
+ end
6
+
@@ -0,0 +1,12 @@
1
+ class Ckeditor::AttachmentFile < Ckeditor::Asset
2
+ has_attached_file :data,
3
+ :url => "/ckeditor_assets/attachments/:id/:filename",
4
+ :path => ":rails_root/public/ckeditor_assets/attachments/:id/:filename"
5
+
6
+ validates_attachment_size :data, :less_than => 100.megabytes
7
+ validates_attachment_presence :data
8
+
9
+ def url_thumb
10
+ @url_thumb ||= Ckeditor::Utils.filethumb(filename)
11
+ end
12
+ end
@@ -0,0 +1,13 @@
1
+ class Ckeditor::Picture < Ckeditor::Asset
2
+ has_attached_file :data,
3
+ :url => "/ckeditor_assets/pictures/:id/:style_:basename.:extension",
4
+ :path => ":rails_root/public/ckeditor_assets/pictures/:id/:style_:basename.:extension",
5
+ :styles => { :content => '800>', :thumb => '118x100#' }
6
+
7
+ validates_attachment_size :data, :less_than => 2.megabytes
8
+ validates_attachment_presence :data
9
+
10
+ def url_content
11
+ url(:content)
12
+ end
13
+ end
@@ -0,0 +1,59 @@
1
+ =begin
2
+ @Name :Setting model
3
+ @Created at :19-06-2012
4
+ @Updated at :20-06-2012
5
+ @Purpose :Needed for initailizing activerecord for mcms_settings table in rails
6
+ @Company :Mindfire Solutions
7
+ =end
8
+ class Setting < ActiveRecord::Base
9
+
10
+ #setting a table name prefix with mcms_
11
+ self.table_name = 'mcms_settings'
12
+
13
+ #including SettingsHelper to call helper methods here
14
+ include SettingsHelper
15
+
16
+ #attr_accessibles
17
+ attr_accessible :name, :value, :destroyable
18
+
19
+ #make settings for blogs to be uncommentable by updating attribute value to 0
20
+ def self.blog_uncommentable_setting
21
+ self.find_by_name('comment_allowed').update_attribute(:value, SettingsHelper.uncommentable)
22
+ end
23
+
24
+ #make settings for blogs to be commentable by updating attribute value to 1
25
+ def self.blog_commentable_setting
26
+ self.find_by_name('comment_allowed').update_attribute(:value, SettingsHelper.commentable)
27
+ end
28
+
29
+ #make settings for blogs to be unmoderatable by updating attribute value to 0
30
+ def self.blog_unmoderatable_setting
31
+ self.find_by_name('comment_moderation').update_attributes(:value => SettingsHelper.unmoderatable)
32
+ end
33
+
34
+ #make settings for blogs to be moderatable by updating attribute value to 1
35
+ def self.blog_moderatable_setting
36
+ self.find_by_name('comment_moderation').update_attributes(:value => SettingsHelper.moderatable)
37
+ end
38
+
39
+ #retrieve notification_recipient email
40
+ def self.notification_recipient
41
+ email_id = self.find_by_name('notication_recipient').email
42
+ if email_id.present?
43
+ return email_id
44
+ else
45
+ return User.first.email
46
+ end
47
+ end
48
+
49
+ #Setting notification recipients emails.
50
+ def self.set_notification_recipient(emails)
51
+ self.find_by_name('notification_recipient').update_attributes(:value => emails)
52
+ end
53
+
54
+ #Finding notification recipients emails.
55
+ def self.find_notification_recipient
56
+ self.find_by_name('notification_recipient').value
57
+ end
58
+
59
+ end
@@ -0,0 +1,89 @@
1
+ <!--
2
+ @Name: admin/blog/_submenu.html.erb
3
+ @Use: This is a page for displaying menu parts in admin side
4
+ @Created date: 13-06-2012
5
+ @Modified Date: 13-06-2012
6
+ @Company: Mindfire Solutions
7
+ -->
8
+ <nav id='actions' class='multilist'>
9
+
10
+ <ul class='collapsible-menu'>
11
+ <li class='not-a-link'>
12
+ <%= link_to t('.posts.title'), '#',
13
+ :class => 'page-copy-icon' %>
14
+ </li>
15
+ <li>
16
+ <%= link_to t('.posts.manage'), admin_blog_posts_path,
17
+ :class => 'page-icon' %>
18
+ </li>
19
+ <li>
20
+ <%= link_to t('.posts.uncategorized'), uncategorized_admin_blog_posts_url,
21
+ :class => 'page-icon' %>
22
+ </li>
23
+ <li>
24
+ <%= link_to t('.posts.new'), new_admin_blog_post_url,
25
+ :class => 'page-add-icon' %>
26
+ </li>
27
+ </ul>
28
+
29
+
30
+ <ul class='collapsible-menu'>
31
+ <li class='not-a-link'>
32
+ <%= link_to t('.categories.title'), '#',
33
+ :class => 'folder-icon' %>
34
+ </li>
35
+ <li>
36
+ <%= link_to t('.categories.manage'), admin_blog_categories_url,
37
+ :class => 'folder-edit-icon' %>
38
+ </li>
39
+ <li>
40
+ <%= link_to t('.categories.new'), new_admin_blog_category_url,
41
+ :class => 'folder-add-icon' %>
42
+ </li>
43
+ </ul>
44
+
45
+ <% if BlogPost::CommentSetting.is_comments_allowed? %>
46
+ <ul class='collapsible-menu'>
47
+ <li class='not-a-link'>
48
+
49
+ <%= link_to 'Comments', '#',
50
+ :class => 'comments-icon' %>
51
+ </li>
52
+ <li>
53
+ <%= link_to t('.comments.new'), admin_blog_comments_path,
54
+ :class => 'comment-icon' %>
55
+ </li>
56
+ <li>
57
+ <%= link_to t('.comments.approved'), approved_admin_blog_comments_path,
58
+ :class => 'comment-tick-icon' %>
59
+ </li>
60
+ <li>
61
+ <%= link_to t('.comments.rejected'), rejected_admin_blog_comments_path,
62
+ :class => 'comment-cross-icon' %>
63
+ </li>
64
+ </ul>
65
+ <% end %>
66
+
67
+ <ul class='collapsible-menu'>
68
+ <li class='not-a-link'>
69
+ <%= link_to t('.settings.title'), admin_blog_settings_path,
70
+ :class => 'settings-icon' %>
71
+ </li>
72
+ <li>
73
+ <%= link_to t('.settings.comments'), comments_admin_blog_settings_url,
74
+ :class => "#{BlogPost::CommentSetting.is_comments_allowed? ? 'success' : 'failure'}-icon" %>
75
+ </li>
76
+ <li>
77
+ <%= link_to t('.settings.moderation'), moderation_admin_blog_settings_url,
78
+ :class => "#{BlogPost::CommentSetting.is_comments_moderated? ? 'success' : 'failure'}-icon" %>
79
+ </li>
80
+ <li>
81
+ <%= link_to t('.settings.update_notified'),
82
+ notification_recipients_admin_blog_settings_url,
83
+ :class => 'user-comment-icon' %>
84
+ </li>
85
+ </ul>
86
+
87
+ </nav>
88
+
89
+
@@ -0,0 +1,20 @@
1
+ <li class='clearfix record <%= cycle("on", "on-hover") %>' id="<%= dom_id(category) -%>">
2
+ <span class='title'>
3
+ <%= category.title %>
4
+ <span class="preview">&nbsp;</span>
5
+ </span>
6
+
7
+ <span class='actions'>
8
+
9
+ <%= link_to image_tag("icons/application_edit.png"), edit_admin_blog_category_path(category),
10
+ :title => 'Edit' %>
11
+ <%= link_to image_tag("icons/delete.png"), admin_blog_category_path(category),
12
+ :class => "cancel confirm-delete",
13
+ :title => 'Delete',
14
+ :method => :delete,
15
+ :confirm => "Are you sure to delete ?" %>
16
+ <%= link_to image_tag("icons/application_go.png"), blog_category_path(category),
17
+ :title => 'Show' %>
18
+ </span>
19
+
20
+ </li>
@@ -0,0 +1,21 @@
1
+ <!--
2
+ @Name: admin/blog/categories/_form.html.erb
3
+ @Use: This is a partial for opening form for input categories records
4
+ @Created date: 13-06-2012
5
+ @Modified Date: 05-07-2012
6
+ @Company: Mindfire Solutions
7
+ -->
8
+ <%= form_for [:admin, @blog_category] do |f| %>
9
+ <%= render :partial => "/shared/admin/error_messages",
10
+ :locals => {
11
+ :object => f.object,
12
+ :include_object_name => true
13
+ } %>
14
+
15
+ <div class='field'>
16
+ <%= f.label :title -%>
17
+ <%= f.text_field :title, :class => 'larger widest' -%>
18
+ </div>
19
+
20
+ <%= render :partial => "/shared/admin/form_actions", :locals => { :f => f } %>
21
+ <% end %>
@@ -0,0 +1,3 @@
1
+ <ul id='sortable_list'>
2
+ <%= render :partial => 'category', :collection => @blog_categories %>
3
+ </ul>
@@ -0,0 +1 @@
1
+ <%= render :partial => "form" %>
@@ -0,0 +1,23 @@
1
+ <!--
2
+ @Name: admin/blog/categories/index.html.erb
3
+ @Use: This is a page for displaying categories records
4
+ @Created date: 13-06-2012
5
+ @Modified Date: 13-06-2012
6
+ @Company: Mindfire Solutions
7
+ -->
8
+ <%=render :partial=>'/admin/blog/submenu' %>
9
+ <div id='records'>
10
+ <% if @blog_categories.any? %>
11
+ <%= will_paginate @blog_categories %>
12
+
13
+ <%= render :partial => "sortable_list" %>
14
+
15
+ <%= will_paginate @blog_categories %>
16
+ <% else %>
17
+ <p>
18
+ <strong>
19
+ <%= t('.no_items_yet', :create => t('admin.blog.submenu.categories.new')) %>
20
+ </strong>
21
+ </p>
22
+ <% end %>
23
+ </div>
@@ -0,0 +1,2 @@
1
+ <%= 'Add Category' %>
2
+ <%= render :partial => "form" %>
@@ -0,0 +1,27 @@
1
+ <!--
2
+ @Name: admin/blog/comments/_comment.html.erb
3
+ @Use: This is a page for displaying comments records
4
+ @Created date: 13-06-2012
5
+ @Modified Date: 19-06-2012
6
+ @Company: Mindfire Solutions
7
+ -->
8
+ <li class='clearfix record <%= cycle("on", "on-hover") %>' id="<%= "comment-#{comment.to_param}" -%>">
9
+ <span class='title'>
10
+ <%= comment.name %>
11
+ <span class="preview"> <%= truncate(comment.body, :length => 75) %></span>
12
+ </span>
13
+ <span class='actions'>
14
+ <%= link_to image_tag("icons/application_go.png"),
15
+ blog_post_url(comment.post, :anchor => "comment-#{comment.to_param}"),
16
+ :title => t('.view_live_html'),
17
+ :target => "_blank" unless comment.is_unmoderated? %>
18
+ <%= link_to image_tag('icons/zoom.png'), admin_blog_comment_path(comment),
19
+ :title => t('.read') %>
20
+ <%= link_to image_tag("icons/cross.png"),
21
+ rejected_admin_blog_comment_path(comment, :return_to => request.path.split('/').last.gsub(/^comments$/, 'index')),
22
+ :title => t('.reject') unless comment.is_rejected? %>
23
+ <%= link_to image_tag("icons/tick.png"),
24
+ approved_admin_blog_comment_path(comment, :return_to => request.path.split('/').last.gsub(/^comments$/, 'index')),
25
+ :title => t('.approve') unless comment.is_approved? %>
26
+ </span>
27
+ </li>
@@ -0,0 +1,11 @@
1
+ <!--
2
+ @Name: admin/blog/comments/_sortable_list.html.erb
3
+ @Use: This is a page for displaying blog comments records
4
+ @Created date: 13-06-2012
5
+ @Modified Date: 13-06-2012
6
+ @Company: Mindfire Solutions
7
+ -->
8
+ <ul id='sortable_list'>
9
+ <%= render :partial => 'comment', :collection => @blog_comments %>
10
+ </ul>
11
+
@@ -0,0 +1,12 @@
1
+ <%= render :partial => '/admin/blog/submenu' %>
2
+ <div id='records'>
3
+
4
+ <% if @blog_comments.any? %>
5
+ <%= render :partial => "sortable_list" %>
6
+ <% else %>
7
+ <h3>
8
+ <%= t('.no_items_yet',
9
+ :type => t("admin.blog.submenu.comments.#{action_name.gsub('index', 'new')}").downcase) %>
10
+ </h3>
11
+ <% end %>
12
+ </div>
@@ -0,0 +1,70 @@
1
+ <!--
2
+ @Name: admin/blog/comments/show.html.erb
3
+ @Use: This is a page for displaying comment record by id
4
+ @Created date: 18-06-2012
5
+ @Modified Date: 19-06-2012
6
+ @Company: Mindfire Solutions
7
+ -->
8
+ <div id='actions'>
9
+ <h2><%= t('.details')%></h2>
10
+ <p>
11
+ <strong><%= t('.age') %>:</strong> <%= time_ago_in_words(@blog_comment.created_at) %>
12
+ </p>
13
+ <h2><%= t('.actions') %></h2>
14
+ <ul>
15
+ <li>
16
+ <%= link_to t('.back'), {:action => 'index'}, :class => "back_icon" %>
17
+ </li>
18
+ <li>
19
+ <%= link_to t('.reject'), rejected_admin_blog_comment_path(@blog_comment, :return_to => 'rejected'),
20
+ :class => 'comment_cross_icon' unless @blog_comment.is_rejected? %>
21
+ </li>
22
+ <li>
23
+ <%= link_to t('.approve'), approved_admin_blog_comment_path(@blog_comment, :return_to => 'approved'),
24
+ :class => 'comment_tick_icon' unless @blog_comment.is_approved? %>
25
+ </li>
26
+ </ul>
27
+ </div>
28
+ <div id='records'>
29
+ <h2><%= t('.comment') %></h2>
30
+ <table id='inquiry'>
31
+ <tr>
32
+ <td>
33
+ <strong><%= t('.blog_post') %></strong>
34
+ </td>
35
+ <td>
36
+ <%= link_to @blog_comment.post.title,
37
+ blog_post_url(@blog_comment.post, :anchor => "comment-#{@blog_comment.to_param}"),
38
+ :target => '_blank' %>
39
+ </td>
40
+ </tr>
41
+ <tr>
42
+ <td>
43
+ <strong><%= t('.from') %></strong>
44
+ </td>
45
+ <td>
46
+ <%= @blog_comment.name %> [<%= mail_to @blog_comment.email, @blog_comment.email, {:title => t('.click_to_email')} %>]
47
+ </td>
48
+ </tr>
49
+ <tr>
50
+ <td>
51
+ <strong><%= t('.date') %></strong>
52
+ </td>
53
+ <td>
54
+ <%= l(Date.parse(@blog_comment.created_at.to_s), :format => :long) %>
55
+ </td>
56
+ </tr>
57
+ <tr>
58
+ <td valign='top'>
59
+ <strong><%= t('.message') %></strong>
60
+ </td>
61
+ <td>
62
+ <p style='margin-top: 0px'>
63
+ <%= @blog_comment.body.gsub("\r\n\r\n", "\r\n").gsub("\r\n", "</p><p>") %>
64
+ </p>
65
+ </td>
66
+ </tr>
67
+ </table>
68
+ </div>
69
+
70
+