1
0
mirror of https://github.com/stolksdorf/homebrewery.git synced 2025-12-12 23:45:57 +00:00

Edit and sharing should be working, deploying for testing

This commit is contained in:
Scott Tolksdorf
2015-12-20 14:21:25 -05:00
parent ef7a500940
commit 8a4d840717
7 changed files with 175 additions and 39 deletions

View File

@@ -10,14 +10,22 @@ var request = require("superagent");
var EditPage = React.createClass({
getDefaultProps: function() {
return {
text : "",
id : null
//text : "",
pending : false,
id : null,
entry : {
text : "",
shareId : null,
editId : null,
createdAt : null,
updatedAt : null,
}
};
},
getInitialState: function() {
return {
text: this.props.text
text: this.props.entry.text
};
},
@@ -29,14 +37,37 @@ var EditPage = React.createClass({
//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(){
var self = this;
return(
<div className='editPage'>
<Editor text={this.state.text} onChange={this.handleTextChange} />
<PHB text={this.state.text} />
</div>
);
console.log(this.props.entry);
var temp;
if(this.state.pending){
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>
}
});

View File

@@ -13,16 +13,23 @@ var Homebrew = React.createClass({
getDefaultProps: function() {
return {
url : "",
text : ""
text : "",
entry : {
text : "",
shareId : null,
editId : null,
createdAt : null,
updatedAt : null,
}
};
},
componentWillMount: function() {
Router = CreateRouter({
'/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) => {
return <SharePage id={args.id} text={this.props.text} />
return <SharePage id={args.id} entry={this.props.entry} />
},
'/homebrew*' : <HomePage />,
});

View File

@@ -2,13 +2,27 @@ var React = require('react');
var _ = require('lodash');
var cx = require('classnames');
var PHB = require('../phb/phb.jsx');
var SharePage = React.createClass({
getDefaultProps: function() {
return {
id : null,
entry : {
text : "",
shareId : null,
editId : null,
createdAt : null,
updatedAt : null,
}
};
},
render : function(){
var self = this;
console.log(this.props.entry);
return(
<div className='sharePage'>
SharePage Ready!
<PHB text={this.props.entry.text} />
</div>
);
}

View File

@@ -10,6 +10,7 @@
"license": "BSD-2-Clause",
"dependencies": {
"app-module-path": "^1.0.4",
"body-parser": "^1.14.2",
"classnames": "^2.2.0",
"express": "^4.13.3",
"gulp": "^3.9.0",

View File

@@ -1,16 +1,27 @@
'use strict';
require('app-module-path').addPath('./shared');
var vitreumRender = require('vitreum/render');
var bodyParser = require('body-parser')
var express = require("express");
var app = express();
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.get('*', function (req, res) {
vitreumRender({
page: './build/naturalCrit/bundle.dot',

View File

@@ -2,31 +2,92 @@ var vitreumRender = require('vitreum/render');
var HomebrewModel = require('./homebrew.model.js').model;
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){
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({
page: './build/homebrew/bundle.dot',
globals:{},
prerenderWith : './client/homebrew/homebrew.jsx',
initialProps: {
url: req.originalUrl,
},
clearRequireCache : true,
}, function (err, page) {
return res.send(page)
//Updating
app.put('/homebrew/update/:id', function(req, res){
HomebrewModel.find({editId : req.params.id}, function(err, objs){
if(!objs.length || err) return res.send(400);
var resEntry = objs[0];
resEntry.text = req.body.text;
resEntry.save(function(err, obj){
if(!err) return res.sendStatus(500);
return res.send(200);
})
});
});
//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) {
vitreumRender({
page: './build/homebrew/bundle.dot',
@@ -41,14 +102,5 @@ module.exports = function(app){
});
});
return app;
}

View File

@@ -6,13 +6,33 @@ var HomebrewSchema = mongoose.Schema({
editId : {type : String, default: shortid.generate},
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);
module.exports = {
schema : HomebrewSchema,
model : Homebrew,
}
}