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

Merge branch 'master-redesign' of https://github.com/sharelatex/web-sharelatex into master-redesign

Henry Oswald 12 лет назад
Родитель
Сommit
b428a8fb7d

+ 2 - 2
services/web/app/coffee/Features/Chat/ChatHandler.coffee

@@ -10,7 +10,7 @@ module.exports =
 			json:
 				content:messageContent
 				user_id:user_id
-			uri:"#{settings.apis.chat.url}/room/#{project_id}/messages"
+			uri:"#{settings.apis.chat.internal_url}/room/#{project_id}/messages"
 		request opts, (err, response, body)->
 			if err?
 				logger.err err:err, "problem sending new message to chat"
@@ -24,7 +24,7 @@ module.exports =
 		qs.before = query.before if query?.before?
 
 		opts =
-			uri:"#{settings.apis.chat.url}/room/#{project_id}/messages"
+			uri:"#{settings.apis.chat.internal_url}/room/#{project_id}/messages"
 			method:"get"
 			qs: qs
 

+ 4 - 1
services/web/app/views/project/editor/chat.jade

@@ -33,7 +33,10 @@ aside.chat(
 							}"
 						)
 							.arrow(ng-style="{'border-color': 'hsl({{ hue(message.user) }}, 60%, 80%)'}")
