Ghost/ghost/admin/app/components/gh-publishmenu-scheduled.js
Kevin Ansfield da49dc4922 Added default newsletter recipients setting (#1946)
refs https://github.com/TryGhost/Team/issues/496
reqs https://github.com/TryGhost/Ghost/pull/12925

The publish menu was meant to default to matching post visibility but that wasn't working consistently and didn't make sense for sites which don't email every post to their members.

A "Default newsletter recipients" option has been added to the "Email newsletter" settings screen and the publish menu updated to reflect the option. The free/paid toggles in the publish menu have also been swapped out for a multi-select style component that will cater to more complex member segmentation.
2021-05-07 10:02:19 +01:00

75 lines
1.9 KiB
JavaScript

import Component from '@ember/component';
import moment from 'moment';
import {computed} from '@ember/object';
import {inject as service} from '@ember/service';
export default Component.extend({
clock: service(),
session: service(),
feature: service(),
settings: service(),
config: service(),
post: null,
saveType: null,
isClosing: null,
// used to set minDate in datepicker
_minDate: null,
'data-test-publishmenu-scheduled': true,
timeToPublished: computed('post.publishedAtUTC', 'clock.second', function () {
let publishedAtUTC = this.get('post.publishedAtUTC');
if (!publishedAtUTC) {
return null;
}
this.get('clock.second');
return publishedAtUTC.toNow(true);
}),
didInsertElement() {
this.set('_minDate', new Date());
this.setSaveType('schedule');
},
actions: {
setSaveType(type) {
if (this.saveType !== type) {
this.set('_minDate', new Date());
this.setSaveType(type);
// when draft switch to now to avoid validation errors
// when schedule switch back to saved date to avoid unnecessary re-scheduling
if (type === 'draft') {
this.post.set('publishedAtBlogTZ', new Date());
} else {
this.post.set('publishedAtBlogTZ', this.get('post.publishedAtUTC'));
}
this.post.validate();
}
},
setDate(date) {
let post = this.post;
let dateString = moment(date).format('YYYY-MM-DD');
post.set('publishedAtBlogDate', dateString);
return post.validate();
},
setTime(time) {
let post = this.post;
if (!this.isClosing) {
post.set('publishedAtBlogTime', time);
return post.validate();
}
}
}
});