diff --git a/app/assets/javascripts/admin/controllers/admin-email-preview-digest.js.es6 b/app/assets/javascripts/admin/controllers/admin-email-preview-digest.js.es6 index 8065d732fcc..eb03301c92d 100644 --- a/app/assets/javascripts/admin/controllers/admin-email-preview-digest.js.es6 +++ b/app/assets/javascripts/admin/controllers/admin-email-preview-digest.js.es6 @@ -2,11 +2,13 @@ import EmailPreview from 'admin/models/email-preview'; import { popupAjaxError } from 'discourse/lib/ajax-error'; export default Ember.Controller.extend({ + username: null, + lastSeen: null, - emailEmpty: Em.computed.empty('email'), - sendEmailDisabled: Em.computed.or('emailEmpty', 'sendingEmail'), - showSendEmailForm: Em.computed.notEmpty('model.html_content'), - htmlEmpty: Em.computed.empty('model.html_content'), + emailEmpty: Ember.computed.empty('email'), + sendEmailDisabled: Ember.computed.or('emailEmpty', 'sendingEmail'), + showSendEmailForm: Ember.computed.notEmpty('model.html_content'), + htmlEmpty: Ember.computed.empty('model.html_content'), actions: { refresh() { @@ -14,7 +16,14 @@ export default Ember.Controller.extend({ this.set('loading', true); this.set('sentEmail', false); - EmailPreview.findDigest(this.get('lastSeen'), this.get('username')).then(email => { + + let username = this.get('username'); + if (!username) { + username = this.currentUser.get('username'); + this.set('username', username); + } + + EmailPreview.findDigest(username, this.get('lastSeen')).then(email => { model.setProperties(email.getProperties('html_content', 'text_content')); this.set('loading', false); }); @@ -28,16 +37,14 @@ export default Ember.Controller.extend({ this.set('sendingEmail', true); this.set('sentEmail', false); - const self = this; - - EmailPreview.sendDigest(this.get('lastSeen'), this.get('username'), this.get('email')).then(result => { + EmailPreview.sendDigest(this.get('username'), this.get('lastSeen'), this.get('email')).then(result => { if (result.errors) { bootbox.alert(result.errors); } else { - self.set('sentEmail', true); + this.set('sentEmail', true); } - }).catch(popupAjaxError).finally(function() { - self.set('sendingEmail', false); + }).catch(popupAjaxError).finally(() => { + this.set('sendingEmail', false); }); } } diff --git a/app/assets/javascripts/admin/models/email-preview.js.es6 b/app/assets/javascripts/admin/models/email-preview.js.es6 index acc7462b925..2aaca02d1e7 100644 --- a/app/assets/javascripts/admin/models/email-preview.js.es6 +++ b/app/assets/javascripts/admin/models/email-preview.js.es6 @@ -1,42 +1,24 @@ import { ajax } from 'discourse/lib/ajax'; const EmailPreview = Discourse.Model.extend({}); +export function oneWeekAgo() { + return moment().locale('en').subtract(7, 'days').format('YYYY-MM-DD'); +} + EmailPreview.reopenClass({ - findDigest: function(lastSeenAt, username) { - - if (Em.isEmpty(lastSeenAt)) { - lastSeenAt = this.oneWeekAgo(); - } - - if (Em.isEmpty(username)) { - username = Discourse.User.current().username; - } + findDigest(username, lastSeenAt) { return ajax("/admin/email/preview-digest.json", { - data: { last_seen_at: lastSeenAt, username: username } - }).then(function (result) { - return EmailPreview.create(result); - }); + data: { last_seen_at: lastSeenAt || oneWeekAgo(), username } + }).then(result => EmailPreview.create(result)); }, - sendDigest: function(lastSeenAt, username, email) { - if (Em.isEmpty(lastSeenAt)) { - lastSeenAt = this.oneWeekAgo(); - } - - if (Em.isEmpty(username)) { - username = Discourse.User.current().username; - } - + sendDigest(username, lastSeenAt, email) { return ajax("/admin/email/send-digest.json", { - data: { last_seen_at: lastSeenAt, username: username, email: email } + data: { last_seen_at: lastSeenAt || oneWeekAgo(), username, email } }); }, - oneWeekAgo() { - const en = moment().locale('en'); - return en.subtract(7, 'days').format('YYYY-MM-DD'); - } }); export default EmailPreview; diff --git a/app/assets/javascripts/admin/routes/admin-email-preview-digest.js.es6 b/app/assets/javascripts/admin/routes/admin-email-preview-digest.js.es6 index 7ca2f727722..0ee7b697554 100644 --- a/app/assets/javascripts/admin/routes/admin-email-preview-digest.js.es6 +++ b/app/assets/javascripts/admin/routes/admin-email-preview-digest.js.es6 @@ -1,16 +1,17 @@ -import EmailPreview from 'admin/models/email-preview'; +import { default as EmailPreview, oneWeekAgo } from 'admin/models/email-preview'; export default Discourse.Route.extend({ model() { - return EmailPreview.findDigest(); + return EmailPreview.findDigest(this.currentUser.get('username')); }, afterModel(model) { const controller = this.controllerFor('adminEmailPreviewDigest'); controller.setProperties({ - model: model, - lastSeen: moment().subtract(7, 'days').format('YYYY-MM-DD'), + model, + username: this.currentUser.get('username'), + lastSeen: oneWeekAgo(), showHtml: true }); } diff --git a/app/assets/javascripts/admin/templates/email-preview-digest.hbs b/app/assets/javascripts/admin/templates/email-preview-digest.hbs index 7f31c6e9bf2..87372268c74 100644 --- a/app/assets/javascripts/admin/templates/email-preview-digest.hbs +++ b/app/assets/javascripts/admin/templates/email-preview-digest.hbs @@ -1,11 +1,11 @@

{{i18n 'admin.email.preview_digest_desc'}}

-
+
{{date-picker-past value=lastSeen id="last-seen"}} - {{user-selector single="true" usernames=username}} + {{user-selector single="true" usernames=username canReceiveUpdates="true"}}
diff --git a/app/assets/javascripts/discourse/components/date-picker.js.es6 b/app/assets/javascripts/discourse/components/date-picker.js.es6 index d2667dd8637..709e1e51497 100644 --- a/app/assets/javascripts/discourse/components/date-picker.js.es6 +++ b/app/assets/javascripts/discourse/components/date-picker.js.es6 @@ -2,7 +2,7 @@ import loadScript from "discourse/lib/load-script"; import { default as computed, on } from "ember-addons/ember-computed-decorators"; -export default Em.Component.extend({ +export default Ember.Component.extend({ classNames: ["date-picker-wrapper"], _picker: null, diff --git a/app/assets/javascripts/discourse/templates/components/date-picker.hbs b/app/assets/javascripts/discourse/templates/components/date-picker.hbs index d49379d954b..6e6054c2ad1 100644 --- a/app/assets/javascripts/discourse/templates/components/date-picker.hbs +++ b/app/assets/javascripts/discourse/templates/components/date-picker.hbs @@ -1 +1 @@ -{{input type="text" class="date-picker" placeholder=placeholder}} +{{input type="text" class="date-picker" placeholder=placeholder value=value}} diff --git a/app/assets/stylesheets/common/admin/admin_base.scss b/app/assets/stylesheets/common/admin/admin_base.scss index a25115a6912..de075cb545a 100644 --- a/app/assets/stylesheets/common/admin/admin_base.scss +++ b/app/assets/stylesheets/common/admin/admin_base.scss @@ -316,6 +316,17 @@ td.flaggers td { } } +.email-preview { + .ac-wrap { + .item { + margin: 0.2em 0 0 0.4em; + } + // input[type=text] { + // margin-left: 0.4em; + // } + } +} + .paste-users { width: 400px; height: 150px; @@ -1471,7 +1482,7 @@ and (max-width : 500px) { div.ac-wrap { width: 100% !important; box-sizing: border-box; - } + } .admin-container { h2 {