From dce1a117151e56c08919c96bf135cdee5cd0a155 Mon Sep 17 00:00:00 2001 From: Justin Moy Date: Thu, 1 Sep 2022 17:28:31 -0500 Subject: [PATCH 01/15] changes --- config/.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/.env b/config/.env index dbe126e0a..1e982be57 100644 --- a/config/.env +++ b/config/.env @@ -1,2 +1,2 @@ PORT = 2121 -DB_STRING = mongodb+srv://demo:demo@cluster0.hcds1.mongodb.net/todos?retryWrites=true&w=majority \ No newline at end of file +DB_STRING = mongodb+srv://zinger:ZyEvLFkPOSp38dI4@cluster0.f3yakar.mongodb.net/ToDoTasks-Demo?retryWrites=true&w=majority \ No newline at end of file From e151da7adfdd2240aac3d663c11583005c3465a3 Mon Sep 17 00:00:00 2001 From: Justin Moy Date: Thu, 1 Sep 2022 17:29:39 -0500 Subject: [PATCH 02/15] updating env --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 3f8e1d990..22bbbe69c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ node_modules -.vscode/* \ No newline at end of file +.vscode/* +.env \ No newline at end of file From 517e206b38af2fa88f583baaed5345c5d71d56ed Mon Sep 17 00:00:00 2001 From: Justin Moy Date: Wed, 7 Sep 2022 15:21:46 -0500 Subject: [PATCH 03/15] updates --- controllers/todos.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/controllers/todos.js b/controllers/todos.js index b10950f93..e0c9df8bf 100644 --- a/controllers/todos.js +++ b/controllers/todos.js @@ -4,7 +4,7 @@ module.exports = { getTodos: async (req,res)=>{ console.log(req.user) try{ - const todoItems = await Todo.find({userId:req.user.id}) + const todoItems = await Todo.find({userId:req.user.id}) //find the todo in database with matching from models const itemsLeft = await Todo.countDocuments({userId:req.user.id,completed: false}) res.render('todos.ejs', {todos: todoItems, left: itemsLeft, user: req.user}) }catch(err){ From 5080b53364b927548e881609697a2f76fa92be55 Mon Sep 17 00:00:00 2001 From: Joe Ulyatt Date: Wed, 7 Sep 2022 21:42:43 +0100 Subject: [PATCH 04/15] changes --- server.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/server.js b/server.js index b031c4cad..76fa2fb0e 100644 --- a/server.js +++ b/server.js @@ -43,4 +43,6 @@ app.use('/todos', todoRoutes) app.listen(process.env.PORT, ()=>{ console.log('Server is running, you better catch it!') -}) \ No newline at end of file +}) + +//changes \ No newline at end of file From 902f4ff2c6a1778d30c132608681b39ce9599e6e Mon Sep 17 00:00:00 2001 From: Joe Ulyatt Date: Wed, 7 Sep 2022 21:54:33 +0100 Subject: [PATCH 05/15] nothing --- server.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/server.js b/server.js index 76fa2fb0e..5a129addb 100644 --- a/server.js +++ b/server.js @@ -43,6 +43,4 @@ app.use('/todos', todoRoutes) app.listen(process.env.PORT, ()=>{ console.log('Server is running, you better catch it!') -}) - -//changes \ No newline at end of file +}) \ No newline at end of file From 4be0175cbadb81d9f4e028ad6cd57199a4f430d5 Mon Sep 17 00:00:00 2001 From: Joe Ulyatt Date: Thu, 8 Sep 2022 11:45:41 +0100 Subject: [PATCH 06/15] covert 'todo' naming to 'diary' --- controllers/auth.js | 10 +++---- controllers/diary.js | 55 ++++++++++++++++++++++++++++++++++ controllers/todos.js | 55 ---------------------------------- models/Diary.js | 14 +++++++++ models/Todo.js | 18 ----------- public/js/main.js | 44 ++++++++------------------- routes/diary.js | 14 +++++++++ routes/todos.js | 16 ---------- server.js | 6 ++-- views/{todos.ejs => diary.ejs} | 14 ++++----- views/index.ejs | 2 +- 11 files changed, 112 insertions(+), 136 deletions(-) create mode 100644 controllers/diary.js delete mode 100644 controllers/todos.js create mode 100644 models/Diary.js delete mode 100644 models/Todo.js create mode 100644 routes/diary.js delete mode 100644 routes/todos.js rename views/{todos.ejs => diary.ejs} (56%) diff --git a/controllers/auth.js b/controllers/auth.js index c434c3c3a..3af91c2fa 100644 --- a/controllers/auth.js +++ b/controllers/auth.js @@ -2,9 +2,9 @@ const passport = require('passport') const validator = require('validator') const User = require('../models/User') - exports.getLogin = (req, res) => { +exports.getLogin = (req, res) => { if (req.user) { - return res.redirect('/todos') + return res.redirect('/diary') } res.render('login', { title: 'Login' @@ -31,7 +31,7 @@ const User = require('../models/User') req.logIn(user, (err) => { if (err) { return next(err) } req.flash('success', { msg: 'Success! You are logged in.' }) - res.redirect(req.session.returnTo || '/todos') + res.redirect(req.session.returnTo || '/diary') }) })(req, res, next) } @@ -49,7 +49,7 @@ const User = require('../models/User') exports.getSignup = (req, res) => { if (req.user) { - return res.redirect('/todos') + return res.redirect('/diary') } res.render('signup', { title: 'Create Account' @@ -89,7 +89,7 @@ const User = require('../models/User') if (err) { return next(err) } - res.redirect('/todos') + res.redirect('/diary') }) }) }) diff --git a/controllers/diary.js b/controllers/diary.js new file mode 100644 index 000000000..6cff85552 --- /dev/null +++ b/controllers/diary.js @@ -0,0 +1,55 @@ +const Diary = require('../models/Diary') + +module.exports = { + getDiary: async (req,res)=>{ + console.log(req.user) + try{ + const diaryEntries = await Diary.find({userId:req.user.id}) //find the Diary in database with matching from models + const totalEntries = await Diary.countDocuments({userId:req.user.id}) + res.render('diary.ejs', {diary: diaryEntries, total: totalEntries, user: req.user}) + }catch(err){ + console.log(err) + } + }, + createDiary: async (req, res)=>{ + try{ + await Diary.create({diary: req.body.diaryEntry, userId: req.user.id}) + console.log('Diary entry has been added!') + res.redirect('/diary') + }catch(err){ + console.log(err) + } + }, + markComplete: async (req, res)=>{ + try{ + await Diary.findOneAndUpdate({_id:req.body.diaryIdFromJSFile},{ + completed: true + }) + console.log('Marked Complete') + res.json('Marked Complete') + }catch(err){ + console.log(err) + } + }, + updateDiary: async (req, res)=>{ + try{ + await Diary.findOneAndUpdate({_id:req.body.diaryIdFromJSFile},{ + completed: false + }) + console.log('Updated Diary') + res.json('Updated Diary') + }catch(err){ + console.log(err) + } + }, + deleteDiary: async (req, res)=>{ + console.log(req.body.diaryIdFromJSFile) + try{ + await Diary.findOneAndDelete({_id:req.body.diaryIdFromJSFile}) + console.log('Deleted Diary') + res.json('Deleted It') + }catch(err){ + console.log(err) + } + } +} \ No newline at end of file diff --git a/controllers/todos.js b/controllers/todos.js deleted file mode 100644 index e0c9df8bf..000000000 --- a/controllers/todos.js +++ /dev/null @@ -1,55 +0,0 @@ -const Todo = require('../models/Todo') - -module.exports = { - getTodos: async (req,res)=>{ - console.log(req.user) - try{ - const todoItems = await Todo.find({userId:req.user.id}) //find the todo in database with matching from models - const itemsLeft = await Todo.countDocuments({userId:req.user.id,completed: false}) - res.render('todos.ejs', {todos: todoItems, left: itemsLeft, user: req.user}) - }catch(err){ - console.log(err) - } - }, - createTodo: async (req, res)=>{ - try{ - await Todo.create({todo: req.body.todoItem, completed: false, userId: req.user.id}) - console.log('Todo has been added!') - res.redirect('/todos') - }catch(err){ - console.log(err) - } - }, - markComplete: async (req, res)=>{ - try{ - await Todo.findOneAndUpdate({_id:req.body.todoIdFromJSFile},{ - completed: true - }) - console.log('Marked Complete') - res.json('Marked Complete') - }catch(err){ - console.log(err) - } - }, - markIncomplete: async (req, res)=>{ - try{ - await Todo.findOneAndUpdate({_id:req.body.todoIdFromJSFile},{ - completed: false - }) - console.log('Marked Incomplete') - res.json('Marked Incomplete') - }catch(err){ - console.log(err) - } - }, - deleteTodo: async (req, res)=>{ - console.log(req.body.todoIdFromJSFile) - try{ - await Todo.findOneAndDelete({_id:req.body.todoIdFromJSFile}) - console.log('Deleted Todo') - res.json('Deleted It') - }catch(err){ - console.log(err) - } - } -} \ No newline at end of file diff --git a/models/Diary.js b/models/Diary.js new file mode 100644 index 000000000..b28450968 --- /dev/null +++ b/models/Diary.js @@ -0,0 +1,14 @@ +const mongoose = require('mongoose') + +const DiarySchema = new mongoose.Schema({ + diary: { + type: String, + required: true, + }, + userId: { + type: String, + required: true + } +}) + +module.exports = mongoose.model('Diary', DiarySchema) diff --git a/models/Todo.js b/models/Todo.js deleted file mode 100644 index 8698f6900..000000000 --- a/models/Todo.js +++ /dev/null @@ -1,18 +0,0 @@ -const mongoose = require('mongoose') - -const TodoSchema = new mongoose.Schema({ - todo: { - type: String, - required: true, - }, - completed: { - type: Boolean, - required: true, - }, - userId: { - type: String, - required: true - } -}) - -module.exports = mongoose.model('Todo', TodoSchema) diff --git a/public/js/main.js b/public/js/main.js index b4cfee075..c0c74700f 100644 --- a/public/js/main.js +++ b/public/js/main.js @@ -1,27 +1,27 @@ const deleteBtn = document.querySelectorAll('.del') -const todoItem = document.querySelectorAll('span.not') +const diaryEntry = document.querySelectorAll('span.not') const todoComplete = document.querySelectorAll('span.completed') Array.from(deleteBtn).forEach((el)=>{ - el.addEventListener('click', deleteTodo) + el.addEventListener('click', deleteDiary) }) -Array.from(todoItem).forEach((el)=>{ - el.addEventListener('click', markComplete) +Array.from(diaryEntry).forEach((el)=>{ + el.addEventListener('click', updateDiary) }) -Array.from(todoComplete).forEach((el)=>{ +Array.from(diaryComplete).forEach((el)=>{ el.addEventListener('click', markIncomplete) }) -async function deleteTodo(){ - const todoId = this.parentNode.dataset.id +async function deleteDiary(){ + const diaryId = this.parentNode.dataset.id try{ - const response = await fetch('todos/deleteTodo', { + const response = await fetch('diary/deleteDiary', { method: 'delete', headers: {'Content-type': 'application/json'}, body: JSON.stringify({ - 'todoIdFromJSFile': todoId + 'diaryIdFromJSFile': diaryId }) }) const data = await response.json() @@ -32,32 +32,14 @@ async function deleteTodo(){ } } -async function markComplete(){ - const todoId = this.parentNode.dataset.id +async function updateDiary(){ + const diaryId = this.parentNode.dataset.id try{ - const response = await fetch('todos/markComplete', { + const response = await fetch('diary/updateDiary', { method: 'put', headers: {'Content-type': 'application/json'}, body: JSON.stringify({ - 'todoIdFromJSFile': todoId - }) - }) - const data = await response.json() - console.log(data) - location.reload() - }catch(err){ - console.log(err) - } -} - -async function markIncomplete(){ - const todoId = this.parentNode.dataset.id - try{ - const response = await fetch('todos/markIncomplete', { - method: 'put', - headers: {'Content-type': 'application/json'}, - body: JSON.stringify({ - 'todoIdFromJSFile': todoId + 'diaryIdFromJSFile': diaryId }) }) const data = await response.json() diff --git a/routes/diary.js b/routes/diary.js new file mode 100644 index 000000000..7c7e3335a --- /dev/null +++ b/routes/diary.js @@ -0,0 +1,14 @@ +const express = require('express') +const router = express.Router() +const diaryController = require('../controllers/diary') +const { ensureAuth } = require('../middleware/auth') + +router.get('/', ensureAuth, diaryController.getDiary) + +router.post('/createDiary', diaryController.createDiary) + +router.put('/updateDiary', diaryController.updateDiary) + +router.delete('/deleteDiary', diaryController.deleteDiary) + +module.exports = router \ No newline at end of file diff --git a/routes/todos.js b/routes/todos.js deleted file mode 100644 index 03dcf42e4..000000000 --- a/routes/todos.js +++ /dev/null @@ -1,16 +0,0 @@ -const express = require('express') -const router = express.Router() -const todosController = require('../controllers/todos') -const { ensureAuth } = require('../middleware/auth') - -router.get('/', ensureAuth, todosController.getTodos) - -router.post('/createTodo', todosController.createTodo) - -router.put('/markComplete', todosController.markComplete) - -router.put('/markIncomplete', todosController.markIncomplete) - -router.delete('/deleteTodo', todosController.deleteTodo) - -module.exports = router \ No newline at end of file diff --git a/server.js b/server.js index 5a129addb..4482be066 100644 --- a/server.js +++ b/server.js @@ -8,7 +8,7 @@ const flash = require('express-flash') const logger = require('morgan') const connectDB = require('./config/database') const mainRoutes = require('./routes/main') -const todoRoutes = require('./routes/todos') +const diaryRoutes = require('./routes/diary') require('dotenv').config({path: './config/.env'}) @@ -39,8 +39,8 @@ app.use(passport.session()) app.use(flash()) app.use('/', mainRoutes) -app.use('/todos', todoRoutes) - +app.use('/diary', diaryRoutes) + app.listen(process.env.PORT, ()=>{ console.log('Server is running, you better catch it!') }) \ No newline at end of file diff --git a/views/todos.ejs b/views/diary.ejs similarity index 56% rename from views/todos.ejs rename to views/diary.ejs index d76747a08..4521ccf1b 100644 --- a/views/todos.ejs +++ b/views/diary.ejs @@ -8,20 +8,20 @@ -

