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