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:
@@ -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!)
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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){
|
||||
|
||||
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
|
||||
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');
|
||||
|
||||
Reference in New Issue
Block a user