obrand-admin-server/O-BrandServer/server/app/pages.js

164 lines
3.7 KiB
JavaScript
Raw Permalink Normal View History

2016-04-08 15:45:02 +00:00
/*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');
2016-04-12 15:45:03 +00:00
var logger = require('log4js').getLogger();
2016-04-08 15:45:02 +00:00
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()
2016-04-12 15:45:03 +00:00
.then(function(data) {
const response = {
data: data
};
2016-04-08 15:45:02 +00:00
2016-04-12 15:45:03 +00:00
res.status(200).send(response);
2016-04-08 15:45:02 +00:00
2016-04-12 15:45:03 +00:00
}).catch((err)=> {
console.error(err);
res.status(401).end();
});
2016-04-08 15:45:02 +00:00
});
pagesRouter.get('/list', function(req, res) {
dbPages.getPageList()
2016-04-12 15:45:03 +00:00
.then(function(data) {
res.render('pages', {data: data});
2016-04-08 15:45:02 +00:00
2016-04-12 15:45:03 +00:00
}).catch((err)=> {
console.error(err);
res.status(401).end();
});
2016-04-08 15:45:02 +00:00
});
pagesRouter.post('/', function(req, res) {
dbPages.addNewPage(req.body.data)
.then(function(data) {
2016-05-05 15:45:02 +00:00
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();
});
2016-04-08 15:45:02 +00:00
eventHandler.emit('renderPage', data.attributes);
})
.catch((err)=> {
console.error(err);
res.status(401).end();
});
});
2016-04-12 15:45:03 +00:00
pagesRouter.patch('/:id', function(req, res) {
2016-04-08 15:45:02 +00:00
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();
});
});
2016-04-22 15:45:04 +00:00
2016-04-12 15:45:03 +00:00
pagesRouter.delete('/:id', function(req, res) {
2016-04-22 15:45:04 +00:00
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();
}
2016-04-08 15:45:02 +00:00
});
2016-04-12 15:45:03 +00:00
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();
});
2016-04-08 15:45:02 +00:00
});
app.use('/api/pages',
require('body-parser').json({type: 'application/vnd.api+json'}));
app.use('/api/pages', pagesRouter);
};