From 65cd00cf25fad45e31add6974cc5863d02092267 Mon Sep 17 00:00:00 2001 From: Sam Date: Thu, 2 May 2013 15:15:17 +1000 Subject: [PATCH] moderators now have teeth, more at http://meta.discourse.org/t/moderator-permission-set/6307/5 allow pms to be targetted at groups --- .../controllers/admin_dashboard_controller.js | 3 +- .../admin/templates/admin.js.handlebars | 12 +++-- .../admin/templates/user.js.handlebars | 2 + app/assets/javascripts/discourse.js | 2 +- .../discourse/controllers/user_controller.js | 2 +- .../discourse/templates/header.js.handlebars | 2 +- .../discourse/templates/topic.js.handlebars | 2 +- .../templates/user/user.js.handlebars | 2 +- app/controllers/admin/admin_controller.rb | 6 +-- app/helpers/application_helper.rb | 4 ++ app/models/post_action.rb | 4 +- app/models/post_alert_observer.rb | 4 +- app/models/topic.rb | 10 ++++ app/models/topic_allowed_group.rb | 7 +++ app/models/topic_list.rb | 4 +- app/serializers/current_user_serializer.rb | 9 +++- app/serializers/post_serializer.rb | 6 +-- .../common/_discourse_javascript.html.erb | 2 +- .../common/_discourse_stylesheet.html.erb | 2 +- config/routes.rb | 32 +++++++------ ...20130430052751_add_topic_allowed_groups.rb | 1 + ...20130501105651_fix_topic_allowed_groups.rb | 6 +++ lib/guardian.rb | 21 ++++---- lib/moderator_constraint.rb | 10 ++++ lib/post_creator.rb | 48 +++++++++++++++---- spec/components/guardian_spec.rb | 4 +- spec/components/post_creator_spec.rb | 30 ++++++++++++ 27 files changed, 176 insertions(+), 61 deletions(-) create mode 100644 app/models/topic_allowed_group.rb create mode 100644 db/migrate/20130501105651_fix_topic_allowed_groups.rb create mode 100644 lib/moderator_constraint.rb diff --git a/app/assets/javascripts/admin/controllers/admin_dashboard_controller.js b/app/assets/javascripts/admin/controllers/admin_dashboard_controller.js index 2f85858e8c8..96eba0d5b42 100644 --- a/app/assets/javascripts/admin/controllers/admin_dashboard_controller.js +++ b/app/assets/javascripts/admin/controllers/admin_dashboard_controller.js @@ -12,10 +12,11 @@ Discourse.AdminDashboardController = Ember.Controller.extend({ problemsCheckInterval: '1 minute ago', foundProblems: function() { - return(this.get('problems') && this.get('problems').length > 0); + return(Discourse.currentUser.admin && this.get('problems') && this.get('problems').length > 0); }.property('problems'), thereWereProblems: function() { + if(!Discourse.currentUser.admin) { return false } if( this.get('foundProblems') ) { this.set('hadProblems', true); return true; diff --git a/app/assets/javascripts/admin/templates/admin.js.handlebars b/app/assets/javascripts/admin/templates/admin.js.handlebars index 4d66db86c9f..240909f3c52 100644 --- a/app/assets/javascripts/admin/templates/admin.js.handlebars +++ b/app/assets/javascripts/admin/templates/admin.js.handlebars @@ -4,14 +4,18 @@
diff --git a/app/assets/javascripts/admin/templates/user.js.handlebars b/app/assets/javascripts/admin/templates/user.js.handlebars index 57a132b3551..30dc561e156 100644 --- a/app/assets/javascripts/admin/templates/user.js.handlebars +++ b/app/assets/javascripts/admin/templates/user.js.handlebars @@ -31,9 +31,11 @@
{{i18n user.ip_address.title}}
{{content.ip_address}}
+ {{#if Discourse.currentUser.admin}} + {{/if}}
diff --git a/app/assets/javascripts/discourse.js b/app/assets/javascripts/discourse.js index 55d4dce31aa..9986bd15d03 100644 --- a/app/assets/javascripts/discourse.js +++ b/app/assets/javascripts/discourse.js @@ -60,7 +60,7 @@ Discourse = Ember.Application.createWithMixins({ if (user) { bus.callbackInterval = Discourse.SiteSettings.polling_interval; bus.enableLongPolling = true; - if (user.admin) { + if (user.admin || user.moderator) { bus.subscribe("/flagged_counts", function(data) { user.set('site_flagged_posts_count', data.total); }); diff --git a/app/assets/javascripts/discourse/controllers/user_controller.js b/app/assets/javascripts/discourse/controllers/user_controller.js index 8574c4df77f..2b56d4bfab5 100644 --- a/app/assets/javascripts/discourse/controllers/user_controller.js +++ b/app/assets/javascripts/discourse/controllers/user_controller.js @@ -13,7 +13,7 @@ Discourse.UserController = Discourse.ObjectController.extend({ }).property('content.username', 'Discourse.currentUser.username'), canSeePrivateMessages: (function() { - return this.get('viewingSelf') || Discourse.get('currentUser.admin'); + return this.get('viewingSelf') || Discourse.get('currentUser.moderator'); }).property('viewingSelf', 'Discourse.currentUser') }); diff --git a/app/assets/javascripts/discourse/templates/header.js.handlebars b/app/assets/javascripts/discourse/templates/header.js.handlebars index 26931aaeef7..6f0f7284abb 100644 --- a/app/assets/javascripts/discourse/templates/header.js.handlebars +++ b/app/assets/javascripts/discourse/templates/header.js.handlebars @@ -65,7 +65,7 @@