mirror of
https://github.com/vale981/Vulcan
synced 2025-03-06 10:01:40 -05:00
Adding newsletter time setting
This commit is contained in:
parent
3b51d0ef1c
commit
f771093a06
4 changed files with 42 additions and 30 deletions
|
@ -9,6 +9,7 @@
|
|||
"mailChimpListId": "MailChimp List ID",
|
||||
"postsPerNewsletter": "Posts per Newsletter",
|
||||
"newsletterFrequency": "Newsletter Frequency",
|
||||
"newsletterTime": "Newsletter Time",
|
||||
"enableNewsletter": "Enable Newsletter",
|
||||
"autoSubscribe": "Auto Subscribe"
|
||||
}
|
|
@ -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}}
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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'
|
||||
]);
|
||||
|
|
Loading…
Add table
Reference in a new issue