ProjectEditorHandler.coffee 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. _ = require("underscore")
  2. module.exports = ProjectEditorHandler =
  3. trackChangesAvailable: false
  4. buildProjectModelView: (project, members, invites, tokenMembers=[]) ->
  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. tokenMembers: []
  19. invites: invites
  20. tokens: project.tokens
  21. if !result.invites?
  22. result.invites = []
  23. {owner, ownerFeatures, members, tokenMembers} = @buildOwnerAndMembersViews(
  24. members,
  25. tokenMembers
  26. )
  27. result.owner = owner
  28. result.members = members
  29. result.tokenMembers = tokenMembers
  30. result.features = _.defaults(ownerFeatures or {}, {
  31. collaborators: -1 # Infinite
  32. versioning: false
  33. dropbox:false
  34. compileTimeout: 60
  35. compileGroup:"standard"
  36. templates: false
  37. references: false
  38. trackChanges: false
  39. trackChangesVisible: ProjectEditorHandler.trackChangesAvailable
  40. })
  41. return result
  42. buildOwnerAndMembersViews: (members, tokenMembers) ->
  43. owner = null
  44. ownerFeatures = null
  45. filteredMembers = []
  46. filteredTokenMembers = []
  47. for member in members
  48. if member.privilegeLevel == "owner"
  49. ownerFeatures = member.user.features
  50. owner = @buildUserModelView member.user, "owner"
  51. else
  52. filteredMembers.push @buildUserModelView member.user, member.privilegeLevel
  53. for tokenMember in tokenMembers
  54. filteredTokenMembers.push @buildUserModelView tokenMember.user, tokenMember.privilegeLevel
  55. return {
  56. owner: owner,
  57. ownerFeatures: ownerFeatures,
  58. members: filteredMembers,
  59. tokenMembers: filteredTokenMembers
  60. }
  61. buildUserModelView: (user, privileges) ->
  62. _id : user._id
  63. first_name : user.first_name
  64. last_name : user.last_name
  65. email : user.email
  66. privileges : privileges
  67. signUpDate : user.signUpDate
  68. buildFolderModelView: (folder) ->
  69. fileRefs = _.filter (folder.fileRefs or []), (file)-> file?
  70. _id : folder._id
  71. name : folder.name
  72. folders : @buildFolderModelView childFolder for childFolder in (folder.folders or [])
  73. fileRefs : @buildFileModelView file for file in fileRefs
  74. docs : @buildDocModelView doc for doc in (folder.docs or [])
  75. buildFileModelView: (file) ->
  76. _id : file._id
  77. name : file.name
  78. buildDocModelView: (doc) ->
  79. _id : doc._id
  80. name : doc.name