ProjectEditorHandler.coffee 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. _ = require("underscore")
  2. module.exports = ProjectEditorHandler =
  3. buildProjectModelView: (project, members) ->
  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. owner = null
  18. for member in members
  19. if member.privilegeLevel == "owner"
  20. owner = member.user
  21. else
  22. result.members.push @buildUserModelView member.user, member.privilegeLevel
  23. if owner?
  24. result.owner = @buildUserModelView owner, "owner"
  25. result.features = _.defaults(owner?.features or {}, {
  26. collaborators: -1 # Infinite
  27. versioning: false
  28. dropbox:false
  29. compileTimeout: 60
  30. compileGroup:"standard"
  31. templates: false
  32. references: false
  33. })
  34. return result
  35. buildUserModelView: (user, privileges) ->
  36. _id : user._id
  37. first_name : user.first_name
  38. last_name : user.last_name
  39. email : user.email
  40. privileges : privileges
  41. signUpDate : user.signUpDate
  42. buildFolderModelView: (folder) ->
  43. fileRefs = _.filter folder.fileRefs, (file)-> file?
  44. _id : folder._id
  45. name : folder.name
  46. folders : @buildFolderModelView childFolder for childFolder in folder.folders
  47. fileRefs : @buildFileModelView file for file in fileRefs
  48. docs : @buildDocModelView doc for doc in folder.docs
  49. buildFileModelView: (file) ->
  50. _id : file._id
  51. name : file.name
  52. buildDocModelView: (doc) ->
  53. _id : doc._id
  54. name : doc.name