TemplatesController.coffee 2.2 KB

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