diff --git a/app/assets/javascripts/discourse/controllers/flag-action-type.js.es6 b/app/assets/javascripts/discourse/controllers/flag-action-type.js.es6 index 25912e7a222..4e1ed438c6d 100644 --- a/app/assets/javascripts/discourse/controllers/flag-action-type.js.es6 +++ b/app/assets/javascripts/discourse/controllers/flag-action-type.js.es6 @@ -24,6 +24,7 @@ export default Ember.Controller.extend({ showMessageInput: Em.computed.and('model.is_custom_flag', 'selected'), showDescription: Em.computed.not('showMessageInput'), + isNotifyUser: Em.computed.equal('model.name_key', 'notify_user'), customMessageLengthClasses: function() { return (this.get('message.length') < Discourse.SiteSettings.min_private_message_post_length) ? "too-short" : "ok"; @@ -44,4 +45,3 @@ export default Ember.Controller.extend({ }.property('message.length') }); - diff --git a/app/assets/javascripts/discourse/controllers/flag.js.es6 b/app/assets/javascripts/discourse/controllers/flag.js.es6 index c387e53321b..5250059d9f6 100644 --- a/app/assets/javascripts/discourse/controllers/flag.js.es6 +++ b/app/assets/javascripts/discourse/controllers/flag.js.es6 @@ -14,8 +14,19 @@ export default Ember.Controller.extend(ModalFunctionality, { flagsAvailable: function() { if (!this.get('flagTopic')) { - return this.get('model.flagsAvailable'); + // flagging post + let flagsAvailable = this.get('model.flagsAvailable'); + + // "message user" option should be at the top + const notifyUserIndex = flagsAvailable.indexOf(flagsAvailable.filterProperty('name_key', 'notify_user')[0]); + if (notifyUserIndex !== -1) { + const notifyUser = flagsAvailable[notifyUserIndex]; + flagsAvailable.splice(notifyUserIndex, 1); + flagsAvailable.splice(0, 0, notifyUser); + } + return flagsAvailable; } else { + // flagging topic const self = this, lookup = Em.Object.create(); @@ -35,6 +46,10 @@ export default Ember.Controller.extend(ModalFunctionality, { } }.property('post', 'flagTopic', 'model.actions_summary.@each.can_act'), + staffFlagsAvailable: function() { + return (this.get('model.flagsAvailable').length > 1); + }.property('post', 'flagTopic', 'model.actions_summary.@each.can_act'), + submitEnabled: function() { const selected = this.get('selected'); if (!selected) return false; diff --git a/app/assets/javascripts/discourse/templates/modal/flag.hbs b/app/assets/javascripts/discourse/templates/modal/flag.hbs index d7a6cc872b7..7a29c44fc1d 100644 --- a/app/assets/javascripts/discourse/templates/modal/flag.hbs +++ b/app/assets/javascripts/discourse/templates/modal/flag.hbs @@ -2,18 +2,33 @@
{{#each f in flagsAvailable itemController="flag-action-type"}} -
-
+ {{else}} +
+ + {{#if f.showMessageInput}} + {{textarea name="message" class="flag-message" placeholder=f.customPlaceholder value=f.message}} +
{{f.customMessageLength}}
+ {{/if}} +
+ {{/if}} {{else}} {{i18n 'flagging.cant'}} {{/each}} diff --git a/config/locales/client.en.yml b/config/locales/client.en.yml index 8c5efd5c318..24b64591c26 100644 --- a/config/locales/client.en.yml +++ b/config/locales/client.en.yml @@ -1627,6 +1627,7 @@ en: submit_tooltip: "Submit the private flag" take_action_tooltip: "Reach the flag threshold immediately, rather than waiting for more community flags" cant: "Sorry, you can't flag this post at this time." + notify_staff: 'Notify Staff' formatted_name: off_topic: "It's Off-Topic" inappropriate: "It's Inappropriate" diff --git a/config/locales/server.en.yml b/config/locales/server.en.yml index df50a00c398..435d58103cd 100644 --- a/config/locales/server.en.yml +++ b/config/locales/server.en.yml @@ -513,7 +513,7 @@ en: description: 'This post contains content that a reasonable person would consider offensive, abusive, or a violation of our community guidelines.' long_form: 'flagged this as inappropriate' notify_user: - title: 'Message @{{username}}' + title: 'Contact @{{username}} via private message' description: 'This post contains something I want to talk to this person directly and privately about. Does not cast a flag.' long_form: 'messaged user' email_title: 'Your post in "%{title}"'