wikijs-fork/controllers/pages.js

89 lines
1.7 KiB
JavaScript
Raw Normal View History

2016-08-17 03:56:08 +00:00
"use strict";
var express = require('express');
var router = express.Router();
2016-08-28 01:46:10 +00:00
var _ = require('lodash');
2016-08-17 03:56:08 +00:00
2016-08-29 05:21:35 +00:00
// ==========================================
// EDIT MODE
// ==========================================
/**
* Edit document in Markdown
*/
router.get('/edit/*', (req, res, next) => {
2016-08-28 01:46:10 +00:00
let safePath = entries.parsePath(_.replace(req.path, '/edit', ''));
entries.fetchOriginal(safePath, {
parseMarkdown: false,
parseMeta: true,
parseTree: false,
includeMarkdown: true,
includeParentInfo: false,
cache: false
}).then((pageData) => {
if(pageData) {
return res.render('pages/edit', { pageData });
} else {
throw new Error('Invalid page path.');
}
}).catch((err) => {
res.render('error', {
message: err.message,
error: {}
});
});
});
2016-08-29 05:21:35 +00:00
router.put('/edit/*', (req, res, next) => {
let safePath = entries.parsePath(_.replace(req.path, '/edit', ''));
entries.update(safePath, req.body.markdown).then(() => {
res.json({
ok: true
});
}).catch((err) => {
res.json({
ok: false,
error: err.message
});
});
});
// ==========================================
// CREATE MODE
// ==========================================
router.get('/new/*', (req, res, next) => {
res.send('CREATE MODE');
});
2016-08-29 05:21:35 +00:00
// ==========================================
// VIEW MODE
// ==========================================
2016-08-17 03:56:08 +00:00
/**
2016-08-29 05:21:35 +00:00
* View document
2016-08-17 03:56:08 +00:00
*/
router.get('/*', (req, res, next) => {
2016-08-20 04:50:29 +00:00
let safePath = entries.parsePath(req.path);
entries.fetch(safePath).then((pageData) => {
if(pageData) {
2016-08-28 01:46:10 +00:00
return res.render('pages/view', { pageData });
} else {
2016-08-28 01:46:10 +00:00
return next();
}
}).catch((err) => {
2016-08-28 01:46:10 +00:00
winston.error(err);
next();
});
2016-08-20 04:50:29 +00:00
2016-08-17 03:56:08 +00:00
});
module.exports = router;