mirror of
https://github.com/stolksdorf/homebrewery.git
synced 2025-12-18 14:51:28 +00:00
Added in new page, however edit page is still broken
This commit is contained in:
@@ -7,6 +7,7 @@ var CreateRouter = require('pico-router').createRouter;
|
|||||||
var HomePage = require('./pages/homePage/homePage.jsx');
|
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 Router;
|
var Router;
|
||||||
var Homebrew = React.createClass({
|
var Homebrew = React.createClass({
|
||||||
@@ -36,6 +37,9 @@ var Homebrew = React.createClass({
|
|||||||
'/homebrew/changelog' : (args) => {
|
'/homebrew/changelog' : (args) => {
|
||||||
return <SharePage entry={{text : this.props.changelog}} />
|
return <SharePage entry={{text : this.props.changelog}} />
|
||||||
},
|
},
|
||||||
|
'/homebrew/new' : (args) => {
|
||||||
|
return <NewPage />
|
||||||
|
},
|
||||||
'/homebrew*' : <HomePage welcomeText={this.props.welcomeText} />,
|
'/homebrew*' : <HomePage welcomeText={this.props.welcomeText} />,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -2,30 +2,20 @@ var React = require('react');
|
|||||||
var _ = require('lodash');
|
var _ = require('lodash');
|
||||||
var cx = require('classnames');
|
var cx = require('classnames');
|
||||||
|
|
||||||
//var Statusbar = require('../statusbar/statusbar.jsx');
|
|
||||||
//var PageContainer = require('../pageContainer/pageContainer.jsx');
|
|
||||||
//var Editor = require('../editor/editor.jsx');
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var Nav = require('naturalcrit/nav/nav.jsx');
|
var Nav = require('naturalcrit/nav/nav.jsx');
|
||||||
var Navbar = require('../../navbar/navbar.jsx');
|
var Navbar = require('../../navbar/navbar.jsx');
|
||||||
|
|
||||||
var RedditShare = require('../../navbar/redditShare.navitem.jsx');
|
var RedditShare = require('../../navbar/redditShare.navitem.jsx');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var SplitPane = require('naturalcrit/splitPane/splitPane.jsx');
|
var SplitPane = require('naturalcrit/splitPane/splitPane.jsx');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//var CodeEditor = require('naturalcrit/codeEditor/codeEditor.jsx');
|
|
||||||
|
|
||||||
var Editor = require('../../editor/editor.jsx');
|
var Editor = require('../../editor/editor.jsx');
|
||||||
var BrewRenderer = require('../../brewRenderer/brewRenderer.jsx');
|
var BrewRenderer = require('../../brewRenderer/brewRenderer.jsx');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//var KEY = 'naturalCrit-homebrew';
|
|
||||||
|
|
||||||
var HomePage = React.createClass({
|
var HomePage = React.createClass({
|
||||||
|
|
||||||
@@ -41,16 +31,6 @@ var HomePage = React.createClass({
|
|||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
componentDidMount: function() {
|
|
||||||
/*
|
|
||||||
var storage = localStorage.getItem(KEY);
|
|
||||||
if(storage){
|
|
||||||
this.setState({
|
|
||||||
text : storage
|
|
||||||
})
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
},
|
|
||||||
|
|
||||||
handleSplitMove : function(){
|
handleSplitMove : function(){
|
||||||
this.refs.editor.update();
|
this.refs.editor.update();
|
||||||
@@ -72,6 +52,8 @@ var HomePage = React.createClass({
|
|||||||
|
|
||||||
<Nav.section>
|
<Nav.section>
|
||||||
<RedditShare brew={{text : this.state.text}}/>
|
<RedditShare brew={{text : this.state.text}}/>
|
||||||
|
|
||||||
|
|
||||||
<Nav.item
|
<Nav.item
|
||||||
newTab={true}
|
newTab={true}
|
||||||
href='https://github.com/stolksdorf/naturalcrit/issues'
|
href='https://github.com/stolksdorf/naturalcrit/issues'
|
||||||
@@ -80,6 +62,7 @@ var HomePage = React.createClass({
|
|||||||
report issue
|
report issue
|
||||||
</Nav.item>
|
</Nav.item>
|
||||||
<Nav.item
|
<Nav.item
|
||||||
|
newTab={true}
|
||||||
href='/homebrew/changelog'
|
href='/homebrew/changelog'
|
||||||
color='purple'
|
color='purple'
|
||||||
icon='fa-file-text-o'>
|
icon='fa-file-text-o'>
|
||||||
@@ -96,8 +79,7 @@ var HomePage = React.createClass({
|
|||||||
},
|
},
|
||||||
|
|
||||||
render : function(){
|
render : function(){
|
||||||
return(
|
return <div className='homePage page'>
|
||||||
<div className='homePage page'>
|
|
||||||
{this.renderNavbar()}
|
{this.renderNavbar()}
|
||||||
|
|
||||||
<div className='content'>
|
<div className='content'>
|
||||||
@@ -115,7 +97,6 @@ var HomePage = React.createClass({
|
|||||||
</a>
|
</a>
|
||||||
*/}
|
*/}
|
||||||
</div>
|
</div>
|
||||||
);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
129
client/homebrew/pages/newPage/newPage.jsx
Normal file
129
client/homebrew/pages/newPage/newPage.jsx
Normal file
@@ -0,0 +1,129 @@
|
|||||||
|
var React = require('react');
|
||||||
|
var _ = require('lodash');
|
||||||
|
var cx = require('classnames');
|
||||||
|
var request = require("superagent");
|
||||||
|
|
||||||
|
var Nav = require('naturalcrit/nav/nav.jsx');
|
||||||
|
var Navbar = require('../../navbar/navbar.jsx');
|
||||||
|
|
||||||
|
|
||||||
|
var SplitPane = require('naturalcrit/splitPane/splitPane.jsx');
|
||||||
|
var Editor = require('../../editor/editor.jsx');
|
||||||
|
var BrewRenderer = require('../../brewRenderer/brewRenderer.jsx');
|
||||||
|
|
||||||
|
|
||||||
|
const KEY = 'naturalCrit-homebrew-new';
|
||||||
|
|
||||||
|
var NewPage = React.createClass({
|
||||||
|
getInitialState: function() {
|
||||||
|
return {
|
||||||
|
title : 'EDIT ME',
|
||||||
|
text: '',
|
||||||
|
isSaving : false
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
componentDidMount: function() {
|
||||||
|
var storage = localStorage.getItem(KEY);
|
||||||
|
if(storage){
|
||||||
|
this.setState({
|
||||||
|
text : storage
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
window.onbeforeunload = function(e){
|
||||||
|
return "Your homebrew isn't saved. Are you sure you want to leave?";
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
componentWillUnmount: function() {
|
||||||
|
window.onbeforeunload = function(){};
|
||||||
|
},
|
||||||
|
|
||||||
|
handleSplitMove : function(){
|
||||||
|
this.refs.editor.update();
|
||||||
|
},
|
||||||
|
|
||||||
|
handleTextChange : function(text){
|
||||||
|
this.setState({
|
||||||
|
text : text
|
||||||
|
});
|
||||||
|
localStorage.setItem(KEY, text);
|
||||||
|
},
|
||||||
|
|
||||||
|
handleSave : function(){
|
||||||
|
this.setState({
|
||||||
|
isSaving : true
|
||||||
|
});
|
||||||
|
request.post('/homebrew/api')
|
||||||
|
.send({
|
||||||
|
title : this.state.title,
|
||||||
|
text : this.state.text
|
||||||
|
})
|
||||||
|
.end((err, res)=>{
|
||||||
|
|
||||||
|
if(err){
|
||||||
|
this.setState({
|
||||||
|
isSaving : false
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
window.onbeforeunload = function(){};
|
||||||
|
var brew = res.body;
|
||||||
|
localStorage.removeItem(KEY);
|
||||||
|
window.location = '/homebrew/edit/' + brew.editId;
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
renderSaveButton : function(){
|
||||||
|
if(this.state.isSaving){
|
||||||
|
return <Nav.item icon='fa-spinner sa-spin' className='saveButton'>
|
||||||
|
save...
|
||||||
|
</Nav.item>
|
||||||
|
}else{
|
||||||
|
return <Nav.item icon='fa-save' className='saveButton' onClick={this.handleSave}>
|
||||||
|
save
|
||||||
|
</Nav.item>
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
renderNavbar : function(){
|
||||||
|
return <Navbar>
|
||||||
|
<Nav.section>
|
||||||
|
<Nav.item>{this.state.title}</Nav.item>
|
||||||
|
</Nav.section>
|
||||||
|
|
||||||
|
<Nav.section>
|
||||||
|
{this.renderSaveButton()}
|
||||||
|
|
||||||
|
<Nav.item
|
||||||
|
newTab={true}
|
||||||
|
href='https://github.com/stolksdorf/naturalcrit/issues'
|
||||||
|
color='red'
|
||||||
|
icon='fa-bug'>
|
||||||
|
report issue
|
||||||
|
</Nav.item>
|
||||||
|
|
||||||
|
</Nav.section>
|
||||||
|
</Navbar>
|
||||||
|
},
|
||||||
|
|
||||||
|
render : function(){
|
||||||
|
return <div className='newPage page'>
|
||||||
|
{this.renderNavbar()}
|
||||||
|
|
||||||
|
|
||||||
|
<div className='content'>
|
||||||
|
<SplitPane onDragFinish={this.handleSplitMove} ref='pane'>
|
||||||
|
<Editor value={this.state.text} onChange={this.handleTextChange} ref='editor'/>
|
||||||
|
<BrewRenderer brewText={this.state.text} />
|
||||||
|
</SplitPane>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
module.exports = NewPage;
|
||||||
10
client/homebrew/pages/newPage/newPage.less
Normal file
10
client/homebrew/pages/newPage/newPage.less
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
.newPage{
|
||||||
|
|
||||||
|
.saveButton{
|
||||||
|
background-color: @orange;
|
||||||
|
&:hover{
|
||||||
|
background-color: @green;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -34,9 +34,17 @@ module.exports = function(app){
|
|||||||
getTopBrews(function(topBrews){
|
getTopBrews(function(topBrews){
|
||||||
return res.json(topBrews);
|
return res.json(topBrews);
|
||||||
});
|
});
|
||||||
})
|
});
|
||||||
|
|
||||||
app.put('/homebrew/update/:id', function(req, res){
|
app.post('/homebrew/api', function(req, res){
|
||||||
|
var newHomebrew = new HomebrewModel(req.body);
|
||||||
|
newHomebrew.save(function(err, obj){
|
||||||
|
if(err) return;
|
||||||
|
return res.json(obj);
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
app.put('/homebrew/api/update/:id', function(req, res){
|
||||||
HomebrewModel.find({editId : req.params.id}, function(err, objs){
|
HomebrewModel.find({editId : req.params.id}, function(err, objs){
|
||||||
if(!objs.length || err) return res.status(404).send("Can not find homebrew with that id");
|
if(!objs.length || err) return res.status(404).send("Can not find homebrew with that id");
|
||||||
var resEntry = objs[0];
|
var resEntry = objs[0];
|
||||||
|
|||||||
@@ -2,16 +2,19 @@ var _ = require('lodash');
|
|||||||
var vitreumRender = require('vitreum/render');
|
var vitreumRender = require('vitreum/render');
|
||||||
var HomebrewModel = require('./homebrew.model.js').model;
|
var HomebrewModel = require('./homebrew.model.js').model;
|
||||||
|
|
||||||
var changelogText = require('fs').readFileSync('./changelog.md', 'utf8');
|
|
||||||
|
|
||||||
|
|
||||||
module.exports = function(app){
|
module.exports = function(app){
|
||||||
|
|
||||||
|
/*
|
||||||
app.get('/homebrew/new', function(req, res){
|
app.get('/homebrew/new', function(req, res){
|
||||||
var newHomebrew = new HomebrewModel();
|
var newHomebrew = new HomebrewModel();
|
||||||
newHomebrew.save(function(err, obj){
|
newHomebrew.save(function(err, obj){
|
||||||
return res.redirect('/homebrew/edit/' + obj.editId);
|
return res.redirect('/homebrew/edit/' + obj.editId);
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
//Edit Page
|
//Edit Page
|
||||||
@@ -78,16 +81,16 @@ module.exports = function(app){
|
|||||||
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');
|
if(err || !objs.length) return res.status(404).send('Could not find Homebrew with that id');
|
||||||
|
|
||||||
var resObj = null;
|
var brew = null;
|
||||||
if(objs.length){
|
if(objs.length){
|
||||||
resObj = objs[0];
|
brew = objs[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
var content = _.map(resObj.text.split('\\page'), function(pageText){
|
var content = _.map(brew.text.split('\\page'), function(pageText){
|
||||||
return '<div class="phb">' + Markdown(pageText) + '</div>';
|
return '<div class="phb">' + Markdown(pageText) + '</div>';
|
||||||
}).join('\n');
|
}).join('\n');
|
||||||
|
|
||||||
var title = '<title>' + resObj.text.split('\n')[0] + '</title>';
|
var title = '<title>' + brew.text.split('\n')[0] + '</title>';
|
||||||
var page = '<html><head>' + title + PHBStyle + '</head><body>' + content +'</body></html>'
|
var page = '<html><head>' + title + PHBStyle + '</head><body>' + content +'</body></html>'
|
||||||
|
|
||||||
return res.send(page)
|
return res.send(page)
|
||||||
@@ -96,6 +99,7 @@ module.exports = function(app){
|
|||||||
|
|
||||||
//Home and 404, etc.
|
//Home and 404, etc.
|
||||||
var welcomeText = require('fs').readFileSync('./client/homebrew/pages/homePage/welcome_msg.txt', 'utf8');
|
var welcomeText = require('fs').readFileSync('./client/homebrew/pages/homePage/welcome_msg.txt', 'utf8');
|
||||||
|
var changelogText = require('fs').readFileSync('./changelog.md', 'utf8');
|
||||||
app.get('/homebrew*', function (req, res) {
|
app.get('/homebrew*', function (req, res) {
|
||||||
vitreumRender({
|
vitreumRender({
|
||||||
page: './build/homebrew/bundle.dot',
|
page: './build/homebrew/bundle.dot',
|
||||||
|
|||||||
Reference in New Issue
Block a user