Sfoglia il codice sorgente

Restrict AB test to newly registered users.

Paulo Reis 10 anni fa
parent
commit
38d04e27c9

+ 244 - 115
services/web/app/views/project/editor/header.jade

@@ -1,9 +1,7 @@
-div(sixpack-switch="editor-header")
-
+div(ng-if="!shouldABTestHeaderLabels")
 	header.toolbar.toolbar-header(
 	header.toolbar.toolbar-header(
 		ng-cloak,
 		ng-cloak,
 		ng-hide="state.loading"
 		ng-hide="state.loading"
-		sixpack-default
 	)
 	)
 		a.btn.btn-full-height(
 		a.btn.btn-full-height(
 			href,
 			href,
@@ -11,7 +9,6 @@ div(sixpack-switch="editor-header")
 			tooltip='#{translate("menu")}',
 			tooltip='#{translate("menu")}',
 			tooltip-placement="bottom",
 			tooltip-placement="bottom",
 			tooltip-append-to-body="true",
 			tooltip-append-to-body="true",
-			sixpack-convert="editor-header"
 		)
 		)
 			i.fa.fa-fw.fa-bars
 			i.fa.fa-fw.fa-bars
 		a(
 		a(
@@ -102,7 +99,6 @@ div(sixpack-switch="editor-header")
 				ng-mouseenter="trackHover('share')"
 				ng-mouseenter="trackHover('share')"
 				ng-click="openShareProjectModal()",
 				ng-click="openShareProjectModal()",
 				ng-controller="ShareController",
 				ng-controller="ShareController",
-				sixpack-convert="editor-header"
 			)
 			)
 				i.fa.fa-fw.fa-group
 				i.fa.fa-fw.fa-group
 			a.btn.btn-full-height(
 			a.btn.btn-full-height(
@@ -112,7 +108,6 @@ div(sixpack-switch="editor-header")
 				ng-class="{ active: (ui.view == 'track-changes') }"
 				ng-class="{ active: (ui.view == 'track-changes') }"
 				tooltip="#{translate('recent_changes')}",
 				tooltip="#{translate('recent_changes')}",
 				tooltip-placement="bottom",
 				tooltip-placement="bottom",
-				sixpack-convert="editor-header"
 			)
 			)
 				i.fa.fa-fw.fa-history
 				i.fa.fa-fw.fa-history
 			a.btn.btn-full-height(
 			a.btn.btn-full-height(
@@ -124,7 +119,6 @@ div(sixpack-switch="editor-header")
 				ng-click="toggleChat()",
 				ng-click="toggleChat()",
 				ng-controller="ChatButtonController",
 				ng-controller="ChatButtonController",
 				ng-show="!anonymous",
 				ng-show="!anonymous",
-				sixpack-convert="editor-header"
 			)
 			)
 				i.fa.fa-fw.fa-comment(
 				i.fa.fa-fw.fa-comment(
 					ng-class="{ 'bounce': unreadMessages > 0 }"
 					ng-class="{ 'bounce': unreadMessages > 0 }"
@@ -133,128 +127,263 @@ div(sixpack-switch="editor-header")
 					ng-show="unreadMessages > 0"
 					ng-show="unreadMessages > 0"
 				) {{ unreadMessages }}
 				) {{ unreadMessages }}
 
 
-	header.toolbar.toolbar-header.toolbar-with-labels(
-		ng-cloak,
-		ng-hide="state.loading"
-		sixpack-when="labels"
-	)
-		.toolbar-left
+div(ng-if="shouldABTestHeaderLabels")
+	div(sixpack-switch="editor-header")
+		header.toolbar.toolbar-header(
+			ng-cloak,
+			ng-hide="state.loading"
+			sixpack-default
+		)
 			a.btn.btn-full-height(
 			a.btn.btn-full-height(
 				href,
 				href,
-				ng-click="ui.leftMenuShown = true",
+				ng-click="ui.leftMenuShown = true"
+				tooltip='#{translate("menu")}',
+				tooltip-placement="bottom",
+				tooltip-append-to-body="true",
 				sixpack-convert="editor-header"
 				sixpack-convert="editor-header"
 			)
 			)
 				i.fa.fa-fw.fa-bars
 				i.fa.fa-fw.fa-bars
-				p.toolbar-label #{translate("menu")}
 			a(
 			a(
 				href="/project"
 				href="/project"
+				tooltip="#{translate('back_to_projects')}",
+				tooltip-placement="bottom",
+				tooltip-append-to-body="true"
 			)
 			)
 				i.fa.fa-fw.fa-level-up
 				i.fa.fa-fw.fa-level-up
