ProjectEditorHandler.coffee 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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. if project.owner_ref.features?
  27. if project.owner_ref.features.collaborators?
  28. result.features.collaborators = project.owner_ref.features.collaborators
  29. if project.owner_ref.features.versioning?
  30. result.features.versioning = project.owner_ref.features.versioning
  31. if project.owner_ref.features.dropbox?
  32. result.features.dropbox = project.owner_ref.features.dropbox
  33. if project.owner_ref.features.compileTimeout?
  34. result.features.compileTimeout = project.owner_ref.features.compileTimeout
  35. if project.owner_ref.features.compileGroup?
  36. result.features.compileGroup = project.owner_ref.features.compileGroup
  37. result.owner = @buildUserModelView project.owner_ref, "owner"
  38. result.members = []
  39. for ref in project.readOnly_refs
  40. result.members.push @buildUserModelView ref, "readOnly"
  41. for ref in project.collaberator_refs
  42. result.members.push @buildUserModelView ref, "readAndWrite"
  43. return result
  44. buildUserModelView: (user, privileges) ->
  45. _id : user._id
  46. first_name : user.first_name
  47. last_name : user.last_name
  48. email : user.email
  49. privileges : privileges
  50. signUpDate : user.signUpDate
  51. buildFolderModelView: (folder) ->
  52. fileRefs = _.filter folder.fileRefs, (file)-> file?
  53. _id : folder._id
  54. name : folder.name
  55. folders : @buildFolderModelView childFolder for childFolder in folder.folders
  56. fileRefs : @buildFileModelView file for file in fileRefs
  57. docs : @buildDocModelView doc for doc in folder.docs
  58. buildFileModelView: (file) ->
  59. _id : file._id
  60. name : file.name
  61. buildDocModelView: (doc) ->
  62. _id : doc._id
  63. name : doc.name