diff --git a/src/models/report.js b/src/models/report.js index 9544306..a801418 100644 --- a/src/models/report.js +++ b/src/models/report.js @@ -14,14 +14,16 @@ const ReportSchema = new Schema({ type: Boolean, default: false }, + note: String, resolved_by: Number, resolved_at: Date, }); -ReportSchema.methods.resolve = async function(pid) { +ReportSchema.methods.resolve = async function(pid, note) { this.set('resolved', true); this.set('resolved_by', pid); this.set('resolved_at', new Date()); + this.set('note', note); await this.save(); }; diff --git a/src/services/juxt-web/routes/admin/admin.js b/src/services/juxt-web/routes/admin/admin.js index a1ea5c3..9c11c0e 100644 --- a/src/services/juxt-web/routes/admin/admin.js +++ b/src/services/juxt-web/routes/admin/admin.js @@ -42,6 +42,10 @@ router.get('/', async function (req, res) { }); router.delete('/:reportID', async function (req, res) { + if (!req.moderator) { + return res.sendStatus(401); + } + const report = await database.getReportById(req.params.reportID); if (!report) { return res.sendStatus(402); @@ -51,12 +55,23 @@ router.delete('/:reportID', async function (req, res) { return res.sendStatus(404); } + await post.removePost(req.query.reason ? req.query.reason : 'Removed by moderator', req.pid); + await report.resolve(req.pid, req.query.reason ? req.query.reason : 'Removed by moderator'); + + return res.sendStatus(200); +}); + +router.put('/:reportID', async function (req, res) { if (!req.moderator) { return res.sendStatus(401); } - await post.removePost(req.query.reason ? req.query.reason : 'Removed by moderator', req.pid); - await report.resolve(req.pid); + const report = await database.getReportById(req.params.reportID); + if (!report) { + return res.sendStatus(402); + } + + await report.resolve(req.pid, req.query.reason); return res.sendStatus(200); }); diff --git a/src/webfiles/ctr/partials/new_post.ejs b/src/webfiles/ctr/partials/new_post.ejs index 5085305..0a64d8b 100644 --- a/src/webfiles/ctr/partials/new_post.ejs +++ b/src/webfiles/ctr/partials/new_post.ejs @@ -42,7 +42,7 @@ - <%if(yeah && post.yeahs.length > 0) {%> + <%if(locals.mainPost && post.yeahs.length > 0) {%>
<%=post.empathy_count %> people gave this post a yeah.
- <%for(var yeah of post.yeahs) {%> - - + <% var yeahCount = post.yeahs.length > 10 ? 10 : post.yeahs.length %> + <%for(var i = 0; i < yeahCount; i++) {%> + + <%}%>
diff --git a/src/webfiles/portal/post.ejs b/src/webfiles/portal/post.ejs index 27244a3..b636a37 100644 --- a/src/webfiles/portal/post.ejs +++ b/src/webfiles/portal/post.ejs @@ -26,7 +26,7 @@
- <%- include('partials/post_template', { post: post, mii_image_CDN: mii_image_CDN, lang: lang, reply: false, pid: pid, yeah: true }); %> + <%- include('partials/post_template', { post: post, mii_image_CDN: mii_image_CDN, lang: lang, reply: false, pid: pid, mainPost: true }); %>
<% replies.forEach(function(post) { %> <%- include('partials/post_template', { post: post, mii_image_CDN: mii_image_CDN, lang: lang, reply: true, pid: pid }); %> diff --git a/src/webfiles/web/reports.ejs b/src/webfiles/web/reports.ejs index 1622ae3..5052ed3 100644 --- a/src/webfiles/web/reports.ejs +++ b/src/webfiles/web/reports.ejs @@ -69,6 +69,7 @@ <% let post = posts.find((post) => post.id === report.post_id) %> <%- include('partials/post_template', { post: post, mii_image_CDN: mii_image_CDN, lang: lang, reply: false }); %> + <% });} %> @@ -85,7 +86,18 @@ method: 'DELETE', }) .then(res => res.text()) - .then(res => console.log(res)) + .then(res => location.reload()) + } + function ignore(element) { + const id = element.getAttribute("data-id"); + const reason = prompt("Provide explanation for ignoring this report:") + if(!id || !reason) return; + + fetch(`/admin/${id}?reason=${reason}`, { + method: 'PUT', + }) + .then(res => res.text()) + .then(res => location.reload()) }