diff --git a/client/homebrew/editPage/editPage.jsx b/client/homebrew/editPage/editPage.jsx
index 9ab38ee..3cc542e 100644
--- a/client/homebrew/editPage/editPage.jsx
+++ b/client/homebrew/editPage/editPage.jsx
@@ -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(
-
- );
+
+ console.log(this.props.entry);
+
+ var temp;
+ if(this.state.pending){
+ temp = processing
+ }
+
+
+ return
}
});
diff --git a/client/homebrew/homebrew.jsx b/client/homebrew/homebrew.jsx
index 79d71e2..e5dc4ff 100644
--- a/client/homebrew/homebrew.jsx
+++ b/client/homebrew/homebrew.jsx
@@ -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
+ return
},
'/homebrew/share/:id' : (args) => {
- return
+ return
},
'/homebrew*' : ,
});
diff --git a/client/homebrew/sharePage/sharePage.jsx b/client/homebrew/sharePage/sharePage.jsx
index 3e58037..396da1e 100644
--- a/client/homebrew/sharePage/sharePage.jsx
+++ b/client/homebrew/sharePage/sharePage.jsx
@@ -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(
);
}
diff --git a/package.json b/package.json
index 5fa5234..816dcf1 100644
--- a/package.json
+++ b/package.json
@@ -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",
diff --git a/server.js b/server.js
index 415867c..c6c53c4 100644
--- a/server.js
+++ b/server.js
@@ -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',
diff --git a/server/homebrew.api.js b/server/homebrew.api.js
index 23b1909..010c03e 100644
--- a/server/homebrew.api.js
+++ b/server/homebrew.api.js
@@ -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;
}
\ No newline at end of file
diff --git a/server/homebrew.model.js b/server/homebrew.model.js
index f88b73e..460c5fa 100644
--- a/server/homebrew.model.js
+++ b/server/homebrew.model.js
@@ -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,
-}
+}
\ No newline at end of file