adding route for email debugging

This commit is contained in:
Sacha Greif 2016-04-12 19:36:47 +09:00
parent 5acda44722
commit 42b25d3eb0
5 changed files with 166 additions and 94 deletions

View file

@ -71,4 +71,5 @@ Telescope.registerComponent("AccountsForm", require('./users/AccountsForm.jsx'))
Telescope.registerComponent("Cheatsheet", require('./debug/Cheatsheet.jsx'));
Telescope.registerComponent("Settings", require('./debug/Settings.jsx'));
Telescope.registerComponent("Emails", require('./debug/Emails.jsx'));

View file

@ -0,0 +1,41 @@
import React from 'react';
import emailRoutes from '../server/routes.js';
const renderEmail = (email, key) => {
return (
<tr key={key}>
<td>{email.name}</td>
<td><a href={email.path.replace(":_id?", "")} target="_blank"><code>{email.path}</code></a></td>
<td>coming soon</td>
</tr>
)
}
const Emails = props => {
return (
<div className="emails">
<h1>Emails</h1>
<div className="emails-wrapper">
<table className="table">
<thead>
<tr>
<td>Name</td>
<td>Preview</td>
<td>Send Test</td>
</tr>
</thead>
<tbody>
{emailRoutes.map(renderEmail)}
</tbody>
</table>
</div>
</div>
)
}
module.exports = Emails
export default Emails

View file

