community_engine 3.0.0 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (198) hide show
  1. checksums.yaml +5 -13
  2. data/.gitignore +4 -1
  3. data/.travis.yml +5 -2
  4. data/CHANGELOG.markdown +270 -0
  5. data/Gemfile +3 -0
  6. data/README.markdown +20 -21
  7. data/Rakefile +8 -6
  8. data/TODO.markdown +3 -0
  9. data/UPGRADING.markdown +46 -36
  10. data/app/assets/javascripts/active_admin.js.coffee +19 -0
  11. data/app/assets/javascripts/ckeditor/configs/ads.js.coffee +175 -0
  12. data/app/assets/javascripts/ckeditor/configs/comments.js.coffee +2 -0
  13. data/app/assets/javascripts/ckeditor/configs/posts.js.coffee +248 -0
  14. data/app/assets/javascripts/ckeditor/rte/rte.ads.js.coffee +7 -0
  15. data/app/assets/javascripts/ckeditor/rte/rte.comments.js.coffee +8 -0
  16. data/app/assets/javascripts/ckeditor/rte/rte.js.coffee +20 -0
  17. data/app/assets/javascripts/ckeditor/rte/rte.posts.js.coffee +14 -0
  18. data/app/assets/javascripts/community_engine.js +114 -123
  19. data/{vendor → app}/assets/javascripts/jcrop/jquery.Jcrop.js +0 -0
  20. data/{vendor → app}/assets/javascripts/jcrop/jquery.color.js +0 -0
  21. data/{vendor → app}/assets/javascripts/tag-it/tag-it.js +0 -0
  22. data/app/assets/stylesheets/active_admin.css.scss +27 -0
  23. data/{vendor → app}/assets/stylesheets/jcrop/Jcrop.gif +0 -0
  24. data/{vendor → app}/assets/stylesheets/jcrop/jquery.Jcrop.min.css +0 -0
  25. data/{vendor → app}/assets/stylesheets/tag-it/tag-it.css +0 -0
  26. data/{vendor → app}/assets/stylesheets/tag-it/tagit.ui-zendesk.css +0 -0
  27. data/app/controllers/activities_controller.rb +4 -4
  28. data/app/controllers/albums_controller.rb +13 -18
  29. data/app/controllers/authorizations_controller.rb +1 -1
  30. data/app/controllers/base_controller.rb +9 -32
  31. data/app/controllers/categories_controller.rb +1 -78
  32. data/app/controllers/clippings_controller.rb +3 -7
  33. data/app/controllers/comments_controller.rb +4 -24
  34. data/app/controllers/events_controller.rb +3 -12
  35. data/app/controllers/favorites_controller.rb +2 -2
  36. data/app/controllers/forums_controller.rb +5 -9
  37. data/app/controllers/invitations_controller.rb +1 -1
  38. data/app/controllers/messages_controller.rb +4 -8
  39. data/app/controllers/moderators_controller.rb +1 -1
  40. data/app/controllers/monitorships_controller.rb +1 -1
  41. data/app/controllers/pages_controller.rb +0 -62
  42. data/app/controllers/password_resets_controller.rb +2 -2
  43. data/app/controllers/photo_manager_controller.rb +3 -3
  44. data/app/controllers/photos_controller.rb +43 -14
  45. data/app/controllers/posts_controller.rb +7 -14
  46. data/app/controllers/rsvps_controller.rb +3 -3
  47. data/app/controllers/sb_posts_controller.rb +20 -20
  48. data/app/controllers/sessions_controller.rb +1 -1
  49. data/app/controllers/tags_controller.rb +4 -52
  50. data/app/controllers/topics_controller.rb +15 -10
  51. data/app/controllers/users_controller.rb +9 -16
  52. data/app/controllers/votes_controller.rb +2 -2
  53. data/app/helpers/base_helper.rb +4 -14
  54. data/app/models/acts_as_taggable_on/tag.rb +9 -41
  55. data/app/models/clipping.rb +1 -1
  56. data/app/models/forum.rb +2 -2
  57. data/app/models/photo.rb +1 -1
  58. data/app/models/post.rb +1 -1
  59. data/app/models/sb_post.rb +19 -15
  60. data/app/models/topic.rb +10 -10
  61. data/app/models/user.rb +1 -1
  62. data/app/policies/active_admin/page_policy.rb +11 -0
  63. data/app/policies/application_policy.rb +59 -0
  64. data/app/policies/post_policy.rb +13 -0
  65. data/app/policies/sb_post_policy.rb +15 -0
  66. data/app/policies/topic_policy.rb +23 -0
  67. data/app/views/ckeditor/pictures/index.html.haml +15 -0
  68. data/app/views/ckeditor/shared/_asset.html.haml +9 -0
  69. data/app/views/ckeditor/shared/_asset_tmpl.html.erb +14 -0
  70. data/app/views/comments/approve.js.haml +1 -1
  71. data/app/views/comments/create.js.erb +1 -1
  72. data/app/views/comments/edit.js.erb +2 -1
  73. data/app/views/events/_subscribe.html.haml +1 -1
  74. data/app/views/forums/show.html.haml +8 -4
  75. data/app/views/posts/show.html.haml +4 -0
  76. data/app/views/sb_posts/_edit_script.js.erb +2 -3
  77. data/app/views/sb_posts/_reply_script.js.erb +2 -4
  78. data/app/views/sb_posts/_sb_post.html.haml +7 -6
  79. data/app/views/sb_posts/create.js.erb +4 -4
  80. data/app/views/sb_posts/edit.js.erb +2 -1
  81. data/app/views/sessions/_menu_item.html.haml +4 -4
  82. data/app/views/shared/_end_javascript.html.haml +1 -2
  83. data/app/views/shared/_login_sidebar.html.haml +2 -2
  84. data/app/views/tags/show.html.haml +3 -3
  85. data/app/views/topics/show.html.haml +1 -1
  86. data/app/views/users/_profile_user_info_sidebar.html.haml +2 -2
  87. data/app/views/users/destroy.js.erb +3 -0
  88. data/app/views/users/new.html.haml +1 -1
  89. data/app/views/users/show.html.haml +1 -1
  90. data/app/views/users/signup_completed.html.haml +1 -1
  91. data/community_engine.gemspec +14 -11
  92. data/config/initializers/active_admin.rb +239 -0
  93. data/config/initializers/ckeditor.rb +8 -0
  94. data/config/initializers/ransack_bootstrap_fix.rb +25 -0
  95. data/config/locales/de-DE.yml +1 -0
  96. data/config/locales/en.yml +3 -0
  97. data/config/routes.rb +14 -19
  98. data/config/spring.rb +1 -0
  99. data/db/migrate/083_create_active_admin_comments.rb +19 -0
  100. data/lib/community_engine.rb +7 -3
  101. data/lib/community_engine/admin/ads.rb +3 -0
  102. data/lib/community_engine/admin/categories.rb +20 -0
  103. data/lib/community_engine/admin/comments.rb +4 -0
  104. data/lib/community_engine/admin/dashboard.rb +38 -0
  105. data/lib/community_engine/admin/events.rb +3 -0
  106. data/lib/community_engine/admin/forums.rb +3 -0
  107. data/lib/community_engine/admin/homepage_features.rb +25 -0
  108. data/lib/community_engine/admin/metro_areas.rb +4 -0
  109. data/lib/community_engine/admin/pages.rb +26 -0
  110. data/lib/community_engine/admin/posts.rb +92 -0
  111. data/lib/community_engine/admin/tags.rb +21 -0
  112. data/lib/community_engine/admin/users.rb +54 -0
  113. data/lib/community_engine/authenticated_system.rb +5 -20
  114. data/lib/community_engine/engine.rb +5 -0
  115. data/lib/community_engine/version.rb +1 -1
  116. data/lib/resource_feeder/atom.rb +2 -0
  117. data/lib/resource_feeder/rss.rb +2 -0
  118. data/lib/white_list.rb +6 -11
  119. data/test/fixtures/events.yml +10 -0
  120. data/test/fixtures/tags.yml +6 -5
  121. data/test/functional/activities_controller_test.rb +19 -19
  122. data/test/functional/admin/posts_controller_test.rb +16 -0
  123. data/test/functional/admin_controller_test.rb +82 -82
  124. data/test/functional/categories_controller_test.rb +0 -39
  125. data/test/functional/comments_controller_test.rb +14 -7
  126. data/test/functional/favorites_controller_test.rb +15 -16
  127. data/test/functional/pages_controller_test.rb +0 -71
  128. data/test/functional/posts_controller_test.rb +21 -2
  129. data/test/functional/sb_posts_controller_test.rb +3 -3
  130. data/test/functional/sessions_controller_test.rb +2 -2
  131. data/test/functional/tags_controller_test.rb +9 -20
  132. data/test/functional/users_controller_test.rb +0 -8
  133. data/test/functional/votes_controller_test.rb +1 -1
  134. data/test/testapp/config/spring.rb +1 -0
  135. data/test/testapp/db/schema.rb +16 -1
  136. data/test/unit/event_test.rb +1 -1
  137. metadata +204 -170
  138. data/CHANGELOG +0 -144
  139. data/app/controllers/admin_controller.rb +0 -80
  140. data/app/controllers/ads_controller.rb +0 -90
  141. data/app/controllers/homepage_features_controller.rb +0 -74
  142. data/app/controllers/metro_areas_controller.rb +0 -74
  143. data/app/controllers/statistics_controller.rb +0 -35
  144. data/app/views/admin/comments.html.haml +0 -53
  145. data/app/views/admin/events.html.haml +0 -26
  146. data/app/views/admin/messages.html.haml +0 -3
  147. data/app/views/admin/update.js.erb +0 -1
  148. data/app/views/admin/users.html.haml +0 -57
  149. data/app/views/ads/_form.html.haml +0 -21
  150. data/app/views/ads/edit.html.haml +0 -7
  151. data/app/views/ads/index.html.haml +0 -29
  152. data/app/views/ads/new.html.haml +0 -6
  153. data/app/views/ads/show.html.haml +0 -19
  154. data/app/views/categories/_form.html.haml +0 -8
  155. data/app/views/categories/edit.html.haml +0 -4
  156. data/app/views/categories/index.html.haml +0 -20
  157. data/app/views/categories/new.html.haml +0 -4
  158. data/app/views/homepage_features/_form.html.haml +0 -6
  159. data/app/views/homepage_features/edit.html.haml +0 -6
  160. data/app/views/homepage_features/index.html.haml +0 -24
  161. data/app/views/homepage_features/new.html.haml +0 -2
  162. data/app/views/homepage_features/show.html.haml +0 -27
  163. data/app/views/metro_areas/_form.html.haml +0 -6
  164. data/app/views/metro_areas/edit.html.haml +0 -8
  165. data/app/views/metro_areas/index.html.haml +0 -21
  166. data/app/views/metro_areas/new.html.haml +0 -6
  167. data/app/views/metro_areas/show.html.haml +0 -14
  168. data/app/views/pages/_form.html.haml +0 -18
  169. data/app/views/pages/edit.html.haml +0 -4
  170. data/app/views/pages/index.html.haml +0 -34
  171. data/app/views/pages/new.html.haml +0 -7
  172. data/app/views/shared/_admin_nav.html.haml +0 -17
  173. data/app/views/shared/_load_tinymce.js.erb +0 -15
  174. data/app/views/statistics/activities.xml.builder +0 -33
  175. data/app/views/statistics/index.html.haml +0 -48
  176. data/app/views/tags/edit.html.haml +0 -12
  177. data/app/views/tags/manage.html.haml +0 -30
  178. data/app/views/users/update.js.erb +0 -1
  179. data/test/functional/ads_controller_test.rb +0 -51
  180. data/test/functional/homepage_features_controller_test.rb +0 -69
  181. data/test/functional/metro_areas_controller_test.rb +0 -63
  182. data/test/functional/statistics_controller_test.rb +0 -18
  183. data/test/unit/acts_as_taggable_on/tag_test.rb +0 -22
  184. data/vendor/converted2.3plugins_to_lib_leftovers/acts_as_publishable/README +0 -3
  185. data/vendor/converted2.3plugins_to_lib_leftovers/acts_as_publishable/Rakefile +0 -22
  186. data/vendor/converted2.3plugins_to_lib_leftovers/acts_as_publishable/generators/publishing/publishing_generator.rb +0 -34
  187. data/vendor/converted2.3plugins_to_lib_leftovers/acts_as_publishable/generators/publishing/templates/migration.rb +0 -13
  188. data/vendor/converted2.3plugins_to_lib_leftovers/acts_as_publishable/install.rb +0 -3
  189. data/vendor/converted2.3plugins_to_lib_leftovers/acts_as_publishable/test/acts_as_publishable_test.rb +0 -8
  190. data/vendor/converted2.3plugins_to_lib_leftovers/acts_as_publishable/uninstall.rb +0 -1
  191. data/vendor/converted2.3plugins_to_lib_leftovers/resource_feeder/README +0 -4
  192. data/vendor/converted2.3plugins_to_lib_leftovers/resource_feeder/Rakefile +0 -22
  193. data/vendor/converted2.3plugins_to_lib_leftovers/resource_feeder/test/atom_feed_test.rb +0 -85
  194. data/vendor/converted2.3plugins_to_lib_leftovers/resource_feeder/test/rss_feed_test.rb +0 -61
  195. data/vendor/converted2.3plugins_to_lib_leftovers/resource_feeder/test/test_helper.rb +0 -60
  196. data/vendor/converted2.3plugins_to_lib_leftovers/white_list/README +0 -35
  197. data/vendor/converted2.3plugins_to_lib_leftovers/white_list/Rakefile +0 -22
  198. data/vendor/converted2.3plugins_to_lib_leftovers/white_list/test/white_list_test.rb +0 -120
