mirror of
https://github.com/stolksdorf/homebrewery.git
synced 2025-12-20 22:31:29 +00:00
Added in a much better error page
This commit is contained in:
@@ -3,6 +3,8 @@
|
|||||||
### Saturday, 20/08/2016 - v2.3.0
|
### Saturday, 20/08/2016 - v2.3.0
|
||||||
- Added in a license file
|
- Added in a license file
|
||||||
- Updated the welcome text
|
- Updated the welcome text
|
||||||
|
- Added in a much better Error page
|
||||||
|
|
||||||
|
|
||||||
### Friday, 29/07/2016 - v2.2.7
|
### Friday, 29/07/2016 - v2.2.7
|
||||||
- Adding in descriptive note blocks. (Thanks calculuschild!)
|
- Adding in descriptive note blocks. (Thanks calculuschild!)
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ var HomePage = require('./pages/homePage/homePage.jsx');
|
|||||||
var EditPage = require('./pages/editPage/editPage.jsx');
|
var EditPage = require('./pages/editPage/editPage.jsx');
|
||||||
var SharePage = require('./pages/sharePage/sharePage.jsx');
|
var SharePage = require('./pages/sharePage/sharePage.jsx');
|
||||||
var NewPage = require('./pages/newPage/newPage.jsx');
|
var NewPage = require('./pages/newPage/newPage.jsx');
|
||||||
|
var ErrorPage = require('./pages/errorPage/errorPage.jsx');
|
||||||
|
|
||||||
var Router;
|
var Router;
|
||||||
var Homebrew = React.createClass({
|
var Homebrew = React.createClass({
|
||||||
@@ -30,6 +31,10 @@ var Homebrew = React.createClass({
|
|||||||
componentWillMount: function() {
|
componentWillMount: function() {
|
||||||
Router = CreateRouter({
|
Router = CreateRouter({
|
||||||
'/edit/:id' : (args) => {
|
'/edit/:id' : (args) => {
|
||||||
|
if(!this.props.brew.editId){
|
||||||
|
return <ErrorPage ver={this.props.version} errorId={args.id}/>
|
||||||
|
}
|
||||||
|
|
||||||
return <EditPage
|
return <EditPage
|
||||||
ver={this.props.version}
|
ver={this.props.version}
|
||||||
id={args.id}
|
id={args.id}
|
||||||
@@ -37,6 +42,10 @@ var Homebrew = React.createClass({
|
|||||||
},
|
},
|
||||||
|
|
||||||
'/share/:id' : (args) => {
|
'/share/:id' : (args) => {
|
||||||
|
if(!this.props.brew.shareId){
|
||||||
|
return <ErrorPage ver={this.props.version} errorId={args.id}/>
|
||||||
|
}
|
||||||
|
|
||||||
return <SharePage
|
return <SharePage
|
||||||
ver={this.props.version}
|
ver={this.props.version}
|
||||||
id={args.id}
|
id={args.id}
|
||||||
|
|||||||
@@ -53,6 +53,9 @@ var EditPage = React.createClass({
|
|||||||
savedBrew : null,
|
savedBrew : null,
|
||||||
|
|
||||||
componentDidMount: function(){
|
componentDidMount: function(){
|
||||||
|
|
||||||
|
console.log('getting here');
|
||||||
|
|
||||||
this.debounceSave = _.debounce(this.save, SAVE_TIMEOUT);
|
this.debounceSave = _.debounce(this.save, SAVE_TIMEOUT);
|
||||||
window.onbeforeunload = ()=>{
|
window.onbeforeunload = ()=>{
|
||||||
if(this.state.isSaving || this.state.isPending){
|
if(this.state.isSaving || this.state.isPending){
|
||||||
|
|||||||
46
client/homebrew/pages/errorPage/errorPage.jsx
Normal file
46
client/homebrew/pages/errorPage/errorPage.jsx
Normal 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;
|
||||||
5
client/homebrew/pages/errorPage/errorPage.less
Normal file
5
client/homebrew/pages/errorPage/errorPage.less
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
.errorPage{
|
||||||
|
.errorTitle{
|
||||||
|
background-color: @orange;
|
||||||
|
}
|
||||||
|
}
|
||||||
26
server.js
26
server.js
@@ -56,16 +56,11 @@ var sanitizeBrew = function(brew){
|
|||||||
//Load project version
|
//Load project version
|
||||||
var projectVersion = require('./package.json').version;
|
var projectVersion = require('./package.json').version;
|
||||||
|
|
||||||
console.log(projectVersion);
|
|
||||||
|
|
||||||
|
|
||||||
//Edit Page
|
//Edit Page
|
||||||
app.get('/edit/:id', function(req, res){
|
app.get('/edit/:id', function(req, res){
|
||||||
HomebrewModel.find({editId : req.params.id}, function(err, objs){
|
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 resObj = null;
|
||||||
var errObj = {text: "# oops\nCould not find the homebrew."}
|
|
||||||
if(objs.length){
|
if(objs.length){
|
||||||
resObj = objs[0].toJSON();
|
resObj = objs[0].toJSON();
|
||||||
}
|
}
|
||||||
@@ -76,7 +71,7 @@ app.get('/edit/:id', function(req, res){
|
|||||||
prerenderWith : './client/homebrew/homebrew.jsx',
|
prerenderWith : './client/homebrew/homebrew.jsx',
|
||||||
initialProps: {
|
initialProps: {
|
||||||
url: req.originalUrl,
|
url: req.originalUrl,
|
||||||
brew : resObj || errObj,
|
brew : resObj || {},
|
||||||
version : projectVersion
|
version : projectVersion
|
||||||
},
|
},
|
||||||
clearRequireCache : !process.env.PRODUCTION,
|
clearRequireCache : !process.env.PRODUCTION,
|
||||||
@@ -90,16 +85,15 @@ app.get('/edit/:id', function(req, res){
|
|||||||
//Share Page
|
//Share Page
|
||||||
app.get('/share/:id', function(req, res){
|
app.get('/share/:id', function(req, res){
|
||||||
HomebrewModel.find({shareId : req.params.id}, function(err, objs){
|
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 = {};
|
||||||
|
|
||||||
var resObj = null;
|
|
||||||
var errObj = {text: "# oops\nCould not find the homebrew."}
|
|
||||||
|
|
||||||
if(objs.length){
|
if(objs.length){
|
||||||
resObj = objs[0];
|
var resObj = objs[0];
|
||||||
resObj.lastViewed = new Date();
|
resObj.lastViewed = new Date();
|
||||||
resObj.views = resObj.views + 1;
|
resObj.views = resObj.views + 1;
|
||||||
resObj.save();
|
resObj.save();
|
||||||
|
|
||||||
|
brew = resObj.toJSON();
|
||||||
}
|
}
|
||||||
|
|
||||||
vitreumRender({
|
vitreumRender({
|
||||||
@@ -108,7 +102,7 @@ app.get('/share/:id', function(req, res){
|
|||||||
prerenderWith : './client/homebrew/homebrew.jsx',
|
prerenderWith : './client/homebrew/homebrew.jsx',
|
||||||
initialProps: {
|
initialProps: {
|
||||||
url: req.originalUrl,
|
url: req.originalUrl,
|
||||||
brew : sanitizeBrew(resObj.toJSON() || errObj),
|
brew : sanitizeBrew(brew || {}),
|
||||||
version : projectVersion
|
version : projectVersion
|
||||||
},
|
},
|
||||||
clearRequireCache : !process.env.PRODUCTION,
|
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>'
|
var PHBStyle = '<style>' + require('fs').readFileSync('./phb.standalone.css', 'utf8') + '</style>'
|
||||||
app.get('/print/:id', function(req, res){
|
app.get('/print/:id', function(req, res){
|
||||||
HomebrewModel.find({shareId : req.params.id}, function(err, objs){
|
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 = {};
|
||||||
|
|
||||||
var brew = null;
|
|
||||||
if(objs.length){
|
if(objs.length){
|
||||||
brew = objs[0];
|
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){
|
var content = _.map(brew.text.split('\\page'), function(pageText, index){
|
||||||
return `<div class="phb print" id="p${index+1}">` + Markdown.render(pageText) + '</div>';
|
return `<div class="phb print" id="p${index+1}">` + Markdown.render(pageText) + '</div>';
|
||||||
}).join('\n');
|
}).join('\n');
|
||||||
|
|||||||
Reference in New Issue
Block a user