EditorHttpController.coffee 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. ProjectEntityHandler = require "../Project/ProjectEntityHandler"
  2. ProjectDeleter = require "../Project/ProjectDeleter"
  3. logger = require "logger-sharelatex"
  4. EditorRealTimeController = require "./EditorRealTimeController"
  5. EditorController = require "./EditorController"
  6. Metrics = require('../../infrastructure/Metrics')
  7. module.exports = EditorHttpController =
  8. joinProject: (req, res, next) ->
  9. project_id = req.params.Project_id
  10. user_id = req.query.user_id
  11. logger.log {user_id, project_id}, "join project request"
  12. Metrics.inc "editor.join-project"
  13. EditorController.buildJoinProjectView project_id, user_id, (error, project, privilegeLevel) ->
  14. return next(error) if error?
  15. res.json {
  16. project: project
  17. privilegeLevel: privilegeLevel
  18. }
  19. # Only show the 'renamed or deleted' message once
  20. if project.deletedByExternalDataSource
  21. ProjectDeleter.unmarkAsDeletedByExternalSource project_id
  22. restoreDoc: (req, res, next) ->
  23. project_id = req.params.Project_id
  24. doc_id = req.params.doc_id
  25. name = req.body.name
  26. if !name?
  27. return res.send 400 # Malformed request
  28. logger.log project_id: project_id, doc_id: doc_id, "restoring doc"
  29. ProjectEntityHandler.restoreDoc project_id, doc_id, name, (err, doc, folder_id) =>
  30. return next(error) if error?
  31. EditorRealTimeController.emitToRoom(project_id, 'reciveNewDoc', folder_id, doc)
  32. res.json {
  33. doc_id: doc._id
  34. }
  35. addDoc: (req, res, next) ->
  36. project_id = req.params.Project_id
  37. name = req.body.name
  38. parent_folder_id = req.body.parent_folder_id
  39. EditorController.addDoc project_id, parent_folder_id, name, [], "editor", (error, doc) ->
  40. return next(error) if error?
  41. res.json doc
  42. addFolder: (req, res, next) ->
  43. project_id = req.params.Project_id
  44. name = req.body.name
  45. parent_folder_id = req.body.parent_folder_id
  46. EditorController.addFolder project_id, parent_folder_id, name, "editor", (error, doc) ->
  47. return next(error) if error?
  48. res.json doc
  49. renameEntity: (req, res, next) ->
  50. project_id = req.params.Project_id
  51. entity_id = req.params.entity_id
  52. entity_type = req.params.entity_type
  53. name = req.body.name
  54. if name.length > 150
  55. return res.send 400
  56. EditorController.renameEntity project_id, entity_id, entity_type, name, (error) ->
  57. return next(error) if error?
  58. res.send 204
  59. moveEntity: (req, res, next) ->
  60. project_id = req.params.Project_id
  61. entity_id = req.params.entity_id
  62. entity_type = req.params.entity_type
  63. folder_id = req.body.folder_id
  64. EditorController.moveEntity project_id, entity_id, folder_id, entity_type, (error) ->
  65. return next(error) if error?
  66. res.send 204
  67. deleteDoc: (req, res, next)->
  68. req.params.entity_type = "doc"
  69. EditorHttpController.deleteEntity(req, res, next)
  70. deleteFile: (req, res, next)->
  71. req.params.entity_type = "file"
  72. EditorHttpController.deleteEntity(req, res, next)
  73. deleteFolder: (req, res, next)->
  74. req.params.entity_type = "folder"
  75. EditorHttpController.deleteEntity(req, res, next)
  76. deleteEntity: (req, res, next) ->
  77. project_id = req.params.Project_id
  78. entity_id = req.params.entity_id
  79. entity_type = req.params.entity_type
  80. EditorController.deleteEntity project_id, entity_id, entity_type, "editor", (error) ->
  81. return next(error) if error?
  82. res.send 204