Updated translation support
This commit is contained in:
parent
b1e8cd68cd
commit
d25565b6f8
114 changed files with 42095 additions and 1902 deletions
|
@ -12,6 +12,7 @@ let feed = require('../feed');
|
|||
let log = require('npmlog');
|
||||
let mailer = require('../mailer');
|
||||
let humanize = require('humanize');
|
||||
let _ = require('../translate')._;
|
||||
|
||||
let allowedKeys = ['description', 'from', 'address', 'reply_to', 'subject', 'editor_name', 'editor_data', 'template', 'source_url', 'list', 'segment', 'html', 'text', 'tracking_disabled'];
|
||||
|
||||
|
@ -267,7 +268,7 @@ module.exports.filterStatusSubscribers = (campaign, status, request, columns, ca
|
|||
module.exports.getByCid = (cid, callback) => {
|
||||
cid = (cid || '').toString().trim();
|
||||
if (!cid) {
|
||||
return callback(new Error('Missing Campaign ID'));
|
||||
return callback(new Error(_('Missing Campaign ID')));
|
||||
}
|
||||
db.getConnection((err, connection) => {
|
||||
if (err) {
|
||||
|
@ -294,7 +295,7 @@ module.exports.get = (id, withSegment, callback) => {
|
|||
id = Number(id) || 0;
|
||||
|
||||
if (id < 1) {
|
||||
return callback(new Error('Missing Campaign ID'));
|
||||
return callback(new Error(_('Missing Campaign ID')));
|
||||
}
|
||||
|
||||
db.getConnection((err, connection) => {
|
||||
|
@ -367,7 +368,7 @@ module.exports.getAttachments = (campaign, callback) => {
|
|||
campaign = Number(campaign) || 0;
|
||||
|
||||
if (campaign < 1) {
|
||||
return callback(new Error('Missing Campaign ID'));
|
||||
return callback(new Error(_('Missing Campaign ID')));
|
||||
}
|
||||
|
||||
db.getConnection((err, connection) => {
|
||||
|
@ -403,7 +404,7 @@ module.exports.addAttachment = (id, attachment, callback) => {
|
|||
let size = attachment.content ? attachment.content.length : 0;
|
||||
|
||||
if (!size) {
|
||||
return callback(new Error('Emtpy or too large attahcment'));
|
||||
return callback(new Error(_('Emtpy or too large attahcment')));
|
||||
}
|
||||
db.getConnection((err, connection) => {
|
||||
if (err) {
|
||||
|
@ -490,7 +491,7 @@ module.exports.getLinks = (id, linkId, callback) => {
|
|||
linkId = Number(linkId) || 0;
|
||||
|
||||
if (id < 1) {
|
||||
return callback(new Error('Missing Campaign ID'));
|
||||
return callback(new Error(_('Missing Campaign ID')));
|
||||
}
|
||||
|
||||
db.getConnection((err, connection) => {
|
||||
|
@ -569,11 +570,11 @@ module.exports.create = (campaign, opts, callback) => {
|
|||
campaign.template = Number(campaign.template) || 0;
|
||||
|
||||
if (!name) {
|
||||
return callback(new Error('Campaign Name must be set'));
|
||||
return callback(new Error(_('Campaign Name must be set')));
|
||||
}
|
||||
|
||||
if (campaign.type === 2 && (!campaign.sourceUrl || !isUrl(campaign.sourceUrl))) {
|
||||
return callback(new Error('RSS URL must be set and needs to be a valid URL'));
|
||||
return callback(new Error(_('RSS URL must be set and needs to be a valid URL')));
|
||||
}
|
||||
|
||||
let getList = (listId, callback) => {
|
||||
|
@ -726,7 +727,7 @@ module.exports.create = (campaign, opts, callback) => {
|
|||
return callback(err);
|
||||
}
|
||||
if (!template) {
|
||||
return callback(new Error('Selected template not found'));
|
||||
return callback(new Error(_('Selected template not found')));
|
||||
}
|
||||
|
||||
campaign.editorName = template.editorName;
|
||||
|
@ -748,7 +749,7 @@ module.exports.update = (id, updates, callback) => {
|
|||
id = Number(id) || 0;
|
||||
|
||||
if (id < 1) {
|
||||
return callback(new Error('Missing Campaign ID'));
|
||||
return callback(new Error(_('Missing Campaign ID')));
|
||||
}
|
||||
|
||||
let campaign = tools.convertKeys(updates);
|
||||
|
@ -757,7 +758,7 @@ module.exports.update = (id, updates, callback) => {
|
|||
campaign.trackingDisabled = campaign.trackingDisabled ? 1 : 0;
|
||||
|
||||
if (!name) {
|
||||
return callback(new Error('Campaign Name must be set'));
|
||||
return callback(new Error(_('Campaign Name must be set')));
|
||||
}
|
||||
|
||||
if (/^\d+:\d+$/.test(campaign.list)) {
|
||||
|
@ -877,7 +878,7 @@ module.exports.delete = (id, callback) => {
|
|||
id = Number(id) || 0;
|
||||
|
||||
if (id < 1) {
|
||||
return callback(new Error('Missing Campaign ID'));
|
||||
return callback(new Error(_('Missing Campaign ID')));
|
||||
}
|
||||
|
||||
db.getConnection((err, connection) => {
|
||||
|
@ -1078,7 +1079,7 @@ module.exports.getMail = (campaignId, listId, subscriptionId, callback) => {
|
|||
subscriptionId = Number(subscriptionId) || 0;
|
||||
|
||||
if (campaignId < 1 || listId < 1 || subscriptionId < 1) {
|
||||
return callback(new Error('Invalid or missing message ID'));
|
||||
return callback(new Error(_('Invalid or missing message ID')));
|
||||
}
|
||||
|
||||
db.getConnection((err, connection) => {
|
||||
|
|
|
@ -6,26 +6,28 @@ let slugify = require('slugify');
|
|||
let lists = require('./lists');
|
||||
let shortid = require('shortid');
|
||||
let Handlebars = require('handlebars');
|
||||
let _ = require('../translate')._;
|
||||
let util = require('util');
|
||||
|
||||
let allowedKeys = ['name', 'key', 'default_value', 'group', 'group_template', 'visible'];
|
||||
let allowedTypes;
|
||||
|
||||
module.exports.grouped = ['radio', 'checkbox', 'dropdown'];
|
||||
module.exports.types = {
|
||||
text: 'Text',
|
||||
website: 'Website',
|
||||
longtext: 'Multi-line text',
|
||||
gpg: 'GPG Public Key',
|
||||
number: 'Number',
|
||||
radio: 'Radio Buttons',
|
||||
checkbox: 'Checkboxes',
|
||||
dropdown: 'Drop Down',
|
||||
'date-us': 'Date (MM/DD/YYY)',
|
||||
'date-eur': 'Date (DD/MM/YYYY)',
|
||||
'birthday-us': 'Birthday (MM/DD)',
|
||||
'birthday-eur': 'Birthday (DD/MM)',
|
||||
json: 'JSON value for custom rendering',
|
||||
option: 'Option'
|
||||
text: _('Text'),
|
||||
website: _('Website'),
|
||||
longtext: _('Multi-line text'),
|
||||
gpg: _('GPG Public Key'),
|
||||
number: _('Number'),
|
||||
radio: _('Radio Buttons'),
|
||||
checkbox: _('Checkboxes'),
|
||||
dropdown: _('Drop Down'),
|
||||
'date-us': _('Date (MM/DD/YYY)'),
|
||||
'date-eur': _('Date (DD/MM/YYYY)'),
|
||||
'birthday-us': _('Birthday (MM/DD)'),
|
||||
'birthday-eur': _('Birthday (DD/MM)'),
|
||||
json: _('JSON value for custom rendering'),
|
||||
option: _('Option')
|
||||
};
|
||||
|
||||
module.exports.allowedTypes = allowedTypes = Object.keys(module.exports.types);
|
||||
|
@ -48,7 +50,7 @@ module.exports.list = (listId, callback) => {
|
|||
listId = Number(listId) || 0;
|
||||
|
||||
if (listId < 1) {
|
||||
return callback(new Error('Missing List ID'));
|
||||
return callback(new Error(_('Missing List ID')));
|
||||
}
|
||||
|
||||
db.getConnection((err, connection) => {
|
||||
|
@ -93,7 +95,7 @@ module.exports.get = (id, callback) => {
|
|||
id = Number(id) || 0;
|
||||
|
||||
if (id < 1) {
|
||||
return callback(new Error('Missing List ID'));
|
||||
return callback(new Error(_('Missing List ID')));
|
||||
}
|
||||
|
||||
db.getConnection((err, connection) => {
|
||||
|
@ -118,13 +120,13 @@ module.exports.create = (listId, field, callback) => {
|
|||
listId = Number(listId) || 0;
|
||||
|
||||
if (listId < 1) {
|
||||
return callback(new Error('Missing List ID'));
|
||||
return callback(new Error(_('Missing List ID')));
|
||||
}
|
||||
|
||||
field = tools.convertKeys(field);
|
||||
|
||||
if (field.type === 'option' && !field.group) {
|
||||
return callback(new Error('Option field requires a group to be selected'));
|
||||
return callback(new Error(_('Option field requires a group to be selected')));
|
||||
}
|
||||
|
||||
if (field.type !== 'option') {
|
||||
|
@ -144,11 +146,11 @@ module.exports.update = (id, updates, callback) => {
|
|||
updates = tools.convertKeys(updates);
|
||||
|
||||
if (id < 1) {
|
||||
return callback(new Error('Missing Field ID'));
|
||||
return callback(new Error(_('Missing Field ID')));
|
||||
}
|
||||
|
||||
if (!(updates.name || '').toString().trim()) {
|
||||
return callback(new Error('Field Name must be set'));
|
||||
return callback(new Error(_('Field Name must be set')));
|
||||
}
|
||||
|
||||
if (updates.key) {
|
||||
|
@ -194,7 +196,7 @@ module.exports.delete = (fieldId, callback) => {
|
|||
fieldId = Number(fieldId) || 0;
|
||||
|
||||
if (fieldId < 1) {
|
||||
return callback(new Error('Missing Field ID'));
|
||||
return callback(new Error(_('Missing Field ID')));
|
||||
}
|
||||
|
||||
db.getConnection((err, connection) => {
|
||||
|
@ -211,7 +213,7 @@ module.exports.delete = (fieldId, callback) => {
|
|||
|
||||
if (!rows || !rows.length) {
|
||||
connection.release();
|
||||
return callback(new Error('Custom field not found'));
|
||||
return callback(new Error(_('Custom field not found')));
|
||||
}
|
||||
|
||||
let field = tools.convertKeys(rows[0]);
|
||||
|
@ -284,15 +286,15 @@ function addCustomField(listId, name, defaultValue, type, group, groupTemplate,
|
|||
let key = slugify('merge ' + name, '_').toUpperCase();
|
||||
|
||||
if (allowedTypes.indexOf(type) < 0) {
|
||||
return callback(new Error('Unknown column type ' + type));
|
||||
return callback(new Error(util.format(_('Unknown column type %s'), type)));
|
||||
}
|
||||
|
||||
if (!name) {
|
||||
return callback(new Error('Missing column name'));
|
||||
return callback(new Error(_('Missing column name')));
|
||||
}
|
||||
|
||||
if (listId <= 0) {
|
||||
return callback(new Error('Missing list ID'));
|
||||
return callback(new Error(_('Missing list ID')));
|
||||
}
|
||||
|
||||
lists.get(listId, (err, list) => {
|
||||
|
@ -300,7 +302,7 @@ function addCustomField(listId, name, defaultValue, type, group, groupTemplate,
|
|||
return callback(err);
|
||||
}
|
||||
if (!list) {
|
||||
return callback('Provided List ID not found');
|
||||
return callback(_('Provided List ID not found'));
|
||||
}
|
||||
|
||||
db.getConnection((err, connection) => {
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
let db = require('../db');
|
||||
let shortid = require('shortid');
|
||||
let util = require('util');
|
||||
let _ = require('../translate')._;
|
||||
|
||||
let geoip = require('geoip-ultralight');
|
||||
let campaigns = require('./campaigns');
|
||||
|
@ -324,7 +325,7 @@ function getSubscriptionData(campaignCid, listCid, subscriptionCid, callback) {
|
|||
return callback(err);
|
||||
}
|
||||
if (!campaign) {
|
||||
return callback(new Error('Campaign not found'));
|
||||
return callback(new Error(_('Campaign not found')));
|
||||
}
|
||||
|
||||
lists.getByCid(listCid, (err, list) => {
|
||||
|
@ -332,7 +333,7 @@ function getSubscriptionData(campaignCid, listCid, subscriptionCid, callback) {
|
|||
return callback(err);
|
||||
}
|
||||
if (!list) {
|
||||
return callback(new Error('Campaign not found'));
|
||||
return callback(new Error(_('List not found')));
|
||||
}
|
||||
|
||||
subscriptions.get(list.id, subscriptionCid, (err, subscription) => {
|
||||
|
@ -340,7 +341,7 @@ function getSubscriptionData(campaignCid, listCid, subscriptionCid, callback) {
|
|||
return callback(err);
|
||||
}
|
||||
if (!subscription) {
|
||||
return callback(new Error('Subscription not found'));
|
||||
return callback(new Error(_('Subscription not found')));
|
||||
}
|
||||
|
||||
return callback(null, {
|
||||
|
|
|
@ -4,6 +4,7 @@ let db = require('../db');
|
|||
let tools = require('../tools');
|
||||
let shortid = require('shortid');
|
||||
let segments = require('./segments');
|
||||
let _ = require('../translate')._;
|
||||
|
||||
let allowedKeys = ['description'];
|
||||
|
||||
|
@ -77,7 +78,7 @@ module.exports.get = (id, callback) => {
|
|||
id = Number(id) || 0;
|
||||
|
||||
if (id < 1) {
|
||||
return callback(new Error('Missing List ID'));
|
||||
return callback(new Error(_('Missing List ID')));
|
||||
}
|
||||
|
||||
db.getConnection((err, connection) => {
|
||||
|
@ -113,7 +114,7 @@ module.exports.create = (list, callback) => {
|
|||
let name = (data.name || '').toString().trim();
|
||||
|
||||
if (!data) {
|
||||
return callback(new Error('List Name must be set'));
|
||||
return callback(new Error(_('List Name must be set')));
|
||||
}
|
||||
|
||||
let keys = ['name'];
|
||||
|
@ -171,11 +172,11 @@ module.exports.update = (id, updates, callback) => {
|
|||
let values = [name];
|
||||
|
||||
if (id < 1) {
|
||||
return callback(new Error('Missing List ID'));
|
||||
return callback(new Error(_('Missing List ID')));
|
||||
}
|
||||
|
||||
if (!name) {
|
||||
return callback(new Error('List Name must be set'));
|
||||
return callback(new Error(_('List Name must be set')));
|
||||
}
|
||||
|
||||
Object.keys(updates).forEach(key => {
|
||||
|
@ -208,7 +209,7 @@ module.exports.delete = (id, callback) => {
|
|||
id = Number(id) || 0;
|
||||
|
||||
if (id < 1) {
|
||||
return callback(new Error('Missing List ID'));
|
||||
return callback(new Error(_('Missing List ID')));
|
||||
}
|
||||
|
||||
db.getConnection((err, connection) => {
|
||||
|
@ -237,7 +238,7 @@ module.exports.delete = (id, callback) => {
|
|||
function resolveCid(cid, callback) {
|
||||
cid = (cid || '').toString().trim();
|
||||
if (!cid) {
|
||||
return callback(new Error('Missing List CID'));
|
||||
return callback(new Error(_('Missing List CID')));
|
||||
}
|
||||
|
||||
db.getConnection((err, connection) => {
|
||||
|
|
|
@ -3,34 +3,36 @@
|
|||
let tools = require('../tools');
|
||||
let db = require('../db');
|
||||
let fields = require('./fields');
|
||||
let util = require('util');
|
||||
let _ = require('../translate')._;
|
||||
|
||||
module.exports.defaultColumns = [{
|
||||
column: 'email',
|
||||
name: 'Email address',
|
||||
name: _('Email address'),
|
||||
type: 'string'
|
||||
}, {
|
||||
column: 'opt_in_country',
|
||||
name: 'Signup country',
|
||||
name: _('Signup country'),
|
||||
type: 'string'
|
||||
}, {
|
||||
column: 'created',
|
||||
name: 'Sign up date',
|
||||
name: _('Sign up date'),
|
||||
type: 'date'
|
||||
}, {
|
||||
column: 'latest_open',
|
||||
name: 'Latest open',
|
||||
name: _('Latest open'),
|
||||
type: 'date'
|
||||
}, {
|
||||
column: 'latest_click',
|
||||
name: 'Latest click',
|
||||
name: _('Latest click'),
|
||||
type: 'date'
|
||||
}, {
|
||||
column: 'first_name',
|
||||
name: 'First name',
|
||||
name: _('First name'),
|
||||
type: 'string'
|
||||
}, {
|
||||
column: 'last_name',
|
||||
name: 'Last name',
|
||||
name: _('Last name'),
|
||||
type: 'string'
|
||||
}];
|
||||
|
||||
|
@ -38,7 +40,7 @@ module.exports.list = (listId, callback) => {
|
|||
listId = Number(listId) || 0;
|
||||
|
||||
if (listId < 1) {
|
||||
return callback(new Error('Missing List ID'));
|
||||
return callback(new Error(_('Missing List ID')));
|
||||
}
|
||||
|
||||
|
||||
|
@ -64,7 +66,7 @@ module.exports.get = (id, callback) => {
|
|||
id = Number(id) || 0;
|
||||
|
||||
if (id < 1) {
|
||||
return callback(new Error('Missing Segment ID'));
|
||||
return callback(new Error(_('Missing Segment ID')));
|
||||
}
|
||||
|
||||
db.getConnection((err, connection) => {
|
||||
|
@ -80,7 +82,7 @@ module.exports.get = (id, callback) => {
|
|||
}
|
||||
if (!rows || !rows.length) {
|
||||
connection.release();
|
||||
return callback(new Error('Segment not found'));
|
||||
return callback(new Error(_('Segment not found')));
|
||||
}
|
||||
|
||||
let segment = tools.convertKeys(rows[0]);
|
||||
|
@ -141,7 +143,9 @@ module.exports.get = (id, callback) => {
|
|||
case 'date':
|
||||
case 'birthday':
|
||||
if (rule.value.relativeRange) {
|
||||
rule.formatted = (rule.value.start ? rule.value.start + ' days ' + (rule.value.startDirection ? 'after' : 'before') + ' today' : 'today') + ' … ' + (rule.value.end ? rule.value.end + ' days ' + (rule.value.endDirection ? 'after' : 'before') + ' today' : 'today');
|
||||
let startString = rule.value.startDirection ? util.format(_('%s days after today'), rule.value.start) : util.format(_('%s days before today'), rule.value.start);
|
||||
let endString = rule.value.endDirection ? util.format(_('%s days after today'), rule.value.end) : util.format(_('%s days before today'), rule.value.end);
|
||||
rule.formatted = (rule.value.start ? startString : _('today')) + ' … ' + (rule.value.end ? endString : _('today'));
|
||||
} else if (rule.value.range) {
|
||||
rule.formatted = (rule.value.start || '') + ' … ' + (rule.value.end || '');
|
||||
} else {
|
||||
|
@ -149,7 +153,7 @@ module.exports.get = (id, callback) => {
|
|||
}
|
||||
break;
|
||||
case 'boolean':
|
||||
rule.formatted = rule.value.value ? 'Selected' : 'Not selected';
|
||||
rule.formatted = rule.value.value ? _('Selected') : _('Not selected');
|
||||
break;
|
||||
default:
|
||||
rule.formatted = rule.value.value || '';
|
||||
|
@ -169,7 +173,7 @@ module.exports.create = (listId, segment, callback) => {
|
|||
listId = Number(listId) || 0;
|
||||
|
||||
if (listId < 1) {
|
||||
return callback(new Error('Missing List ID'));
|
||||
return callback(new Error(_('Missing List ID')));
|
||||
}
|
||||
|
||||
segment = tools.convertKeys(segment);
|
||||
|
@ -178,11 +182,11 @@ module.exports.create = (listId, segment, callback) => {
|
|||
segment.type = Number(segment.type) || 0;
|
||||
|
||||
if (!segment.name) {
|
||||
return callback(new Error('Field Name must be set'));
|
||||
return callback(new Error(_('Field Name must be set')));
|
||||
}
|
||||
|
||||
if (segment.type <= 0) {
|
||||
return callback(new Error('Invalid segment rule type'));
|
||||
return callback(new Error(_('Invalid segment rule type')));
|
||||
}
|
||||
|
||||
let keys = ['list', 'name', 'type'];
|
||||
|
@ -209,7 +213,7 @@ module.exports.update = (id, updates, callback) => {
|
|||
id = Number(id) || 0;
|
||||
|
||||
if (id < 1) {
|
||||
return callback(new Error('Missing Segment ID'));
|
||||
return callback(new Error(_('Missing Segment ID')));
|
||||
}
|
||||
|
||||
let segment = tools.convertKeys(updates);
|
||||
|
@ -218,11 +222,11 @@ module.exports.update = (id, updates, callback) => {
|
|||
segment.type = Number(segment.type) || 0;
|
||||
|
||||
if (!segment.name) {
|
||||
return callback(new Error('Field Name must be set'));
|
||||
return callback(new Error(_('Field Name must be set')));
|
||||
}
|
||||
|
||||
if (segment.type <= 0) {
|
||||
return callback(new Error('Invalid segment rule type'));
|
||||
return callback(new Error(_('Invalid segment rule type')));
|
||||
}
|
||||
|
||||
let keys = ['name', 'type'];
|
||||
|
@ -249,7 +253,7 @@ module.exports.delete = (id, callback) => {
|
|||
id = Number(id) || 0;
|
||||
|
||||
if (id < 1) {
|
||||
return callback(new Error('Missing Segment ID'));
|
||||
return callback(new Error(_('Missing Segment ID')));
|
||||
}
|
||||
|
||||
db.getConnection((err, connection) => {
|
||||
|
@ -271,7 +275,7 @@ module.exports.createRule = (segmentId, rule, callback) => {
|
|||
segmentId = Number(segmentId) || 0;
|
||||
|
||||
if (segmentId < 1) {
|
||||
return callback(new Error('Missing Segment ID'));
|
||||
return callback(new Error(_('Missing Segment ID')));
|
||||
}
|
||||
|
||||
rule = tools.convertKeys(rule);
|
||||
|
@ -282,12 +286,12 @@ module.exports.createRule = (segmentId, rule, callback) => {
|
|||
}
|
||||
|
||||
if (!segment) {
|
||||
return callback(new Error('Selected segment not found'));
|
||||
return callback(new Error(_('Selected segment not found')));
|
||||
}
|
||||
|
||||
let column = segment.columns.filter(column => column.column === rule.column).pop();
|
||||
if (!column) {
|
||||
return callback(new Error('Invalid rule type'));
|
||||
return callback(new Error(_('Invalid rule type')));
|
||||
}
|
||||
|
||||
let value;
|
||||
|
@ -351,7 +355,7 @@ module.exports.getRule = (id, callback) => {
|
|||
id = Number(id) || 0;
|
||||
|
||||
if (id < 1) {
|
||||
return callback(new Error('Missing Rule ID'));
|
||||
return callback(new Error(_('Missing Rule ID')));
|
||||
}
|
||||
|
||||
db.getConnection((err, connection) => {
|
||||
|
@ -367,7 +371,7 @@ module.exports.getRule = (id, callback) => {
|
|||
}
|
||||
|
||||
if (!rows || !rows.length) {
|
||||
return callback(new Error('Specified rule not found'));
|
||||
return callback(new Error(_('Specified rule not found')));
|
||||
}
|
||||
|
||||
let rule = tools.convertKeys(rows[0]);
|
||||
|
@ -378,7 +382,7 @@ module.exports.getRule = (id, callback) => {
|
|||
}
|
||||
|
||||
if (!segment) {
|
||||
return callback(new Error('Specified segment not found'));
|
||||
return callback(new Error(_('Specified segment not found')));
|
||||
}
|
||||
|
||||
if (rule.value) {
|
||||
|
@ -400,7 +404,10 @@ module.exports.getRule = (id, callback) => {
|
|||
case 'date':
|
||||
case 'birthday':
|
||||
if (rule.value.relativeRange) {
|
||||
rule.formatted = (rule.value.start ? rule.value.start + ' days ' + (rule.value.startDirection ? 'after' : 'before') + ' today' : 'today') + ' … ' + (rule.value.end ? rule.value.end + ' days ' + (rule.value.endDirection ? 'after' : 'before') + ' today' : 'today');
|
||||
|
||||
let startString = rule.value.startDirection ? util.format(_('%s days after today'), rule.value.start) : util.format(_('%s days before today'), rule.value.start);
|
||||
let endString = rule.value.endDirection ? util.format(_('%s days after today'), rule.value.end) : util.format(_('%s days before today'), rule.value.end);
|
||||
rule.formatted = (rule.value.start ? startString : _('today')) + ' … ' + (rule.value.end ? endString : _('today'));
|
||||
} else if (rule.value.range) {
|
||||
rule.formatted = (rule.value.start || '') + ' … ' + (rule.value.end || '');
|
||||
} else {
|
||||
|
@ -408,7 +415,7 @@ module.exports.getRule = (id, callback) => {
|
|||
}
|
||||
break;
|
||||
case 'boolean':
|
||||
rule.formatted = rule.value.value ? 'Selected' : 'Not selected';
|
||||
rule.formatted = rule.value.value ? _('Selected') : _('Not selected');
|
||||
break;
|
||||
default:
|
||||
rule.formatted = rule.value.value || '';
|
||||
|
@ -424,7 +431,7 @@ module.exports.updateRule = (id, rule, callback) => {
|
|||
id = Number(id) || 0;
|
||||
|
||||
if (id < 1) {
|
||||
return callback(new Error('Missing Rule ID'));
|
||||
return callback(new Error(_('Missing Rule ID')));
|
||||
}
|
||||
|
||||
rule = tools.convertKeys(rule);
|
||||
|
@ -435,7 +442,7 @@ module.exports.updateRule = (id, rule, callback) => {
|
|||
}
|
||||
|
||||
if (!existingRule) {
|
||||
return callback(new Error('Selected rule not found'));
|
||||
return callback(new Error(_('Selected rule not found')));
|
||||
}
|
||||
|
||||
module.exports.get(existingRule.segment, (err, segment) => {
|
||||
|
@ -444,12 +451,12 @@ module.exports.updateRule = (id, rule, callback) => {
|
|||
}
|
||||
|
||||
if (!segment) {
|
||||
return callback(new Error('Selected segment not found'));
|
||||
return callback(new Error(_('Selected segment not found')));
|
||||
}
|
||||
|
||||
let column = segment.columns.filter(column => column.column === existingRule.column).pop();
|
||||
if (!column) {
|
||||
return callback(new Error('Invalid rule type'));
|
||||
return callback(new Error(_('Invalid rule type')));
|
||||
}
|
||||
|
||||
let value;
|
||||
|
@ -514,7 +521,7 @@ module.exports.deleteRule = (id, callback) => {
|
|||
id = Number(id) || 0;
|
||||
|
||||
if (id < 1) {
|
||||
return callback(new Error('Missing Rule ID'));
|
||||
return callback(new Error(_('Missing Rule ID')));
|
||||
}
|
||||
|
||||
db.getConnection((err, connection) => {
|
||||
|
@ -539,7 +546,7 @@ module.exports.getQuery = (id, prefix, callback) => {
|
|||
}
|
||||
|
||||
if (!segment) {
|
||||
return callback(new Error('Segment not found'));
|
||||
return callback(new Error(_('Segment not found')));
|
||||
}
|
||||
|
||||
prefix = prefix ? prefix + '.' : '';
|
||||
|
@ -648,7 +655,7 @@ module.exports.subscribers = (id, onlySubscribed, callback) => {
|
|||
return callback(err);
|
||||
}
|
||||
if (!segment) {
|
||||
return callback(new Error('Segment not found'));
|
||||
return callback(new Error(_('Segment not found')));
|
||||
}
|
||||
module.exports.getQuery(id, false, (err, queryData) => {
|
||||
if (err) {
|
||||
|
|
|
@ -10,6 +10,8 @@ let settings = require('./settings');
|
|||
let mailer = require('../mailer');
|
||||
let urllib = require('url');
|
||||
let log = require('npmlog');
|
||||
let _ = require('../translate')._;
|
||||
let util = require('util');
|
||||
|
||||
module.exports.list = (listId, start, limit, callback) => {
|
||||
listId = Number(listId) || 0;
|
||||
|
@ -83,7 +85,7 @@ module.exports.filter = (listId, request, columns, segmentId, callback) => {
|
|||
segmentId = Number(segmentId) || 0;
|
||||
|
||||
if (!listId) {
|
||||
return callback(new Error('Missing List ID'));
|
||||
return callback(new Error(_('Missing List ID')));
|
||||
}
|
||||
|
||||
let processQuery = queryData => {
|
||||
|
@ -228,7 +230,7 @@ module.exports.addConfirmation = (list, email, optInIp, data, callback) => {
|
|||
name: [].concat(data.firstName || []).concat(data.lastName || []).join(' '),
|
||||
address: email
|
||||
},
|
||||
subject: list.name + ': Please Confirm Subscription',
|
||||
subject: util.format(_('%s: Please Confirm Subscription'),list.name),
|
||||
encryptionKeys
|
||||
}, {
|
||||
html: 'emails/confirm-html.hbs',
|
||||
|
@ -319,7 +321,7 @@ module.exports.subscribe = (cid, optInIp, callback) => {
|
|||
}
|
||||
|
||||
if (!result.entryId) {
|
||||
return callback(new Error('Could not save subscription'));
|
||||
return callback(new Error(_('Could not save subscription')));
|
||||
}
|
||||
|
||||
db.getConnection((err, connection) => {
|
||||
|
@ -502,7 +504,7 @@ module.exports.get = (listId, cid, callback) => {
|
|||
cid = (cid || '').toString().trim();
|
||||
|
||||
if (!cid) {
|
||||
return callback(new Error('Missing Subbscription ID'));
|
||||
return callback(new Error(_('Missing Subbscription ID')));
|
||||
}
|
||||
|
||||
db.getConnection((err, connection) => {
|
||||
|
@ -532,7 +534,7 @@ module.exports.getById = (listId, id, callback) => {
|
|||
id = Number(id) || 0;
|
||||
|
||||
if (!id) {
|
||||
return callback(new Error('Missing Subbscription ID'));
|
||||
return callback(new Error(_('Missing Subbscription ID')));
|
||||
}
|
||||
|
||||
db.getConnection((err, connection) => {
|
||||
|
@ -560,7 +562,7 @@ module.exports.getById = (listId, id, callback) => {
|
|||
|
||||
module.exports.getByEmail = (listId, email, callback) => {
|
||||
if (!email) {
|
||||
return callback(new Error('Missing Subbscription email address'));
|
||||
return callback(new Error(_('Missing Subbscription email address')));
|
||||
}
|
||||
|
||||
db.getConnection((err, connection) => {
|
||||
|
@ -635,11 +637,11 @@ module.exports.update = (listId, cid, updates, allowEmail, callback) => {
|
|||
let values = [];
|
||||
|
||||
if (listId < 1) {
|
||||
return callback(new Error('Missing List ID'));
|
||||
return callback(new Error(_('Missing List ID')));
|
||||
}
|
||||
|
||||
if (!cid) {
|
||||
return callback(new Error('Missing subscription ID'));
|
||||
return callback(new Error(_('Missing subscription ID')));
|
||||
}
|
||||
|
||||
fields.list(listId, (err, fieldList) => {
|
||||
|
@ -698,11 +700,11 @@ module.exports.unsubscribe = (listId, email, campaignId, callback) => {
|
|||
campaignId = (campaignId || '').toString().trim() || false;
|
||||
|
||||
if (listId < 1) {
|
||||
return callback(new Error('Missing List ID'));
|
||||
return callback(new Error(_('Missing List ID')));
|
||||
}
|
||||
|
||||
if (!email) {
|
||||
return callback(new Error('Missing email address'));
|
||||
return callback(new Error(_('Missing email address')));
|
||||
}
|
||||
|
||||
db.getConnection((err, connection) => {
|
||||
|
@ -884,11 +886,11 @@ module.exports.delete = (listId, cid, callback) => {
|
|||
cid = (cid || '').toString().trim();
|
||||
|
||||
if (listId < 1) {
|
||||
return callback(new Error('Missing List ID'));
|
||||
return callback(new Error(_('Missing List ID')));
|
||||
}
|
||||
|
||||
if (!cid) {
|
||||
return callback(new Error('Missing subscription ID'));
|
||||
return callback(new Error(_('Missing subscription ID')));
|
||||
}
|
||||
|
||||
db.getConnection((err, connection) => {
|
||||
|
@ -987,11 +989,11 @@ module.exports.updateImport = (listId, importId, data, callback) => {
|
|||
importId = Number(importId) || 0;
|
||||
|
||||
if (listId < 1) {
|
||||
return callback(new Error('Missing List ID'));
|
||||
return callback(new Error(_('Missing List ID')));
|
||||
}
|
||||
|
||||
if (importId < 1) {
|
||||
return callback(new Error('Missing Import ID'));
|
||||
return callback(new Error(_('Missing Import ID')));
|
||||
}
|
||||
|
||||
let keys = [];
|
||||
|
@ -1041,11 +1043,11 @@ module.exports.getImport = (listId, importId, callback) => {
|
|||
importId = Number(importId) || 0;
|
||||
|
||||
if (listId < 1) {
|
||||
return callback(new Error('Missing List ID'));
|
||||
return callback(new Error(_('Missing List ID')));
|
||||
}
|
||||
|
||||
if (importId < 1) {
|
||||
return callback(new Error('Missing Import ID'));
|
||||
return callback(new Error(_('Missing Import ID')));
|
||||
}
|
||||
|
||||
db.getConnection((err, connection) => {
|
||||
|
@ -1081,7 +1083,7 @@ module.exports.getFailedImports = (importId, callback) => {
|
|||
importId = Number(importId) || 0;
|
||||
|
||||
if (importId < 1) {
|
||||
return callback(new Error('Missing Import ID'));
|
||||
return callback(new Error(_('Missing Import ID')));
|
||||
}
|
||||
|
||||
db.getConnection((err, connection) => {
|
||||
|
@ -1104,7 +1106,7 @@ module.exports.listImports = (listId, callback) => {
|
|||
listId = Number(listId) || 0;
|
||||
|
||||
if (listId < 1) {
|
||||
return callback(new Error('Missing List ID'));
|
||||
return callback(new Error(_('Missing List ID')));
|
||||
}
|
||||
|
||||
db.getConnection((err, connection) => {
|
||||
|
@ -1147,11 +1149,11 @@ module.exports.updateAddress = (list, cid, updates, optInIp, callback) => {
|
|||
let emailNew = (updates.emailNew || '').toString().trim();
|
||||
|
||||
if (!list || !list.id) {
|
||||
return callback(new Error('Missing List ID'));
|
||||
return callback(new Error(_('Missing List ID')));
|
||||
}
|
||||
|
||||
if (!cid) {
|
||||
return callback(new Error('Missing subscription ID'));
|
||||
return callback(new Error(_('Missing subscription ID')));
|
||||
}
|
||||
|
||||
tools.validateEmail(emailNew, false, err => {
|
||||
|
@ -1173,12 +1175,12 @@ module.exports.updateAddress = (list, cid, updates, optInIp, callback) => {
|
|||
}
|
||||
if (!rows || !rows.length) {
|
||||
connection.release();
|
||||
return callback(new Error('Unknown subscription ID'));
|
||||
return callback(new Error(_('Unknown subscription ID')));
|
||||
}
|
||||
|
||||
if (rows[0].email === emailNew) {
|
||||
connection.release();
|
||||
return callback(new Error('Nothing seems to be changed'));
|
||||
return callback(new Error(_('Nothing seems to be changed')));
|
||||
}
|
||||
|
||||
let old = rows[0];
|
||||
|
@ -1192,7 +1194,7 @@ module.exports.updateAddress = (list, cid, updates, optInIp, callback) => {
|
|||
}
|
||||
|
||||
if (rows && rows[0] && rows[0].id) {
|
||||
return callback(new Error('This address is already registered by someone else'));
|
||||
return callback(new Error(_('This address is already registered by someone else')));
|
||||
}
|
||||
|
||||
module.exports.addConfirmation(list, emailNew, optInIp, {
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
let db = require('../db');
|
||||
let tools = require('../tools');
|
||||
let _ = require('../translate')._;
|
||||
|
||||
let allowedKeys = ['description', 'editor_name', 'editor_data', 'html', 'text'];
|
||||
|
||||
|
@ -47,7 +48,7 @@ module.exports.get = (id, callback) => {
|
|||
id = Number(id) || 0;
|
||||
|
||||
if (id < 1) {
|
||||
return callback(new Error('Missing Template ID'));
|
||||
return callback(new Error(_('Missing Template ID')));
|
||||
}
|
||||
|
||||
db.getConnection((err, connection) => {
|
||||
|
@ -76,7 +77,7 @@ module.exports.create = (template, callback) => {
|
|||
let data = tools.convertKeys(template);
|
||||
|
||||
if (!(data.name || '').toString().trim()) {
|
||||
return callback(new Error('Template Name must be set'));
|
||||
return callback(new Error(_('Template Name must be set')));
|
||||
}
|
||||
|
||||
let name = (template.name || '').toString().trim();
|
||||
|
@ -118,11 +119,11 @@ module.exports.update = (id, updates, callback) => {
|
|||
let data = tools.convertKeys(updates);
|
||||
|
||||
if (id < 1) {
|
||||
return callback(new Error('Missing Template ID'));
|
||||
return callback(new Error(_('Missing Template ID')));
|
||||
}
|
||||
|
||||
if (!(data.name || '').toString().trim()) {
|
||||
return callback(new Error('Template Name must be set'));
|
||||
return callback(new Error(_('Template Name must be set')));
|
||||
}
|
||||
|
||||
let name = (updates.name || '').toString().trim();
|
||||
|
@ -159,7 +160,7 @@ module.exports.delete = (id, callback) => {
|
|||
id = Number(id) || 0;
|
||||
|
||||
if (id < 1) {
|
||||
return callback(new Error('Missing Template ID'));
|
||||
return callback(new Error(_('Missing Template ID')));
|
||||
}
|
||||
|
||||
db.getConnection((err, connection) => {
|
||||
|
|
|
@ -4,36 +4,37 @@ let tools = require('../tools');
|
|||
let db = require('../db');
|
||||
let lists = require('./lists');
|
||||
let util = require('util');
|
||||
let _ = require('../translate')._;
|
||||
|
||||
module.exports.defaultColumns = [{
|
||||
column: 'created',
|
||||
name: 'Sign up date',
|
||||
name: _('Sign up date'),
|
||||
type: 'date'
|
||||
}, {
|
||||
column: 'latest_open',
|
||||
name: 'Latest open',
|
||||
name: _('Latest open'),
|
||||
type: 'date'
|
||||
}, {
|
||||
column: 'latest_click',
|
||||
name: 'Latest click',
|
||||
name: _('Latest click'),
|
||||
type: 'date'
|
||||
}];
|
||||
|
||||
module.exports.defaultCampaignEvents = [{
|
||||
option: 'delivered',
|
||||
name: 'Delivered'
|
||||
name: _('Delivered')
|
||||
}, {
|
||||
option: 'opened',
|
||||
name: 'Has Opened'
|
||||
name: _('Has Opened')
|
||||
}, {
|
||||
option: 'clicked',
|
||||
name: 'Has Clicked'
|
||||
name: _('Has Clicked')
|
||||
}, {
|
||||
option: 'not_opened',
|
||||
name: 'Not Opened'
|
||||
name: _('Not Opened')
|
||||
}, {
|
||||
option: 'not_clicked',
|
||||
name: 'Not Clicked'
|
||||
name: _('Not Clicked')
|
||||
}];
|
||||
|
||||
let defaultColumnMap = {};
|
||||
|
@ -170,36 +171,36 @@ module.exports.create = (trigger, callback) => {
|
|||
let column;
|
||||
|
||||
if (!listId) {
|
||||
return callback(new Error('Missing or invalid list ID'));
|
||||
return callback(new Error(_('Missing or invalid list ID')));
|
||||
}
|
||||
|
||||
if (seconds < 0) {
|
||||
return callback(new Error('Days in the past are not allowed'));
|
||||
return callback(new Error(_('Days in the past are not allowed')));
|
||||
}
|
||||
|
||||
if (!rule || ['campaign', 'subscription'].indexOf(rule) < 0) {
|
||||
return callback(new Error('Missing or invalid trigger rule'));
|
||||
return callback(new Error(_('Missing or invalid trigger rule')));
|
||||
}
|
||||
|
||||
switch (rule) {
|
||||
case 'subscription':
|
||||
column = (trigger.column || '').toString().toLowerCase().trim();
|
||||
if (!column) {
|
||||
return callback(new Error('Invalid subscription configuration'));
|
||||
return callback(new Error(_('Invalid subscription configuration')));
|
||||
}
|
||||
break;
|
||||
case 'campaign':
|
||||
column = (trigger.campaignOption || '').toString().toLowerCase().trim();
|
||||
sourceCampaign = Number(trigger.sourceCampaign) || 0;
|
||||
if (!column || !sourceCampaign) {
|
||||
return callback(new Error('Invalid campaign configuration'));
|
||||
return callback(new Error(_('Invalid campaign configuration')));
|
||||
}
|
||||
if (sourceCampaign === destCampaign) {
|
||||
return callback(new Error('A campaing can not be a target for itself'));
|
||||
return callback(new Error(_('A campaing can not be a target for itself')));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return callback(new Error('Missing or invalid trigger rule'));
|
||||
return callback(new Error(_('Missing or invalid trigger rule')));
|
||||
}
|
||||
|
||||
lists.get(listId, (err, list) => {
|
||||
|
@ -207,7 +208,7 @@ module.exports.create = (trigger, callback) => {
|
|||
return callback(err);
|
||||
}
|
||||
if (!list) {
|
||||
return callback(new Error('Missing or invalid list ID'));
|
||||
return callback(new Error(_('Missing or invalid list ID')));
|
||||
}
|
||||
|
||||
db.getConnection((err, connection) => {
|
||||
|
@ -228,7 +229,7 @@ module.exports.create = (trigger, callback) => {
|
|||
|
||||
let id = result && result.insertId;
|
||||
if (!id) {
|
||||
return callback(new Error('Could not store trigger row'));
|
||||
return callback(new Error(_('Could not store trigger row')));
|
||||
}
|
||||
|
||||
createTriggerTable(id, err => {
|
||||
|
@ -245,7 +246,7 @@ module.exports.create = (trigger, callback) => {
|
|||
module.exports.update = (id, trigger, callback) => {
|
||||
id = Number(id) || 0;
|
||||
if (id < 1) {
|
||||
return callback(new Error('Missing or invalid Trigger ID'));
|
||||
return callback(new Error(_('Missing or invalid Trigger ID')));
|
||||
}
|
||||
|
||||
trigger = tools.convertKeys(trigger);
|
||||
|
@ -259,32 +260,32 @@ module.exports.update = (id, trigger, callback) => {
|
|||
let column;
|
||||
|
||||
if (seconds < 0) {
|
||||
return callback(new Error('Days in the past are not allowed'));
|
||||
return callback(new Error(_('Days in the past are not allowed')));
|
||||
}
|
||||
|
||||
if (!rule || ['campaign', 'subscription'].indexOf(rule) < 0) {
|
||||
return callback(new Error('Missing or invalid trigger rule'));
|
||||
return callback(new Error(_('Missing or invalid trigger rule')));
|
||||
}
|
||||
|
||||
switch (rule) {
|
||||
case 'subscription':
|
||||
column = (trigger.column || '').toString().toLowerCase().trim();
|
||||
if (!column) {
|
||||
return callback(new Error('Invalid subscription configuration'));
|
||||
return callback(new Error(_('Invalid subscription configuration')));
|
||||
}
|
||||
break;
|
||||
case 'campaign':
|
||||
column = (trigger.campaignOption || '').toString().toLowerCase().trim();
|
||||
sourceCampaign = Number(trigger.sourceCampaign) || 0;
|
||||
if (!column || !sourceCampaign) {
|
||||
return callback(new Error('Invalid campaign configuration'));
|
||||
return callback(new Error(_('Invalid campaign configuration')));
|
||||
}
|
||||
if (sourceCampaign === destCampaign) {
|
||||
return callback(new Error('A campaing can not be a target for itself'));
|
||||
return callback(new Error(_('A campaing can not be a target for itself')));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return callback(new Error('Missing or invalid trigger rule'));
|
||||
return callback(new Error(_('Missing or invalid trigger rule')));
|
||||
}
|
||||
|
||||
db.getConnection((err, connection) => {
|
||||
|
@ -312,7 +313,7 @@ module.exports.delete = (id, callback) => {
|
|||
id = Number(id) || 0;
|
||||
|
||||
if (id < 1) {
|
||||
return callback(new Error('Missing Trigger ID'));
|
||||
return callback(new Error(_('Missing Trigger ID')));
|
||||
}
|
||||
|
||||
db.getConnection((err, connection) => {
|
||||
|
|
|
@ -9,6 +9,7 @@ let mailer = require('../mailer');
|
|||
let settings = require('./settings');
|
||||
let crypto = require('crypto');
|
||||
let urllib = require('url');
|
||||
let _ = require('../translate')._;
|
||||
|
||||
/**
|
||||
* Fetches user by ID value
|
||||
|
@ -99,7 +100,7 @@ module.exports.add = (username, password, email, callback) => {
|
|||
|
||||
let id = result && result.insertId;
|
||||
if (!id) {
|
||||
return callback(new Error('Could not store user row'));
|
||||
return callback(new Error(_('Could not store user row')));
|
||||
}
|
||||
|
||||
return callback(null, id);
|
||||
|
@ -169,7 +170,7 @@ module.exports.authenticate = (username, password, callback) => {
|
|||
module.exports.update = (id, updates, callback) => {
|
||||
|
||||
if (!updates.email) {
|
||||
return callback(new Error('Email Address must be set'));
|
||||
return callback(new Error(_('Email Address must be set')));
|
||||
}
|
||||
|
||||
let update = (connection, callback) => {
|
||||
|
@ -180,7 +181,7 @@ module.exports.update = (id, updates, callback) => {
|
|||
}
|
||||
|
||||
if (!rows.length) {
|
||||
return callback('Failed to check user data');
|
||||
return callback(_('Failed to check user data'));
|
||||
}
|
||||
|
||||
let keys = ['email'];
|
||||
|
@ -191,7 +192,7 @@ module.exports.update = (id, updates, callback) => {
|
|||
connection.query('UPDATE users SET ' + keys.map(key => key + '=?').join(', ') + ' WHERE id=? LIMIT 1', values, (err, result) => {
|
||||
if (err) {
|
||||
if (err.code === 'ER_DUP_ENTRY') {
|
||||
err = new Error('Can\'t change email as another user with the same email address already exists');
|
||||
err = new Error(_('Can\'t change email as another user with the same email address already exists'));
|
||||
}
|
||||
return callback(err);
|
||||
}
|
||||
|
@ -208,15 +209,15 @@ module.exports.update = (id, updates, callback) => {
|
|||
return callback(err);
|
||||
}
|
||||
if (!result) {
|
||||
return callback('Incorrect current password');
|
||||
return callback(_('Incorrect current password'));
|
||||
}
|
||||
|
||||
if (!updates.password) {
|
||||
return callback(new Error('New password not set'));
|
||||
return callback(new Error(_('New password not set')));
|
||||
}
|
||||
|
||||
if (updates.password !== updates.password2) {
|
||||
return callback(new Error('Passwords do not match'));
|
||||
return callback(new Error(_('Passwords do not match')));
|
||||
}
|
||||
|
||||
bcrypt.hash(updates.password, null, null, (err, hash) => {
|
||||
|
@ -254,7 +255,7 @@ module.exports.resetToken = (id, callback) => {
|
|||
id = Number(id) || 0;
|
||||
|
||||
if (!id) {
|
||||
return callback(new Error('User ID not set'));
|
||||
return callback(new Error(_('User ID not set')));
|
||||
}
|
||||
|
||||
db.getConnection((err, connection) => {
|
||||
|
@ -282,7 +283,7 @@ module.exports.sendReset = (username, callback) => {
|
|||
username = (username || '').toString().trim();
|
||||
|
||||
if (!username) {
|
||||
return callback(new Error('Username must be set'));
|
||||
return callback(new Error(_('Username must be set')));
|
||||
}
|
||||
|
||||
db.getConnection((err, connection) => {
|
||||
|
@ -319,7 +320,7 @@ module.exports.sendReset = (username, callback) => {
|
|||
to: {
|
||||
address: rows[0].email
|
||||
},
|
||||
subject: 'Mailer password change request'
|
||||
subject: _('Mailer password change request')
|
||||
}, {
|
||||
html: 'emails/password-reset-html.hbs',
|
||||
text: 'emails/password-reset-text.hbs',
|
||||
|
@ -343,7 +344,7 @@ module.exports.sendReset = (username, callback) => {
|
|||
|
||||
module.exports.checkResetToken = (username, resetToken, callback) => {
|
||||
if (!username || !resetToken) {
|
||||
return callback(new Error('Missing username or reset token'));
|
||||
return callback(new Error(_('Missing username or reset token')));
|
||||
}
|
||||
db.getConnection((err, connection) => {
|
||||
if (err) {
|
||||
|
@ -363,11 +364,11 @@ module.exports.resetPassword = (data, callback) => {
|
|||
let updates = tools.convertKeys(data);
|
||||
|
||||
if (!updates.username || !updates.resetToken) {
|
||||
return callback(new Error('Missing username or reset token'));
|
||||
return callback(new Error(_('Missing username or reset token')));
|
||||
}
|
||||
|
||||
if (!updates.password || !updates.password2 || updates.password !== updates.password2) {
|
||||
return callback(new Error('Invalid new password'));
|
||||
return callback(new Error(_('Invalid new password')));
|
||||
}
|
||||
|
||||
bcrypt.hash(updates.password, null, null, (err, hash) => {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue