mirror of https://github.com/Requarks/wiki.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
1.7 KiB
89 lines
1.7 KiB
"use strict";
|
|
|
|
var express = require('express');
|
|
var router = express.Router();
|
|
var _ = require('lodash');
|
|
|
|
// ==========================================
|
|
// EDIT MODE
|
|
// ==========================================
|
|
|
|
/**
|
|
* Edit document in Markdown
|
|
*/
|
|
router.get('/edit/*', (req, res, next) => {
|
|
|
|
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: {}
|
|
});
|
|
});
|
|
|
|
});
|
|
|
|
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');
|
|
});
|
|
|
|
// ==========================================
|
|
// VIEW MODE
|
|
// ==========================================
|
|
|
|
/**
|
|
* View document
|
|
*/
|
|
router.get('/*', (req, res, next) => {
|
|
|
|
let safePath = entries.parsePath(req.path);
|
|
|
|
entries.fetch(safePath).then((pageData) => {
|
|
if(pageData) {
|
|
return res.render('pages/view', { pageData });
|
|
} else {
|
|
return next();
|
|
}
|
|
}).catch((err) => {
|
|
winston.error(err);
|
|
next();
|
|
});
|
|
|
|
});
|
|
|
|
module.exports = router;
|