From 1de93f1a3abc70c1475a4729ad90d14ddcb290fe Mon Sep 17 00:00:00 2001 From: Jessica Lawshe Date: Mon, 19 Dec 2022 09:36:21 -0600 Subject: [PATCH] Merge pull request #10891 from overleaf/jel-features-page-test [web] Setup split test for new features page GitOrigin-RevId: c301089f2a251fef6cdc4434ac3c8356bb17545d --- services/web/app/src/router.js | 5 ++++- services/web/app/views/layout/fat-footer.pug | 7 ++++++- .../web/app/views/layout/navbar-marketing.pug | 17 ++++++++++------- services/web/app/views/layout/navbar.pug | 17 ++++++++++------- .../views/project/list/_current_plan_mixins.pug | 15 +++++++++------ .../subscriptions/_premium_features_link.pug | 7 ++++++- .../subscriptions/successful_subscription.pug | 6 +++++- services/web/locales/en.json | 3 ++- 8 files changed, 52 insertions(+), 25 deletions(-) diff --git a/services/web/app/src/router.js b/services/web/app/src/router.js index b2362e4db5..f95bb526f9 100644 --- a/services/web/app/src/router.js +++ b/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', + ]) ) ) diff --git a/services/web/app/views/layout/fat-footer.pug b/services/web/app/views/layout/fat-footer.pug index aa375319fd..f926bcd561 100644 --- a/services/web/app/views/layout/fat-footer.pug +++ b/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 diff --git a/services/web/app/views/layout/navbar-marketing.pug b/services/web/app/views/layout/navbar-marketing.pug index 1ff1aea58e..8f0a440448 100644 --- a/services/web/app/views/layout/navbar-marketing.pug +++ b/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 diff --git a/services/web/app/views/layout/navbar.pug b/services/web/app/views/layout/navbar.pug index 7f2ed8ca89..577b9ccda3 100644 --- a/services/web/app/views/layout/navbar.pug +++ b/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 diff --git a/services/web/app/views/project/list/_current_plan_mixins.pug b/services/web/app/views/project/list/_current_plan_mixins.pug index 76f1c85b31..86df17fe83 100644 --- a/services/web/app/views/project/list/_current_plan_mixins.pug +++ b/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 diff --git a/services/web/app/views/subscriptions/_premium_features_link.pug b/services/web/app/views/subscriptions/_premium_features_link.pug index 87002ccffc..6dd1aa32cb 100644 --- a/services/web/app/views/subscriptions/_premium_features_link.pug +++ b/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'}}])} \ No newline at end of file +- 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'}}])} \ No newline at end of file diff --git a/services/web/app/views/subscriptions/successful_subscription.pug b/services/web/app/views/subscriptions/successful_subscription.pug index 259ad2b968..0607cb5f46 100644 --- a/services/web/app/views/subscriptions/successful_subscription.pug +++ b/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} | . diff --git a/services/web/locales/en.json b/services/web/locales/en.json index bf831c0fdb..6b4c9f4efe 100644 --- a/services/web/locales/en.json +++ b/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! 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." }