mirror of
https://github.com/stolksdorf/homebrewery.git
synced 2025-12-14 01:15:59 +00:00
Edit and sharing should be working, deploying for testing
This commit is contained in:
@@ -10,14 +10,22 @@ var request = require("superagent");
|
|||||||
var EditPage = React.createClass({
|
var EditPage = React.createClass({
|
||||||
getDefaultProps: function() {
|
getDefaultProps: function() {
|
||||||
return {
|
return {
|
||||||
text : "",
|
//text : "",
|
||||||
id : null
|
pending : false,
|
||||||
|
id : null,
|
||||||
|
entry : {
|
||||||
|
text : "",
|
||||||
|
shareId : null,
|
||||||
|
editId : null,
|
||||||
|
createdAt : null,
|
||||||
|
updatedAt : null,
|
||||||
|
}
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
getInitialState: function() {
|
getInitialState: function() {
|
||||||
return {
|
return {
|
||||||
text: this.props.text
|
text: this.props.entry.text
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -29,14 +37,37 @@ var EditPage = React.createClass({
|
|||||||
//Ajax time
|
//Ajax time
|
||||||
},
|
},
|
||||||
|
|
||||||
|
handleSave : function(){
|
||||||
|
this.setState({
|
||||||
|
pending : true
|
||||||
|
})
|
||||||
|
request
|
||||||
|
.put('/homebrew/update/' + this.props.id)
|
||||||
|
.send({text : this.state.text})
|
||||||
|
.end((err, res) => {
|
||||||
|
|
||||||
|
console.log('err', err);
|
||||||
|
this.setState({
|
||||||
|
pending : false
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
render : function(){
|
render : function(){
|
||||||
var self = this;
|
|
||||||
return(
|
console.log(this.props.entry);
|
||||||
<div className='editPage'>
|
|
||||||
<Editor text={this.state.text} onChange={this.handleTextChange} />
|
var temp;
|
||||||
<PHB text={this.state.text} />
|
if(this.state.pending){
|
||||||
</div>
|
temp = <div>processing</div>
|
||||||
);
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return <div className='editPage'>
|
||||||
|
<button onClick={this.handleSave}>save</button> {temp}
|
||||||
|
<Editor text={this.state.text} onChange={this.handleTextChange} />
|
||||||
|
<PHB text={this.state.text} />
|
||||||
|
</div>
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -13,16 +13,23 @@ var Homebrew = React.createClass({
|
|||||||
getDefaultProps: function() {
|
getDefaultProps: function() {
|
||||||
return {
|
return {
|
||||||
url : "",
|
url : "",
|
||||||
text : ""
|
text : "",
|
||||||
|
entry : {
|
||||||
|
text : "",
|
||||||
|
shareId : null,
|
||||||
|
editId : null,
|
||||||
|
createdAt : null,
|
||||||
|
updatedAt : null,
|
||||||
|
}
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
componentWillMount: function() {
|
componentWillMount: function() {
|
||||||
Router = CreateRouter({
|
Router = CreateRouter({
|
||||||
'/homebrew/edit/:id' : (args) => {
|
'/homebrew/edit/:id' : (args) => {
|
||||||
return <EditPage id={args.id} text={this.props.text} />
|
return <EditPage id={args.id} entry={this.props.entry} />
|
||||||
},
|
},
|
||||||
'/homebrew/share/:id' : (args) => {
|
'/homebrew/share/:id' : (args) => {
|
||||||
return <SharePage id={args.id} text={this.props.text} />
|
return <SharePage id={args.id} entry={this.props.entry} />
|
||||||
},
|
},
|
||||||
'/homebrew*' : <HomePage />,
|
'/homebrew*' : <HomePage />,
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -2,13 +2,27 @@ var React = require('react');
|
|||||||
var _ = require('lodash');
|
var _ = require('lodash');
|
||||||
var cx = require('classnames');
|
var cx = require('classnames');
|
||||||
|
|
||||||
|
var PHB = require('../phb/phb.jsx');
|
||||||
|
|
||||||
var SharePage = React.createClass({
|
var SharePage = React.createClass({
|
||||||
|
getDefaultProps: function() {
|
||||||
|
return {
|
||||||
|
id : null,
|
||||||
|
entry : {
|
||||||
|
text : "",
|
||||||
|
shareId : null,
|
||||||
|
editId : null,
|
||||||
|
createdAt : null,
|
||||||
|
updatedAt : null,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
render : function(){
|
render : function(){
|
||||||
var self = this;
|
console.log(this.props.entry);
|
||||||
return(
|
return(
|
||||||
<div className='sharePage'>
|
<div className='sharePage'>
|
||||||
SharePage Ready!
|
<PHB text={this.props.entry.text} />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
"license": "BSD-2-Clause",
|
"license": "BSD-2-Clause",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"app-module-path": "^1.0.4",
|
"app-module-path": "^1.0.4",
|
||||||
|
"body-parser": "^1.14.2",
|
||||||
"classnames": "^2.2.0",
|
"classnames": "^2.2.0",
|
||||||
"express": "^4.13.3",
|
"express": "^4.13.3",
|
||||||
"gulp": "^3.9.0",
|
"gulp": "^3.9.0",
|
||||||
|
|||||||
13
server.js
13
server.js
@@ -1,16 +1,27 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
require('app-module-path').addPath('./shared');
|
require('app-module-path').addPath('./shared');
|
||||||
var vitreumRender = require('vitreum/render');
|
var vitreumRender = require('vitreum/render');
|
||||||
|
var bodyParser = require('body-parser')
|
||||||
var express = require("express");
|
var express = require("express");
|
||||||
var app = express();
|
var app = express();
|
||||||
app.use(express.static(__dirname + '/build'));
|
app.use(express.static(__dirname + '/build'));
|
||||||
|
app.use(bodyParser.json());
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//Mongoose
|
||||||
|
var mongoose = require('mongoose');
|
||||||
|
var mongoUri = process.env.MONGOLAB_URI || process.env.MONGOHQ_URL || 'mongodb://localhost/naturalcrit';
|
||||||
|
mongoose.connect(mongoUri);
|
||||||
|
mongoose.connection.on('error', function(){
|
||||||
|
console.log(">>>ERROR: Run Mongodb.exe ya goof!");
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
app = require('./server/homebrew.api.js')(app);
|
app = require('./server/homebrew.api.js')(app);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
app.get('*', function (req, res) {
|
app.get('*', function (req, res) {
|
||||||
vitreumRender({
|
vitreumRender({
|
||||||
page: './build/naturalCrit/bundle.dot',
|
page: './build/naturalCrit/bundle.dot',
|
||||||
|
|||||||
@@ -2,31 +2,92 @@ var vitreumRender = require('vitreum/render');
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var HomebrewModel = require('./homebrew.model.js').model;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
module.exports = function(app){
|
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
|
||||||
app.get('/homebrew/edit/:id', function(req, res){
|
app.get('/homebrew/edit/:id', function(req, res){
|
||||||
|
HomebrewModel.find({editId : req.params.id}, function(err, objs){
|
||||||
|
var resObj = null;
|
||||||
|
var errObj = {text: "# oops\nCould not find the homebrew."}
|
||||||
|
if(objs.length){
|
||||||
|
resObj = objs[0];
|
||||||
|
}
|
||||||
|
|
||||||
console.log(req.params.id);
|
vitreumRender({
|
||||||
|
page: './build/homebrew/bundle.dot',
|
||||||
|
globals:{},
|
||||||
|
prerenderWith : './client/homebrew/homebrew.jsx',
|
||||||
|
initialProps: {
|
||||||
|
url: req.originalUrl,
|
||||||
|
entry : resObj || errObj
|
||||||
|
},
|
||||||
|
clearRequireCache : true,
|
||||||
|
}, function (err, page) {
|
||||||
|
return res.send(page)
|
||||||
|
});
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
vitreumRender({
|
//Updating
|
||||||
page: './build/homebrew/bundle.dot',
|
app.put('/homebrew/update/:id', function(req, res){
|
||||||
globals:{},
|
HomebrewModel.find({editId : req.params.id}, function(err, objs){
|
||||||
prerenderWith : './client/homebrew/homebrew.jsx',
|
if(!objs.length || err) return res.send(400);
|
||||||
initialProps: {
|
var resEntry = objs[0];
|
||||||
url: req.originalUrl,
|
resEntry.text = req.body.text;
|
||||||
},
|
resEntry.save(function(err, obj){
|
||||||
clearRequireCache : true,
|
if(!err) return res.sendStatus(500);
|
||||||
}, function (err, page) {
|
return res.send(200);
|
||||||
return res.send(page)
|
})
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//Share Page
|
||||||
|
app.get('/homebrew/share/:id', function(req, res){
|
||||||
|
HomebrewModel.find({shareId : req.params.id}, function(err, objs){
|
||||||
|
var resObj = null;
|
||||||
|
var errObj = {text: "# oops\nCould not find the homebrew."}
|
||||||
|
if(objs.length){
|
||||||
|
resObj = objs[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
resObj.editId = null;
|
||||||
|
|
||||||
|
vitreumRender({
|
||||||
|
page: './build/homebrew/bundle.dot',
|
||||||
|
globals:{},
|
||||||
|
prerenderWith : './client/homebrew/homebrew.jsx',
|
||||||
|
initialProps: {
|
||||||
|
url: req.originalUrl,
|
||||||
|
entry : resObj || errObj
|
||||||
|
},
|
||||||
|
clearRequireCache : true,
|
||||||
|
}, function (err, page) {
|
||||||
|
return res.send(page)
|
||||||
|
});
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//Home and 404, etc.
|
||||||
app.get('/homebrew*', function (req, res) {
|
app.get('/homebrew*', function (req, res) {
|
||||||
vitreumRender({
|
vitreumRender({
|
||||||
page: './build/homebrew/bundle.dot',
|
page: './build/homebrew/bundle.dot',
|
||||||
@@ -41,14 +102,5 @@ module.exports = function(app){
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return app;
|
return app;
|
||||||
}
|
}
|
||||||
@@ -6,13 +6,33 @@ var HomebrewSchema = mongoose.Schema({
|
|||||||
editId : {type : String, default: shortid.generate},
|
editId : {type : String, default: shortid.generate},
|
||||||
text : {type : String, default : ""},
|
text : {type : String, default : ""},
|
||||||
|
|
||||||
created : { type: Date, default: Date.now },
|
createdAt : { type: Date, default: Date.now },
|
||||||
|
updatedAt : { type: Date}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
//Schema Options
|
||||||
|
HomebrewSchema.pre('save', function(done) {
|
||||||
|
this.updatedAt = new Date();
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
|
||||||
|
/*
|
||||||
|
HomebrewSchema.options.toJSON.transform = function (doc, ret, options) {
|
||||||
|
delete ret._id;
|
||||||
|
delete ret.__t;
|
||||||
|
delete ret.__v;
|
||||||
|
}
|
||||||
|
HomebrewSchema.options.toObject.transform = function (doc, ret, options) {
|
||||||
|
delete ret._id;
|
||||||
|
delete ret.__t;
|
||||||
|
delete ret.__v;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
var Homebrew = mongoose.model('Homebrew', HomebrewSchema);
|
var Homebrew = mongoose.model('Homebrew', HomebrewSchema);
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
schema : HomebrewSchema,
|
schema : HomebrewSchema,
|
||||||
model : Homebrew,
|
model : Homebrew,
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user