Files
iblog2/routes/admin.js
2016-03-01 13:50:27 +08:00

473 lines
13 KiB
JavaScript

var express = require('express');
var router = express.Router();
var path = require('path');
var fs = require('fs');
var eventproxy = require('eventproxy');
var upload = require('jquery-file-upload-middleware');
var post = require('../proxy/post');
var category = require('../proxy/category');
var log = require('../proxy/log');
var tool = require('../utility/tool');
var moment = require('moment');
var shortid = require('shortid');
var redisClient = require('../utility/redisClient');
upload.configure({
uploadDir: path.join(__dirname, '../public/images/'),
uploadUrl: '/images'
});
router.get('/', function (req, res, next) {
tool.getConfig(path.join(__dirname, '../config/settings.json'), function (err, settings) {
if (err) {
next(err);
} else {
res.render('admin/index', {
settings: settings,
title: settings['SiteName'] + ' - 网站统计'
});
}
});
});
router.get('/categorymanage', function (req, res, next) {
tool.getConfig(path.join(__dirname, '../config/settings.json'), function (err, settings) {
if (err) {
next(err);
} else {
res.render('admin/categorymanage', {
settings: settings,
title: settings['SiteName'] + ' - 分类管理'
});
}
});
});
router.post('/getCategories', function (req, res, next) {
category.getAll(false, false, function (err, data) {
if (err) {
next(err);
} else {
res.json(data);
}
});
});
router.post('/saveCategories', function (req, res, next) {
var jsonArray = JSON.parse(req.body.json.substr(1, req.body.json.length - 2));
category.save(jsonArray, function (err) {
if (err) {
next(err);
} else {
res.end();
}
});
});
router.get('/articlemanage', function (req, res, next) {
tool.getConfig(path.join(__dirname, '../config/settings.json'), function (err, settings) {
if (err) {
next(err);
} else {
res.render('admin/articlemanage', {
settings: settings,
title: settings['SiteName'] + ' - 文章管理'
});
}
});
});
router.post('/getCateFilter', function (req, res, next) {
category.getAll(true, false, function (err, data) {
if (err) {
next(err);
} else {
res.json(data);
}
});
});
router.post('/getArticles', function (req, res, next) {
var ep = new eventproxy(),
filter,
params = {
pageIndex: req.body.pageNumber,
pageSize: req.body.pageSize,
sortName: req.body.sortName,
sortOrder: req.body.sortOrder,
searchText: req.body.searchText
};
if (req.body.filter) {
filter = JSON.parse(req.body.filter);
params.cateId = filter.CateName;
params.uniqueId = filter.UniqueId;
params.title = filter.Title;
}
ep.all('posts', 'count', 'categories', function (posts, count, categories) {
var post,
cateId,
cateItem,
result = [];
posts.forEach(function (item) {
post = {
UniqueId: item._id,
Alias: item.Alias,
Title: item.Title,
CreateTime: moment(item.CreateTime).format('YYYY-MM-DD HH:mm:ss'),
ModifyTime: moment(item.ModifyTime).format('YYYY-MM-DD HH:mm:ss'),
Summary: item.Summary,
ViewCount: item.ViewCount,
Source: item.Source,
Url: item.Url,
IsDraft: item.IsDraft,
IsActive: item.IsActive
};
cateId = item.CategoryId;
cateItem = tool.jsonQuery(categories, {"_id": cateId});
if (cateItem) {
post.CategoryAlias = cateItem.Alias;
post.CateName = cateItem.CateName;
}
result.push(post);
});
res.json({
rows: result,
total: count
});
});
post.getArticles(params, function (err, posts) {
if (err) {
next(err);
} else {
ep.emit('posts', posts);
}
});
post.getArticlesCount(params, function (err, count) {
if (err) {
next(err);
} else {
ep.emit('count', count);
}
});
category.getAll(true, false, function (err, categories) {
if (err) {
next(err);
} else {
ep.emit('categories', categories);
}
});
});
//新的文章页面
router.get('/newArticle', function (req, res, next) {
tool.getConfig(path.join(__dirname, '../config/settings.json'), function (err, settings) {
if (err) {
next(err);
} else {
res.render('admin/newarticle', {
uniqueId: shortid.generate(),
settings: settings,
title: settings['SiteName'] + ' - 新的文章'
});
}
});
});
//检查文章Alias是否唯一
router.post('/checkArticleAlias', function (req, res, next) {
post.checkAlias(req.body.Alias, req.body.uid, function (err, isValid) {
if (err) {
next(err);
} else {
res.json({
valid: isValid
});
}
})
});
//保存文章
router.post('/saveArticle', function (req, res, next) {
var params = {
UniqueId: req.body.UniqueId,
Title: req.body.Title,
Alias: req.body.Alias,
Summary: req.body.Summary,
Source: req.body.Source,
Content: req.body.Content,
CategoryId: req.body.CategoryId,
Labels: req.body.Labels,
Url: req.body.Url,
IsDraft: req.body.IsDraft
};
post.save(params, function (err) {
if (err) {
next(err);
} else {
res.end();
}
})
});
//修改文章
router.get('/editArticle/:id', function (req, res, next) {
var id = req.params.id;
if (!id) {
res.redirect('/admin/articlemanage');
}
var ep = new eventproxy();
ep.all('settings', 'article', function (settings, article) {
res.render('admin/editarticle', {
settings: settings,
post: article,
title: settings['SiteName'] + ' - 编辑文章'
});
});
tool.getConfig(path.join(__dirname, '../config/settings.json'), function (err, settings) {
if (err) {
next(err);
} else {
ep.emit('settings', settings);
}
});
post.getById(id, function (err, article) {
if (err) {
next(err);
} else if (!article) {
next();
} else {
ep.emit('article', article);
}
})
});
//删除文章
router.post('/deleteArticles', function (req, res, next) {
post.delete(req.body.ids, function (err) {
if (err) {
next(err);
} else {
res.end();
}
})
});
//还原文章
router.post('/undoArticle', function (req, res, next) {
post.undo(req.body.id, function (err) {
if (err) {
next(err);
} else {
res.end();
}
})
});
router.get('/comments', function (req, res, next) {
tool.getConfig(path.join(__dirname, '../config/settings.json'), function (err, settings) {
if (err) {
next(err);
} else {
res.render('admin/comments', {
settings: settings,
title: settings['SiteName'] + ' - 评论管理'
});
}
});
});
router.get('/guestbook', function (req, res, next) {
tool.getConfig(path.join(__dirname, '../config/settings.json'), function (err, settings) {
if (err) {
next(err);
} else {
res.render('admin/guestbook', {
settings: settings,
title: settings['SiteName'] + ' - 留言管理'
});
}
});
});
router.get('/aboutmanage', function (req, res, next) {
var ep = new eventproxy();
ep.all('settings', 'about', function (settings, about) {
res.render('admin/aboutmanage', {
title: settings['SiteName'] + ' - 关于管理',
about: about,
settings: settings
});
});
tool.getConfig(path.join(__dirname, '../config/about.json'), function (err, about) {
if (err) {
next(err);
} else {
ep.emit('about', about);
}
});
tool.getConfig(path.join(__dirname, '../config/settings.json'), function (err, settings) {
if (err) {
next(err);
} else {
ep.emit('settings', settings);
}
});
});
router.post('/uploadimg', function (req, res, next) {
upload.fileHandler()(req, res, next);
});
router.post('/saveAbout', function (req, res, next) {
tool.setConfig(path.join(__dirname, '../config/about.json'), {
FirstLine: req.body.FirstLine,
SecondLine: req.body.SecondLine,
PhotoPath: req.body.PhotoPath,
ThirdLine: req.body.ThirdLine,
Profile: req.body.Profile,
Wechat: req.body.Wechat,
QrcodePath: req.body.QrcodePath,
Email: req.body.Email
});
res.end();
});
router.get('/cachemanage', function (req, res, next) {
tool.getConfig(path.join(__dirname, '../config/settings.json'), function (err, settings) {
if (err) {
next(err);
} else {
res.render('admin/cachemanage', {
settings: settings,
title: settings['SiteName'] + ' - 缓存管理'
});
}
});
});
router.post('/getcache', function (req, res, next) {
redisClient.getItem(req.body.key, function (err, data) {
if (err) {
next(err);
} else {
if (data) {
res.json(data);
} else {
res.end();
}
}
})
});
router.post('/clearcache', function (req, res, next) {
redisClient.removeItem(req.body.key, function (err) {
if (err) {
next(err);
} else {
res.end();
}
})
});
router.get('/exception', require('connect-ensure-login').ensureLoggedIn(), function (req, res, next) {
tool.getConfig(path.join(__dirname, '../config/settings.json'), function (err, settings) {
if (err) {
next(err);
} else {
res.render('admin/exception', {
settings: settings,
title: settings['SiteName'] + ' - 异常管理'
});
}
});
});
router.post('/getExceptions', function (req, res, next) {
var ep = new eventproxy(),
params = {
pageIndex: req.body.pageNumber,
pageSize: req.body.pageSize,
sortName: req.body.sortName,
sortOrder: req.body.sortOrder
};
ep.all('logs', 'count', function (logs, count) {
var result = [];
logs.forEach(function (item) {
result.push({
message: item.message,
time: moment(item.timestamp).format('YYYY-MM-DD HH:mm:ss.SSS'),
level: item.level,
meta: item.meta
});
});
res.json({
rows: result,
total: count
});
});
log.getAll(params, function (err, logs) {
if (err) {
next(err);
} else {
ep.emit('logs', logs);
}
});
log.getAllCount(params, function (err, count) {
if (err) {
next(err);
} else {
ep.emit('count', count);
}
})
});
router.get('/settings', function (req, res, next) {
tool.getConfig(path.join(__dirname, '../config/settings.json'), function (err, settings) {
if (err) {
next(err);
} else {
res.render('admin/settings', {
settings: settings,
title: settings['SiteName'] + ' - 系统设置'
});
}
});
});
router.post('/saveSettings', function (req, res, next) {
tool.setConfig(path.join(__dirname, '../config/settings.json'), {
SiteName: req.body.SiteName,
SiteDomain: req.body.SiteDomain,
RecordNo: req.body.RecordNo,
LogoPath: req.body.LogoPath,
PageSize: req.body.PageSize,
ExpandMenu: req.body.ExpandMenu,
CacheExpired: req.body.CacheExpired,
TranslateKey: req.body.TranslateKey,
EnableStatistics: req.body.EnableStatistics,
StatisticsId: req.body.StatisticsId,
EnableShare: req.body.EnableShare,
JiaThisId: req.body.JiaThisId,
ShowComments: req.body.ShowComments,
ChangyanId: req.body.ChangyanId,
ChangyanConf: req.body.ChangyanConf,
ShowGuestbook: req.body.ShowGuestbook,
YouyanId: req.body.YouyanId
});
res.end();
});
module.exports = router;