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

Merge pull request #10891 from overleaf/jel-features-page-test

[web] Setup split test for new features page

GitOrigin-RevId: c301089f2a251fef6cdc4434ac3c8356bb17545d
Jessica Lawshe 3 лет назад
Родитель
Сommit
d7233870b9

+ 4 - 1
services/web/app/src/router.js

@@ -80,7 +80,10 @@ function initialize(webRouter, privateApiRouter, publicApiRouter) {
   webRouter.get(
     '*',
     expressify(
-      SplitTestMiddleware.loadAssignmentsInLocals(['design-system-updates'])
+      SplitTestMiddleware.loadAssignmentsInLocals([
+        'design-system-updates',
+        'features-page',
+      ])
     )
   )
 

+ 6 - 1
services/web/app/views/layout/fat-footer.pug

@@ -1,3 +1,5 @@
+- var featuresPageVariant = splitTestVariants && splitTestVariants['features-page']
+
 footer.fat-footer.hidden-print
 	.fat-footer-container
 		.fat-footer-sections(class=hideFatFooter ? 'hidden' : undefined)
@@ -41,7 +43,10 @@ footer.fat-footer.hidden-print
 		
 				ul.list-unstyled
 					li
-						a(href="/learn/how-to/Overleaf_premium_features") #{translate('premium_features')}
+						if !featuresPageVariant || featuresPageVariant === 'default'
+							a(href="/learn/how-to/Overleaf_premium_features") #{translate('premium_features')}
+						else
+							a(href="/about/features-overview") #{translate('features')}
 					li
 						a(href="/user/subscription/plans?itm_referrer=footer-for-indv-groups") !{translate('for_individuals_and_groups')}
 					li

+ 10 - 7
services/web/app/views/layout/navbar-marketing.pug

@@ -29,6 +29,7 @@ nav.navbar.navbar-default.navbar-main
 		- var canDisplayAdminRedirect = canRedirectToAdminDomain()
 		- var canDisplaySplitTestMenu = hasFeature('saas') && (canDisplayAdminMenu || (getSessionUser() && getSessionUser().staffAccess && (getSessionUser().staffAccess.splitTestMetrics || getSessionUser().staffAccess.splitTestManagement)))
 		- var canDisplaySurveyMenu = hasFeature('saas') && canDisplayAdminMenu
+		- var featuresPageVariant = splitTestVariants && splitTestVariants['features-page']
 
 		if (typeof(suppressNavbarRight) == "undefined")
 			.navbar-collapse.collapse(data-ol-navbar-main-collapse)
@@ -94,13 +95,15 @@ nav.navbar.navbar-default.navbar-main
 											else
 												li
 													if child.url
-														a(
-															href=child.url,
-															class=child.class,
-															event-tracking=child.event
-															event-tracking-mb="true"
-															event-tracking-trigger="click"
-														) !{translate(child.text)}
+														if !child.splitTest || child.splitTest && child.splitTest === 'features-page' && child.splitTestVariant === featuresPageVariant
+															a(
+																href=child.url,
+																class=child.class,
+																event-tracking=child.event
+																event-tracking-mb="true"
+																event-tracking-trigger="click"
+																event-segmentation=child.eventSegmentation
+															) !{translate(child.text)}
 													else
 														| !{translate(child.text)}
 							else

+ 10 - 7
services/web/app/views/layout/navbar.pug

@@ -15,6 +15,7 @@ nav.navbar.navbar-default.navbar-main
 		- var canDisplayAdminRedirect = canRedirectToAdminDomain()
 		- var canDisplaySplitTestMenu = hasFeature('saas') && (canDisplayAdminMenu || (getSessionUser() && getSessionUser().staffAccess && (getSessionUser().staffAccess.splitTestMetrics || getSessionUser().staffAccess.splitTestManagement)))
 		- var canDisplaySurveyMenu = hasFeature('saas') && canDisplayAdminMenu
+		- var featuresPageVariant = splitTestVariants && splitTestVariants['features-page']
 
 		if (typeof(suppressNavbarRight) == "undefined")
 			.navbar-collapse.collapse(collapse="navCollapsed")
@@ -70,13 +71,15 @@ nav.navbar.navbar-default.navbar-main
 											else
 												li
 													if child.url
-														a(
-															href=child.url,
-															class=child.class,
-															event-tracking=child.event
-															event-tracking-mb="true"
-															event-tracking-trigger="click"
-														) !{translate(child.text)}
+														if !child.splitTest || child.splitTest && child.splitTest === 'features-page' && child.splitTestVariant === featuresPageVariant
+															a(
+																href=child.url,
+																class=child.class,
+																event-tracking=child.event
+																event-tracking-mb="true"
+																event-tracking-trigger="click"
+																event-segmentation=child.eventSegmentation
+															) !{translate(child.text)}
 													else
 														| !{translate(child.text)}
 							else

+ 9 - 6
services/web/app/views/project/list/_current_plan_mixins.pug

@@ -1,3 +1,6 @@
+- var featuresPageVariantNew = splitTestVariants && splitTestVariants['features-page'] && splitTestVariants['features-page'] === 'new'
+- var featuresLink = featuresPageVariantNew ? "/about/features-overview" : "/learn/how-to/Overleaf_premium_features"
+
 mixin current_plan()
 	if (usersBestSubscription)
 		.text-right.pull-right.current-plan
@@ -21,7 +24,7 @@ mixin individual_plan_trial(subscription, plan, remainingTrialDays)
 	a.current-plan-label(
 		tooltip=translate('plan_tooltip', { plan: plan.name }),
 		tooltip-placement="bottom"
-		href="/learn/how-to/Overleaf_premium_features"
+		href=featuresLink
 	)
 		if (remainingTrialDays === 1)
 			| !{translate('trial_last_day')} 
@@ -34,7 +37,7 @@ mixin individual_plan_active(subscription, plan)
 	a.current-plan-label(
 		tooltip=translate('plan_tooltip', {plan: plan.name}),
 		tooltip-placement="bottom"
-		href="/learn/how-to/Overleaf_premium_features"
+		href=featuresLink
 	)
 		| !{translate('premium_plan_label')} 
 		span.info-badge
@@ -43,7 +46,7 @@ mixin group_plan_trial(subscription, plan, remainingTrialDays)
 	a.current-plan-label(
 		tooltip=translate(subscription.teamName != null ? 'group_plan_with_name_tooltip' : 'group_plan_tooltip', { plan: plan.name, groupName: subscription.teamName }),
 		tooltip-placement="bottom"
-		href="/learn/how-to/Overleaf_premium_features"
+		href=featuresLink
 	)
 		if (remainingTrialDays === 1)
 			| !{translate('trial_last_day')} 
@@ -56,7 +59,7 @@ mixin group_plan_active(subscription, plan)
 	a.current-plan-label(
 		tooltip=translate(subscription.teamName != null ? 'group_plan_with_name_tooltip' : 'group_plan_tooltip', { plan: plan.name, groupName: subscription.teamName }),
 		tooltip-placement="bottom"
-		href="/learn/how-to/Overleaf_premium_features"
+		href=featuresLink
 	)
 		| !{translate('premium_plan_label')} 
 		span.info-badge
@@ -65,7 +68,7 @@ mixin commons_plan(subscription, plan)
 	a.current-plan-label(
 		tooltip=translate('commons_plan_tooltip', { plan: plan.name, institution: subscription.name }),
 		tooltip-placement="bottom"
-		href="/learn/how-to/Overleaf_premium_features"
+		href=featuresLink
 	)
 		| !{translate('premium_plan_label')} 
 		span.info-badge
@@ -74,7 +77,7 @@ mixin free_plan()
 	a.current-plan-label(
 		tooltip=translate('free_plan_tooltip'),
 		tooltip-placement="bottom"
-		href="/learn/how-to/Overleaf_premium_features"
+		href=featuresLink
 	)
 		| !{translate('free_plan_label')} 
 		span.info-badge

+ 6 - 1
services/web/app/views/subscriptions/_premium_features_link.pug

@@ -1 +1,6 @@
-p !{translate("get_most_subscription_by_checking_premium_features", {}, [{name: 'a', attrs: {href: '/learn/how-to/Overleaf_premium_features'}}])}
+- var featuresPageVariantNew = splitTestVariants && splitTestVariants['features-page'] && splitTestVariants['features-page'] === 'new'
+
+if featuresPageVariantNew
+    p !{translate("get_most_subscription_by_checking_features", {}, [{name: 'a', attrs: {href: '/about/features-overview'}}])}
+else
+    p !{translate("get_most_subscription_by_checking_premium_features", {}, [{name: 'a', attrs: {href: '/learn/how-to/Overleaf_premium_features'}}])}

+ 5 - 1
services/web/app/views/subscriptions/successful_subscription.pug

@@ -1,6 +1,10 @@
 extends ../layout
 
 block content
+	- var featuresPageVariantNew = splitTestVariants && splitTestVariants['features-page'] && splitTestVariants['features-page'] === 'new'
+	- var featuresLink = featuresPageVariantNew ? "/about/features-overview" : "/learn/how-to/Overleaf_premium_features"
+	- var featuresTranslationKey = featuresPageVariantNew ? 'get_most_subscription_by_checking_features' : 'get_most_subscription_by_checking_premium_features'
+
 	main.content.content-alt#main-content
 		.container
 			.row
@@ -20,7 +24,7 @@ block content
 								a.btn.btn-primary.btn-large(href=`/manage/groups/${personalSubscription._id}/members`) #{translate("add_your_first_group_member_now")}
 						p.letter-from-founders
 							p #{translate("thanks_for_subscribing_you_help_sl", {planName:personalSubscription.plan.name})}
-							p !{translate("get_most_subscription_by_checking_premium_features", {}, [{name: 'a', attrs: {href: 'https://www.overleaf.com/learn/how-to/Overleaf_premium_features'}}])}
+							p !{translate(featuresTranslationKey, {}, [{name: 'a', attrs: {href: featuresLink}}])}
 							p #{translate("need_anything_contact_us_at")} 
 								a(href=`mailto:${settings.adminEmail}`, ng-non-bindable) #{settings.adminEmail}
 								| .

+ 2 - 1
services/web/locales/en.json

@@ -1944,5 +1944,6 @@
   "contact_sales": "Contact Sales",
   "empower_your_organization_to_work_in_overleaf": "Empower your organization to work in __appName__! Get a group or organizational plan.",
   "save_money_groups_companies_research_organizations_can_save_money": "<0>Save Money</0>! Groups, Companies and Research Organizations can save money with our Group and Enterprise plans — request information or a quote.",
-  "did_you_know_that_overleaf_offers": "Did you know that __appName__ offers group and organization-wide subscription options? Request information or a quote."
+  "did_you_know_that_overleaf_offers": "Did you know that __appName__ offers group and organization-wide subscription options? Request information or a quote.",
+  "get_most_subscription_by_checking_features": "Get the most out of your __appName__ subscription by checking out <0>__appName__’s features</0>."
 }