diff --git a/app/assets/javascripts/admin/templates/modal/admin-staff-action-log-details.hbs b/app/assets/javascripts/admin/templates/modal/admin-staff-action-log-details.hbs index f63be2d0988..e8e8cd8d2e3 100644 --- a/app/assets/javascripts/admin/templates/modal/admin-staff-action-log-details.hbs +++ b/app/assets/javascripts/admin/templates/modal/admin-staff-action-log-details.hbs @@ -2,5 +2,5 @@
{{model.details}}{{/d-modal-body}} diff --git a/app/assets/stylesheets/common/admin/admin_base.scss b/app/assets/stylesheets/common/admin/admin_base.scss index 7bec47b9188..8ad76b89218 100644 --- a/app/assets/stylesheets/common/admin/admin_base.scss +++ b/app/assets/stylesheets/common/admin/admin_base.scss @@ -1374,6 +1374,12 @@ table.api-keys { } .log-details-modal { + + pre { + white-space: pre-wrap; + max-height: 250px; + } + .modal-tab { width: 95%; } diff --git a/app/controllers/admin/users_controller.rb b/app/controllers/admin/users_controller.rb index 95a7016b3be..5557182c365 100644 --- a/app/controllers/admin/users_controller.rb +++ b/app/controllers/admin/users_controller.rb @@ -67,7 +67,7 @@ class Admin::UsersController < Admin::AdminController user_history = StaffActionLogger.new(current_user).log_user_suspend( @user, params[:reason], - context: message, + message: message, post_id: params[:post_id] ) end @@ -282,7 +282,7 @@ class Admin::UsersController < Admin::AdminController current_user, silenced_till: params[:silenced_till], reason: params[:reason], - context: message, + message_body: message, keep_posts: true ) if silencer.silence && message.present? diff --git a/app/services/staff_action_logger.rb b/app/services/staff_action_logger.rb index 0dc4543774d..77187097eac 100644 --- a/app/services/staff_action_logger.rb +++ b/app/services/staff_action_logger.rb @@ -169,10 +169,14 @@ class StaffActionLogger def log_user_suspend(user, reason, opts = {}) raise Discourse::InvalidParameters.new(:user) unless user + + details = (reason || '').dup + details << "\n\n#{opts[:message]}" if opts[:message].present? + args = params(opts).merge( action: UserHistory.actions[:suspend_user], target_user_id: user.id, - details: reason + details: details ) args[:post_id] = opts[:post_id] if opts[:post_id] UserHistory.create(args) @@ -275,6 +279,7 @@ class StaffActionLogger def log_silence_user(user, opts = {}) raise Discourse::InvalidParameters.new(:user) unless user + UserHistory.create( params(opts).merge( action: UserHistory.actions[:silence_user], diff --git a/app/services/user_silencer.rb b/app/services/user_silencer.rb index ee7981b5f10..9858c75f9da 100644 --- a/app/services/user_silencer.rb +++ b/app/services/user_silencer.rb @@ -21,18 +21,17 @@ class UserSilencer if @user.save message_type = @opts[:message] || :silenced_by_staff - if @opts[:context].present? - context = @opts[:context] - else - context = "#{message_type}: '#{post.topic&.title rescue ''}' #{@opts[:reason]}" - SystemMessage.create(@user, message_type) - end + details = (@opts[:reason] || '').dup + details << "\n\n#{@opts[:message_body]}" if @opts[:message_body].present? + + context = "#{message_type}: '#{post.topic&.title rescue ''}' #{@opts[:reason]}" + SystemMessage.create(@user, message_type) if @by_user @user_history = StaffActionLogger.new(@by_user).log_silence_user( @user, context: context, - details: @opts[:reason] + details: details ) end return true diff --git a/spec/controllers/admin/users_controller_spec.rb b/spec/controllers/admin/users_controller_spec.rb index 78f298a4642..22fcf11be97 100644 --- a/spec/controllers/admin/users_controller_spec.rb +++ b/spec/controllers/admin/users_controller_spec.rb @@ -192,7 +192,7 @@ describe Admin::UsersController do log = UserHistory.where(target_user_id: user.id).order('id desc').first expect(log).to be_present expect(log.details).to match(/short reason/) - expect(log.context).to match(/long reason/) + expect(log.details).to match(/long reason/) end it "also revoke any api keys" do @@ -610,6 +610,7 @@ describe Admin::UsersController do end it "will send a message if provided" do + Jobs.stubs(:enqueue) Jobs.expects(:enqueue).with( :critical_user_email, has_entries(