mirror of
https://github.com/stolksdorf/homebrewery.git
synced 2025-12-18 15:11:29 +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 EditPage = require('./pages/editPage/editPage.jsx');
|
||||
var SharePage = require('./pages/sharePage/sharePage.jsx');
|
||||
var NewPage = require('./pages/newPage/newPage.jsx');
|
||||
|
||||
var Router;
|
||||
var Homebrew = React.createClass({
|
||||
@@ -36,6 +37,9 @@ var Homebrew = React.createClass({
|
||||
'/homebrew/changelog' : (args) => {
|
||||
return <SharePage entry={{text : this.props.changelog}} />
|
||||
},
|
||||
'/homebrew/new' : (args) => {
|
||||
return <NewPage />
|
||||
},
|
||||
'/homebrew*' : <HomePage welcomeText={this.props.welcomeText} />,
|
||||
});
|
||||
},
|
||||
|
||||
@@ -2,30 +2,20 @@ var React = require('react');
|
||||
var _ = require('lodash');
|
||||
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 Navbar = require('../../navbar/navbar.jsx');
|
||||
|
||||
var RedditShare = require('../../navbar/redditShare.navitem.jsx');
|
||||
|
||||
|
||||
|
||||
var SplitPane = require('naturalcrit/splitPane/splitPane.jsx');
|
||||
|
||||
|
||||
|
||||
//var CodeEditor = require('naturalcrit/codeEditor/codeEditor.jsx');
|
||||
|
||||
var Editor = require('../../editor/editor.jsx');
|
||||
var BrewRenderer = require('../../brewRenderer/brewRenderer.jsx');
|
||||
|
||||
|
||||
|
||||
|
||||
//var KEY = 'naturalCrit-homebrew';
|
||||
|
||||
|
||||
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(){
|
||||
this.refs.editor.update();
|
||||
@@ -72,6 +52,8 @@ var HomePage = React.createClass({
|
||||
|
||||
<Nav.section>
|
||||
<RedditShare brew={{text : this.state.text}}/>
|
||||
|
||||
|
||||
<Nav.item
|
||||
newTab={true}
|
||||
href='https://github.com/stolksdorf/naturalcrit/issues'
|
||||
@@ -80,6 +62,7 @@ var HomePage = React.createClass({
|
||||
report issue
|
||||
</Nav.item>
|
||||
<Nav.item
|
||||
newTab={true}
|
||||
href='/homebrew/changelog'
|
||||
color='purple'
|
||||
icon='fa-file-text-o'>
|
||||
@@ -96,8 +79,7 @@ var HomePage = React.createClass({
|
||||
},
|
||||
|
||||
render : function(){
|
||||
return(
|
||||
<div className='homePage page'>
|
||||
return <div className='homePage page'>
|
||||
{this.renderNavbar()}
|
||||
|
||||
<div className='content'>
|
||||
@@ -115,7 +97,6 @@ var HomePage = React.createClass({
|
||||
</a>
|
||||
*/}
|
||||
</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){
|
||||
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){
|
||||
if(!objs.length || err) return res.status(404).send("Can not find homebrew with that id");
|
||||
var resEntry = objs[0];
|
||||
|
||||
@@ -2,16 +2,19 @@ var _ = require('lodash');
|
||||
var vitreumRender = require('vitreum/render');
|
||||
var HomebrewModel = require('./homebrew.model.js').model;
|
||||
|
||||
var changelogText = require('fs').readFileSync('./changelog.md', 'utf8');
|
||||
|
||||
|
||||
|
||||
module.exports = function(app){
|
||||
|
||||
/*
|
||||
app.get('/homebrew/new', function(req, res){
|
||||
var newHomebrew = new HomebrewModel();
|
||||
newHomebrew.save(function(err, obj){
|
||||
return res.redirect('/homebrew/edit/' + obj.editId);
|
||||
})
|
||||
})
|
||||
*/
|
||||
|
||||
|
||||
//Edit Page
|
||||
@@ -78,16 +81,16 @@ module.exports = function(app){
|
||||
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 brew = null;
|
||||
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>';
|
||||
}).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>'
|
||||
|
||||
return res.send(page)
|
||||
@@ -96,6 +99,7 @@ module.exports = function(app){
|
||||
|
||||
//Home and 404, etc.
|
||||
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) {
|
||||
vitreumRender({
|
||||
page: './build/homebrew/bundle.dot',
|
||||
|
||||
Reference in New Issue
Block a user