ProjectEditorHandler.coffee 2.1 KB

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