mirror of
https://gitlab.silvrtree.co.uk/martind2000/censis-archive.git
synced 2025-02-06 19:59:19 +00:00
164 lines
3.7 KiB
JavaScript
164 lines
3.7 KiB
JavaScript
|
/*jshint node:true*/
|
||
|
'use strict';
|
||
|
var db = require('../units/db-connector').dbConnection;
|
||
|
var dbPages = require('../units/db-pages')(db);
|
||
|
var $U = require('md-utils');
|
||
|
var Events = require('events');
|
||
|
var jade = require('pug');
|
||
|
var fs = require('fs');
|
||
|
var logger = require('log4js').getLogger();
|
||
|
|
||
|
var eventHandler = new Events();
|
||
|
|
||
|
var util = require('util');
|
||
|
|
||
|
var templates = {
|
||
|
basic: {path: __dirname + '/jade/type0.jade', compiled: null}
|
||
|
};
|
||
|
|
||
|
var exportPath = __dirname + '/../static/';
|
||
|
|
||
|
var doRenderPage = (page) => {
|
||
|
|
||
|
var compiledhtml;
|
||
|
var _page = $U.unDashObject(page);
|
||
|
var htmlfile = exportPath + _page.pid + '.html';
|
||
|
|
||
|
if (templates.basic.compiled === null) {
|
||
|
templates.basic.compiled = jade.compileFile(templates.basic.path);
|
||
|
}
|
||
|
|
||
|
compiledhtml = templates.basic.compiled(_page);
|
||
|
|
||
|
fs.writeFileSync(htmlfile, compiledhtml);
|
||
|
|
||
|
};
|
||
|
|
||
|
var eventRenderPage = (page) => {
|
||
|
doRenderPage(page);
|
||
|
};
|
||
|
|
||
|
eventHandler.on('renderPage', eventRenderPage);
|
||
|
|
||
|
module.exports = function(app) {
|
||
|
var express = require('express');
|
||
|
var pagesRouter = express.Router();
|
||
|
|
||
|
pagesRouter.get('/', function(req, res) {
|
||
|
|
||
|
dbPages.getFullPageList()
|
||
|
.then(function(data) {
|
||
|
const response = {
|
||
|
data: data
|
||
|
};
|
||
|
|
||
|
res.status(200).send(response);
|
||
|
|
||
|
}).catch((err)=> {
|
||
|
console.error(err);
|
||
|
res.status(401).end();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
pagesRouter.get('/list', function(req, res) {
|
||
|
dbPages.getPageList()
|
||
|
.then(function(data) {
|
||
|
res.render('pages', {data: data});
|
||
|
|
||
|
}).catch((err)=> {
|
||
|
console.error(err);
|
||
|
res.status(401).end();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
pagesRouter.post('/', function(req, res) {
|
||
|
dbPages.addNewPage(req.body.data)
|
||
|
.then(function(data) {
|
||
|
|
||
|
dbPages.getPage(data.attributes.pid)
|
||
|
.then(function(data) {
|
||
|
let response = {
|
||
|
data: data
|
||
|
};
|
||
|
logger.debug(response);
|
||
|
res.status(200).send(response);
|
||
|
})
|
||
|
.catch((err)=> {
|
||
|
console.error(err);
|
||
|
res.status(401).end();
|
||
|
});
|
||
|
|
||
|
eventHandler.emit('renderPage', data.attributes);
|
||
|
|
||
|
})
|
||
|
.catch((err)=> {
|
||
|
console.error(err);
|
||
|
res.status(401).end();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
pagesRouter.patch('/:id', function(req, res) {
|
||
|
dbPages.addNewPage(req.body.data)
|
||
|
.then(function(data) {
|
||
|
|
||
|
let response = {
|
||
|
data: data
|
||
|
};
|
||
|
res.status(200).send(response);
|
||
|
eventHandler.emit('renderPage', data.attributes);
|
||
|
|
||
|
})
|
||
|
.catch((err)=> {
|
||
|
console.error(err);
|
||
|
res.status(401).end();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
|
||
|
pagesRouter.delete('/:id', function(req, res) {
|
||
|
logger.debug('Delete...');
|
||
|
if (/Bearer .+/.test(req.headers.authorization)) {
|
||
|
logger.debug(req.params.id);
|
||
|
dbPages.deletePage(req.params.id)
|
||
|
.then(function(data) {
|
||
|
|
||
|
let response = {
|
||
|
data: data
|
||
|
};
|
||
|
res.status(200).send(response);
|
||
|
|
||
|
})
|
||
|
.catch((err)=> {
|
||
|
console.error(err);
|
||
|
res.status(401).end();
|
||
|
});
|
||
|
|
||
|
} else {
|
||
|
res.status(401).end();
|
||
|
}
|
||
|
});
|
||
|
|
||
|
pagesRouter.get('/:id', function(req, res) {
|
||
|
logger.debug('Page to edit:', req.params.id);
|
||
|
|
||
|
dbPages.getPage(req.params.id)
|
||
|
.then(function(data) {
|
||
|
let response = {
|
||
|
data: data
|
||
|
};
|
||
|
logger.debug(response);
|
||
|
res.status(200).send(response);
|
||
|
})
|
||
|
.catch((err)=> {
|
||
|
console.error(err);
|
||
|
res.status(401).end();
|
||
|
});
|
||
|
|
||
|
});
|
||
|
|
||
|
app.use('/api/pages',
|
||
|
require('body-parser').json({type: 'application/vnd.api+json'}));
|
||
|
|
||
|
app.use('/api/pages', pagesRouter);
|
||
|
};
|