@ -122,6 +122,14 @@ Router.route('/settings', {
}
});
Router.route('/emails', {
name: 'emails',
action() {
({App, Emails} = Telescope.components);
mount(App, {content: <Emails/>});
}
});
FlowRouter.notFound = {
action() {
({Error404} = Telescope.components);

View file

@ -1,98 +1,120 @@
// import Email from 'meteor/nova:email';
import Campaign from 'meteor/nova:newsletter';
// New post email
Picker.route('/email/new-post/:id?', function(params, req, res, next) {
var html;
var post = typeof params.id === "undefined" ? Posts.findOne() : Posts.findOne(params.id);
if (!!post) {
html = Telescope.email.getTemplate('newPost')(Posts.getNotificationProperties(post));
} else {
html = "<h3>No post found.</h3>"
const emailRoutes = [
{
name: "New Post",
path: "/email/new-post/:_id?",
action: (params, req, res, next) => {
var html;
var post = typeof params.id === "undefined" ? Posts.findOne() : Posts.findOne(params.id);
if (!!post) {
html = Telescope.email.getTemplate('newPost')(Posts.getNotificationProperties(post));
} else {
html = "<h3>No post found.</h3>"
}
res.end(Telescope.email.buildTemplate(html));
}
},
{
name: "Post Approved",
path: "/email/post-approved/:_id?",
action: (params, req, res, next) => {
var html;
var post = typeof params.id === "undefined" ? Posts.findOne() : Posts.findOne(params.id);
if (!!post) {
html = Telescope.email.getTemplate('postApproved')(Posts.getNotificationProperties(post));
} else {
html = "<h3>No post found.</h3>"
}
res.end(Telescope.email.buildTemplate(html));
}
},
{
name: "New Comment",
path: "/email/new-comment/:_id?",
action: (params, req, res, next) => {
var html;
var comment = typeof params.id === "undefined" ? Comments.findOne() : Comments.findOne(params.id);
var post = Posts.findOne(comment.postId);
if (!!comment) {
html = Telescope.email.getTemplate('newComment')(Comments.getNotificationProperties(comment, post));
} else {
html = "<h3>No post found.</h3>"
}
res.end(Telescope.email.buildTemplate(html));
}
},
{
name: "New Reply",
path: "/email/new-reply/:_id?",
action: (params, req, res, next) => {
var html;
var comment = typeof params.id === "undefined" ? Comments.findOne() : Comments.findOne(params.id);
var post = Posts.findOne(comment.postId);
if (!!comment) {
html = Telescope.email.getTemplate('newReply')(Comments.getNotificationProperties(comment, post));
} else {
html = "<h3>No post found.</h3>"
}
res.end(Telescope.email.buildTemplate(html));
}
},
{
name: "New User",
path: "/email/new-user/:_id?",
action: (params, req, res, next) => {
var html;
var user = typeof params.id === "undefined" ? Meteor.users.findOne() : Meteor.users.findOne(params.id);
var emailProperties = {
profileUrl: Users.getProfileUrl(user),
username: Users.getUserName(user)
};
html = Telescope.email.getTemplate('newUser')(emailProperties);
res.end(Telescope.email.buildTemplate(html));
}
},
{
name: "Account Approved",
path: "/email/account-approved/:_id?",
action: (params, req, res, next) => {
var user = typeof params.id === "undefined" ? Meteor.users.findOne() : Meteor.users.findOne(params.id);
var emailProperties = {
profileUrl: Users.getProfileUrl(user),
username: Users.getUserName(user),
siteTitle: Telescope.settings.get('title'),
siteUrl: Telescope.utils.getSiteUrl()
};
var html = Telescope.email.getTemplate('accountApproved')(emailProperties);
res.end(Telescope.email.buildTemplate(html));
}
},
{
name: "Newsletter",
path: "/email/newsletter",
action: (params, req, res, next) => {
var campaign = Campaign.build(Campaign.getPosts(Telescope.settings.get('postsPerNewsletter', 5)));
var newsletterEnabled = '<div class="newsletter-enabled"><strong>Newsletter Enabled:</strong> '+Telescope.settings.get('enableNewsletter', true)+'</div>';
var mailChimpAPIKey = '<div class="mailChimpAPIKey"><strong>mailChimpAPIKey:</strong> '+(typeof Telescope.settings.get('mailChimpAPIKey') !== "undefined")+'</div>';
var mailChimpListId = '<div class="mailChimpListId"><strong>mailChimpListId:</strong> '+(typeof Telescope.settings.get('mailChimpListId') !== "undefined")+'</div>';
var campaignSubject = '<div class="campaign-subject"><strong>Subject:</strong> '+campaign.subject+' (note: contents might change)</div>';
var campaignSchedule = '<div class="campaign-schedule"><strong>Scheduled for:</strong> '+ Meteor.call('getNextJob') +'</div>';
res.end(newsletterEnabled+mailChimpAPIKey+mailChimpListId+campaignSubject+campaignSchedule+campaign.html);
}
},
{
name: "Newsletter Confirmation",
path: "/email/newsletter-confirmation",
action: (params, req, res, next) => {
var confirmationHtml = Telescope.email.getTemplate('newsletterConfirmation')({
time: 'January 1st, 1901',
newsletterLink: 'http://example.com',
subject: 'Lorem ipsum dolor sit amet'
});
res.end(Telescope.email.buildTemplate(confirmationHtml));
}
}
res.end(Telescope.email.buildTemplate(html));
});
];
// Post approved
Picker.route('/email/post-approved/:id?', function(params, req, res, next) {
var html;
var post = typeof params.id === "undefined" ? Posts.findOne() : Posts.findOne(params.id);
if (!!post) {
html = Telescope.email.getTemplate('postApproved')(Posts.getNotificationProperties(post));
} else {
html = "<h3>No post found.</h3>"
}
res.end(Telescope.email.buildTemplate(html));
});
emailRoutes.forEach(route => Picker.route(route.path, route.action));
// New comment email
Picker.route('/email/new-comment/:id?', function(params, req, res, next) {
var html;
var comment = typeof params.id === "undefined" ? Comments.findOne() : Comments.findOne(params.id);
var post = Posts.findOne(comment.postId);
if (!!comment) {
html = Telescope.email.getTemplate('newComment')(Comments.getNotificationProperties(comment, post));
} else {
html = "<h3>No post found.</h3>"
}
res.end(Telescope.email.buildTemplate(html));
});
// New reply email
Picker.route('/email/new-reply/:id?', function(params, req, res, next) {
var html;
var comment = typeof params.id === "undefined" ? Comments.findOne() : Comments.findOne(params.id);
var post = Posts.findOne(comment.postId);
if (!!comment) {
html = Telescope.email.getTemplate('newReply')(Comments.getNotificationProperties(comment, post));
} else {
html = "<h3>No post found.</h3>"
}
res.end(Telescope.email.buildTemplate(html));
});
// New user email
Picker.route('/email/new-user/:id?', function(params, req, res, next) {
var html;
var user = typeof params.id === "undefined" ? Meteor.users.findOne() : Meteor.users.findOne(params.id);
var emailProperties = {
profileUrl: Users.getProfileUrl(user),
username: Users.getUserName(user)
};
html = Telescope.email.getTemplate('newUser')(emailProperties);
res.end(Telescope.email.buildTemplate(html));
});
// Account approved email
Picker.route('/email/account-approved/:id?', function(params, req, res, next) {
var user = typeof params.id === "undefined" ? Meteor.users.findOne() : Meteor.users.findOne(params.id);
var emailProperties = {
profileUrl: Users.getProfileUrl(user),
username: Users.getUserName(user),
siteTitle: Telescope.settings.get('title'),
siteUrl: Telescope.utils.getSiteUrl()
};
var html = Telescope.email.getTemplate('accountApproved')(emailProperties);
res.end(Telescope.email.buildTemplate(html));
});
// Newsletter email
Picker.route('/email/newsletter', function(params, req, res, next) {
var campaign = Campaign.build(Campaign.getPosts(Telescope.settings.get('postsPerNewsletter', 5)));
var newsletterEnabled = '<div class="newsletter-enabled"><strong>Newsletter Enabled:</strong> '+Telescope.settings.get('enableNewsletter', true)+'</div>';
var mailChimpAPIKey = '<div class="mailChimpAPIKey"><strong>mailChimpAPIKey:</strong> '+(typeof Telescope.settings.get('mailChimpAPIKey') !== "undefined")+'</div>';
var mailChimpListId = '<div class="mailChimpListId"><strong>mailChimpListId:</strong> '+(typeof Telescope.settings.get('mailChimpListId') !== "undefined")+'</div>';
var campaignSubject = '<div class="campaign-subject"><strong>Subject:</strong> '+campaign.subject+' (note: contents might change)</div>';
var campaignSchedule = '<div class="campaign-schedule"><strong>Scheduled for:</strong> '+ Meteor.call('getNextJob') +'</div>';
res.end(newsletterEnabled+mailChimpAPIKey+mailChimpListId+campaignSubject+campaignSchedule+campaign.html);
});
// Newsletter confirmation email
Picker.route('/email/newsletter-confirmation', function(params, req, res, next) {
var confirmationHtml = Telescope.email.getTemplate('newsletterConfirmation')({
time: 'January 1st, 1901',
newsletterLink: 'http://example.com',
subject: 'Lorem ipsum dolor sit amet'
});
res.end(Telescope.email.buildTemplate(confirmationHtml));
});
export default emailRoutes;

View file

@ -38,7 +38,7 @@ Package.onUse(function (api) {
// 'fourseven:scss@3.4.1',
// 'kadira:blaze-layout@2.3.0',
'meteorhacks:picker@1.0.3',
'meteorhacks:picker@1.0.4',
// 'kadira:dochead@1.4.0',
'dburles:collection-helpers@1.0.4',
'matb33:collection-hooks@0.8.1',