mirror of
https://github.com/atlanticbiomedical/biomedjs.git
synced 2025-07-02 00:47:26 -04:00
Latest Code
This commit is contained in:
@ -4,12 +4,18 @@ var mongoose = require('mongoose'),
|
||||
|
||||
var md5 = require('MD5');
|
||||
var fs = require('fs');
|
||||
|
||||
var markdown = require('markdown').markdown;
|
||||
var log = require('log4node');
|
||||
|
||||
exports.index = function(req, res) {
|
||||
var criteria = {};
|
||||
var page = req.param('page');
|
||||
if (page) {
|
||||
criteria = { pages: page };
|
||||
}
|
||||
|
||||
log.info('posts.index');
|
||||
var query = Post.find()
|
||||
var query = Post.find(criteria)
|
||||
.populate('author', 'name')
|
||||
.sort('-createdOn')
|
||||
.exec(function(err, results) {
|
||||
@ -32,19 +38,64 @@ exports.get = function(req, res, next) {
|
||||
});
|
||||
};
|
||||
|
||||
function renderHtml(input) {
|
||||
if (input) {
|
||||
try {
|
||||
return markdown.toHTML(input);
|
||||
} catch (err) {
|
||||
console.log('Failed to render html', err);
|
||||
return input;
|
||||
}
|
||||
} else {
|
||||
return input;
|
||||
}
|
||||
}
|
||||
|
||||
function cleanTags(tags) {
|
||||
if (!tags) {
|
||||
return [];
|
||||
}
|
||||
|
||||
if (!Array.isArray(tags)) {
|
||||
tags = [tags];
|
||||
}
|
||||
|
||||
var results = [];
|
||||
|
||||
for (var i = 0; i < tags.length; i++) {
|
||||
var tag = tags[i].toString()
|
||||
.replace(/^#/, '')
|
||||
.replace(/(\W|\d)/g, '$1 ')
|
||||
.replace(/\b\w+/g, function(txt) {
|
||||
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
|
||||
})
|
||||
.replace(/\s/g, '')
|
||||
|
||||
if (tag) {
|
||||
results.push(tag);
|
||||
}
|
||||
}
|
||||
|
||||
return results;
|
||||
}
|
||||
|
||||
exports.create = function(req, res, next) {
|
||||
log.info('posts.create %j', req.body);
|
||||
|
||||
var post = new Post({
|
||||
title: req.body.title,
|
||||
preview: req.body.preview,
|
||||
previewHtml: renderHtml(req.body.preview),
|
||||
details: req.body.details,
|
||||
detailsHtml: renderHtml(req.body.details),
|
||||
image: req.body.image,
|
||||
gallery: req.body.gallery,
|
||||
status: req.body.status,
|
||||
createdOn: req.body.createdOn,
|
||||
postedOn: req.body.postedOn,
|
||||
author: req.user
|
||||
author: req.user,
|
||||
pages: req.body.pages,
|
||||
tags: cleanTags(req.body.tags),
|
||||
});
|
||||
|
||||
return post.save(function(err) {
|
||||
@ -60,13 +111,17 @@ exports.update = function(req, res, next) {
|
||||
console.log('updating post');
|
||||
|
||||
return Post.findById(id, function(err, post) {
|
||||
post.title = req.body.title;
|
||||
post.preview = req.body.preview;
|
||||
post.details = req.body.details;
|
||||
post.image = req.body.image;
|
||||
post.gallery = req.body.gallery;
|
||||
post.status = req.body.status;
|
||||
post.postedOn = req.body.postedOn;
|
||||
post.title = req.body.title;
|
||||
post.preview = req.body.preview;
|
||||
post.previewHtml = renderHtml(req.body.preview);
|
||||
post.details = req.body.details;
|
||||
post.detailsHtml = renderHtml(req.body.details);
|
||||
post.image = req.body.image;
|
||||
post.gallery = req.body.gallery;
|
||||
post.status = req.body.status;
|
||||
post.postedOn = req.body.postedOn;
|
||||
post.pages = req.body.pages;
|
||||
post.tags = cleanTags(req.body.tags);
|
||||
|
||||
return post.save(function(err) {
|
||||
if (err)
|
||||
|
@ -130,18 +130,47 @@ module.exports = function(config, calendar) {
|
||||
if (!notify)
|
||||
return callback(null);
|
||||
|
||||
var to = generateToLine(techs).concat(req.body.emails);
|
||||
if (!to)
|
||||
return callback(null);
|
||||
var description = generateDescription(client, workorder, req.user, null, techs);
|
||||
var techDescription = appendNotes(description, client);
|
||||
|
||||
server.send({
|
||||
text: generateDescription(client, workorder, req.user, null, techs),
|
||||
from: config.email.user,
|
||||
to: to,
|
||||
subject: 'Workorder created: ' + workorder.biomedId
|
||||
}, function(err, message) {
|
||||
callback(err);
|
||||
});
|
||||
var to = req.body.emails;
|
||||
var techTo = generateToLine(techs);
|
||||
|
||||
var subject = 'Workorder created: ' + workorder.biomedId;
|
||||
|
||||
console.log('-------------------------');
|
||||
console.log(to);
|
||||
|
||||
async.waterfall([
|
||||
function(cb) {
|
||||
if (to && to.length > 0) {
|
||||
var msg = {
|
||||
text: description,
|
||||
from: config.email.user,
|
||||
to: to,
|
||||
subject: subject
|
||||
};
|
||||
console.log(msg);
|
||||
server.send(msg, function(err, message) { cb(err); });
|
||||
} else {
|
||||
cb();
|
||||
}
|
||||
},
|
||||
function(cb) {
|
||||
if (techTo) {
|
||||
var msg = {
|
||||
text: techDescription,
|
||||
from: config.email.user,
|
||||
to: techTo,
|
||||
subject: subject
|
||||
};
|
||||
console.log(msg);
|
||||
server.send(msg, function(err, message) { cb(err); });
|
||||
} else {
|
||||
cb();
|
||||
}
|
||||
}
|
||||
], callback);
|
||||
},
|
||||
function(callback) {
|
||||
workorder.save(function(err, result) { callback(err, result); });
|
||||
@ -265,18 +294,45 @@ module.exports = function(config, calendar) {
|
||||
if (!notify)
|
||||
return callback(null);
|
||||
|
||||
var to = generateToLine(techs);
|
||||
if (!to)
|
||||
return callback(null);
|
||||
|
||||
server.send({
|
||||
text: generateDescription(client, workorder, createdBy, modifiedBy, techs),
|
||||
from: config.email.user,
|
||||
to: to,
|
||||
subject: 'Workorder updated: ' + workorder.biomedId
|
||||
}, function(err, message) {
|
||||
callback(err);
|
||||
});
|
||||
|
||||
var description = generateDescription(client, workorder, createdBy, modifiedBy, techs);
|
||||
var techDescription = appendNotes(description, client);
|
||||
|
||||
var to = req.body.emails;
|
||||
var techTo = generateToLine(techs);
|
||||
|
||||
var subject = 'Workorder updated: ' + workorder.biomedId;
|
||||
|
||||
async.waterfall([
|
||||
function(cb) {
|
||||
if (to && to.length > 0) {
|
||||
var msg = {
|
||||
text: description,
|
||||
from: config.email.user,
|
||||
to: to,
|
||||
subject: subject
|
||||
};
|
||||
console.log(msg);
|
||||
server.send(msg, function(err, message) { cb(err); });
|
||||
} else {
|
||||
cb();
|
||||
}
|
||||
},
|
||||
function(cb) {
|
||||
if (techTo) {
|
||||
var msg = {
|
||||
text: techDescription,
|
||||
from: config.email.user,
|
||||
to: techTo,
|
||||
subject: subject
|
||||
};
|
||||
console.log(msg);
|
||||
server.send(msg, function(err, message) { cb(err); });
|
||||
} else {
|
||||
cb();
|
||||
}
|
||||
}
|
||||
], callback);
|
||||
},
|
||||
function(callback) {
|
||||
workorder.save(function(err) {
|
||||
@ -332,6 +388,26 @@ function generateLocation(client) {
|
||||
return sprintf("%(street1)s %(street2)s %(city)s, %(state)s. %(zip)s", data);
|
||||
}
|
||||
|
||||
function appendNotes(message, client) {
|
||||
var template =
|
||||
"%(message)s\n" +
|
||||
"Tech Notes:\n" +
|
||||
" %(notes)s\n" +
|
||||
"\n";
|
||||
|
||||
if (client.notes && client.notes['tech']) {
|
||||
var resources = {
|
||||
message: message || '',
|
||||
notes: client.notes['tech'] || ''
|
||||
};
|
||||
|
||||
return sprintf(template, resources);
|
||||
} else {
|
||||
return message;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function generateDescription(client, workorder, createdBy, modifiedBy) {
|
||||
var template =
|
||||
"Workorder ID:\n" +
|
||||
|
@ -5,13 +5,17 @@ var mongoose = require('mongoose'),
|
||||
var postSchema = new Schema({
|
||||
title: { type: String },
|
||||
preview: { type: String },
|
||||
previewHtml: { type: String },
|
||||
details: { type: String },
|
||||
detailsHtml: { type: String },
|
||||
image: { type: String },
|
||||
gallery: [{ type: String }],
|
||||
status: { type: String },
|
||||
createdOn: { type: Date },
|
||||
postedOn: { type: Date },
|
||||
author: { type: ObjectId, ref: 'User' }
|
||||
author: { type: ObjectId, ref: 'User' },
|
||||
tags: [{ type: String }],
|
||||
pages: [{ type: String }]
|
||||
});
|
||||
|
||||
var Post = module.exports = mongoose.model('Post', postSchema);
|
||||
|
@ -63,6 +63,8 @@ html(lang="en", ng-app="biomed", ng-controller="biomed.PageCtrl")
|
||||
a(href='/admin')
|
||||
i.icon-wrench
|
||||
| Admin
|
||||
li.day-of-year
|
||||
{{dayOfYear}}
|
||||
.container-fluid
|
||||
ng-view
|
||||
!{js}
|
||||
|
@ -38,7 +38,7 @@ html(lang="en", ng-app="site", ng-controller="site.PageCtrl")
|
||||
.controls
|
||||
.dropzone(dropzone='titleImageOptions')
|
||||
|
||||
.control-group
|
||||
.control-group(ng-show='model.image')
|
||||
label.control-label Gallery
|
||||
.controls
|
||||
.dropzone(dropzone='galleryImageOptions')
|
||||
|
Reference in New Issue
Block a user