- {this.renderNavbar()}
+ return
}
});
diff --git a/client/homebrew/pages/newPage/newPage.jsx b/client/homebrew/pages/newPage/newPage.jsx
new file mode 100644
index 0000000..d9dc824
--- /dev/null
+++ b/client/homebrew/pages/newPage/newPage.jsx
@@ -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
+ save...
+
+ }else{
+ return
+ save
+
+ }
+ },
+
+
+ renderNavbar : function(){
+ return
+
+ {this.state.title}
+
+
+
+ {this.renderSaveButton()}
+
+
+ report issue
+
+
+
+
+ },
+
+ render : function(){
+ return
+ {this.renderNavbar()}
+
+
+
+
+
+
+
+
+
+ }
+});
+
+module.exports = NewPage;
diff --git a/client/homebrew/pages/newPage/newPage.less b/client/homebrew/pages/newPage/newPage.less
new file mode 100644
index 0000000..557cc6d
--- /dev/null
+++ b/client/homebrew/pages/newPage/newPage.less
@@ -0,0 +1,10 @@
+.newPage{
+
+ .saveButton{
+ background-color: @orange;
+ &:hover{
+ background-color: @green;
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/server/homebrew.api.js b/server/homebrew.api.js
index 2cfae7e..5d955a9 100644
--- a/server/homebrew.api.js
+++ b/server/homebrew.api.js
@@ -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];
diff --git a/server/homebrew.server.js b/server/homebrew.server.js
index acd2001..727212c 100644
--- a/server/homebrew.server.js
+++ b/server/homebrew.server.js
@@ -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 '
' + Markdown(pageText) + '
';
}).join('\n');
- var title = '
' + resObj.text.split('\n')[0] + '';
+ var title = '
' + brew.text.split('\n')[0] + '';
var page = '' + title + PHBStyle + '' + content +''
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',