From 6b337b5d699b0b1582cec63d048e5fda9ce937bc Mon Sep 17 00:00:00 2001 From: Scott Tolksdorf Date: Sat, 20 Aug 2016 12:23:24 -0400 Subject: [PATCH] Added in a much better error page --- changelog.md | 2 + client/homebrew/homebrew.jsx | 9 ++++ client/homebrew/pages/editPage/editPage.jsx | 3 ++ client/homebrew/pages/errorPage/errorPage.jsx | 46 +++++++++++++++++++ .../homebrew/pages/errorPage/errorPage.less | 5 ++ server.js | 26 +++++------ 6 files changed, 76 insertions(+), 15 deletions(-) create mode 100644 client/homebrew/pages/errorPage/errorPage.jsx create mode 100644 client/homebrew/pages/errorPage/errorPage.less diff --git a/changelog.md b/changelog.md index df7e68e..d8b02ab 100644 --- a/changelog.md +++ b/changelog.md @@ -3,6 +3,8 @@ ### Saturday, 20/08/2016 - v2.3.0 - Added in a license file - Updated the welcome text +- Added in a much better Error page + ### Friday, 29/07/2016 - v2.2.7 - Adding in descriptive note blocks. (Thanks calculuschild!) diff --git a/client/homebrew/homebrew.jsx b/client/homebrew/homebrew.jsx index f5e92ee..ae711cd 100644 --- a/client/homebrew/homebrew.jsx +++ b/client/homebrew/homebrew.jsx @@ -8,6 +8,7 @@ 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 Router; var Homebrew = React.createClass({ @@ -30,6 +31,10 @@ var Homebrew = React.createClass({ componentWillMount: function() { Router = CreateRouter({ '/edit/:id' : (args) => { + if(!this.props.brew.editId){ + return + } + return { + if(!this.props.brew.shareId){ + return + } + return { if(this.state.isSaving || this.state.isPending){ diff --git a/client/homebrew/pages/errorPage/errorPage.jsx b/client/homebrew/pages/errorPage/errorPage.jsx new file mode 100644 index 0000000..2f02951 --- /dev/null +++ b/client/homebrew/pages/errorPage/errorPage.jsx @@ -0,0 +1,46 @@ +var React = require('react'); +var _ = require('lodash'); +var cx = require('classnames'); + +var Nav = require('naturalcrit/nav/nav.jsx'); +var Navbar = require('../../navbar/navbar.jsx'); +var PatreonNavItem = require('../../navbar/patreon.navitem.jsx'); +var IssueNavItem = require('../../navbar/issue.navitem.jsx'); +var RecentNavItem = require('../../navbar/recent.navitem.jsx'); + +var BrewRenderer = require('../../brewRenderer/brewRenderer.jsx'); + +var ErrorPage = React.createClass({ + getDefaultProps: function() { + return { + ver : '0.0.0', + errorId: '' + }; + }, + + text : '# Oops \n We could not find a brew with that id. **Sorry!**', + + render : function(){ + return
+ + + + Crit Fail! + + + + + + + + + + +
+ +
+
+ } +}); + +module.exports = ErrorPage; diff --git a/client/homebrew/pages/errorPage/errorPage.less b/client/homebrew/pages/errorPage/errorPage.less new file mode 100644 index 0000000..48ba0f9 --- /dev/null +++ b/client/homebrew/pages/errorPage/errorPage.less @@ -0,0 +1,5 @@ +.errorPage{ + .errorTitle{ + background-color: @orange; + } +} \ No newline at end of file diff --git a/server.js b/server.js index 47dd148..763f98a 100644 --- a/server.js +++ b/server.js @@ -56,16 +56,11 @@ var sanitizeBrew = function(brew){ //Load project version var projectVersion = require('./package.json').version; -console.log(projectVersion); - //Edit Page app.get('/edit/:id', function(req, res){ HomebrewModel.find({editId : req.params.id}, function(err, objs){ - if(err || !objs.length) return res.status(404).send('Could not find Homebrew with that id'); - var resObj = null; - var errObj = {text: "# oops\nCould not find the homebrew."} if(objs.length){ resObj = objs[0].toJSON(); } @@ -76,7 +71,7 @@ app.get('/edit/:id', function(req, res){ prerenderWith : './client/homebrew/homebrew.jsx', initialProps: { url: req.originalUrl, - brew : resObj || errObj, + brew : resObj || {}, version : projectVersion }, clearRequireCache : !process.env.PRODUCTION, @@ -90,16 +85,15 @@ app.get('/edit/:id', function(req, res){ //Share Page app.get('/share/:id', function(req, res){ HomebrewModel.find({shareId : req.params.id}, function(err, objs){ - if(err || !objs.length) return res.status(404).send('Could not find Homebrew with that id'); - - var resObj = null; - var errObj = {text: "# oops\nCould not find the homebrew."} + var brew = {}; if(objs.length){ - resObj = objs[0]; + var resObj = objs[0]; resObj.lastViewed = new Date(); resObj.views = resObj.views + 1; resObj.save(); + + brew = resObj.toJSON(); } vitreumRender({ @@ -108,7 +102,7 @@ app.get('/share/:id', function(req, res){ prerenderWith : './client/homebrew/homebrew.jsx', initialProps: { url: req.originalUrl, - brew : sanitizeBrew(resObj.toJSON() || errObj), + brew : sanitizeBrew(brew || {}), version : projectVersion }, clearRequireCache : !process.env.PRODUCTION, @@ -123,13 +117,15 @@ var Markdown = require('naturalcrit/markdown.js'); var PHBStyle = '' app.get('/print/:id', function(req, res){ HomebrewModel.find({shareId : req.params.id}, function(err, objs){ - if(err || !objs.length) return res.status(404).send('Could not find Homebrew with that id'); - - var brew = null; + 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 `
` + Markdown.render(pageText) + '
'; }).join('\n');