diff --git a/.meteor/versions b/.meteor/versions index a5bd172fc..72ac12d6a 100644 --- a/.meteor/versions +++ b/.meteor/versions @@ -35,6 +35,7 @@ cmather:handlebars-server@2.0.0 coffeescript@1.0.11 cosmos:browserify@0.8.1 dburles:collection-helpers@1.0.4 +dburles:spacebars-tohtml@1.0.1 ddp@1.2.2 ddp-client@1.2.1 ddp-common@1.2.2 diff --git a/packages/custom/lib/email_templates.js b/packages/custom/lib/email_templates.js new file mode 100644 index 000000000..cac6066f5 --- /dev/null +++ b/packages/custom/lib/email_templates.js @@ -0,0 +1,3 @@ +Telescope.email.addTemplates({ + custom_emailPostItem: Assets.getText("lib/server/templates/custom_emailPostItem.handlebars"), +}); diff --git a/packages/custom/package.js b/packages/custom/package.js index 22edfb9de..f5f647e31 100644 --- a/packages/custom/package.js +++ b/packages/custom/package.js @@ -23,6 +23,7 @@ Package.onUse(function (api) { api.addFiles([ 'lib/custom_fields.js', 'lib/template_modules.js', + 'lib/email_templates.js', 'lib/callbacks.js' ], ['client', 'server']); @@ -39,7 +40,7 @@ Package.onUse(function (api) { // server - api.addFiles([ + api.addAssets([ 'lib/server/templates/custom_emailPostItem.handlebars' ], ['server']); diff --git a/packages/telescope-core/lib/client/handlebars.js b/packages/telescope-core/lib/client/handlebars.js index 4616c23e5..840bdcdb8 100644 --- a/packages/telescope-core/lib/client/handlebars.js +++ b/packages/telescope-core/lib/client/handlebars.js @@ -63,6 +63,7 @@ Template.registerHelper('pluralize', function(count, string) { Template.registerHelper('getProfileUrl', function(userOrUserId) { var user = (typeof userOrUserId === 'string') ? Meteor.users.findOne(userOrUserId) : userOrUserId; + console.log(user) if (!!user) { return Users.getProfileUrl(user); } diff --git a/packages/telescope-email/lib/server/email.js b/packages/telescope-email/lib/server/email.js index b84abe5c9..9a5b0b2aa 100644 --- a/packages/telescope-email/lib/server/email.js +++ b/packages/telescope-email/lib/server/email.js @@ -4,6 +4,12 @@ */ Telescope.email = {}; +Telescope.email.templates = {}; + +Telescope.email.addTemplates = function (templates) { + _.extend(Telescope.email.templates, templates); +}; + var htmlToText = Npm.require('html-to-text'); // for template "foo", check if "custom_foo" exists. If it does, use it instead @@ -13,12 +19,16 @@ Telescope.email.getTemplate = function (templateName) { // go through prefixes and keep the last one (if any) that points to a valid template Telescope.config.customPrefixes.forEach(function (prefix) { - if(typeof Handlebars.templates[prefix+templateName] === 'function'){ + if(typeof Telescope.email.templates[prefix+templateName] === 'string'){ template = prefix + templateName; } }); - return Handlebars.templates[template]; + // return Handlebars.templates[template]; + + return function (properties) { + return Spacebars.toHTML(properties, Telescope.email.templates[template]); + } }; @@ -113,3 +123,9 @@ function adminUserCreationNotification (user) { return user; } Telescope.callbacks.add("onCreateUser", adminUserCreationNotification); + +Telescope.email.addTemplates({ + emailInvite: Assets.getText("lib/server/templates/emailInvite.handlebars"), + emailTest: Assets.getText("lib/server/templates/emailTest.handlebars"), + emailWrapper: Assets.getText("lib/server/templates/emailWrapper.handlebars") +}); \ No newline at end of file diff --git a/packages/telescope-email/package.js b/packages/telescope-email/package.js index 62c11647c..49a9ea9e9 100644 --- a/packages/telescope-email/package.js +++ b/packages/telescope-email/package.js @@ -25,9 +25,12 @@ Package.onUse(function (api) { api.addFiles([ 'lib/server/email.js', + ], ['server']); + + api.addAssets([ 'lib/server/templates/emailInvite.handlebars', 'lib/server/templates/emailTest.handlebars', - 'lib/server/templates/emailWrapper.handlebars', + 'lib/server/templates/emailWrapper.handlebars' ], ['server']); var languages = ["ar", "bg", "cs", "da", "de", "el", "en", "es", "et", "fr", "hu", "id", "it", "ja", "kk", "ko", "nl", "pl", "pt-BR", "ro", "ru", "sl", "sv", "th", "tr", "vi", "zh-CN"]; diff --git a/packages/telescope-lib/package.js b/packages/telescope-lib/package.js index f71f11c82..3b69f285f 100644 --- a/packages/telescope-lib/package.js +++ b/packages/telescope-lib/package.js @@ -74,7 +74,8 @@ Package.onUse(function (api) { // 'dburles:iron-router-query-array@1.0.1' 'utilities:onsubscribed@0.1.2', 'utilities:menu@0.1.4', - 'seba:minifiers-autoprefixer@0.0.1' + 'seba:minifiers-autoprefixer@0.0.1', + 'dburles:spacebars-tohtml@1.0.1' ]; api.use(packages); diff --git a/packages/telescope-newsletter/lib/newsletter.js b/packages/telescope-newsletter/lib/newsletter.js index b835a3696..c223e1fdf 100644 --- a/packages/telescope-newsletter/lib/newsletter.js +++ b/packages/telescope-newsletter/lib/newsletter.js @@ -225,3 +225,10 @@ Telescope.modules.add("contentTop", { return user; } Telescope.callbacks.add("profileCompletedAsync", subscribeUserOnProfileCompletion); + + +Telescope.email.addTemplates({ + emailDigest: Assets.getText("lib/server/templates/emailDigest.handlebars"), + emailDigestConfirmation: Assets.getText("lib/server/templates/emailDigestConfirmation.handlebars"), + emailPostItem: Assets.getText("lib/server/templates/emailPostItem.handlebars") +}); diff --git a/packages/telescope-newsletter/package.js b/packages/telescope-newsletter/package.js index 19592f4bd..3f475b11c 100644 --- a/packages/telescope-newsletter/package.js +++ b/packages/telescope-newsletter/package.js @@ -34,6 +34,9 @@ Package.onUse(function (api) { 'lib/server/cron.js', 'lib/server/mailchimp.js', 'lib/server/routes.js', + ], ['server']); + + api.addAssets([ 'lib/server/templates/emailDigest.handlebars', 'lib/server/templates/emailDigestConfirmation.handlebars', 'lib/server/templates/emailPostItem.handlebars' diff --git a/packages/telescope-notifications/lib/notifications.js b/packages/telescope-notifications/lib/notifications.js index 98c8b5c58..7f2ddc163 100644 --- a/packages/telescope-notifications/lib/notifications.js +++ b/packages/telescope-notifications/lib/notifications.js @@ -94,4 +94,14 @@ _.each(notifications, function (notification, notificationName) { Herald.addCourier(notificationName, courier); +}); + +Telescope.email.addTemplates({ + emailAccountApproved: Assets.getText("lib/server/templates/emailAccountApproved.handlebars"), + emailNewComment: Assets.getText("lib/server/templates/emailNewComment.handlebars"), + emailNewPost: Assets.getText("lib/server/templates/emailNewPost.handlebars"), + emailNewPendingPost: Assets.getText("lib/server/templates/emailNewPendingPost.handlebars"), + emailPostApproved: Assets.getText("lib/server/templates/emailPostApproved.handlebars"), + emailNewReply: Assets.getText("lib/server/templates/emailNewReply.handlebars"), + emailNewUser: Assets.getText("lib/server/templates/emailNewUser.handlebars") }); \ No newline at end of file diff --git a/packages/telescope-notifications/lib/server/routes.js b/packages/telescope-notifications/lib/server/routes.js index ef77c8a5f..8f1d2fb0d 100644 --- a/packages/telescope-notifications/lib/server/routes.js +++ b/packages/telescope-notifications/lib/server/routes.js @@ -77,6 +77,6 @@ Picker.route('/email/account-approved/:id?', function(params, req, res, next) { siteTitle: Settings.get('title'), siteUrl: Telescope.utils.getSiteUrl() }; - var html = Handlebars.templates.emailAccountApproved(emailProperties); + var html = Telescope.email.getTemplate('emailAccountApproved')(emailProperties); res.end(Telescope.email.buildTemplate(html)); }); \ No newline at end of file diff --git a/packages/telescope-notifications/package.js b/packages/telescope-notifications/package.js index 9fbc97264..34b32f5d8 100644 --- a/packages/telescope-notifications/package.js +++ b/packages/telescope-notifications/package.js @@ -43,6 +43,9 @@ Package.onUse(function (api) { api.addFiles([ 'lib/server/notifications-server.js', 'lib/server/routes.js', + ], ['server']); + + api.addAssets([ 'lib/server/templates/emailAccountApproved.handlebars', 'lib/server/templates/emailNewComment.handlebars', 'lib/server/templates/emailNewPost.handlebars',