ProjectEditorHandler.coffee 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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. if !result.invites?
  19. result.invites = []
  20. trackChangesVisible = false
  21. for member in members
  22. if member.privilegeLevel == "owner" and member.user?.featureSwitches?.track_changes
  23. trackChangesVisible = true
  24. {owner, ownerFeatures, members} = @buildOwnerAndMembersViews(members)
  25. result.owner = owner
  26. result.members = members
  27. result.features = _.defaults(ownerFeatures or {}, {
  28. collaborators: -1 # Infinite
  29. versioning: false
  30. dropbox:false
  31. compileTimeout: 60
  32. compileGroup:"standard"
  33. templates: false
  34. references: false
  35. trackChanges: false
  36. trackChangesVisible: trackChangesVisible
  37. })
  38. return result
  39. buildOwnerAndMembersViews: (members) ->
  40. owner = null
  41. ownerFeatures = null
  42. filteredMembers = []
  43. for member in members
  44. if member.privilegeLevel == "owner"
  45. ownerFeatures = member.user.features
  46. owner = @buildUserModelView member.user, "owner"
  47. else
  48. filteredMembers.push @buildUserModelView member.user, member.privilegeLevel
  49. {owner: owner, ownerFeatures: ownerFeatures, members: filteredMembers}
  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 or []), (file)-> file?
  59. _id : folder._id
  60. name : folder.name
  61. folders : @buildFolderModelView childFolder for childFolder in (folder.folders or [])
  62. fileRefs : @buildFileModelView file for file in fileRefs
  63. docs : @buildDocModelView doc for doc in (folder.docs or [])
  64. buildFileModelView: (file) ->
  65. _id : file._id
  66. name : file.name
  67. buildDocModelView: (doc) ->
  68. _id : doc._id
  69. name : doc.name