Browse Source

Merge pull request #294 from sharelatex/pr-track-feature-discovery

Track feature discovery
Paulo Jorge Reis 10 năm trước cách đây
mục cha
commit
cfe87a4388

+ 3 - 0
services/web/app/views/project/editor/header.jade

@@ -91,12 +91,14 @@ header.toolbar.toolbar-header(ng-cloak, ng-hide="state.loading")
 			ng-if="permissions.admin",
 			ng-if="permissions.admin",
 			tooltip="#{translate('share')}",
 			tooltip="#{translate('share')}",
 			tooltip-placement="bottom",
 			tooltip-placement="bottom",
+			ng-mouseenter="trackHover('share')"
 			ng-click="openShareProjectModal()",
 			ng-click="openShareProjectModal()",
 			ng-controller="ShareController"
 			ng-controller="ShareController"
 		)
 		)
 			i.fa.fa-fw.fa-group
 			i.fa.fa-fw.fa-group
 		a.btn.btn-full-height(
 		a.btn.btn-full-height(
 			href,
 			href,
+			ng-mouseenter="trackHover('track-changes')"
 			ng-click="toggleTrackChanges()",
 			ng-click="toggleTrackChanges()",
 			ng-class="{ active: (ui.view == 'track-changes') }"
 			ng-class="{ active: (ui.view == 'track-changes') }"
 			tooltip="#{translate('recent_changes')}",
 			tooltip="#{translate('recent_changes')}",
@@ -108,6 +110,7 @@ header.toolbar.toolbar-header(ng-cloak, ng-hide="state.loading")
 			tooltip="#{translate('chat')}",
 			tooltip="#{translate('chat')}",
 			tooltip-placement="bottom",
 			tooltip-placement="bottom",
 			ng-class="{ active: ui.chatOpen }",
 			ng-class="{ active: ui.chatOpen }",
+			ng-mouseenter="trackHover('chat')"
 			ng-click="toggleChat()",
 			ng-click="toggleChat()",
 			ng-controller="ChatButtonController",
 			ng-controller="ChatButtonController",
 			ng-show="!anonymous"
 			ng-show="!anonymous"

+ 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  #{translate("file_restored", {filename:"{{ trackChanges.diff.doc.name }} "})}
+			p.text-serif  #{translate("file_restored_back_to_editor")}
+			p
+				a.btn.btn-default(
+					href,
+					ng-click="backToEditorAfterRestore()",
+				) #{translate("file_restored_back_to_editor_btn")}
+
 		.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.coffee

@@ -81,6 +81,9 @@ define [
 
 
 		$scope.$watch "ui.leftMenuShown", (isOpen) ->
 		$scope.$watch "ui.leftMenuShown", (isOpen) ->
 			event_tracking.sendCountlyOnce "ide-open-left-menu-once" if isOpen
 			event_tracking.sendCountlyOnce "ide-open-left-menu-once" if isOpen
+
+		$scope.trackHover = (feature) ->
+			event_tracking.sendCountlyOnce "ide-hover-#{feature}-once"
 		# End of tracking code.
 		# End of tracking code.
 
 
 		window._ide = ide
 		window._ide = ide

+ 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"

+ 17 - 5
services/web/public/coffee/ide/track-changes/controllers/TrackChangesDiffController.coffee

@@ -1,13 +1,21 @@
 define [
 define [
 	"base"
 	"base"
 ], (App) ->
 ], (App) ->
-	App.controller "TrackChangesDiffController", ($scope, $modal, ide) ->
+	App.controller "TrackChangesDiffController", ($scope, $modal, ide, event_tracking) ->
 		$scope.restoreDeletedDoc = () ->
 		$scope.restoreDeletedDoc = () ->
-			ide.trackChangesManager.restoreDeletedDoc(
-				$scope.trackChanges.diff.doc
-			)
+			event_tracking.sendCountly "track-changes-restore-deleted"
+			$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"
 			$modal.open {
 			$modal.open {
 				templateUrl: "trackChangesRestoreDiffModalTemplate"
 				templateUrl: "trackChangesRestoreDiffModalTemplate"
 				controller: "TrackChangesRestoreDiffModalController"
 				controller: "TrackChangesRestoreDiffModalController"
@@ -15,13 +23,17 @@ define [
 					diff: () -> $scope.trackChanges.diff
 					diff: () -> $scope.trackChanges.diff
 			}
 			}
 
 
-	App.controller "TrackChangesRestoreDiffModalController", ($scope, $modalInstance, diff, ide) ->
+		$scope.backToEditorAfterRestore = () ->
+			ide.editorManager.openDoc({ id: $scope.trackChanges.diff.restoredDocNewId })
+
+	App.controller "TrackChangesRestoreDiffModalController", ($scope, $modalInstance, diff, ide, event_tracking) ->
 		$scope.state =
 		$scope.state =
 			inflight: false
 			inflight: false
 
 
 		$scope.diff = diff
 		$scope.diff = diff
 
 
 		$scope.restore = () ->
 		$scope.restore = () ->
+			event_tracking.sendCountly "track-changes-restored"
 			$scope.state.inflight = true
 			$scope.state.inflight = true
 			ide.trackChangesManager
 			ide.trackChangesManager
 				.restoreDiff(diff)
 				.restoreDiff(diff)

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

@@ -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
@@ -92,6 +92,7 @@ define [
 				$scope.recalculateSelectedUpdates()
 				$scope.recalculateSelectedUpdates()
 
 
 		$scope.select = () ->
 		$scope.select = () ->
+			event_tracking.sendCountly "track-changes-view-change"
 			$scope.update.selectedTo = true
 			$scope.update.selectedTo = true
 			$scope.update.selectedFrom = true
 			$scope.update.selectedFrom = true
 
 

+ 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 {