From f6222ff225c2d39c9db92e1b2de1249f5424d998 Mon Sep 17 00:00:00 2001 From: Robin Ward Date: Wed, 28 Jun 2017 15:36:34 -0400 Subject: [PATCH] FIX: Populate the Email Digest preview with the current username --- .../admin-email-preview-digest.js.es6 | 29 +++++++++------ .../admin/models/email-preview.js.es6 | 36 +++++-------------- .../routes/admin-email-preview-digest.js.es6 | 9 ++--- .../admin/templates/email-preview-digest.hbs | 4 +-- .../discourse/components/date-picker.js.es6 | 2 +- .../templates/components/date-picker.hbs | 2 +- .../stylesheets/common/admin/admin_base.scss | 13 ++++++- 7 files changed, 48 insertions(+), 47 deletions(-) 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'}}

-
+