TemplatesController.coffee 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. path = require('path')
  2. ProjectUploadManager = require('../Uploads/ProjectUploadManager')
  3. ProjectOptionsHandler = require("../Project/ProjectOptionsHandler")
  4. ProjectDetailsHandler = require('../Project/ProjectDetailsHandler')
  5. TemplatesPublisher = require("./TemplatesPublisher")
  6. settings = require('settings-sharelatex')
  7. fs = require('fs')
  8. request = require('request')
  9. uuid = require('node-uuid')
  10. logger = require('logger-sharelatex')
  11. async = require("async")
  12. module.exports =
  13. createProjectFromZipTemplate: (req, res)->
  14. logger.log body:req.session.templateData, "creating project from zip"
  15. if !req.session.templateData?
  16. return res.redirect "/project"
  17. dumpPath = "#{settings.path.dumpFolder}/#{uuid.v4()}"
  18. writeStream = fs.createWriteStream(dumpPath)
  19. zipUrl = req.session.templateData.zipUrl
  20. if zipUrl.slice(0,12).indexOf("templates") == -1
  21. zipUrl = "#{settings.apis.web.url}#{zipUrl}"
  22. else
  23. zipUrl = "#{settings.apis.templates.url}#{zipUrl}"
  24. request(zipUrl).pipe(writeStream)
  25. writeStream.on 'close', ->
  26. ProjectUploadManager.createProjectFromZipArchive req.session.user._id, req.session.templateData.templateName, dumpPath, (err, project)->
  27. if err?
  28. logger.err err:err, zipUrl:zipUrl, "problem building project from zip"
  29. return res.send 500
  30. setCompiler project._id, req.session.templateData.compiler, ->
  31. fs.unlink dumpPath, ->
  32. delete req.session.templateData
  33. res.redirect "/project/#{project._id}"
  34. publishProject: (user_id, project_id, callback)->
  35. logger.log user_id:user_id, project_id:project_id, "receiving request to publish project as template"
  36. TemplatesPublisher.publish user_id, project_id, callback
  37. unPublishProject: (user_id, project_id, callback)->
  38. logger.log user_id:user_id, project_id:project_id, "receiving request to unpublish project as template"
  39. TemplatesPublisher.unpublish user_id, project_id, callback
  40. getTemplateDetails: (user_id, project_id, callback)->
  41. async.parallel {
  42. details: (cb)->
  43. TemplatesPublisher.getTemplateDetails user_id, project_id, cb
  44. description: (cb)->
  45. ProjectDetailsHandler.getProjectDescription project_id, cb
  46. }, (err, results)->
  47. if err?
  48. logger.err err:err, user_id:user_id, project_id:project_id, "something went wrong getting template details"
  49. return callback(err)
  50. details = results.details
  51. details.description = results.description
  52. callback(err, details)
  53. setCompiler = (project_id, compiler, callback)->
  54. if compiler?
  55. ProjectOptionsHandler.setCompiler project_id, compiler, callback
  56. else
  57. callback()