1
0
mirror of https://github.com/stolksdorf/homebrewery.git synced 2025-12-12 23:45:57 +00:00

Added in a much better error page

This commit is contained in:
Scott Tolksdorf
2016-08-20 12:23:24 -04:00
parent 62d70022e7
commit 6b337b5d69
6 changed files with 76 additions and 15 deletions

View File

@@ -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!)

View File

@@ -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 <ErrorPage ver={this.props.version} errorId={args.id}/>
}
return <EditPage
ver={this.props.version}
id={args.id}
@@ -37,6 +42,10 @@ var Homebrew = React.createClass({
},
'/share/:id' : (args) => {
if(!this.props.brew.shareId){
return <ErrorPage ver={this.props.version} errorId={args.id}/>
}
return <SharePage
ver={this.props.version}
id={args.id}

View File

@@ -53,6 +53,9 @@ var EditPage = React.createClass({
savedBrew : null,
componentDidMount: function(){
console.log('getting here');
this.debounceSave = _.debounce(this.save, SAVE_TIMEOUT);
window.onbeforeunload = ()=>{
if(this.state.isSaving || this.state.isPending){

View File

@@ -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 <div className='errorPage page'>
<Navbar ver={this.props.ver}>
<Nav.section>
<Nav.item className='errorTitle'>
Crit Fail!
</Nav.item>
</Nav.section>
<Nav.section>
<PatreonNavItem />
<IssueNavItem />
<RecentNavItem.both errorId={this.props.errorId} />
</Nav.section>
</Navbar>
<div className='content'>
<BrewRenderer text={this.text} />
</div>
</div>
}
});
module.exports = ErrorPage;

View File

@@ -0,0 +1,5 @@
.errorPage{
.errorTitle{
background-color: @orange;
}
}

View File

@@ -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 = '<style>' + require('fs').readFileSync('./phb.standalone.css', 'utf8') + '</style>'
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 `<div class="phb print" id="p${index+1}">` + Markdown.render(pageText) + '</div>';
}).join('\n');