+			
+			span(ng-controller="PdfViewToggleController")
+				a(
+					href,
+					ng-show="ui.pdfLayout == 'flat' && fileTreeClosed",
+					tooltip="PDF",
+					tooltip-placement="bottom",
+					tooltip-append-to-body="true",
+					ng-click="togglePdfView()",
+					ng-class="{ 'active': ui.view == 'pdf' }"
+				)
+					i.fa.fa-file-pdf-o
 
 
-		span(ng-controller="PdfViewToggleController")
-			a(
-				href,
-				ng-show="ui.pdfLayout == 'flat' && fileTreeClosed",
-				tooltip="PDF",
-				tooltip-placement="bottom",
-				tooltip-append-to-body="true",
-				ng-click="togglePdfView()",
-				ng-class="{ 'active': ui.view == 'pdf' }"
-			)
-				i.fa.fa-file-pdf-o
+			.toolbar-center.project-name(ng-controller="ProjectNameController")
+				span.name(
+					ng-dblclick="!permissions.admin || startRenaming()",
+					ng-show="!state.renaming"
+				) {{ project.name }}
 
 
-		.toolbar-center.project-name(ng-controller="ProjectNameController")
-			span.name(
-				ng-dblclick="!permissions.admin || startRenaming()",
-				ng-show="!state.renaming"
-			) {{ project.name }}
+				input.form-control(
+					type="text"
+					ng-model="inputs.name",
+					ng-show="state.renaming",
+					on-enter="finishRenaming()",
+					ng-blur="finishRenaming()",
+					select-name-when="state.renaming"
+				)
 
 
-			input.form-control(
-				type="text"
-				ng-model="inputs.name",
-				ng-show="state.renaming",
-				on-enter="finishRenaming()",
-				ng-blur="finishRenaming()",
-				select-name-when="state.renaming"
-			)
+				a.rename(
+					ng-if="permissions.admin",
+					href='#',
+					tooltip-placement="bottom",
+					tooltip="#{translate('rename')}",
+					tooltip-append-to-body="true",
+					ng-click="startRenaming()",
+					ng-show="!state.renaming"
+				)
+					i.fa.fa-pencil
 
 
-			a.rename(
-				ng-if="permissions.admin",
-				href='#',
-				tooltip-placement="bottom",
-				tooltip="#{translate('rename')}",
-				tooltip-append-to-body="true",
-				ng-click="startRenaming()",
-				ng-show="!state.renaming"
-			)
-				i.fa.fa-pencil
+			.toolbar-right
+				span.online-users(
+					ng-show="onlineUsersArray.length > 0"
+					ng-controller="OnlineUsersController"
+				)
+					span(ng-if="onlineUsersArray.length < 4")
+						span.online-user(
+							ng-repeat="user in onlineUsersArray",
+							ng-style="{ 'background-color': 'hsl({{ getHueForUserId(user.user_id) }}, 70%, 50%)' }",
+							popover="{{ user.name }}"
+							popover-placement="bottom"
+							popover-append-to-body="true"
+							popover-trigger="mouseenter"
+							ng-click="gotoUser(user)"
+						) {{ user.name.slice(0,1) }}
+					
+					span.dropdown(dropdown, ng-if="onlineUsersArray.length >= 4")
+						span.online-user.online-user-multi(
+							dropdown-toggle,
+							tooltip="#{translate('connected_users')}",
+							tooltip-placement="left"
+						)
+							strong {{ onlineUsersArray.length }}
+							i.fa.fa-fw.fa-user
+						ul.dropdown-menu.pull-right
+							li.dropdown-header #{translate('connected_users')}
+							li(ng-repeat="user in onlineUsersArray")
+								a(href, ng-click="gotoUser(user)")
+									span.online-user(
+										ng-style="{ 'background-color': 'hsl({{ getHueForUserId(user.user_id) }}, 70%, 50%)' }"
+									) {{ user.name.slice(0,1) }}
+									| {{ user.name }}
 
 
-		.toolbar-right
-			span.online-users(
-				ng-show="onlineUsersArray.length > 0"
-				ng-controller="OnlineUsersController"
-			)
-				span(ng-if="onlineUsersArray.length < 4")
-					span.online-user(
-						ng-repeat="user in onlineUsersArray",
-						ng-style="{ 'background-color': 'hsl({{ getHueForUserId(user.user_id) }}, 70%, 50%)' }",
-						popover="{{ user.name }}"
-						popover-placement="bottom"
-						popover-append-to-body="true"
-						popover-trigger="mouseenter"
-						ng-click="gotoUser(user)"
-					) {{ user.name.slice(0,1) }}
-				
-				span.dropdown(dropdown, ng-if="onlineUsersArray.length >= 4")
-					span.online-user.online-user-multi(
-						dropdown-toggle,
-						tooltip="#{translate('connected_users')}",
-						tooltip-placement="left"
+			
+				a.btn.btn-full-height(
+					href,
+					ng-if="permissions.admin",
+					tooltip="#{translate('share')}",
+					tooltip-placement="bottom",
+					ng-mouseenter="trackHover('share')"
+					ng-click="openShareProjectModal()",
+					ng-controller="ShareController",
+					sixpack-convert="editor-header"
+				)
+					i.fa.fa-fw.fa-group
+				a.btn.btn-full-height(
+					href,
+					ng-mouseenter="trackHover('track-changes')"
+					ng-click="toggleTrackChanges()",
+					ng-class="{ active: (ui.view == 'track-changes') }"
+					tooltip="#{translate('recent_changes')}",
+					tooltip-placement="bottom",
+					sixpack-convert="editor-header"
+				)
+					i.fa.fa-fw.fa-history
+				a.btn.btn-full-height(
+					href,
+					tooltip="#{translate('chat')}",
+					tooltip-placement="bottom",
+					ng-class="{ active: ui.chatOpen }",
+					ng-mouseenter="trackHover('chat')"
+					ng-click="toggleChat()",
+					ng-controller="ChatButtonController",
+					ng-show="!anonymous",
+					sixpack-convert="editor-header"
+				)
+					i.fa.fa-fw.fa-comment(
+						ng-class="{ 'bounce': unreadMessages > 0 }"
 					)
 					)
