From d4b3619d21dc5c58527f7bb1483301128a466f37 Mon Sep 17 00:00:00 2001 From: Jacob Dowdy Date: Thu, 25 Jan 2018 14:28:06 -0500 Subject: [PATCH] Add files via upload --- RESTfulBlogApp/app.js | 117 ++++++++++++++++++++++ RESTfulBlogApp/package.json | 19 ++++ RESTfulBlogApp/public/stylesheets/app.css | 11 ++ RESTfulBlogApp/views/edit.ejs | 22 ++++ RESTfulBlogApp/views/index.ejs | 37 +++++++ RESTfulBlogApp/views/new.ejs | 22 ++++ RESTfulBlogApp/views/partials/footer.ejs | 2 + RESTfulBlogApp/views/partials/header.ejs | 14 +++ RESTfulBlogApp/views/show.ejs | 22 ++++ 9 files changed, 266 insertions(+) create mode 100644 RESTfulBlogApp/app.js create mode 100644 RESTfulBlogApp/package.json create mode 100644 RESTfulBlogApp/public/stylesheets/app.css create mode 100644 RESTfulBlogApp/views/edit.ejs create mode 100644 RESTfulBlogApp/views/index.ejs create mode 100644 RESTfulBlogApp/views/new.ejs create mode 100644 RESTfulBlogApp/views/partials/footer.ejs create mode 100644 RESTfulBlogApp/views/partials/header.ejs create mode 100644 RESTfulBlogApp/views/show.ejs diff --git a/RESTfulBlogApp/app.js b/RESTfulBlogApp/app.js new file mode 100644 index 0000000..7bf722d --- /dev/null +++ b/RESTfulBlogApp/app.js @@ -0,0 +1,117 @@ +var bodyParser = require("body-parser"), + methodOverride = require("method-override"), + expressSanitizer= require("express-sanitizer"), + mongoose = require("mongoose"), + express = require("express"), + app = express(); + +// APP CONFIG +mongoose.connect("mongodb://localhost/restful_blog_app"); +app.set("view engine", "ejs"); +app.use(express.static("public")); +app.use(bodyParser.urlencoded({extended: true})); +app.use(expressSanitizer()); +app.use(methodOverride("_method")); + +// MONGOOSE/MODEL CONFIG +var blogSchema = new mongoose.Schema({ + title: String, + image: String, + body: String, + created: {type: Date, default: Date.now} +}); + +var Blog = mongoose.model("Blog", blogSchema); + + +// RESTFUL ROUTES + +app.get("/", function(req, res){ + res.redirect("/blogs"); +}); + +// INDEX ROUTE +app.get("/blogs", function(req, res){ + Blog.find({}, function(err, blogs){ + if(err){ + console.log("ERROR!"); + } else { + res.render("index", {blogs: blogs}); + } + }); +}); + +// NEW ROUTE +app.get("/blogs/new", function (req, res){ + res.render("new"); +}); + +//CREATE ROUTE +app.post("/blogs", function(req, res){ + // create blog + console.log(req.body); + req.body.blog.body = req.sanitize(req.body.blog.body); + console.log("==============="); + console.log(req.body); + Blog.create(req.body.blog, function(err, newBlog){ + if(err){ + res.render("new"); + } else { + // redirect to index + res.redirect("/blogs"); + } + }); +}); + +// SHOW ROUTE +app.get("/blogs/:id", function(req, res){ + Blog.findById(req.params.id, function(err, foundBlog){ + if(err){ + res.redirect("/blogs"); + } else { + res.render("show", {blog: foundBlog}); + } + }); +}); + +// EDIT ROUTE + +app.get("/blogs/:id/edit", function(req, res){ + Blog.findById(req.params.id, function(err, foundBlog){ + if(err){ + res.redirect("/blogs"); + } else { + res.render("edit", {blog: foundBlog}); + } + }); +}); + +// UPDATE ROUTE +app.put("/blogs/:id", function(req, res){ + req.body.blog.body = req.sanitize(req.body.blog.body); + Blog.findByIdAndUpdate(req.params.id, req.body.blog, function(err, updatedBlog){ + if(err){ + res.redirect("/blogs"); + } else { + res.redirect("/blogs/" + req.params.id); + } + }); +}); + +// DELETE ROUTE +app.delete("/blogs/:id", function(req, res){ + //destroy blog + Blog.findByIdAndRemove(req.params.id, function(err){ + if(err){ + res.redirect("/blogs"); + } else { + res.redirect("/blogs"); + } + }); + //redirect somewhere +}); + + +app.listen(process.env.PORT, process.env.IP, function(){ + console.log("SERVER IS RUNNING!"); +}); diff --git a/RESTfulBlogApp/package.json b/RESTfulBlogApp/package.json new file mode 100644 index 0000000..9be1c39 --- /dev/null +++ b/RESTfulBlogApp/package.json @@ -0,0 +1,19 @@ +{ + "name": "restfulblogapp", + "version": "1.0.0", + "description": "", + "main": "app.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "Jacob Dowdy", + "license": "ISC", + "dependencies": { + "body-parser": "^1.18.2", + "ejs": "^2.5.7", + "express": "^4.16.2", + "express-sanitizer": "^1.0.3", + "method-override": "^2.3.10", + "mongoose": "^5.0.1" + } +} diff --git a/RESTfulBlogApp/public/stylesheets/app.css b/RESTfulBlogApp/public/stylesheets/app.css new file mode 100644 index 0000000..35f44f6 --- /dev/null +++ b/RESTfulBlogApp/public/stylesheets/app.css @@ -0,0 +1,11 @@ +i.icon { + font-size: 2em; +} + +.container.main { + margin-top: 7.0em; +} + +#delete { + display: inline; +} \ No newline at end of file diff --git a/RESTfulBlogApp/views/edit.ejs b/RESTfulBlogApp/views/edit.ejs new file mode 100644 index 0000000..92751c2 --- /dev/null +++ b/RESTfulBlogApp/views/edit.ejs @@ -0,0 +1,22 @@ +<% include ./partials/header %> + +
+
Edit <%= blog.title %>
+
+
+ + +
+
+ + +
+
+ + +
+ +
+
+ +<% include ./partials/footer %> diff --git a/RESTfulBlogApp/views/index.ejs b/RESTfulBlogApp/views/index.ejs new file mode 100644 index 0000000..f2dbdb8 --- /dev/null +++ b/RESTfulBlogApp/views/index.ejs @@ -0,0 +1,37 @@ +<% include ./partials/header %> + +