@@ -1,6 +1,6 @@
1
1
  class PasswordResetsController < BaseController
2
- before_filter :require_no_user
3
- before_filter :load_user_using_perishable_token, :only => [ :edit, :update ]
2
+ before_action :require_no_user
3
+ before_action :load_user_using_perishable_token, :only => [ :edit, :update ]
4
4
 
5
5
  def new
6
6
  end
@@ -1,8 +1,8 @@
1
1
  class PhotoManagerController < BaseController
2
2
  include Viewable
3
- before_filter :login_required
4
- before_filter :find_user
5
- before_filter :require_current_user
3
+ before_action :login_required
4
+ before_action :find_user
5
+ before_action :require_current_user
6
6
 
7
7
  def index
8
8
  @albums = current_user.albums.order('id DESC').page(params[:page_albums])
@@ -2,15 +2,11 @@ require 'pp'
2
2
 
3
3
  class PhotosController < BaseController
4
4
  include Viewable
5
- before_filter :login_required, :only => [:new, :edit, :update, :destroy, :create, :swfupload]
6
- before_filter :find_user, :only => [:new, :edit, :index, :show]
7
- before_filter :require_current_user, :only => [:new, :edit, :update, :destroy]
5
+ before_action :login_required, :only => [:new, :edit, :update, :destroy, :create, :swfupload]
6
+ before_action :find_user, :only => [:new, :edit, :index, :show]
7
+ before_action :require_current_user, :only => [:new, :edit, :update, :destroy]
8
8
 
