|
|
@ -7,6 +7,8 @@ |
|
|
|
const DTP_COMPONENT_NAME = 'admin:link'; |
|
|
|
const express = require('express'); |
|
|
|
|
|
|
|
const multer = require('multer'); |
|
|
|
|
|
|
|
const { SiteController, SiteError } = require('../../../lib/site-lib'); |
|
|
|
|
|
|
|
class LinkController extends SiteController { |
|
|
@ -17,6 +19,8 @@ class LinkController extends SiteController { |
|
|
|
|
|
|
|
async start ( ) { |
|
|
|
const router = express.Router(); |
|
|
|
const upload = multer({ dest: `/tmp/${this.dtp.config.domainKey}/uploads`}); |
|
|
|
|
|
|
|
router.use(async (req, res, next) => { |
|
|
|
res.locals.currentView = 'admin'; |
|
|
|
res.locals.adminView = 'link'; |
|
|
@ -25,7 +29,7 @@ class LinkController extends SiteController { |
|
|
|
|
|
|
|
router.param('linkId', this.populateLinkId.bind(this)); |
|
|
|
|
|
|
|
router.post('/:linkId', this.postUpdateLink.bind(this)); |
|
|
|
router.post('/:linkId', upload.none(), this.postUpdateLink.bind(this)); |
|
|
|
|
|
|
|
router.get('/:linkId', this.getLinkView.bind(this)); |
|
|
|
router.get('/', this.getIndex.bind(this)); |
|
|
@ -49,19 +53,29 @@ class LinkController extends SiteController { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
async postUpdateLink (req, res, next) { |
|
|
|
const { link: linkService } = this.dtp.services; |
|
|
|
async postUpdateLink (req, res) { |
|
|
|
const { link: linkService, displayEngine: displayEngineService } = this.dtp.services; |
|
|
|
try { |
|
|
|
const displayList = displayEngineService.createDisplayList('update-link'); |
|
|
|
|
|
|
|
await linkService.update(res.locals.link, req.body); |
|
|
|
res.redirect('/admin/link'); |
|
|
|
|
|
|
|
displayList.showNotification( |
|
|
|
`Link ${res.locals.link.label} updated successfully`, |
|
|
|
'success', 'bottom-center', 2000, |
|
|
|
); |
|
|
|
res.status(200).json({ success: true, displayList }); |
|
|
|
} catch (error) { |
|
|
|
this.log.error('failed to update link', { linkId: res.locals.link._id, error }); |
|
|
|
return next(error); |
|
|
|
return res.status(error.statusCode || 500).json({ |
|
|
|
success: false, |
|
|
|
message: error.message, |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
async getLinkView (req, res) { |
|
|
|
res.render('admin/link/view'); |
|
|
|
res.render('admin/link/editor'); |
|
|
|
} |
|
|
|
|
|
|
|
async getIndex (req, res, next) { |
|
|
|