INDEX PAGE!!!

+ +
+
RESTful Blog App
+
+
+ <% blogs.forEach(function(blog){ %> +
+
+ +
+
+ +
+ <%= blog.created.toDateString() %> +
+
+

<%- blog.body.substring(0, 100)%>...

+
+ +
+
+ +
+ <% });%> +
+
+ + +<% include ./partials/footer %> diff --git a/RESTfulBlogApp/views/new.ejs b/RESTfulBlogApp/views/new.ejs new file mode 100644 index 0000000..5fad848 --- /dev/null +++ b/RESTfulBlogApp/views/new.ejs @@ -0,0 +1,22 @@ +<% include ./partials/header %> + +
+
New Blog
+
+
+ + +
+
+ + +
+
+ + +
+ +
+
+ +<% include ./partials/footer %> diff --git a/RESTfulBlogApp/views/partials/footer.ejs b/RESTfulBlogApp/views/partials/footer.ejs new file mode 100644 index 0000000..b317cc2 --- /dev/null +++ b/RESTfulBlogApp/views/partials/footer.ejs @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/RESTfulBlogApp/views/partials/header.ejs b/RESTfulBlogApp/views/partials/header.ejs new file mode 100644 index 0000000..9e5626b --- /dev/null +++ b/RESTfulBlogApp/views/partials/header.ejs @@ -0,0 +1,14 @@ + + + Blog App + + + + + \ No newline at end of file diff --git a/RESTfulBlogApp/views/show.ejs b/RESTfulBlogApp/views/show.ejs new file mode 100644 index 0000000..59bb582 --- /dev/null +++ b/RESTfulBlogApp/views/show.ejs @@ -0,0 +1,22 @@ +<% include ./partials/header %> + +
+
<%= blog.title %>
+
+
+ +
+ <%= blog.created.toDateString() %> +
+
+

<%= blog.body %>

+
+ Edit +
+ +
+
+
+
+ +<% include ./partials/footer %>