9
- skip_before_filter :verify_authenticity_token, :only => [:create] #because the TinyMCE image uploader can't provide the auth token
10
-
11
- uses_tiny_mce do
12
- {:only => [:show], :options => configatron.simple_mce_options}
13
- end
9
+ skip_before_action :verify_authenticity_token, :only => [:create]
14
10
 
15
11
  cache_sweeper :taggable_sweeper, :only => [:create, :update, :destroy]
16
12
 
@@ -51,18 +47,51 @@ class PhotosController < BaseController
51
47
  def manage_photos
52
48
  if logged_in?
53
49
  @user = current_user
54
- @photos = current_user.photos.recent.includes(:tags)
55
- if params[:tag_name]
56
- @photos = @photos.where('tags.name = ?', params[:tag_name])
57
- end
58
- @selected = params[:photo_id]
59
- @photos = @photos.page(params[:page]).per(10)
50
+ @pictures = current_user.photos.recent.includes(:tags).page(params[:page]).per(10)
60
51
  end
61
52
  respond_to do |format|
53
+ format.html {
54
+ render :template => 'ckeditor/pictures/index', :layout => 'ckeditor/application'
55
+ }
62
56
  format.js
63
57
  end
64
58
  end
65
59
 
60
+ def create_photos
61
+ @photo = current_user.photos.new
62
+ file = params[:qqfile] ||params[:upload]
63
+ @photo.photo = Ckeditor::Http.normalize_param(file, request)
64
+ callback = ckeditor_before_create_asset(@photo)
65
+
66
+ if callback && @photo.save
67
+ hash = {
68
+ :id => @photo.id,
69
+ :type => 'ckeditor::picture',
70
+ :url_content => @photo.photo.url,
71
+ :url_thumb => @photo.photo.url(:thumb),
72
+ :filename => @photo.photo_file_name,
73
+ :format_created_at => @photo.created_at,
74
+ :size => @photo.photo_file_size
75
+ }
76
+
77
+ body = params[:CKEditor].blank? ? hash.to_json : %Q"<script type='text/javascript'>
78
+ window.parent.CKEDITOR.tools.callFunction(#{params[:CKEditorFuncNum]}, '#{config.relative_url_root}#{Ckeditor::Utils.escape_single_quotes(@photo.photo.url)}');
79
+ </script>"
80
+
81
+ render :text => body
82
+
83
+ else
84
+ if params[:CKEditor].blank?
85
+ render :nothing => true, :format => :json
86
+ else
87
+ render :text => %Q"<script type='text/javascript'>
88
+ window.parent.CKEDITOR.tools.callFunction(#{params[:CKEditorFuncNum]}, null, '#{Ckeditor::Utils.escape_single_quotes(@photo.errors.full_messages.first)}');
89
+ </script>"
90
+ end
91
+ end
92
+
93
+ end
94
+
66
95
  # GET /photos/1
67
96
  # GET /photos/1.xml
68
97
  def show
@@ -1,23 +1,15 @@
1
1
  class PostsController < BaseController
2
2
  include Viewable
3
3
 
4
- uses_tiny_mce do
5
- {:only => [:new, :edit, :update, :create ], :options => configatron.default_mce_options}
6
- end
7
-
8
- uses_tiny_mce do
9
- {:only => [:show], :options => configatron.simple_mce_options}
10
- end
11
-
12
4
  cache_sweeper :post_sweeper, :only => [:create, :update, :destroy]
13
5
  cache_sweeper :taggable_sweeper, :only => [:create, :update, :destroy]
14
6
  caches_action :show, :if => Proc.new{|c| !logged_in? }
15
7
 
16
- before_filter :login_required, :only => [:new, :edit, :update, :destroy, :create, :manage, :preview]
17
- before_filter :find_user, :only => [:new, :edit, :index, :show, :update_views, :manage, :preview]
18
- before_filter :require_ownership_or_moderator, :only => [:edit, :update, :destroy, :create, :manage, :new]
8
+ before_action :login_required, :only => [:new, :edit, :update, :destroy, :create, :manage, :preview]
9
+ before_action :find_user, :only => [:new, :edit, :index, :show, :update_views, :manage, :preview]
10
+ before_action :require_ownership_or_moderator, :only => [:edit, :update, :destroy, :create, :manage, :new]
19
11
 
20
- skip_before_filter :verify_authenticity_token, :only => [:update_views, :send_to_friend] #called from ajax on cached pages
12
+ skip_before_action :verify_authenticity_token, :only => [:update_views, :send_to_friend] #called from ajax on cached pages
21
13
 
22
14
  def manage
23
15
  Post.unscoped do
@@ -58,11 +50,12 @@ class PostsController < BaseController
58
50
  # GET /posts/1
59
51
  # GET /posts/1.xml
60
52
  def show
53
+ @post = Post.unscoped.find(params[:id])
54
+ redirect_to user_posts_path(@user), :alert => :post_not_published_yet.l and return false unless @post.is_live? || @post.user.eql?(current_user) || admin? || moderator?
55
+
61
56
  @rss_title = "#{configatron.community_name}: #{@user.login}'s posts"
62
57
  @rss_url = user_posts_path(@user,:format => :rss)
63
58
 
64
- @post = Post.unscoped.find(params[:id])
65
-
66
59
  @user = @post.user
67
60
  @is_current_user = @user.eql?(current_user)
68
61
  @comment = Comment.new
@@ -1,8 +1,8 @@
1
1
  class RsvpsController < BaseController
2
2
 
3
- before_filter :login_required, :only => [:new, :edit, :update, :destroy, :create]
4
- before_filter :find_event
5
- before_filter :require_ownership_or_moderator, :only => [:edit, :update, :destroy]
3
+ before_action :login_required, :only => [:new, :edit, :update, :destroy, :create]
4
+ before_action :find_event
5
+ before_action :require_ownership_or_moderator, :only => [:edit, :update, :destroy]
6
6
 
7
7
  def find_event
8
8
  @event = Event.find(params[:event_id])
@@ -1,20 +1,17 @@
1
1
  class SbPostsController < BaseController
2
- before_filter :find_post, :except => [:index, :monitored, :search, :new, :create]
3
- before_filter :login_required, :except => [:index, :search, :show, :monitored, :create]
2
+ before_action :find_post, :except => [:index, :monitored, :search, :new, :create]
3
+ before_action :login_required, :except => [:index, :search, :show, :monitored, :create]
4
4
 
5
- before_filter :only => [:create] do |controller|
5
+ before_action :only => [:create] do |controller|
6
6
  login_required unless configatron.allow_anonymous_forum_posting
7
7
  end
8
8
 
9
- skip_before_filter :verify_authenticity_token, :only => [:create] #remove for the create action
10
- before_filter do |controller|
9
+ skip_before_action :verify_authenticity_token, :only => [:create] #remove for the create action
10
+ before_action do |controller|
11
11
  #add it back unless anonymous posting is allowed
12
12
  verify_authenticity_token if controller.action_name.eql?('create') && !configatron.allow_anonymous_forum_posting
13
13
  end
14
14
 
15
- uses_tiny_mce do
16
- {:only => [:edit, :update], :options => configatron.default_mce_options}
17
- end
18
15
 
19
16
 
20
17
  def index
@@ -92,6 +89,8 @@ class SbPostsController < BaseController
92
89
  end
93
90
 
94
91
  def edit
92
+ authorize @post
93
+
95
94
  respond_to do |format|
96
95
  format.html
97
96
  format.js
@@ -99,10 +98,13 @@ class SbPostsController < BaseController
99
98
  end
100
99
 
101
100
  def update
102
- @post.update_attributes!(sb_post_params)
103
- rescue ActiveRecord::RecordInvalid
104
- flash[:bad_reply] = :an_error_occurred.l
105
- ensure
101
+ authorize @post
102
+ @post.update_attributes(sb_post_params)
103
+
104
+ unless @post.valid?
105
+ flash[:bad_reply] = :an_error_occurred.l
106
+ end
107
+
106
108
  respond_to do |format|
107
109
  format.html do
108
110
  redirect_to forum_topic_path(:forum_id => params[:forum_id], :id => params[:topic_id], :anchor => @post.dom_id, :page => params[:page] || '1')
@@ -110,9 +112,12 @@ class SbPostsController < BaseController
110
112
  format.js
111
113
  format.xml { head 200 }
112
114
  end
115
+
113
116
  end
114
117
 
115
118
  def destroy
119
+ authorize @post
120
+
116
121
  @post.destroy
117
122
  flash[:notice] = :sb_post_was_deleted.l_with_args(:title => CGI::escapeHTML(@post.topic.title))
118
123
  # check for posts_count == 1 because its cached and counting the currently deleted post
@@ -127,16 +132,11 @@ class SbPostsController < BaseController
127
132
  end
128
133
 
129
134
  protected
130
- #overide in your app
131
- def authorized?
132
- %w(create new).include?(action_name) || @post.editable_by?(current_user)
133
- end
134
-
135
135
  def find_post
136
136
  @post = SbPost.find_by_id_and_topic_id_and_forum_id(params[:id].to_i, params[:topic_id].to_i, params[:forum_id].to_i) || raise(ActiveRecord::RecordNotFound)
137
137
  end
138
138
 
139
- def sb_post_params
140
- params[:sb_post].permit(:body, :author_email, :author_ip, :author_name, :author_url)
141
- end
139
+ def sb_post_params
140
+ params[:sb_post].permit(:body, :author_email, :author_ip, :author_name, :author_url)
141
+ end
142
142
  end
@@ -1,7 +1,7 @@
1
1
  # This controller handles the login/logout function of the site.
2
2
  class SessionsController < BaseController
3
3
 
4
- skip_before_filter :store_location, :only => [:new, :create]
4
+ skip_before_action :store_location, :only => [:new, :create]
5
5
 
6
6
  def index
7
7
  redirect_to :action => "new"
@@ -1,7 +1,5 @@
1
1
  class TagsController < BaseController
2
- before_filter :login_required, :only => [:manage, :edit, :update, :destroy]
3
- before_filter :admin_required, :only => [:manage, :edit, :update, :destroy]
4
- skip_before_filter :verify_authenticity_token, :only => [:auto_complete_for_tag_name]
2
+ skip_before_action :verify_authenticity_token, :only => [:auto_complete_for_tag_name]
5
3
 
6
4
  caches_action :show, :cache_path => Proc.new { |controller| controller.send(:tag_url, controller.params[:id]) }, :if => Proc.new{|c| c.cache_action? }
7
5
  def cache_action?
@@ -16,60 +14,14 @@ class TagsController < BaseController
16
14
  end
17
15
 
18
16
  def index
19
- @tags = popular_tags(100).to_a
20
-
21
- @user_tags = popular_tags(75, 'User').to_a
22
-
23
- @post_tags = popular_tags(75, 'Post').to_a
24
-
25
- @photo_tags = popular_tags(75, 'Photo').to_a
26
-
27
- @clipping_tags = popular_tags(75, 'Clipping').to_a
28
- end
29
-
30
- def manage
31
- @search = ActsAsTaggableOn::Tag.search(params[:q])
32
- @tags = @search.result
33
- @tags = @tags.order('name ASC').distinct.page(params[:page]).per(100)
34
- end
35
-
36
-
37
- def edit
38
- @tag = ActsAsTaggableOn::Tag.find_by_name(URI::decode(params[:id]))
39
- end
40
-
41
- def update
42
- @tag = ActsAsTaggableOn::Tag.find_by_name(URI::decode(params[:id]))
43
-
44
- respond_to do |format|
45
- if @tag.update_attributes(params[:tag])
46
- flash[:notice] = :tag_was_successfully_updated.l
47
- format.html { redirect_to admin_tags_url }
48
- format.xml { render :nothing => true }
49
- else
50
- format.html { render :action => "edit" }
51
- format.xml { render :xml => @tag.errors.to_xml }
52
- end
53
- end
17
+ @tags = popular_tags(100)
54
18
  end
55
19
 
56
- def destroy
57
- @tag = ActsAsTaggableOn::Tag.find_by_name(URI::decode(params[:id]))
58
- @tag.destroy
59
-
60
- respond_to do |format|
61
- format.html {
62
- flash[:notice] = :tag_was_successfully_deleted.l
63
- redirect_to admin_tags_url
64
- }
65
- format.xml { render :nothing => true }
66
- end
67
- end
68
20
 
69
21
  def show
70
- tag_array = ActsAsTaggableOn::TagList.from( URI::decode(params[:id]) )
22
+ tag_array = ActsAsTaggableOn::DefaultParser.new( URI::decode(params[:id]) ).parse
71
23
 
72
- @tags = ActsAsTaggableOn::Tag.where('name IN (?)', tag_array)
24
+ @tags = ActsAsTaggableOn::Tag.where('name IN (?)', tag_array )
73
25
  if @tags.nil? || @tags.empty?
74
26
  flash[:notice] = :tag_does_not_exists.l_with_args(:tag => tag_array)
75
27
  redirect_to :action => :index and return
@@ -1,10 +1,8 @@
1
1
  class TopicsController < BaseController
2
- before_filter :find_forum_and_topic, :except => :index
3
- before_filter :login_required, :except => [:index, :show]
2
+ before_action :find_forum_and_topic, :except => :index
3
+ before_action :login_required, :except => [:index, :show]
4
+ after_action :verify_authorized, :except => [:index, :show]
4
5
 
5
- uses_tiny_mce do
6
- {:only => [:show, :new, :create, :update], :options => configatron.default_mce_options}
7
- end
8
6
 
9
7
  def index
10
8
  @forum = Forum.find(params[:forum_id])
@@ -20,6 +18,7 @@ class TopicsController < BaseController
20
18
  def new
21
19
  @topic = Topic.new
22
20
  @topic.sb_posts.build
21
+ authorize @topic
23
22
  end
24
23
 
25
24
  def show
@@ -49,6 +48,8 @@ class TopicsController < BaseController
49
48
 
50
49
  def create
51
50
  @topic = @forum.topics.new(topic_params)
51
+ authorize @topic
52
+
52
53
  assign_protected
53
54
 
54
55
  @post = @topic.sb_posts.first
@@ -76,8 +77,14 @@ class TopicsController < BaseController
76
77
  end
77
78
  end
78
79
 
80
+ def edit
81
+ authorize @topic
82
+ end
83
+
79
84
  def update
80
85
  assign_protected
86
+
87
+ authorize @topic
81
88
  @topic.tag_list = params[:tag_list] || ''
82
89
  @topic.update_attributes!(topic_params)
83
90
  respond_to do |format|
@@ -87,6 +94,8 @@ class TopicsController < BaseController
87
94
  end
88
95
 
89
96
  def destroy
97
+ authorize @topic
98
+
90
99
  @topic.destroy
91
100
  flash[:notice] = :topic_deleted.l_with_args(:topic => CGI::escapeHTML(@topic.title))
92
101
  respond_to do |format|
@@ -114,12 +123,8 @@ class TopicsController < BaseController
114
123
  @topic = @forum.topics.find(params[:id]) if params[:id]
115
124
  end
116
125
 
117
- #overide in your app
118
- def authorized?
119
- %w(new create).include?(action_name) || @topic.editable_by?(current_user)
120
- end
121
126
 
122
127
  def topic_params
123
- params[:topic].permit(:title, :sticky, :locked, {:sb_posts_attributes => [:body]}, :forum_id)
128
+ params[:topic].permit(:tag_list, :title, :sticky, :locked, {:sb_posts_attributes => [:body]}, :forum_id)
124
129
  end
125
130
  end
@@ -2,27 +2,18 @@ class UsersController < BaseController
2
2
  include Viewable
3
3
  cache_sweeper :taggable_sweeper, :only => [:activate, :update, :destroy]
4
4
 
5
- uses_tiny_mce do
6
- {:only => [:new, :create, :update, :edit, :welcome_about], :options => configatron.default_mce_options}
7
- end
8
-
9
- uses_tiny_mce do
10
- {:only => [:show], :options => configatron.simple_mce_options}
11
- end
12
-
13
- # Filters
14
- before_filter :login_required, :only => [:edit, :edit_account, :update, :welcome_photo, :welcome_about,
5
+ before_action :login_required, :only => [:edit, :edit_account, :update, :welcome_photo, :welcome_about,
15
6
  :welcome_invite, :return_admin, :assume, :featured,
16
7
  :toggle_featured, :edit_pro_details, :update_pro_details, :dashboard, :deactivate,
17
8
  :crop_profile_photo, :upload_profile_photo]
18
- before_filter :find_user, :only => [:edit, :edit_pro_details, :show, :update, :destroy, :statistics, :deactivate,
9
+ before_action :find_user, :only => [:edit, :edit_pro_details, :show, :update, :statistics, :deactivate,
19
10
  :crop_profile_photo, :upload_profile_photo ]
20
- before_filter :require_current_user, :only => [:edit, :update, :update_account,
11
+ before_action :require_current_user, :only => [:edit, :update, :update_account,
21
12
  :edit_pro_details, :update_pro_details,
22
13
  :welcome_photo, :welcome_about, :welcome_invite, :deactivate,
23
14
  :crop_profile_photo, :upload_profile_photo]
24
- before_filter :admin_required, :only => [:assume, :destroy, :featured, :toggle_featured, :toggle_moderator]
25
- before_filter :admin_or_current_user_required, :only => [:statistics]
15
+ before_action :admin_required, :only => [:assume, :destroy, :featured, :toggle_featured, :toggle_moderator]
16
+ before_action :admin_or_current_user_required, :only => [:statistics]
26
17
 
27
18
  def activate
28
19
  redirect_to signup_path and return if params[:id].blank?
@@ -140,18 +131,20 @@ class UsersController < BaseController
140
131
  end
141
132
 
142
133
  def destroy
134
+ @user = User.find(params[:id])
143
135
  unless @user.admin? || @user.featured_writer?
136
+ @user.spam! if params[:spam] && configatron.has_key?(:akismet_key)
144
137
  @user.destroy
145
138
  flash[:notice] = :the_user_was_deleted.l
146
139
  else
147
140
  flash[:error] = :you_cant_delete_that_user.l
148
141
  end
149
142
  respond_to do |format|
143
+ format.html { redirect_to users_url }
150
144
  format.js {
151
145
  render :inline => flash[:error], :status => 500 if flash[:error]
152
- render :nothing => true if flash[:notice]
146
+ render if flash[:notice]
153
147
  }
154
- format.html { redirect_to users_url }
155
148
  end
156
149
  end
157
150
 
@@ -1,6 +1,6 @@
1
1
  class VotesController < BaseController
2
- before_filter :find_choice, :only => [:create]
3
- before_filter :login_required
2
+ before_action :find_choice, :only => [:create]
3
+ before_action :login_required
4
4
 
5
5
  def new
6
6
  @post = Post.find(params[:post_id])