-							p(ng-repeat="content in message.contents track by $index") {{ content }}
+							p(
+								mathjax,
+								ng-repeat="content in message.contents track by $index"
+							) {{ content }}
 
 	.new-message
 		textarea(

+ 1 - 1
services/web/app/views/project/editor/file-tree.jade

@@ -312,7 +312,7 @@ script(type='text/ng-template', id='newDocModalTemplate')
 
 script(type='text/ng-template', id='newFolderModalTemplate')
 	.modal-header
-		h3 New File
+		h3 New Folder
 	.modal-body
 		form(novalidate, name="newFolderForm")
 			input.form-control(

+ 2 - 2
services/web/app/views/project/editor/share.jade

@@ -69,8 +69,8 @@ script(type='text/ng-template', id='shareProjectModalTemplate')
 				div.text-center(ng-hide="canAddCollaborators")
 					p You need to upgrade your account to add more collaborators.
 					p
-						a.btn.btn-info(href, ng-click="startFreeTrial()") Start Free Trial
-					p.small(ng-show="state.startedFreeTrial")
+						a.btn.btn-info(href, ng-click="startFreeTrial('projectMembers')") Start Free Trial
+					p.small(ng-show="startedFreeTrial")
 						| Please refresh this page after starting your free trial.
 
 	.modal-footer

+ 4 - 5
services/web/app/views/project/editor/track-changes.jade

@@ -4,9 +4,8 @@ div#trackChanges(ng-show="ui.view == 'track-changes'")
 			p You need to upgrade your account to use the History feature.
 			p
 				a.btn.btn-info(
-					href="/user/subscription/plans"
-					target="_blank"
-					ng-click="startedFreeTrial = true"
+					href
+					ng-click="startFreeTrial('track-changes')"
 				) Start Free Trial
 			p.small(ng-show="startedFreeTrial") Please refresh the page after starting your free trial.
 		.message(ng-show="project.owner._id != user.id")
@@ -70,8 +69,8 @@ div#trackChanges(ng-show="ui.view == 'track-changes'")
 						div.users
 							div.user(ng-repeat="update_user in update.meta.users")
 								.color-square(ng-style="{'background-color': 'hsl({{ update_user.hue }}, 100%, 50%)'}")
-								span(ng-if="update_user.id != user.id") {{update_user.first_name}} {{update_user.last_name}}
-								span(ng-if="update_user.id == user.id") You
+								.name(ng-if="update_user.id != user.id") {{update_user.first_name}} {{update_user.last_name}}
+								.name(ng-if="update_user.id == user.id") You
 							div.user(ng-if="update.meta.users.length == 0")
 								.color-square(style="background-color: hsl(100, 100%, 50%)")
 								span Anonymous

+ 1 - 0
services/web/config/settings.defaults.coffee

@@ -88,6 +88,7 @@ module.exports =
 			subdomain: ""
 		chat:
 			url: "http://localhost:3010"
+			internal_url: "http://localhost:3010"
 		templates:
 			port: 3007
 			user_id: process.env.TEMPLATES_USER_ID or "5395eb7aad1f29a88756c7f2"

+ 5 - 0
services/web/public/coffee/ide.coffee

@@ -53,6 +53,11 @@ define [
 		$scope.settings = window.userSettings
 
 		$scope.chat = {}
+		
+		$scope.startFreeTrial = (source) ->
+			ga?('send', 'event', 'subscription-funnel', 'upgraded-free-trial', source)
+			window.open("/user/subscription/new?planCode=student_free_trial")
+			$scope.startedFreeTrial = true
 
 		window._ide = ide
 

+ 24 - 0
services/web/public/coffee/ide/chat/directives/mathjax.coffee

@@ -0,0 +1,24 @@
+define [
+	"base"
+	"mathjax"
+], (App) ->
+	mathjaxConfig =
+		"HTML-CSS": { availableFonts: ["TeX"] },
+		TeX:
+			equationNumbers: { autoNumber: "AMS" },
+			useLabelIDs: false
+		tex2jax:
+			inlineMath: [ ['$','$'], ["\\(","\\)"] ],
+			displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
+			processEscapes: true
+
+
+	MathJax.Hub.Config(mathjaxConfig);
+	
+	App.directive "mathjax", () ->
+		return {
+			link: (scope, element, attrs) ->
+				setTimeout () ->
+					MathJax.Hub.Queue(["Typeset", MathJax.Hub, element.get(0)])
+				, 0
+		}

+ 1 - 0
services/web/public/coffee/ide/chat/index.coffee

@@ -2,4 +2,5 @@ define [
 	"ide/chat/controllers/ChatButtonController"
 	"ide/chat/controllers/ChatController"
 	"ide/chat/controllers/ChatMessageController"
+	"ide/chat/directives/mathjax"
 ], () ->

+ 23 - 10
services/web/public/coffee/ide/chat/services/chatMessages.coffee

@@ -14,11 +14,27 @@ define [
 				nextBeforeTimestamp: null
 				newMessage: null
 		}
-			
+		
+		justSent = false	
 		ide.socket.on "new-chat-message", (message) =>
-			ide.$scope.$apply () ->
-				chat.state.newMessage = message
-				appendMessage(message)
+			if message.user.id == ide.$scope.user.id and justSent
+				# Nothing to do
+			else
+				ide.$scope.$apply () ->
+					appendMessage(message)
+			justSent = false
+			
+		chat.sendMessage = (message) ->
+			body = 
+				content: message
+				_csrf : window.csrfToken
+			justSent = true
+			appendMessage({
+				user: ide.$scope.user
+				content: message
+				timestamp: Date.now()
+			})
+			return $http.post(MESSAGES_URL, body)
 			
 		chat.loadMoreMessages = () ->
 			return if chat.state.atEnd
@@ -60,6 +76,9 @@ define [
 				prependMessage(message)
 				
 		appendMessage = (message) ->
+			console.log "MESSAGES", message, chat.state.messages
+			chat.state.newMessage = message
+			
 			lastMessage = chat.state.messages[chat.state.messages.length - 1]
 			shouldGroup = lastMessage? and
 				lastMessage.user.id == message.user.id and
@@ -74,10 +93,4 @@ define [
 					contents: [message.content]
 				})
 					
-		chat.sendMessage = (message) ->
-			body = 
-				content: message
-				_csrf : window.csrfToken
-			return $http.post(MESSAGES_URL, body)
-					
 		return chat

+ 0 - 5
services/web/public/coffee/ide/share/controllers/ShareProjectModalController.coffee

@@ -51,11 +51,6 @@ define [
 					$scope.state.inflight = false
 					$scope.state.error = "Sorry, something went wrong :("
 
-		$scope.startFreeTrial = () ->
-			ga?('send', 'event', 'subscription-funnel', 'upgraded-free-trial', "projectMembers")
-			window.open("/user/subscription/plans")
-			$scope.state.startedFreeTrial = true
-
 		$scope.openMakePublicModal = () ->
 			$modal.open {
 				templateUrl: "makePublicModalTemplate"

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

@@ -143,6 +143,9 @@
 							top: 3px;
 							left: 0;
 						}
+						.name {
+							display: inline-block;
+						}
 					}
 				}
 				.time {

+ 4 - 4
services/web/test/UnitTests/coffee/Chat/ChatHandlerTests.coffee

@@ -13,7 +13,7 @@ describe "ChatHandler", ->
 		@settings = 
 			apis:
 				chat:
-					url:"chat.sharelatex.env"
+					internal_url:"chat.sharelatex.env"
 		@request = sinon.stub()
 		@ChatHandler = SandboxedModule.require modulePath, requires:
 			"settings-sharelatex":@settings
@@ -38,7 +38,7 @@ describe "ChatHandler", ->
 					json:
 						content:@messageContent
 						user_id:@user_id
-					uri:"#{@settings.apis.chat.url}/room/#{@project_id}/messages"
+					uri:"#{@settings.apis.chat.internal_url}/room/#{@project_id}/messages"
 				@request.calledWith(@opts).should.equal true
 				done()
 
@@ -59,7 +59,7 @@ describe "ChatHandler", ->
 			@ChatHandler.getMessages @project_id, @query, (err)=>
 				@opts =
 					method:"get"
-					uri:"#{@settings.apis.chat.url}/room/#{@project_id}/messages"
+					uri:"#{@settings.apis.chat.internal_url}/room/#{@project_id}/messages"
 					qs:{}
 				@request.calledWith(@opts).should.equal true
 				done()
@@ -70,7 +70,7 @@ describe "ChatHandler", ->
 			@ChatHandler.getMessages @project_id, @query, (err)=>
 				@opts =
 					method:"get"
-					uri:"#{@settings.apis.chat.url}/room/#{@project_id}/messages"
+					uri:"#{@settings.apis.chat.internal_url}/room/#{@project_id}/messages"
 					qs:
 						limit:5
 						before:12345