overleaf/services/web/public/coffee/ide/templates/controllers/TemplatesController.coffee

62 lines
2 KiB
CoffeeScript

define [
"base"
"ide/permissions/PermissionsManager"
], (App, PermissionsManager) ->
App.controller "TemplatesController", ($scope, $modal, ide) ->
$scope.openPublishTemplateModal = () ->
resetState = ->
$scope.problemTalkingToTemplateApi = false
resetState()
modal = $modal.open {
templateUrl: "publishProjectAsTemplateModalTemplate"
controller: "PublishProjectAsTemplateModalController"
scope:$scope
}
modal.result.then(resetState, resetState)
App.controller "PublishProjectAsTemplateModalController", ($scope, $modalInstance, ide) ->
user_id = ide.$scope.user.id
$scope.templateDetails = {exists:false}
$scope.state =
publishInflight: false
unpublishInflight: false
problemTalkingToTemplateApi = ->
$scope.problemTalkingToTemplateApi = true
refreshPublishedStatus = ->
ide.socket.emit "getPublishedDetails", user_id, (err, data)->
if !data? or err? then return problemTalkingToTemplateApi()
$scope.templateDetails = data
$scope.templateDetails.publishedDate = moment(data.publishedDate).format("Do MMM YYYY, h:mm a")
$scope.templateDetails.description = data.description
refreshPublishedStatus()
$scope.$watch $scope.problemTalkingToTemplateApi, refreshPublishedStatus
$scope.updateProjectDescription = ->
description = $scope.template.description
if description?
ide.socket.emit 'updateProjectDescription', description, (err) =>
if err? then return problemTalkingToTemplateApi()
$scope.publishTemplate = ->
$scope.state.publishInflight = true
ide.socket.emit 'publishProjectAsTemplate', user_id, (error) =>
if err? then return problemTalkingToTemplateApi()
refreshPublishedStatus()
$scope.state.publishInflight = false
$scope.unpublishTemplate = ->
$scope.state.unpublishInflight = true
ide.socket.emit 'unPublishProjectAsTemplate', user_id, (error) =>
if err? then return problemTalkingToTemplateApi()
refreshPublishedStatus()
$scope.state.unpublishInflight = false
$scope.cancel = () ->
$modalInstance.dismiss()