-						strong {{ onlineUsersArray.length }}
-						i.fa.fa-fw.fa-user
-					ul.dropdown-menu.pull-right
-						li.dropdown-header #{translate('connected_users')}
-						li(ng-repeat="user in onlineUsersArray")
-							a(href, ng-click="gotoUser(user)")
-								span.online-user(
-									ng-style="{ 'background-color': 'hsl({{ getHueForUserId(user.user_id) }}, 70%, 50%)' }"
-								) {{ user.name.slice(0,1) }}
-								| {{ user.name }}
+					span.label.label-info(
+						ng-show="unreadMessages > 0"
+					) {{ unreadMessages }}
 
 
-		
-			a.btn.btn-full-height(
-				href,
-				ng-if="permissions.admin",
-				ng-mouseenter="trackHover('share')"
-				ng-click="openShareProjectModal()",
-				ng-controller="ShareController",
-				sixpack-convert="editor-header"
-			)
-				i.fa.fa-fw.fa-group
-				p.toolbar-label #{translate("share")}
-			a.btn.btn-full-height(
-				href,
-				ng-mouseenter="trackHover('track-changes')"
-				ng-click="toggleTrackChanges()",
-				ng-class="{ active: (ui.view == 'track-changes') }",
-				sixpack-convert="editor-header"
-			)
-				i.fa.fa-fw.fa-history
-				p.toolbar-label #{translate("history")}
-			a.btn.btn-full-height(
-				href,
-				ng-class="{ active: ui.chatOpen }",
-				ng-mouseenter="trackHover('chat')"
-				ng-click="toggleChat()",
-				ng-controller="ChatButtonController",
-				ng-show="!anonymous",
-				sixpack-convert="editor-header"
-			)
-				i.fa.fa-fw.fa-comment(
-					ng-class="{ 'bounce': unreadMessages > 0 }"
+		header.toolbar.toolbar-header.toolbar-with-labels(
+			ng-cloak,
+			ng-hide="state.loading"
+			sixpack-when="labels"
+		)
+			.toolbar-left
+				a.btn.btn-full-height(
+					href,
+					ng-click="ui.leftMenuShown = true",
+					sixpack-convert="editor-header"
 				)
 				)
