diff --git a/services/web/app/views/project/editor/publish-template.jade b/services/web/app/views/project/editor/publish-template.jade index 37f622de85..d9784530c8 100644 --- a/services/web/app/views/project/editor/publish-template.jade +++ b/services/web/app/views/project/editor/publish-template.jade @@ -7,28 +7,34 @@ script(type="text/ng-template", id="publishProjectAsTemplateModalTemplate") ) × h3 Publish as Template .modal-body.modal-body-share - form() - label(for='Description') Template Description - .form-group - textarea.form-control( - rows=5, - name='Description', - ng-model="template.description", - ng-blur="updateProjectDescription()", - value="" - ) - div(ng-show="publishedDetails.exists").text-center.publishedDetails - | Your project was last published at - strong {{publishedDetails.publishedDate}}. - a(ng-href="{{publishedDetails.canonicalUrl}}") View it in template gallery. + span(ng-hide="problemTalkingToTemplateApi") + form() + label(for='Description') Template Description + .form-group + textarea.form-control( + rows=5, + name='Description', + ng-model="template.description", + ng-blur="updateProjectDescription()", + value="" + ) + div(ng-show="publishedDetails.exists").text-center.publishedDetails + | Your project was last published at + strong {{publishedDetails.publishedDate}}. + a(ng-href="{{publishedDetails.canonicalUrl}}") View it in template gallery. + + span(ng-show="problemTalkingToTemplateApi") There is a problem with our publishing service, please try again in a few minutes. - .modal-footer + + .modal-footer(ng-hide="problemTalkingToTemplateApi") button.btn.btn-default( ng-click="cancel()", ng-disabled="state.publishInflight || state.unpublishInflight" - ) Cancel + ) + span Cancel + button.btn.btn-info( ng-click="unpublishTemplate()", ng-disabled="state.publishInflight || state.unpublishInflight" @@ -36,6 +42,7 @@ script(type="text/ng-template", id="publishProjectAsTemplateModalTemplate") ) span(ng-show="!state.unpublishInflight") Unpublish span(ng-show="state.unpublishInflight") Unpublishing... + button.btn.btn-primary( ng-click="publishTemplate()", ng-disabled="state.publishInflight || state.unpublishInflight" diff --git a/services/web/public/coffee/ide/templates/controllers/TemplatesController.coffee b/services/web/public/coffee/ide/templates/controllers/TemplatesController.coffee index 6ff522c833..ffcb5aaafe 100644 --- a/services/web/public/coffee/ide/templates/controllers/TemplatesController.coffee +++ b/services/web/public/coffee/ide/templates/controllers/TemplatesController.coffee @@ -7,26 +7,32 @@ define [ $modal.open { templateUrl: "publishProjectAsTemplateModalTemplate" controller: "PublishProjectAsTemplateModalController" - resolve: - diff: () -> $scope.trackChanges.diff } App.controller "PublishProjectAsTemplateModalController", ($scope, $modalInstance, ide) -> - permissionsManager = new PermissionsManager(ide, $scope) + user_id = ide.$scope.user.id $scope.template = {} $scope.publishedDetails = exists:false + $scope.problemTalkingToTemplateApi = false + + problemTalkingToTemplateApi = -> + $scope.problemTalkingToTemplateApi = true + + successTalkingToTemplateApi = -> + $scope.problemTalkingToTemplateApi = true $scope.state = publishInflight: false unpublishInflight: false refreshPublishedStatus = -> + ide.socket.emit "getPublishedDetails", user_id, (err, data)-> + if !data? or err? then return problemTalkingToTemplateApi() else successTalkingToTemplateApi() $scope.publishedDetails = data $scope.publishedDetails.publishedDate = moment(data.publishedDate).format("Do MMM YYYY, h:mm a") - console.log data $scope.template.description = data.description refreshPublishedStatus() @@ -34,17 +40,20 @@ define [ $scope.updateProjectDescription = -> description = $scope.template.description if description? - ide.socket.emit 'updateProjectDescription', description, () => + ide.socket.emit 'updateProjectDescription', description, (err) => + if err? then return problemTalkingToTemplateApi() else successTalkingToTemplateApi() $scope.publishTemplate = -> $scope.state.publishInflight = true - ide.socket.emit 'publishProjectAsTemplate', user_id, (error, docLines, version) => + ide.socket.emit 'publishProjectAsTemplate', user_id, (error) => + if err? then return problemTalkingToTemplateApi() else successTalkingToTemplateApi() refreshPublishedStatus() $scope.state.publishInflight = false $scope.unpublishTemplate = -> $scope.state.unpublishInflight = true - ide.socket.emit 'unPublishProjectAsTemplate', user_id, (error, docLines, version) => + ide.socket.emit 'unPublishProjectAsTemplate', user_id, (error) => + if err? then return problemTalkingToTemplateApi() else successTalkingToTemplateApi() refreshPublishedStatus() $scope.state.unpublishInflight = false