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.
- data/MIT-LICENSE +20 -0
- data/README.rdoc +3 -0
- data/Rakefile +40 -0
- data/app/assets/images/icons/accept.png +0 -0
- data/app/assets/images/icons/add.png +0 -0
- data/app/assets/images/icons/ajax-loader.gif +0 -0
- data/app/assets/images/icons/application_edit.png +0 -0
- data/app/assets/images/icons/application_go.png +0 -0
- data/app/assets/images/icons/arrow_left.png +0 -0
- data/app/assets/images/icons/arrow_switch.png +0 -0
- data/app/assets/images/icons/arrow_up.png +0 -0
- data/app/assets/images/icons/bin.png +0 -0
- data/app/assets/images/icons/bin_closed.png +0 -0
- data/app/assets/images/icons/cancel.png +0 -0
- data/app/assets/images/icons/cog_add.png +0 -0
- data/app/assets/images/icons/cog_edit.png +0 -0
- data/app/assets/images/icons/cross.png +0 -0
- data/app/assets/images/icons/delete.png +0 -0
- data/app/assets/images/icons/doc.png +0 -0
- data/app/assets/images/icons/down.gif +0 -0
- data/app/assets/images/icons/edit.png +0 -0
- data/app/assets/images/icons/email.png +0 -0
- data/app/assets/images/icons/email_edit.png +0 -0
- data/app/assets/images/icons/email_go.png +0 -0
- data/app/assets/images/icons/email_open.png +0 -0
- data/app/assets/images/icons/eye.png +0 -0
- data/app/assets/images/icons/folder_page_white.png +0 -0
- data/app/assets/images/icons/image_add.png +0 -0
- data/app/assets/images/icons/image_edit.png +0 -0
- data/app/assets/images/icons/img.png +0 -0
- data/app/assets/images/icons/information.png +0 -0
- data/app/assets/images/icons/layout_add.png +0 -0
- data/app/assets/images/icons/layout_edit.png +0 -0
- data/app/assets/images/icons/music.png +0 -0
- data/app/assets/images/icons/page_add.png +0 -0
- data/app/assets/images/icons/page_edit.png +0 -0
- data/app/assets/images/icons/page_white_edit.png +0 -0
- data/app/assets/images/icons/page_white_gear.png +0 -0
- data/app/assets/images/icons/page_white_put.png +0 -0
- data/app/assets/images/icons/pdf.png +0 -0
- data/app/assets/images/icons/ppt.png +0 -0
- data/app/assets/images/icons/star.png +0 -0
- data/app/assets/images/icons/tick.png +0 -0
- data/app/assets/images/icons/up.gif +0 -0
- data/app/assets/images/icons/user_add.png +0 -0
- data/app/assets/images/icons/user_comment.png +0 -0
- data/app/assets/images/icons/user_edit.png +0 -0
- data/app/assets/images/icons/xls.png +0 -0
- data/app/assets/images/icons/zip.png +0 -0
- data/app/assets/images/icons/zoom.png +0 -0
- data/app/assets/images/page_bg.png +0 -0
- data/app/assets/images/rails.png +0 -0
- data/app/assets/javascripts/admin/blog/mcms-blog-submenu.js +50 -0
- data/app/assets/javascripts/contrib/ui.core.js +519 -0
- data/app/assets/javascripts/contrib/ui.tabs.js +688 -0
- data/app/assets/javascripts/posts.js +3 -0
- data/app/assets/stylesheets/blog_global.css +1587 -0
- data/app/assets/stylesheets/blog_home.css +1432 -0
- data/app/assets/stylesheets/home.css +1429 -0
- data/app/assets/stylesheets/images/back_ui-bg_gloss-wave_55_5c9ccc_500x100.png +0 -0
- data/app/assets/stylesheets/images/spellayt.gif +0 -0
- data/app/assets/stylesheets/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
- data/app/assets/stylesheets/images/ui-bg_flat_55_fbec88_40x100.png +0 -0
- data/app/assets/stylesheets/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
- data/app/assets/stylesheets/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
- data/app/assets/stylesheets/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
- data/app/assets/stylesheets/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
- data/app/assets/stylesheets/images/ui-bg_glass_75_d0e5f5_1x400.png +0 -0
- data/app/assets/stylesheets/images/ui-bg_glass_75_dadada_1x400.png +0 -0
- data/app/assets/stylesheets/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
- data/app/assets/stylesheets/images/ui-bg_glass_85_dfeffc_1x400.png +0 -0
- data/app/assets/stylesheets/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
- data/app/assets/stylesheets/images/ui-bg_gloss-wave_55_5c9ccc_500x100.png +0 -0
- data/app/assets/stylesheets/images/ui-bg_green.png +1 -0
- data/app/assets/stylesheets/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
- data/app/assets/stylesheets/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
- data/app/assets/stylesheets/images/ui-bg_inset-hard_100_f5f8f9_1x100.png +0 -0
- data/app/assets/stylesheets/images/ui-bg_inset-hard_100_fcfdfd_1x100.png +0 -0
- data/app/assets/stylesheets/images/ui-icons_217bc0_256x240.png +0 -0
- data/app/assets/stylesheets/images/ui-icons_222222_256x240.png +0 -0
- data/app/assets/stylesheets/images/ui-icons_2e83ff_256x240.png +0 -0
- data/app/assets/stylesheets/images/ui-icons_454545_256x240.png +0 -0
- data/app/assets/stylesheets/images/ui-icons_469bdd_256x240.png +0 -0
- data/app/assets/stylesheets/images/ui-icons_6da8d5_256x240.png +0 -0
- data/app/assets/stylesheets/images/ui-icons_888888_256x240.png +0 -0
- data/app/assets/stylesheets/images/ui-icons_cd0a0a_256x240.png +0 -0
- data/app/assets/stylesheets/images/ui-icons_d8e7f3_256x240.png +0 -0
- data/app/assets/stylesheets/images/ui-icons_f9bd01_256x240.png +0 -0
- data/app/assets/stylesheets/jquery-ui-1.8.6.custom.css +572 -0
- data/app/assets/stylesheets/submenu.css.scss +32 -0
- data/app/controllers/admin/blog/categories_controller.rb +47 -0
- data/app/controllers/admin/blog/comments_controller.rb +64 -0
- data/app/controllers/admin/blog/posts_controller.rb +80 -0
- data/app/controllers/admin/blog/settings_controller.rb +67 -0
- data/app/controllers/application_controller.rb +29 -0
- data/app/controllers/blog/categories_controller.rb +34 -0
- data/app/controllers/blog/comments_controller.rb +34 -0
- data/app/controllers/blog/posts_controller.rb +123 -0
- data/app/controllers/blog_controller.rb +31 -0
- data/app/helpers/application_helper.rb +5 -0
- data/app/helpers/blog_helper.rb +66 -0
- data/app/helpers/notification_hepler.rb +5 -0
- data/app/helpers/settings_helper.rb +38 -0
- data/app/mailers/blog/comment_mailer.rb +12 -0
- data/app/models/blog_category.rb +29 -0
- data/app/models/blog_comment.rb +109 -0
- data/app/models/blog_post.rb +121 -0
- data/app/models/categorization.rb +16 -0
- data/app/models/ckeditor/asset.rb +6 -0
- data/app/models/ckeditor/attachment_file.rb +12 -0
- data/app/models/ckeditor/picture.rb +13 -0
- data/app/models/setting.rb +59 -0
- data/app/views/admin/blog/_submenu.html.erb +89 -0
- data/app/views/admin/blog/categories/_category.html.erb +20 -0
- data/app/views/admin/blog/categories/_form.html.erb +21 -0
- data/app/views/admin/blog/categories/_sortable_list.html.erb +3 -0
- data/app/views/admin/blog/categories/edit.html.erb +1 -0
- data/app/views/admin/blog/categories/index.html.erb +23 -0
- data/app/views/admin/blog/categories/new.html.erb +2 -0
- data/app/views/admin/blog/comments/_comment.html.erb +27 -0
- data/app/views/admin/blog/comments/_sortable_list.html.erb +11 -0
- data/app/views/admin/blog/comments/index.html.erb +12 -0
- data/app/views/admin/blog/comments/show.html.erb +70 -0
- data/app/views/admin/blog/posts/_form.css.erb +22 -0
- data/app/views/admin/blog/posts/_form.html.erb +92 -0
- data/app/views/admin/blog/posts/_form.js.erb +34 -0
- data/app/views/admin/blog/posts/_form_part.html.erb +10 -0
- data/app/views/admin/blog/posts/_post.html.erb +26 -0
- data/app/views/admin/blog/posts/_sortable_list.html.erb +3 -0
- data/app/views/admin/blog/posts/_teaser_part.html.erb +11 -0
- data/app/views/admin/blog/posts/edit.html.erb +1 -0
- data/app/views/admin/blog/posts/index.html.erb +29 -0
- data/app/views/admin/blog/posts/new.html.erb +13 -0
- data/app/views/admin/blog/settings/notification_recipients.html.erb +23 -0
- data/app/views/blog/categories/show.html.erb +17 -0
- data/app/views/blog/posts/_comment.html.erb +17 -0
- data/app/views/blog/posts/_nav.html.erb +18 -0
- data/app/views/blog/posts/_post.html.erb +25 -0
- data/app/views/blog/posts/archive.html.erb +17 -0
- data/app/views/blog/posts/index.html.erb +15 -0
- data/app/views/blog/posts/show.html.erb +64 -0
- data/app/views/blog/posts/tagged.html.erb +20 -0
- data/app/views/blog/shared/_categories.html.erb +19 -0
- data/app/views/blog/shared/_post.html.erb +34 -0
- data/app/views/blog/shared/_posts.html.erb +17 -0
- data/app/views/blog/shared/_rss_feed.html.erb +2 -0
- data/app/views/blog/shared/_tags.html.erb +17 -0
- data/app/views/layouts/_javascript.html.erb +3 -0
- data/app/views/layouts/_scripts.html.erb +6 -0
- data/app/views/layouts/_stylesheets.html.erb +6 -0
- data/app/views/layouts/admin.html.erb +25 -0
- data/app/views/layouts/application.html.erb +38 -0
- data/app/views/layouts/home.html.erb +38 -0
- data/app/views/shared/_footer.html.erb +3 -0
- data/app/views/shared/_head.html.erb +4 -0
- data/app/views/shared/_header.html.erb +7 -0
- data/app/views/shared/_javascripts.html.erb +3 -0
- data/app/views/shared/_menu.html.erb +9 -0
- data/app/views/shared/_stylesheets.html.erb +6 -0
- data/app/views/shared/admin/_error_messages.html.erb +16 -0
- data/app/views/shared/admin/_form_actions.html.erb +34 -0
- data/config/locales/en.yml +192 -0
- data/config/routes.rb +65 -0
- data/db/migrate/20120606150655_create_mcms_assets.rb +26 -0
- data/db/migrate/20120608071959_create_blog_categories.rb +9 -0
- data/db/migrate/20120608072013_create_blog_comments.rb +14 -0
- data/db/migrate/20120608072027_create_blog_posts.rb +16 -0
- data/db/migrate/20120612055745_create_categorizations.rb +9 -0
- data/db/migrate/20120618104134_add_index_in_blog_comments.rb +5 -0
- data/db/migrate/20120618105246_add_custom_index_in_mcms_blog_comments.rb +5 -0
- data/db/migrate/20120618105511_add_custom_index_in_mcms_blog_posts.rb +5 -0
- data/db/migrate/20120619094143_create_settings.rb +12 -0
- data/db/migrate/20120627063009_acts_as_taggable_on_migration.rb +28 -0
- data/db/migrate/20120629065434_add_slug_to_blog_post.rb +6 -0
- data/db/migrate/20120629113457_add_slug_to_mcms_blog_category.rb +6 -0
- data/db/seeds.rb +26 -0
- data/lib/generators/mcms_blog/USAGE +8 -0
- data/lib/generators/mcms_blog/mcms_blog_generator.rb +60 -0
- data/lib/generators/mcms_blog/templates/asset_manager.rb +107 -0
- data/lib/generators/mcms_blog/templates/ckeditor.rb +18 -0
- data/lib/mcms_blog/engine.rb +18 -0
- data/lib/mcms_blog/version.rb +3 -0
- data/lib/mcms_blog.rb +4 -0
- data/lib/tasks/mcms_blog_tasks.rake +4 -0
- data/test/dummy/README.rdoc +261 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/assets/javascripts/application.js +15 -0
- data/test/dummy/app/assets/stylesheets/application.css +13 -0
- data/test/dummy/app/controllers/application_controller.rb +3 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/config/application.rb +59 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +67 -0
- data/test/dummy/config/environments/test.rb +37 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/inflections.rb +15 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/routes.rb +58 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +25 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +6 -0
- data/test/integration/navigation_test.rb +10 -0
- data/test/mcms_blog_test.rb +7 -0
- data/test/test_helper.rb +15 -0
- 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,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,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
|