generator-aristos
Version:
create aristos cms fast with yeoman generator.
279 lines (264 loc) • 9.44 kB
JavaScript
const errorAddEvent = require("../../../../important/AristosStuff/AristosLogger/AristosLogger")
.addError;
/* Blog Model Queries */
const CountBlog = require("../models/queries/blog/CountBlog");
const FindAllBlogs = require("../models/queries/blog/FindAllBlogs");
const FindBlogWithParam = require("../models/queries/blog/FindBlogWithParam");
const CreateBlog = require("../models/queries/blog/CreateBlog");
const FindBlogByID = require("../models/queries/blog/FindOneBlogByID");
const EditBlog = require("../models/queries/blog/EditBlog");
const DeleteBlog = require("../models/queries/blog/DeleteBlog");
const SortBlogsByID = require("../models/queries/blog/SortBlogsByID");
const FindAllSortedBlogs = require("../models/queries/blog/FindAllSortedBlogs");
/* Media Model Queries */
const FindAllMedia = require("../../../../important/admin/adminModels/queries/media/FindAllMedia");
const FindAllMediaWithParam = require("../../../../important/admin/adminModels/queries/media/FindAllMediaWithParam");
/* Blog Category Model Queries */
const FindAllBlogCategories = require("../models/queries/blogCategory/FindAllBlogCategory");
/* Blog Comment Model Queries */
const DeleteBlogCommentsByBlog = require("../models/queries/blogComments/DeleteBlogCommentByBlog");
/* User Model Queries */
const FindOneUserByID = require("../../../../important/admin/adminModels/queries/user/FindOneUserWithID");
module.exports = {
index(req, res, next) {
Promise.all([CountBlog(), FindAllSortedBlogs()]).then(result => {
res.render("../../../expansion/upgrade/blog/views/blogs", {
blogs: result[1],
count: result[0]
});
});
} /* end of index function */,
addIndex(req, res, next) {
let title,
slug,
content,
author,
description,
keywords = "";
Promise.all([FindAllBlogCategories(), FindAllMedia()]).then(result => {
res.render("../../../expansion/upgrade/blog/views/add_blog", {
title: title,
slug: slug,
content: content,
categories: result[0],
media: result[1],
author: author,
description: description,
keywords: keywords
});
});
} /* end of add index function */,
create(req, res, next) {
const User = FindOneUserByID(req.session.passport.user);
User.then(user => {
if (user.admin === 1) {
let errors = [];
if (!req.body.title) {
errors.push({ text: "Title must have a value." });
}
if (!req.body.content) {
errors.push({ text: "Content must have a value." });
}
let title = req.body.title;
let slug = req.body.slug.replace(/\s+/g, "-").toLowerCase();
if (slug == "") {
slug = title.replace(/\s+/g, "-").toLowerCase();
}
let content = req.body.content;
let category = req.body.category;
let author = req.session.passport.user;
let description = req.body.description;
let keywords = req.body.keywords;
let allowComments;
if (req.body.allowComments === "on") {
allowComments = true;
} else {
allowComments = false;
}
if (errors.length > 0) {
Promise.all([FindAllBlogCategories(), FindAllMedia()]).then(result => {
return res.render(
"../../../expansion/upgrade/blog/views/add_blog",
{
errors: errors,
title: title,
slug: slug,
content: content,
categories: result[0],
media: result[1],
author: author,
description: description,
keywords: keywords
}
);
});
} else {
const CheckIfExists = FindBlogWithParam({ slug: slug });
CheckIfExists.then(blog => {
if (blog.length > 0) {
errors.push({ text: "Blog slug exists, choose another." });
Promise.all([FindAllBlogCategories(), FindAllMedia()]).then(result => {
return res.render(
"../../../expansion/upgrade/blog/views/add_blog",
{
errors: errors,
title: "",
slug: "",
content: content,
categories: result[0],
media: result[1],
author: author,
description: description,
keywords: keywords
}
);
});
} else {
const BlogParams = {
title: title,
slug: slug,
content: content,
category: category,
author: author,
sorting: 0,
description: description,
keywords: keywords,
allowComments: allowComments
};
CreateBlog(BlogParams);
req.flash("success_msg", "Blog added!");
res.redirect("/admin/blogs");
}
});
}
} else {
res.redirect("/users/login");
}
});
} /* end of create function */,
editIndex(req, res, next) {
Promise.all([FindAllBlogCategories(), FindAllMedia(), FindBlogByID(req.params.id)]).then(result => {
res.render("../../../expansion/upgrade/blog/views/edit_blog", {
title: result[2].title,
slug: result[2].slug,
content: result[2].content,
categories: result[0],
id: result[2]._id,
media: result[1],
description: result[2].description,
keywords: result[2].keywords,
selectedCat: result[2].category.slug,
allowComments: result[2].allowComments
});
});
} /* end of edit index function */,
edit(req, res, next) {
const User = FindOneUserByID(req.session.passport.user);
User.then(user => {
if (user.admin === 1) {
let errors = [];
if (!req.body.title) {
errors.push({ text: "Title must have a value." });
}
if (!req.body.content) {
errors.push({ text: "Content must have a value." });
}
let title = req.body.title;
let slug = req.body.slug.replace(/\s+/g, "-").toLowerCase();
if (slug == "") {
slug = title.replace(/\s+/g, "-").toLowerCase();
}
let content = req.body.content;
let id = req.params.id;
let category = req.body.category;
let description = req.body.description;
let keywords = req.body.keywords;
let allowComments;
if (typeof req.body.allowComments === "undefined") {
allowComments = false;
} else {
allowComments = true;
}
if (errors.length > 0) {
Promise.all([FindAllBlogCategories(), FindAllMedia()]).then(result => {
return res.render(
"../../../expansion/upgrade/blog/views/edit_blog",
{
errors: errors,
title: title,
slug: slug,
content: content,
categories: result[0],
media: result[1],
id: id,
description: description,
keywords: keywords,
selectedCat: category
}
);
});
} else {
const CheckIfExists = FindBlogWithParam({
slug: slug,
_id: { $ne: id }
});
CheckIfExists.then(blog => {
if (blog.length > 0) {
errors.push({ text: "Blog slug exists, chooser another." });
return res.render(
"../../../expansion/upgrade/blog/views/edit_blog",
{
errors: errors,
title: title,
slug: slug,
content: content,
categories: result[0],
media: result[1],
id: id,
description: description,
keywords: keywords,
selectedCat: category
}
);
} else {
const BlogParams = {
title: title,
slug: slug,
content: content,
category: category,
description: description,
keywords: keywords,
allowComments: allowComments
};
EditBlog({ _id: id }, BlogParams);
req.flash("success_msg", "Blog edited!");
res.redirect("/admin/blogs");
}
});
}
} else {
res.redirect("/users/login");
}
});
} /* end of edit function */,
delete(req, res, next) {
Promise.all([
DeleteBlog(req.params.id),
DeleteBlogCommentsByBlog(req.params.id)
]).then(result => {
req.flash("success_msg", "Blog deleted!");
res.redirect("/admin/blogs/");
});
} /* end of delete function */,
reorder(req, res, next) {
const User = FindOneUserByID(req.session.passport.user);
User.then(user => {
if (user.admin === 1) {
let ids = req.body["id[]"];
SortBlogsByID(ids);
} else {
res.redirect("/users/login");
}
});
} /* end of reorder function */
};