Todos

+

Diary

    - <% todos.forEach( el => { %> -
  • - '><%= el.todo %> + <% diary.forEach( el => { %> +
  • + <%= el.diary %> Delete
  • <% }) %>
-

<%= user.userName %> has <%= left %> things left to do.

+

<%= user.userName %> has <%= total %> total diary entries.

-
- + +
diff --git a/views/index.ejs b/views/index.ejs index 774fc9b53..06ee5f714 100644 --- a/views/index.ejs +++ b/views/index.ejs @@ -7,7 +7,7 @@ Document -

Create Your VERY OWN Todolist!

+

Create Your VERY OWN Diary!

Login Signup From 8236a1f6b44c82b51f0cb75f3663550a997abaaf Mon Sep 17 00:00:00 2001 From: Joe Ulyatt Date: Thu, 8 Sep 2022 14:01:00 +0100 Subject: [PATCH 07/15] add update button (logic not applied yet) --- controllers/diary.js | 13 +------------ public/js/main.js | 10 +++------- views/diary.ejs | 7 ++++++- 3 files changed, 10 insertions(+), 20 deletions(-) diff --git a/controllers/diary.js b/controllers/diary.js index 6cff85552..08b9f7c7c 100644 --- a/controllers/diary.js +++ b/controllers/diary.js @@ -20,21 +20,10 @@ module.exports = { console.log(err) } }, - markComplete: async (req, res)=>{ - try{ - await Diary.findOneAndUpdate({_id:req.body.diaryIdFromJSFile},{ - completed: true - }) - console.log('Marked Complete') - res.json('Marked Complete') - }catch(err){ - console.log(err) - } - }, updateDiary: async (req, res)=>{ try{ await Diary.findOneAndUpdate({_id:req.body.diaryIdFromJSFile},{ - completed: false + diary: req.body.diaryEntry }) console.log('Updated Diary') res.json('Updated Diary') diff --git a/public/js/main.js b/public/js/main.js index c0c74700f..70a9d34cb 100644 --- a/public/js/main.js +++ b/public/js/main.js @@ -1,19 +1,14 @@ const deleteBtn = document.querySelectorAll('.del') -const diaryEntry = document.querySelectorAll('span.not') -const todoComplete = document.querySelectorAll('span.completed') +const updateBtn = document.querySelectorAll('.update') Array.from(deleteBtn).forEach((el)=>{ el.addEventListener('click', deleteDiary) }) -Array.from(diaryEntry).forEach((el)=>{ +Array.from(updateBtn).forEach((el)=>{ el.addEventListener('click', updateDiary) }) -Array.from(diaryComplete).forEach((el)=>{ - el.addEventListener('click', markIncomplete) -}) - async function deleteDiary(){ const diaryId = this.parentNode.dataset.id try{ @@ -35,6 +30,7 @@ async function deleteDiary(){ async function updateDiary(){ const diaryId = this.parentNode.dataset.id try{ + console.log(`id is ${diaryId}`) const response = await fetch('diary/updateDiary', { method: 'put', headers: {'Content-type': 'application/json'}, diff --git a/views/diary.ejs b/views/diary.ejs index 4521ccf1b..1eea0012e 100644 --- a/views/diary.ejs +++ b/views/diary.ejs @@ -13,7 +13,12 @@ <% diary.forEach( el => { %>
  • <%= el.diary %> - Delete + + +
    + + +
  • <% }) %> From 488fdf30a61cf8112ef520019dd488a402f34ab3 Mon Sep 17 00:00:00 2001 From: Joe Ulyatt Date: Thu, 8 Sep 2022 14:54:32 +0100 Subject: [PATCH 08/15] add 'private' boolean to mongo schema and link to /createDiary controller --- controllers/diary.js | 24 +++++++++++------------- models/Diary.js | 4 ++++ public/js/main.js | 43 +++++++++++++++++++++---------------------- routes/diary.js | 2 +- views/diary.ejs | 9 +++++++-- 5 files changed, 44 insertions(+), 38 deletions(-) diff --git a/controllers/diary.js b/controllers/diary.js index 08b9f7c7c..071ee1a1e 100644 --- a/controllers/diary.js +++ b/controllers/diary.js @@ -13,24 +13,22 @@ module.exports = { }, createDiary: async (req, res)=>{ try{ - await Diary.create({diary: req.body.diaryEntry, userId: req.user.id}) - console.log('Diary entry has been added!') + await Diary.create({diary: req.body.diaryEntry, userId: req.user.id, private: req.body.private}) + console.log(req.body) res.redirect('/diary') }catch(err){ console.log(err) } }, - updateDiary: async (req, res)=>{ - try{ - await Diary.findOneAndUpdate({_id:req.body.diaryIdFromJSFile},{ - diary: req.body.diaryEntry - }) - console.log('Updated Diary') - res.json('Updated Diary') - }catch(err){ - console.log(err) - } - }, + // updateDiary: async (req, res)=>{ + // try{ + // await Diary.findOneAndUpdate({_id:req.body.diaryIdFromJSFile},{diary: 'something'}) + // console.log('Updated Diary') + // res.json('Updated Diary') + // }catch(err){ + // console.log(err) + // } + // }, deleteDiary: async (req, res)=>{ console.log(req.body.diaryIdFromJSFile) try{ diff --git a/models/Diary.js b/models/Diary.js index b28450968..70b5b1eeb 100644 --- a/models/Diary.js +++ b/models/Diary.js @@ -8,6 +8,10 @@ const DiarySchema = new mongoose.Schema({ userId: { type: String, required: true + }, + private: { + type: Boolean, + required: true } }) diff --git a/public/js/main.js b/public/js/main.js index 70a9d34cb..d09b9e3d1 100644 --- a/public/js/main.js +++ b/public/js/main.js @@ -1,16 +1,14 @@ const deleteBtn = document.querySelectorAll('.del') -const updateBtn = document.querySelectorAll('.update') +// const updateBtn = document.querySelectorAll('.update') Array.from(deleteBtn).forEach((el)=>{ el.addEventListener('click', deleteDiary) }) -Array.from(updateBtn).forEach((el)=>{ - el.addEventListener('click', updateDiary) -}) async function deleteDiary(){ const diaryId = this.parentNode.dataset.id + console.log(`id is ${diaryId}`) try{ const response = await fetch('diary/deleteDiary', { method: 'delete', @@ -27,21 +25,22 @@ async function deleteDiary(){ } } -async function updateDiary(){ - const diaryId = this.parentNode.dataset.id - try{ - console.log(`id is ${diaryId}`) - const response = await fetch('diary/updateDiary', { - method: 'put', - headers: {'Content-type': 'application/json'}, - body: JSON.stringify({ - 'diaryIdFromJSFile': diaryId - }) - }) - const data = await response.json() - console.log(data) - location.reload() - }catch(err){ - console.log(err) - } -} \ No newline at end of file +// async function updateDiary(){ +// const diaryId = this.parentNode.parentNode.dataset.id +// console.log(`value is ${this.parentNode}`) +// try{ +// const response = await fetch('diary/updateDiary', { +// method: 'put', +// headers: {'Content-type': 'application/json'}, +// body: JSON.stringify({ +// 'diaryIdFromJSFile': diaryId, +// 'diary': '' +// }) +// }) +// const data = await response.json() +// console.log(data) +// location.reload() +// }catch(err){ +// console.log(err) +// } +// } \ No newline at end of file diff --git a/routes/diary.js b/routes/diary.js index 7c7e3335a..9407a2027 100644 --- a/routes/diary.js +++ b/routes/diary.js @@ -7,7 +7,7 @@ router.get('/', ensureAuth, diaryController.getDiary) router.post('/createDiary', diaryController.createDiary) -router.put('/updateDiary', diaryController.updateDiary) +// router.put('/updateDiary', diaryController.updateDiary) router.delete('/deleteDiary', diaryController.deleteDiary) diff --git a/views/diary.ejs b/views/diary.ejs index 1eea0012e..a58a019ef 100644 --- a/views/diary.ejs +++ b/views/diary.ejs @@ -14,11 +14,12 @@
  • <%= el.diary %> + This entry is <%= el.private ? 'private' : 'public' %> -
    +
  • <% }) %> @@ -27,6 +28,10 @@ + + + + From 7251b258db6d4491e27a36b5587e5a68e6602e24 Mon Sep 17 00:00:00 2001 From: Joe Ulyatt Date: Thu, 8 Sep 2022 15:25:25 +0100 Subject: [PATCH 09/15] add ability to change privacy of diary entry --- controllers/diary.js | 19 +++++++++--------- public/js/main.js | 47 ++++++++++++++++++++++++-------------------- routes/diary.js | 2 +- views/diary.ejs | 10 +++++++--- 4 files changed, 44 insertions(+), 34 deletions(-) diff --git a/controllers/diary.js b/controllers/diary.js index 071ee1a1e..96f7ddac4 100644 --- a/controllers/diary.js +++ b/controllers/diary.js @@ -20,15 +20,16 @@ module.exports = { console.log(err) } }, - // updateDiary: async (req, res)=>{ - // try{ - // await Diary.findOneAndUpdate({_id:req.body.diaryIdFromJSFile},{diary: 'something'}) - // console.log('Updated Diary') - // res.json('Updated Diary') - // }catch(err){ - // console.log(err) - // } - // }, + changePrivacy: async (req, res)=>{ + try{ + await Diary.findOneAndUpdate({_id:req.body.diaryIdFromJSFile},{private: req.body.private}) + console.log('Updated Diary') + console.log(req.body.private) + res.json('Updated Diary') + }catch(err){ + console.log(err) + } + }, deleteDiary: async (req, res)=>{ console.log(req.body.diaryIdFromJSFile) try{ diff --git a/public/js/main.js b/public/js/main.js index d09b9e3d1..1ee4542de 100644 --- a/public/js/main.js +++ b/public/js/main.js @@ -1,14 +1,17 @@ const deleteBtn = document.querySelectorAll('.del') -// const updateBtn = document.querySelectorAll('.update') +const changePrivacyBtn = document.querySelectorAll('.changePrivacy') Array.from(deleteBtn).forEach((el)=>{ el.addEventListener('click', deleteDiary) }) +Array.from(changePrivacyBtn).forEach((el)=>{ + el.addEventListener('click', changePrivacy) +}) + async function deleteDiary(){ const diaryId = this.parentNode.dataset.id - console.log(`id is ${diaryId}`) try{ const response = await fetch('diary/deleteDiary', { method: 'delete', @@ -25,22 +28,24 @@ async function deleteDiary(){ } } -// async function updateDiary(){ -// const diaryId = this.parentNode.parentNode.dataset.id -// console.log(`value is ${this.parentNode}`) -// try{ -// const response = await fetch('diary/updateDiary', { -// method: 'put', -// headers: {'Content-type': 'application/json'}, -// body: JSON.stringify({ -// 'diaryIdFromJSFile': diaryId, -// 'diary': '' -// }) -// }) -// const data = await response.json() -// console.log(data) -// location.reload() -// }catch(err){ -// console.log(err) -// } -// } \ No newline at end of file +async function changePrivacy(){ + const diaryId = this.parentNode.dataset.id + const private = this.parentNode.dataset.private === "true" + console.log(`private value is ${private}`) + console.log(`pirvate is a ${typeof(private)}`) + try{ + const response = await fetch('diary/changePrivacy', { + method: 'put', + headers: {'Content-type': 'application/json'}, + body: JSON.stringify({ + 'diaryIdFromJSFile': diaryId, + 'private': !private, + }) + }) + const data = await response.json() + console.log(data) + location.reload() + }catch(err){ + console.log(err) + } +} \ No newline at end of file diff --git a/routes/diary.js b/routes/diary.js index 9407a2027..1915ade50 100644 --- a/routes/diary.js +++ b/routes/diary.js @@ -7,7 +7,7 @@ router.get('/', ensureAuth, diaryController.getDiary) router.post('/createDiary', diaryController.createDiary) -// router.put('/updateDiary', diaryController.updateDiary) +router.put('/changePrivacy', diaryController.changePrivacy) router.delete('/deleteDiary', diaryController.deleteDiary) diff --git a/views/diary.ejs b/views/diary.ejs index a58a019ef..f99fd7494 100644 --- a/views/diary.ejs +++ b/views/diary.ejs @@ -11,23 +11,27 @@

    Diary

      <% diary.forEach( el => { %> -
    • +
    • <%= el.diary %> +
      +

      This entry is <%= el.private ? 'Private ' : 'Public ' %>

      - This entry is <%= el.private ? 'private' : 'public' %> + +
    • +
      <% }) %>

    <%= user.userName %> has <%= total %> total diary entries.

    - + From dff86313311aa154d31f5630f3b1ac5ae62aaccb Mon Sep 17 00:00:00 2001 From: Joe Ulyatt Date: Thu, 8 Sep 2022 15:26:47 +0100 Subject: [PATCH 10/15] remove redundant console.logs --- controllers/diary.js | 1 - public/js/main.js | 2 -- 2 files changed, 3 deletions(-) diff --git a/controllers/diary.js b/controllers/diary.js index 96f7ddac4..e43f501e7 100644 --- a/controllers/diary.js +++ b/controllers/diary.js @@ -24,7 +24,6 @@ module.exports = { try{ await Diary.findOneAndUpdate({_id:req.body.diaryIdFromJSFile},{private: req.body.private}) console.log('Updated Diary') - console.log(req.body.private) res.json('Updated Diary') }catch(err){ console.log(err) diff --git a/public/js/main.js b/public/js/main.js index 1ee4542de..4eb0488bb 100644 --- a/public/js/main.js +++ b/public/js/main.js @@ -31,8 +31,6 @@ async function deleteDiary(){ async function changePrivacy(){ const diaryId = this.parentNode.dataset.id const private = this.parentNode.dataset.private === "true" - console.log(`private value is ${private}`) - console.log(`pirvate is a ${typeof(private)}`) try{ const response = await fetch('diary/changePrivacy', { method: 'put', From 1bb74ec05b5dc631c6fb25a2b3c83bee81eab33d Mon Sep 17 00:00:00 2001 From: Justin Moy Date: Wed, 14 Sep 2022 15:05:51 -0500 Subject: [PATCH 11/15] google auth and mongo --- config/.env | 2 +- views/feed.ejs | 1 + views/index.ejs | 12 ++++++++++++ views/login.ejs | 2 ++ 4 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 views/feed.ejs diff --git a/config/.env b/config/.env index 1e982be57..1bce80e55 100644 --- a/config/.env +++ b/config/.env @@ -1,2 +1,2 @@ PORT = 2121 -DB_STRING = mongodb+srv://zinger:ZyEvLFkPOSp38dI4@cluster0.f3yakar.mongodb.net/ToDoTasks-Demo?retryWrites=true&w=majority \ No newline at end of file +DB_STRING = mongodb+srv://100devs:2tOL5sazAqfKt5Ce@cluster0.yuoqu1e.mongodb.net/diary-blog?retryWrites=true&w=majority \ No newline at end of file diff --git a/views/feed.ejs b/views/feed.ejs new file mode 100644 index 000000000..7172c9e97 --- /dev/null +++ b/views/feed.ejs @@ -0,0 +1 @@ +

    Diary posts

    \ No newline at end of file diff --git a/views/index.ejs b/views/index.ejs index 06ee5f714..75ae940e9 100644 --- a/views/index.ejs +++ b/views/index.ejs @@ -10,5 +10,17 @@

    Create Your VERY OWN Diary!

    Login Signup +
    +

    Google Login

    + + + + \ No newline at end of file diff --git a/views/login.ejs b/views/login.ejs index 8c2479ce0..ab1130d09 100644 --- a/views/login.ejs +++ b/views/login.ejs @@ -22,5 +22,7 @@ + + \ No newline at end of file From 518dbe7e2a4532d2dec3814d6f8e4b1820edb8d5 Mon Sep 17 00:00:00 2001 From: Justin Moy Date: Wed, 14 Sep 2022 15:12:04 -0500 Subject: [PATCH 12/15] trying to hide config folder --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 22bbbe69c..89bac8de8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ node_modules .vscode/* -.env \ No newline at end of file +.env +config \ No newline at end of file From 4932e5f67630ebf38f3c0001903dfd314af2afef Mon Sep 17 00:00:00 2001 From: Justin Moy Date: Wed, 14 Sep 2022 15:16:48 -0500 Subject: [PATCH 13/15] trying again --- .gitignore | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 89bac8de8..ea04d7c5a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ node_modules .vscode/* -.env -config \ No newline at end of file +config/.env \ No newline at end of file From 2628d51175d3386676f618dba039346f040dec3b Mon Sep 17 00:00:00 2001 From: Justin Moy Date: Fri, 16 Sep 2022 14:07:43 -0500 Subject: [PATCH 14/15] added feed and bootstrap --- controllers/feed.js | 14 ++++++++++++++ routes/main.js | 3 +++ views/diary.ejs | 2 ++ views/feed.ejs | 19 ++++++++++++++++++- views/partials/footer.ejs | 3 +++ views/partials/header.ejs | 36 ++++++++++++++++++++++++++++++++++++ 6 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 controllers/feed.js create mode 100644 views/partials/footer.ejs create mode 100644 views/partials/header.ejs diff --git a/controllers/feed.js b/controllers/feed.js new file mode 100644 index 000000000..ab5868f33 --- /dev/null +++ b/controllers/feed.js @@ -0,0 +1,14 @@ +const Diary = require("../models/Diary"); + + + +module.exports = { +getFeed: async (req, res) => { + try { + const diary = await Diary.find().sort({ createdAt: "desc" }).lean(); + res.render("feed.ejs", { diary: diary }); + } catch (err) { + console.log(err); + } + } +} \ No newline at end of file diff --git a/routes/main.js b/routes/main.js index bdeb7529f..1229cc700 100644 --- a/routes/main.js +++ b/routes/main.js @@ -2,6 +2,7 @@ const express = require('express') const router = express.Router() const authController = require('../controllers/auth') const homeController = require('../controllers/home') +const postsController = require("../controllers/feed"); const { ensureAuth, ensureGuest } = require('../middleware/auth') router.get('/', homeController.getIndex) @@ -10,5 +11,7 @@ router.post('/login', authController.postLogin) router.get('/logout', authController.logout) router.get('/signup', authController.getSignup) router.post('/signup', authController.postSignup) +router.get("/feed", ensureAuth, postsController.getFeed); + module.exports = router \ No newline at end of file diff --git a/views/diary.ejs b/views/diary.ejs index f99fd7494..f31dac86c 100644 --- a/views/diary.ejs +++ b/views/diary.ejs @@ -38,6 +38,8 @@ + Return to Feed +
    Logout diff --git a/views/feed.ejs b/views/feed.ejs index 7172c9e97..85a231e01 100644 --- a/views/feed.ejs +++ b/views/feed.ejs @@ -1 +1,18 @@ -

    Diary posts

    \ No newline at end of file +<%- include('partials/header') -%> +
    +
    +
      + <% for(var i=0; i + + + +
    • + + + +
    • + <% } %> +
    +
    +
    +<%- include('partials/footer') -%> \ No newline at end of file diff --git a/views/partials/footer.ejs b/views/partials/footer.ejs new file mode 100644 index 000000000..596ca1c1d --- /dev/null +++ b/views/partials/footer.ejs @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/views/partials/header.ejs b/views/partials/header.ejs new file mode 100644 index 000000000..76134a455 --- /dev/null +++ b/views/partials/header.ejs @@ -0,0 +1,36 @@ + + + + + + + Diary feed + + + + + + +
    +
    +

    Diary Feed

    + Diary and todolist +
    +
    + + From e84cab21ee351ffe95fb78484974dbc9a9246e1f Mon Sep 17 00:00:00 2001 From: Minh Doan Date: Tue, 20 Sep 2022 17:02:40 -0500 Subject: [PATCH 15/15] first commit --- controllers/diary.js | 4 +- models/User.js | 8 +++- public/css/style.css | 25 ++++++++++++- views/diary.ejs | 87 +++++++++++++++++++++++++++----------------- 4 files changed, 88 insertions(+), 36 deletions(-) diff --git a/controllers/diary.js b/controllers/diary.js index e43f501e7..9b998f0a6 100644 --- a/controllers/diary.js +++ b/controllers/diary.js @@ -1,4 +1,5 @@ const Diary = require('../models/Diary') +const User = require('../models/User') module.exports = { getDiary: async (req,res)=>{ @@ -6,7 +7,8 @@ module.exports = { try{ const diaryEntries = await Diary.find({userId:req.user.id}) //find the Diary in database with matching from models const totalEntries = await Diary.countDocuments({userId:req.user.id}) - res.render('diary.ejs', {diary: diaryEntries, total: totalEntries, user: req.user}) + const allUsers = await User.find(); + res.render('diary.ejs', {diary: diaryEntries, total: totalEntries, user: req.user, allUsers: allUsers}) }catch(err){ console.log(err) } diff --git a/models/User.js b/models/User.js index db4b2d116..a499d51fa 100644 --- a/models/User.js +++ b/models/User.js @@ -4,7 +4,13 @@ const mongoose = require('mongoose') const UserSchema = new mongoose.Schema({ userName: { type: String, unique: true }, email: { type: String, unique: true }, - password: String + password: String, + follow: [{ + user: { + type: Number, + ref: 'users', + } + }] }) diff --git a/public/css/style.css b/public/css/style.css index fbd6b929e..fb7b4bdac 100644 --- a/public/css/style.css +++ b/public/css/style.css @@ -1,5 +1,25 @@ +* { + color: gainsboro; +} h1{ - color: red; + color: teal; +} +ul { + list-style-type: none; + border: 1px solid gainsboro; +} +li { + border: 1px solid gainsboro; +} +form textarea{ + width: 97vw; + background: black; +} +input[type="submit"], button { + background: teal; + color: gainsboro; + border-top-right-radius: 35%; + border-bottom-right-radius: 35%; } .completed{ text-decoration: line-through; @@ -7,4 +27,7 @@ h1{ } .not{ text-decoration: underline; +} +body { + background: black; } \ No newline at end of file diff --git a/views/diary.ejs b/views/diary.ejs index f31dac86c..fbda51564 100644 --- a/views/diary.ejs +++ b/views/diary.ejs @@ -8,40 +8,61 @@ -

    Diary

    -
      - <% diary.forEach( el => { %> -
    • - <%= el.diary %> -
      -

      This entry is <%= el.private ? 'Private ' : 'Public ' %>

      - - -
      - - +
      +

      + Return to Feed +

      +

      <%=user.userName.slice(0, 1).toUpperCase() + user.userName.slice(1) %>'s Diary

      + Logout +
      + +
      +
      + + + + + + +
      +
      + + +
        + <% diary.forEach( el => { %> +
      • + <%= el.diary %> +
        +

        This entry is <%= el.private ? 'Private ' : 'Public ' %>

        + + +
        + + +
      • +
        + <% }) %> +
      +
      + + + + + + + + + + + <% allUsers.forEach(item => { %> +
    • + <%= item.userName %>
    • -
      - <% }) %> -
    - -

    <%= user.userName %> has <%= total %> total diary entries.

    - -
    - - - - - - -
    - Return to Feed -
    - - Logout + <% }) %> +