-				span.label.label-info(
-					ng-show="unreadMessages > 0"
-				) {{ unreadMessages }}
-				p.toolbar-label #{translate("chat")}
+					i.fa.fa-fw.fa-bars
+					p.toolbar-label #{translate("menu")}
+				a(
+					href="/project"
+				)
+					i.fa.fa-fw.fa-level-up
+
+			span(ng-controller="PdfViewToggleController")
+				a(
+					href,
+					ng-show="ui.pdfLayout == 'flat' && fileTreeClosed",
+					tooltip="PDF",
+					tooltip-placement="bottom",
+					tooltip-append-to-body="true",
+					ng-click="togglePdfView()",
+					ng-class="{ 'active': ui.view == 'pdf' }"
+				)
+					i.fa.fa-file-pdf-o
+
+			.toolbar-center.project-name(ng-controller="ProjectNameController")
+				span.name(
+					ng-dblclick="!permissions.admin || startRenaming()",
+					ng-show="!state.renaming"
+				) {{ project.name }}
+
+				input.form-control(
+					type="text"
+					ng-model="inputs.name",
+					ng-show="state.renaming",
+					on-enter="finishRenaming()",
+					ng-blur="finishRenaming()",
+					select-name-when="state.renaming"
+				)
+
+				a.rename(
+					ng-if="permissions.admin",
+					href='#',
+					tooltip-placement="bottom",
+					tooltip="#{translate('rename')}",
+					tooltip-append-to-body="true",
+					ng-click="startRenaming()",
+					ng-show="!state.renaming"
+				)
+					i.fa.fa-pencil
+
+			.toolbar-right
+				span.online-users(
+					ng-show="onlineUsersArray.length > 0"
+					ng-controller="OnlineUsersController"
+				)
+					span(ng-if="onlineUsersArray.length < 4")
+						span.online-user(
+							ng-repeat="user in onlineUsersArray",
+							ng-style="{ 'background-color': 'hsl({{ getHueForUserId(user.user_id) }}, 70%, 50%)' }",
+							popover="{{ user.name }}"
+							popover-placement="bottom"
+							popover-append-to-body="true"
+							popover-trigger="mouseenter"
+							ng-click="gotoUser(user)"
+						) {{ user.name.slice(0,1) }}
+					
+					span.dropdown(dropdown, ng-if="onlineUsersArray.length >= 4")
+						span.online-user.online-user-multi(
+							dropdown-toggle,
+							tooltip="#{translate('connected_users')}",
+							tooltip-placement="left"
+						)
+							strong {{ onlineUsersArray.length }}
+							i.fa.fa-fw.fa-user
+						ul.dropdown-menu.pull-right
+							li.dropdown-header #{translate('connected_users')}
+							li(ng-repeat="user in onlineUsersArray")
+								a(href, ng-click="gotoUser(user)")
+									span.online-user(
+										ng-style="{ 'background-color': 'hsl({{ getHueForUserId(user.user_id) }}, 70%, 50%)' }"
+									) {{ user.name.slice(0,1) }}
+									| {{ user.name }}
+
+			
+				a.btn.btn-full-height(
+					href,
+					ng-if="permissions.admin",
+					ng-mouseenter="trackHover('share')"
+					ng-click="openShareProjectModal()",
+					ng-controller="ShareController",
+					sixpack-convert="editor-header"
+				)
+					i.fa.fa-fw.fa-group
+					p.toolbar-label #{translate("share")}
+				a.btn.btn-full-height(
+					href,
+					ng-mouseenter="trackHover('track-changes')"
+					ng-click="toggleTrackChanges()",
+					ng-class="{ active: (ui.view == 'track-changes') }",
+					sixpack-convert="editor-header"
+				)
+					i.fa.fa-fw.fa-history
+					p.toolbar-label #{translate("history")}
+				a.btn.btn-full-height(
+					href,
+					ng-class="{ active: ui.chatOpen }",
+					ng-mouseenter="trackHover('chat')"
+					ng-click="toggleChat()",
+					ng-controller="ChatButtonController",
+					ng-show="!anonymous",
+					sixpack-convert="editor-header"
+				)
+					i.fa.fa-fw.fa-comment(
+						ng-class="{ 'bounce': unreadMessages > 0 }"
+					)
+					span.label.label-info(
+						ng-show="unreadMessages > 0"
+					) {{ unreadMessages }}
+					p.toolbar-label #{translate("chat")}

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

@@ -71,6 +71,13 @@ define [
 
 
 		$scope.chat = {}
 		$scope.chat = {}
 
 
+
+		# Only run the header AB test for newly registered users.
+		_abTestStartDate = new Date(Date.UTC(2016, 8, 22))
+		_userSignUpDate = new Date(window.user.signUpDate)
+		
+		$scope.shouldABTestHeaderLabels = _userSignUpDate > _abTestStartDate
+
 		# Tracking code.
 		# Tracking code.
 		$scope.$watch "ui.view", (newView, oldView) ->
 		$scope.$watch "ui.view", (newView, oldView) ->
 			if newView? and newView != "editor" and newView != "pdf"
 			if newView? and newView != "editor" and newView != "pdf"