diff --git a/client/homebrew/homebrew.jsx b/client/homebrew/homebrew.jsx index 05a31c65e..6d45aac68 100644 --- a/client/homebrew/homebrew.jsx +++ b/client/homebrew/homebrew.jsx @@ -1,18 +1,18 @@ -var React = require('react'); -var _ = require('lodash'); -var cx = require('classnames'); +const React = require('react'); +const _ = require('lodash'); +const cx = require('classnames'); -var CreateRouter = require('pico-router').createRouter; +const CreateRouter = require('pico-router').createRouter; -var HomePage = require('./pages/homePage/homePage.jsx'); -var EditPage = require('./pages/editPage/editPage.jsx'); -var SharePage = require('./pages/sharePage/sharePage.jsx'); -var NewPage = require('./pages/newPage/newPage.jsx'); -var ErrorPage = require('./pages/errorPage/errorPage.jsx'); -var PrintPage = require('./pages/printPage/printPage.jsx'); +const HomePage = require('./pages/homePage/homePage.jsx'); +const EditPage = require('./pages/editPage/editPage.jsx'); +const SharePage = require('./pages/sharePage/sharePage.jsx'); +const NewPage = require('./pages/newPage/newPage.jsx'); +const ErrorPage = require('./pages/errorPage/errorPage.jsx'); +const PrintPage = require('./pages/printPage/printPage.jsx'); -var Router; -var Homebrew = React.createClass({ +let Router; +const Homebrew = React.createClass({ getDefaultProps: function() { return { url : '', diff --git a/client/homebrew/pages/printPage/printPage.jsx b/client/homebrew/pages/printPage/printPage.jsx index 6aa292223..b6ecfd89d 100644 --- a/client/homebrew/pages/printPage/printPage.jsx +++ b/client/homebrew/pages/printPage/printPage.jsx @@ -1,10 +1,7 @@ const React = require('react'); const _ = require('lodash'); const cx = require('classnames'); - -//const BrewRenderer = require('../../brewRenderer/brewRenderer.jsx'); - -var Markdown = require('naturalcrit/markdown.js'); +const Markdown = require('naturalcrit/markdown.js'); const PrintPage = React.createClass({ getDefaultProps: function() { diff --git a/server.js b/server.js index 514a83612..fb11c0cd5 100644 --- a/server.js +++ b/server.js @@ -35,85 +35,66 @@ var sanitizeBrew = function(brew){ }; -app.get('/edit/:id', (req, res, next)=>{ - HomebrewModel.find({editId : req.params.id}, (err, brews)=>{ - if(err || !brews.length){ - return res.status(400).send(`Can't get that`); - } - req.brew = brews[0].toJSON(); - return next(); - }) -}); - - -//Share Page -app.get('/share/:id', (req, res, next)=>{ - HomebrewModel.find({shareId : req.params.id}, (err, brews)=>{ - if(err || !brews.length){ - return res.status(400).send(`Can't get that`); - } - const brew = brews[0]; - brew.lastViewed = new Date(); - brew.views = brew.views + 1; - brew.save(); - - req.brew = sanitizeBrew(brew.toJSON()); - return next(); - }) -}); - -//Share Page -app.get('/print/:id', (req, res, next)=>{ - HomebrewModel.find({shareId : req.params.id}, (err, brews)=>{ - if(err || !brews.length){ - return res.status(400).send(`Can't get that`); - } - req.brew = sanitizeBrew(brews[0].toJSON()); - return next(); - }) -}); - -/* -//Print Page -var Markdown = require('naturalcrit/markdown.js'); -var PHBStyle = '' -app.get('/print/:id', function(req, res){ - HomebrewModel.find({shareId : req.params.id}, function(err, objs){ - var brew = {}; - if(objs.length){ - brew = objs[0]; - } - - if(err || !objs.length){ - brew.text = '# Oops \n We could not find a brew with that id. **Sorry!**'; - } - - var content = _.map(brew.text.split('\\page'), function(pageText, index){ - return `
${text}`);
- });
+ HomebrewModel.get({shareId : req.params.id})
+ .then((brew)=>{
+ const text = brew.text.replaceAll('<', '<').replaceAll('>', '>');
+ return res.send(`${text}`);
+ })
+ .catch((err)=>{
+ console.log(err);
+ return res.status(404).send('Could not find Homebrew with that id');
+ })
});
+app.get('/edit/:id', (req, res, next)=>{
+ HomebrewModel.get({editId : req.params.id})
+ .then((brew)=>{
+ req.brew = brew.sanatize();
+ return next();
+ })
+ .catch((err)=>{
+ console.log(err);
+ return res.status(400).send(`Can't get that`);
+ });
+});
+
+//Share Page
+app.get('/share/:id', (req, res, next)=>{
+ HomebrewModel.get({shareId : req.params.id})
+ .then((brew)=>{
+ return brew.increaseView();
+ })
+ .then((brew)=>{
+ req.brew = brew.sanatize(true);
+ return next();
+ })
+ .catch((err)=>{
+ console.log(err);
+ return res.status(400).send(`Can't get that`);
+ });
+});
+
+//Print Page
+app.get('/print/:id', (req, res, next)=>{
+ HomebrewModel.get({shareId : req.params.id})
+ .then((brew)=>{
+ req.brew = brew.sanatize(true);
+ return next();
+ })
+ .catch((err)=>{
+ console.log(err);
+ return res.status(400).send(`Can't get that`);
+ });
+});
+
+
+
+
//Render Page
app.use((req, res) => {
vitreumRender({
diff --git a/server/homebrew.api.js b/server/homebrew.api.js
index 84cf06c66..9322327fe 100644
--- a/server/homebrew.api.js
+++ b/server/homebrew.api.js
@@ -53,17 +53,19 @@ router.post('/api', (req, res)=>{
});
router.put('/api/update/:id', (req, res)=>{
- HomebrewModel.find({editId : req.params.id}, (err, objs)=>{
- if(!objs.length || err) return res.status(404).send("Can not find homebrew with that id");
- var resEntry = objs[0];
- resEntry.text = req.body.text;
- resEntry.title = req.body.title;
- resEntry.updatedAt = new Date();
- resEntry.save((err, obj)=>{
- if(err) return res.status(500).send("Error while saving");
- return res.status(200).send(obj);
+ HomebrewModel.get({editId : req.params.id})
+ .then((brew)=>{
+ brew = _.merge(brew, req.body);
+ brew.updatedAt = new Date();
+ brew.save((err, obj)=>{
+ if(err) throw err;
+ return res.status(200).send(obj);
+ })
})
- });
+ .catch((err)=>{
+ console.log(err);
+ return res.status(500).send("Error while saving");
+ });
});
router.get('/api/remove/:id', (req, res)=>{
diff --git a/server/homebrew.model.js b/server/homebrew.model.js
index 7dcd58270..abb9bf14e 100644
--- a/server/homebrew.model.js
+++ b/server/homebrew.model.js
@@ -7,6 +7,7 @@ var HomebrewSchema = mongoose.Schema({
editId : {type : String, default: shortid.generate, index: { unique: true }},
title : {type : String, default : ""},
text : {type : String, default : ""},
+ authors : [String],
createdAt : { type: Date, default: Date.now },
updatedAt : { type: Date, default: Date.now},
@@ -16,6 +17,40 @@ var HomebrewSchema = mongoose.Schema({
+HomebrewSchema.methods.sanatize = function(full=false){
+ const brew = this.toJSON();
+ delete brew._id;
+ delete brew.__v;
+ if(full){
+ delete brew.editId;
+ }
+ return brew;
+};
+
+
+HomebrewSchema.methods.increaseView = function(){
+ return new Promise((resolve, reject) => {
+ this.lastViewed = new Date();
+ this.views = this.views + 1;
+ this.save((err) => {
+ if(err) return reject(err);
+ return resolve(this);
+ });
+ });
+};
+
+
+
+HomebrewSchema.statics.get = function(query){
+ return new Promise((resolve, reject) => {
+ Homebrew.find(query, (err, brews)=>{
+ if(err || !brews.length) return reject('Can not find brew');
+ return resolve(brews[0]);
+ });
+ });
+};
+
+
var Homebrew = mongoose.model('Homebrew', HomebrewSchema);
module.exports = {