mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2025-04-20 17:53:03 +00:00
Rewrite slide controller to TypeScript
Before this patch the non-TypeScript version of the slide mode causes problems with the TypeScript code. Therefore, in order to get things working, this patch does minimalistic changes to the slide mode controller to bring it into TypeScript convention. And unbreak slide mode. Further changes are required, but this gets slide mode back to a usable state. Signed-off-by: Sheogorath <sheogorath@shivering-isles.com>
This commit is contained in:
parent
a3f5dcb4c7
commit
37923d11f8
3 changed files with 54 additions and 48 deletions
|
@ -1,6 +1,6 @@
|
|||
import {markdownParser} from "../utils";
|
||||
|
||||
import slide from "./slide";
|
||||
import {SlideController} from "./slide";
|
||||
import {NoteController} from "./controller";
|
||||
import {Router} from "express";
|
||||
|
||||
|
@ -16,9 +16,9 @@ router.get('/s/:shortid', NoteController.showPublishNote);
|
|||
// publish note actions
|
||||
router.get('/s/:shortid/:action', NoteController.publishNoteActions);
|
||||
// get publish slide
|
||||
router.get('/p/:shortid', slide.showPublishSlide);
|
||||
router.get('/p/:shortid', SlideController.showPublishSlide);
|
||||
// publish slide actions
|
||||
router.get('/p/:shortid/:action', slide.publishSlideActions);
|
||||
router.get('/p/:shortid/:action', SlideController.publishSlideActions);
|
||||
// get note by id
|
||||
router.get('/:noteId', NoteController.showNote);
|
||||
// note actions
|
||||
|
|
|
@ -1,45 +0,0 @@
|
|||
const noteUtil = require('./util')
|
||||
const models = require('../../models')
|
||||
const errors = require('../../errors')
|
||||
const logger = require('../../logger')
|
||||
const config = require('../../config')
|
||||
|
||||
exports.publishSlideActions = function (req, res, next) {
|
||||
noteUtil.findNote(req, res, function (note) {
|
||||
const action = req.params.action
|
||||
if (action === 'edit') {
|
||||
res.redirect(config.serverURL + '/' + (note.alias ? note.alias : models.Note.encodeNoteId(note.id)) + '?both')
|
||||
} else { res.redirect(config.serverURL + '/p/' + note.shortid) }
|
||||
})
|
||||
}
|
||||
|
||||
exports.showPublishSlide = function (req, res, next) {
|
||||
const include = [{
|
||||
model: models.User,
|
||||
as: 'owner'
|
||||
}, {
|
||||
model: models.User,
|
||||
as: 'lastchangeuser'
|
||||
}]
|
||||
noteUtil.findNote(req, res, function (note) {
|
||||
// force to use short id
|
||||
const shortid = req.params.shortid
|
||||
if ((note.alias && shortid !== note.alias) || (!note.alias && shortid !== note.shortid)) {
|
||||
return res.redirect(config.serverURL + '/p/' + (note.alias || note.shortid))
|
||||
}
|
||||
note.increment('viewcount').then(function (note) {
|
||||
if (!note) {
|
||||
return errors.errorNotFound(res)
|
||||
}
|
||||
noteUtil.getPublishData(req, res, note, (data) => {
|
||||
res.set({
|
||||
'Cache-Control': 'private' // only cache by client
|
||||
})
|
||||
return res.render('slide.ejs', data)
|
||||
})
|
||||
}).catch(function (err) {
|
||||
logger.error(err)
|
||||
return errors.errorInternalError(res)
|
||||
})
|
||||
}, include)
|
||||
}
|
51
lib/web/note/slide.ts
Normal file
51
lib/web/note/slide.ts
Normal file
|
@ -0,0 +1,51 @@
|
|||
import {NextFunction, Response} from "express";
|
||||
import {NoteUtils} from "./util";
|
||||
import models from '../../models';
|
||||
import errors from '../../errors';
|
||||
import logger from '../../logger';
|
||||
import config from '../../config';
|
||||
|
||||
|
||||
export module SlideController{
|
||||
export function publishSlideActions (req: any, res: Response, next: NextFunction) {
|
||||
NoteUtils.findNote(req, res, function (note) {
|
||||
const action = req.params.action
|
||||
if (action === 'edit') {
|
||||
res.redirect(config.serverURL + '/' + (note.alias ? note.alias : models.Note.encodeNoteId(note.id)) + '?both')
|
||||
} else { res.redirect(config.serverURL + '/p/' + note.shortid) }
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
|
||||
export function showPublishSlide(req: any, res: Response, next: NextFunction) {
|
||||
const include = [{
|
||||
model: models.User,
|
||||
as: 'owner'
|
||||
}, {
|
||||
model: models.User,
|
||||
as: 'lastchangeuser'
|
||||
}]
|
||||
NoteUtils.findNote(req, res, function (note) {
|
||||
// force to use short id
|
||||
const shortid = req.params.shortid
|
||||
if ((note.alias && shortid !== note.alias) || (!note.alias && shortid !== note.shortid)) {
|
||||
return res.redirect(config.serverURL + '/p/' + (note.alias || note.shortid))
|
||||
}
|
||||
note.increment('viewcount').then(function (note) {
|
||||
if (!note) {
|
||||
return errors.errorNotFound(res)
|
||||
}
|
||||
NoteUtils.getPublishData(req, res, note, (data) => {
|
||||
res.set({
|
||||
'Cache-Control': 'private' // only cache by client
|
||||
})
|
||||
return res.render('slide.ejs', data)
|
||||
})
|
||||
}).catch(function (err) {
|
||||
logger.error(err)
|
||||
return errors.errorInternalError(res)
|
||||
})
|
||||
}, include)
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue