Adding newsletter time setting

This commit is contained in:
Anthony Mayer 2015-01-20 00:11:30 -08:00
parent 3b51d0ef1c
commit f771093a06
4 changed files with 42 additions and 30 deletions

View file

@ -9,6 +9,7 @@
"mailChimpListId": "MailChimp List ID",
"postsPerNewsletter": "Posts per Newsletter",
"newsletterFrequency": "Newsletter Frequency",
"newsletterTime": "Newsletter Time",
"enableNewsletter": "Enable Newsletter",
"autoSubscribe": "Auto Subscribe"
}

View file

@ -18,11 +18,11 @@ campaignSchema = new SimpleSchema({
posts: {
type: [String],
optional: true
},
},
webHits: {
type: Number,
optional: true
},
},
});
Campaigns = new Meteor.Collection("campaigns", {
@ -141,6 +141,21 @@ var newsletterFrequency = {
}
addToSettingsSchema.push(newsletterFrequency);
var newsletterTime = {
propertyName: 'newsletterTime',
propertySchema: {
type: String,
optional: true,
defaultValue: '00:00',
autoform: {
group: 'newsletter',
instructions: 'Defaults to 00:00/12:00 AM. Time to send out newsletter if enabled.',
type: 'time'
}
}
}
addToSettingsSchema.push(newsletterTime);
var autoSubscribe = {
propertyName: 'autoSubscribe',
propertySchema: {
@ -160,9 +175,9 @@ viewParameters.campaign = function (terms) {
find: {
scheduledAt: {$exists: false},
postedAt: {
$gte: terms.after
$gte: terms.after
}
},
},
options: {sort: {sticky: -1, score: -1}}
};
}

View file

@ -1,36 +1,38 @@
SyncedCron.options = {
log: false,
collectionName: 'cronHistory',
utc: false,
utc: false,
collectionTTL: 172800
}
Later = Npm.require('later');
defaultFrequency = 7; // once a week
defaultTime = '00:00';
getSchedule = function (parser) {
var getSchedule = function (parser) {
var frequency = getSetting('newsletterFrequency', defaultFrequency);
var recur = parser.recur();
var schedule;
switch (frequency) {
case 1: // every day
// sched = {schedules: [{dw: [1,2,3,4,5,6,0]}]};
return parser.recur().on(1,2,3,4,5,6,0).dayOfWeek();
// sched = {schedules: [{dw: [1,2,3,4,5,6,0]}]};
schedule = recur.on(1,2,3,4,5,6,0).dayOfWeek();
case 2: // Mondays, Wednesdays, Fridays
// sched = {schedules: [{dw: [2,4,6]}]};
return parser.recur().on(2,4,6).dayOfWeek();
// sched = {schedules: [{dw: [2,4,6]}]};
schedule = recur.on(2,4,6).dayOfWeek();
case 3: // Mondays, Thursdays
// sched = {schedules: [{dw: [2,5]}]};
return parser.recur().on(2,5).dayOfWeek();
// sched = {schedules: [{dw: [2,5]}]};
schedule = recur.on(2,5).dayOfWeek();
case 7: // Once a week (Mondays)
// sched = {schedules: [{dw: [2]}]};
return parser.recur().on(2).dayOfWeek();
// sched = {schedules: [{dw: [2]}]};
schedule = recur.on(2).dayOfWeek();
default: // Once a week (Mondays)
return parser.recur().on(2).dayOfWeek();
}
schedule = recur.on(2).dayOfWeek();
}
return schedule.on(getSetting('newsletterTime', defaultTime)).time();
}
Meteor.methods({
@ -41,18 +43,13 @@ Meteor.methods({
}
});
resetNewsletterJob = function () {
SyncedCron.stop();
addJob();
}
var addJob = function () {
SyncedCron.add({
name: 'scheduleNewsletter',
schedule: function(parser) {
// parser is a later.parse object
return getSchedule(parser);
},
},
job: function() {
scheduleNextCampaign();
}

View file

@ -5,15 +5,14 @@ Package.describe({
});
Npm.depends({
"html-to-text": "0.1.0",
"later": "1.1.6"
"html-to-text": "0.1.0"
});
Package.onUse(function (api) {
api.use([
'telescope-lib',
'telescope-base',
'telescope-lib',
'telescope-base',
'aldeed:simple-schema',
'iron:router',
'miro:mailchimp',
@ -48,7 +47,7 @@ Package.onUse(function (api) {
api.add_files([
'lib/server/campaign.js',
'lib/server/cron.js',
'lib/server/mailchimp.js',
'lib/server/mailchimp.js',
'lib/server/routes.js',
'lib/server/templates/emailDigest.handlebars',
'lib/server/templates/emailDigestConfirmation.handlebars',
@ -63,7 +62,7 @@ Package.onUse(function (api) {
"i18n/it.i18n.json",
"i18n/zh-CN.i18n.json",
], ["client", "server"]);
api.export([
'resetNewsletterSchedule'
]);