Просмотр исходного кода

UI fix - do not allow multiple clicks to restore a deleted file.

Paulo Reis 10 лет назад
Родитель
Сommit
cf5c8e27e1

+ 15 - 3
services/web/app/views/project/editor/track-changes.jade

@@ -143,15 +143,27 @@ div#trackChanges(ng-show="ui.view == 'track-changes'")
 				navigate-highlights="true"
 				navigate-highlights="true"
 			)
 			)
 		.diff-deleted.text-centered(
 		.diff-deleted.text-centered(
-			ng-show="trackChanges.diff.deleted"
+			ng-show="trackChanges.diff.deleted && !trackChanges.diff.restoreDeletedSuccess"
 		)
 		)
 			p.text-serif #{translate("file_has_been_deleted", {filename:"{{ trackChanges.diff.doc.name }} "})}
 			p.text-serif #{translate("file_has_been_deleted", {filename:"{{ trackChanges.diff.doc.name }} "})}
-
 			p
 			p
 				a.btn.btn-primary.btn-lg(
 				a.btn.btn-primary.btn-lg(
 					href,
 					href,
-					ng-click="restoreDeletedDoc()"
+					ng-click="restoreDeletedDoc()",
+					ng-disabled="trackChanges.diff.restoreInProgress"
 				) #{translate("restore")}
 				) #{translate("restore")}
+
+		.diff-deleted.text-centered(
+			ng-show="trackChanges.diff.deleted && trackChanges.diff.restoreDeletedSuccess"
+		)
+			p.text-serif Your file ({{ trackChanges.diff.doc.name }}) has been recovered.
+			p.text-serif You can go back to the editor and work on it again.
+			p
+				a.btn.btn-default(
+					href,
+					ng-click="backToEditorAfterRestore()",
+				) Back to editor
+
 		.loading-panel(ng-show="trackChanges.diff.loading")
 		.loading-panel(ng-show="trackChanges.diff.loading")
 			i.fa.fa-spin.fa-refresh
 			i.fa.fa-spin.fa-refresh
 			|   #{translate("loading")}...
 			|   #{translate("loading")}...

+ 3 - 0
services/web/public/coffee/ide/track-changes/TrackChangesManager.coffee

@@ -117,6 +117,9 @@ define [
 						diff.error = true
 						diff.error = true
 			else
 			else
 				diff.deleted = true
 				diff.deleted = true
+				diff.restoreInProgress = false
+				diff.restoreDeletedSuccess = false
+				diff.restoredDocNewId = null
 
 
 		restoreDeletedDoc: (doc) ->
 		restoreDeletedDoc: (doc) ->
 			url = "/project/#{@$scope.project_id}/doc/#{doc.id}/restore"
 			url = "/project/#{@$scope.project_id}/doc/#{doc.id}/restore"

+ 12 - 3
services/web/public/coffee/ide/track-changes/controllers/TrackChangesDiffController.coffee

@@ -4,9 +4,15 @@ define [
 	App.controller "TrackChangesDiffController", ($scope, $modal, ide, event_tracking) ->
 	App.controller "TrackChangesDiffController", ($scope, $modal, ide, event_tracking) ->
 		$scope.restoreDeletedDoc = () ->
 		$scope.restoreDeletedDoc = () ->
 			event_tracking.sendCountly "track-changes-restore-deleted"
 			event_tracking.sendCountly "track-changes-restore-deleted"
-			ide.trackChangesManager.restoreDeletedDoc(
-				$scope.trackChanges.diff.doc
-			)
+			$scope.trackChanges.diff.restoreInProgress = true
+			ide.trackChangesManager
+				.restoreDeletedDoc(
+					$scope.trackChanges.diff.doc
+				)
+				.success (response) ->
+					$scope.trackChanges.diff.restoredDocNewId = response.doc_id
+					$scope.trackChanges.diff.restoreInProgress = false
+					$scope.trackChanges.diff.restoreDeletedSuccess = true
 
 
 		$scope.openRestoreDiffModal = () ->
 		$scope.openRestoreDiffModal = () ->
 			event_tracking.sendCountly "track-changes-restore-modal"
 			event_tracking.sendCountly "track-changes-restore-modal"
@@ -17,6 +23,9 @@ define [
 					diff: () -> $scope.trackChanges.diff
 					diff: () -> $scope.trackChanges.diff
 			}
 			}
 
 
+		$scope.backToEditorAfterRestore = () ->
+			ide.editorManager.openDoc({ id: $scope.trackChanges.diff.restoredDocNewId })
+
 	App.controller "TrackChangesRestoreDiffModalController", ($scope, $modalInstance, diff, ide, event_tracking) ->
 	App.controller "TrackChangesRestoreDiffModalController", ($scope, $modalInstance, diff, ide, event_tracking) ->
 		$scope.state =
 		$scope.state =
 			inflight: false
 			inflight: false

+ 2 - 2
services/web/public/coffee/ide/track-changes/controllers/TrackChangesListController.coffee

@@ -2,7 +2,7 @@ define [
 	"base"
 	"base"
 ], (App) ->
 ], (App) ->
 
 
-	App.controller "TrackChangesPremiumPopup", ($scope, ide, sixpack, event_tracking)->
+	App.controller "TrackChangesPremiumPopup", ($scope, ide, sixpack)->
 		$scope.$watch "ui.view", ->
 		$scope.$watch "ui.view", ->
 			if $scope.ui.view == "track-changes"
 			if $scope.ui.view == "track-changes"
 				if $scope.project?.features?.versioning
 				if $scope.project?.features?.versioning
@@ -78,7 +78,7 @@ define [
 			$scope.recalculateSelectedUpdates()
 			$scope.recalculateSelectedUpdates()
 	]
 	]
 
 
-	App.controller "TrackChangesListItemController", ["$scope", ($scope) ->
+	App.controller "TrackChangesListItemController", ["$scope", "event_tracking", ($scope, event_tracking) ->
 		$scope.$watch "update.selectedFrom", (selectedFrom, oldSelectedFrom) ->
 		$scope.$watch "update.selectedFrom", (selectedFrom, oldSelectedFrom) ->
 			if selectedFrom
 			if selectedFrom
 				for update in $scope.trackChanges.updates
 				for update in $scope.trackChanges.updates

+ 4 - 0
services/web/public/stylesheets/app/editor/track-changes.less

@@ -267,6 +267,10 @@
 	}
 	}
 }
 }
 
 
+.diff-deleted {
+	padding-top: 15px;
+}
+
 .editor-dark {
 .editor-dark {
 	#trackChanges {
 	#trackChanges {
 		aside.change-list {
 		aside.change-list {