ProjectEditorHandler.coffee 2.5 KB

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