common.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. const express = require('express')
  2. const router = express.Router()
  3. const pageHelper = require('../helpers/page')
  4. /* global WIKI */
  5. /**
  6. * Create/Edit document
  7. */
  8. router.get(['/e', '/e/*'], async (req, res, next) => {
  9. const pageArgs = pageHelper.parsePath(req.path)
  10. let page = await WIKI.models.pages.getPageFromDb({
  11. path: pageArgs.path,
  12. locale: pageArgs.locale,
  13. userId: req.user.id,
  14. isPrivate: false
  15. })
  16. if (page) {
  17. page.mode = 'update'
  18. page.isPublished = (page.isPublished === true || page.isPublished === 1) ? 'true' : 'false'
  19. page.content = Buffer.from(page.content).toString('base64')
  20. } else {
  21. page = {
  22. path: pageArgs.path,
  23. localeCode: pageArgs.locale,
  24. editorKey: null,
  25. mode: 'create',
  26. content: null
  27. }
  28. }
  29. res.render('editor', { page })
  30. })
  31. /**
  32. * Administration
  33. */
  34. router.get(['/a', '/a/*'], (req, res, next) => {
  35. res.render('admin')
  36. })
  37. /**
  38. * Profile
  39. */
  40. router.get(['/p', '/p/*'], (req, res, next) => {
  41. res.render('profile')
  42. })
  43. /**
  44. * History
  45. */
  46. router.get(['/h', '/h/*'], async (req, res, next) => {
  47. const pageArgs = pageHelper.parsePath(req.path)
  48. const page = await WIKI.models.pages.getPageFromDb({
  49. path: pageArgs.path,
  50. locale: pageArgs.locale,
  51. userId: req.user.id,
  52. isPrivate: false
  53. })
  54. if (page) {
  55. res.render('history', { page })
  56. } else {
  57. res.redirect(`/${pageArgs.path}`)
  58. }
  59. })
  60. /**
  61. * Source
  62. */
  63. router.get(['/s', '/s/*'], async (req, res, next) => {
  64. const pageArgs = pageHelper.parsePath(req.path)
  65. const page = await WIKI.models.pages.getPageFromDb({
  66. path: pageArgs.path,
  67. locale: pageArgs.locale,
  68. userId: req.user.id,
  69. isPrivate: false
  70. })
  71. if (page) {
  72. res.render('source', { page })
  73. } else {
  74. res.redirect(`/${pageArgs.path}`)
  75. }
  76. })
  77. /**
  78. * View document
  79. */
  80. router.get('/*', async (req, res, next) => {
  81. const pageArgs = pageHelper.parsePath(req.path)
  82. const page = await WIKI.models.pages.getPage({
  83. path: pageArgs.path,
  84. locale: pageArgs.locale,
  85. userId: req.user.id,
  86. isPrivate: false
  87. })
  88. if (page) {
  89. const sidebar = await WIKI.models.navigation.getTree({ cache: true })
  90. res.render('page', { page, sidebar })
  91. } else if (pageArgs.path === 'home') {
  92. res.render('welcome')
  93. } else {
  94. res.render('new', { pagePath: req.path })
  95. }
  96. })
  97. module.exports = router