ProjectEditorHandler.coffee 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. _ = require("underscore")
  2. module.exports = ProjectEditorHandler =
  3. buildProjectModelView: (project, options) ->
  4. options ||= {}
  5. if !options.includeUsers?
  6. options.includeUsers = true
  7. result =
  8. _id : project._id
  9. name : project.name
  10. rootDoc_id : project.rootDoc_id
  11. rootFolder : [@buildFolderModelView project.rootFolder[0]]
  12. publicAccesLevel : project.publicAccesLevel
  13. dropboxEnabled : !!project.existsInDropbox
  14. compiler : project.compiler
  15. description: project.description
  16. spellCheckLanguage: project.spellCheckLanguage
  17. deletedByExternalDataSource : project.deletedByExternalDataSource || false
  18. deletedDocs: project.deletedDocs
  19. if options.includeUsers
  20. result.features =
  21. collaborators: -1 # Infinite
  22. versioning: false
  23. dropbox:false
  24. compileTimeout: 60
  25. compileGroup:"standard"
  26. templates: false
  27. references: false
  28. if project.owner_ref.features?
  29. if project.owner_ref.features.collaborators?
  30. result.features.collaborators = project.owner_ref.features.collaborators
  31. if project.owner_ref.features.versioning?
  32. result.features.versioning = project.owner_ref.features.versioning
  33. if project.owner_ref.features.dropbox?
  34. result.features.dropbox = project.owner_ref.features.dropbox
  35. if project.owner_ref.features.compileTimeout?
  36. result.features.compileTimeout = project.owner_ref.features.compileTimeout
  37. if project.owner_ref.features.compileGroup?
  38. result.features.compileGroup = project.owner_ref.features.compileGroup
  39. if project.owner_ref.features.templates?
  40. result.features.templates = project.owner_ref.features.templates
  41. if project.owner_ref.features.references?
  42. result.features.references = project.owner_ref.features.references
  43. result.owner = @buildUserModelView project.owner_ref, "owner"
  44. result.members = []
  45. for ref in project.readOnly_refs
  46. result.members.push @buildUserModelView ref, "readOnly"
  47. for ref in project.collaberator_refs
  48. result.members.push @buildUserModelView ref, "readAndWrite"
  49. return result
  50. buildUserModelView: (user, privileges) ->
  51. _id : user._id
  52. first_name : user.first_name
  53. last_name : user.last_name
  54. email : user.email
  55. privileges : privileges
  56. signUpDate : user.signUpDate
  57. buildFolderModelView: (folder) ->
  58. fileRefs = _.filter folder.fileRefs, (file)-> file?
  59. _id : folder._id
  60. name : folder.name
  61. folders : @buildFolderModelView childFolder for childFolder in folder.folders
  62. fileRefs : @buildFileModelView file for file in fileRefs
  63. docs : @buildDocModelView doc for doc in folder.docs
  64. buildFileModelView: (file) ->
  65. _id : file._id
  66. name : file.name
  67. buildDocModelView: (doc) ->
  68. _id : doc._id
  69. name : doc.name