Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update copy for Scan Daily, Anti-spam, and Search product cards #45067

Merged
merged 5 commits into from
Aug 20, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion client/jetpack-connect/controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ const analyticsPageTitleByType = {
backup: 'Jetpack Daily Backup',
jetpack_search: 'Jetpack Search',
scan: 'Jetpack Scan Daily',
antispam: 'Jetpack Anti-Spam',
antispam: 'Jetpack Anti-spam',
};

const removeSidebar = ( context ) => context.store.dispatch( hideSidebar() );
Expand Down
15 changes: 13 additions & 2 deletions client/lib/plans/constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -229,13 +229,16 @@ export const FEATURE_PRODUCT_BACKUP_V2 = Symbol();
export const FEATURE_PRODUCT_BACKUP_DAILY_V2 = Symbol();
export const FEATURE_PRODUCT_BACKUP_REALTIME_V2 = Symbol();
export const FEATURE_SCAN_V2 = Symbol();
export const FEATURE_SCAN_DAILY_V2 = Symbol();
export const FEATURE_SCAN_REALTIME_V2 = Symbol();
export const FEATURE_PRODUCT_SCAN_V2 = Symbol();
export const FEATURE_PRODUCT_SCAN_DAILY_V2 = Symbol();
export const FEATURE_PRODUCT_SCAN_REALTIME_V2 = Symbol();
export const FEATURE_ANTISPAM_V2 = Symbol();
export const FEATURE_PRODUCT_ANTISPAM_V2 = Symbol();
export const FEATURE_ACTIVITY_LOG_V2 = Symbol();
export const FEATURE_ACTIVITY_LOG_1_YEAR_V2 = Symbol();
export const FEATURE_ACTIVITY_LOG_30_DAYS_V2 = Symbol();
export const FEATURE_SEARCH_V2 = Symbol();
export const FEATURE_PRODUCT_SEARCH_V2 = Symbol();
export const FEATURE_VIDEO_HOSTING_V2 = Symbol();
export const FEATURE_CRM_V2 = Symbol();
export const FEATURE_SOCIAL_MEDIA_POSTING_V2 = Symbol();
Expand All @@ -245,6 +248,14 @@ export const FEATURE_PREMIUM_THEMES_V2 = Symbol();
export const FEATURE_PRIORITY_SUPPORT_V2 = Symbol();
export const FEATURE_SECURE_STORAGE_V2 = Symbol();
export const FEATURE_ONE_CLICK_RESTORE_V2 = Symbol();
export const FEATURE_ONE_CLICK_FIX_V2 = Symbol();
export const FEATURE_INSTANT_EMAIL_V2 = Symbol();
export const FEATURE_AKISMET_V2 = Symbol();
export const FEATURE_SPAM_BLOCK_V2 = Symbol();
export const FEATURE_ADVANCED_STATS_V2 = Symbol();
export const FEATURE_FILTERING_V2 = Symbol();
export const FEATURE_LANGUAGE_SUPPORT_V2 = Symbol();
export const FEATURE_SPELLING_CORRECTION_V2 = Symbol();

// Meta grouping constants
export const GROUP_WPCOM = 'GROUP_WPCOM';
Expand Down
63 changes: 59 additions & 4 deletions client/lib/plans/features-list.js
Original file line number Diff line number Diff line change
Expand Up @@ -1104,6 +1104,11 @@ export const FEATURES_LIST = {

[ constants.FEATURE_SCAN_V2 ]: {
getSlug: () => constants.FEATURE_SCAN_V2,
getTitle: () => i18n.translate( 'Automated daily scanning' ),
},

[ constants.FEATURE_PRODUCT_SCAN_V2 ]: {
getSlug: () => constants.FEATURE_PRODUCT_SCAN_V2,
getIcon: () => '',
getTitle: () => i18n.translate( 'Scan' ),
getDescription: () =>
Expand All @@ -1117,8 +1122,8 @@ export const FEATURES_LIST = {
),
},

[ constants.FEATURE_SCAN_DAILY_V2 ]: {
getSlug: () => constants.FEATURE_SCAN_DAILY_V2,
[ constants.FEATURE_PRODUCT_SCAN_DAILY_V2 ]: {
getSlug: () => constants.FEATURE_PRODUCT_SCAN_DAILY_V2,
getIcon: () => '',
getTitle: () =>
i18n.translate( 'Scan {{em}}Daily{{/em}}', {
Expand All @@ -1137,8 +1142,8 @@ export const FEATURES_LIST = {
),
},

[ constants.FEATURE_SCAN_REALTIME_V2 ]: {
getSlug: () => constants.FEATURE_SCAN_REALTIME_V2,
[ constants.FEATURE_PRODUCT_SCAN_REALTIME_V2 ]: {
getSlug: () => constants.FEATURE_PRODUCT_SCAN_REALTIME_V2,
getIcon: () => '',
getTitle: () =>
i18n.translate( 'Scan {{em}}Real-time{{/em}}', {
Expand All @@ -1159,6 +1164,11 @@ export const FEATURES_LIST = {

[ constants.FEATURE_ANTISPAM_V2 ]: {
getSlug: () => constants.FEATURE_ANTISPAM_V2,
getTitle: () => i18n.translate( 'Automated spam protection' ),
},

[ constants.FEATURE_PRODUCT_ANTISPAM_V2 ]: {
getSlug: () => constants.FEATURE_PRODUCT_ANTISPAM_V2,
getIcon: () => 'bug',
getTitle: () => i18n.translate( 'Anti-spam' ),
getDescription: () =>
Expand Down Expand Up @@ -1216,6 +1226,11 @@ export const FEATURES_LIST = {

[ constants.FEATURE_SEARCH_V2 ]: {
getSlug: () => constants.FEATURE_SEARCH_V2,
getTitle: () => i18n.translate( 'Instant search and indexing' ),
},

[ constants.FEATURE_PRODUCT_SEARCH_V2 ]: {
getSlug: () => constants.FEATURE_PRODUCT_SEARCH_V2,
getTitle: () => i18n.translate( 'Search' ),
getDescription: () =>
i18n.translate(
Expand Down Expand Up @@ -1323,6 +1338,46 @@ export const FEATURES_LIST = {
getSlug: () => constants.FEATURE_ONE_CLICK_RESTORE_V2,
getTitle: () => i18n.translate( 'One-click restores from desktop or mobile' ),
},

[ constants.FEATURE_ONE_CLICK_FIX_V2 ]: {
getSlug: () => constants.FEATURE_ONE_CLICK_FIX_V2,
getTitle: () => i18n.translate( 'One-click fixes for most issues' ),
},

[ constants.FEATURE_INSTANT_EMAIL_V2 ]: {
getSlug: () => constants.FEATURE_INSTANT_EMAIL_V2,
getTitle: () => i18n.translate( 'Instant email notifications' ),
},

[ constants.FEATURE_AKISMET_V2 ]: {
getSlug: () => constants.FEATURE_AKISMET_V2,
getTitle: () => i18n.translate( 'Powered by Akismet' ),
},

[ constants.FEATURE_SPAM_BLOCK_V2 ]: {
getSlug: () => constants.FEATURE_SPAM_BLOCK_V2,
getTitle: () => i18n.translate( 'Block spam without CAPTCHAs' ),
},

[ constants.FEATURE_ADVANCED_STATS_V2 ]: {
getSlug: () => constants.FEATURE_ADVANCED_STATS_V2,
getTitle: () => i18n.translate( 'Advanced stats' ),
},

[ constants.FEATURE_FILTERING_V2 ]: {
getSlug: () => constants.FEATURE_FILTERING_V2,
getTitle: () => i18n.translate( 'Powerful filtering' ),
},

[ constants.FEATURE_LANGUAGE_SUPPORT_V2 ]: {
getSlug: () => constants.FEATURE_LANGUAGE_SUPPORT_V2,
getTitle: () => i18n.translate( 'Supports 29 languages' ),
},

[ constants.FEATURE_SPELLING_CORRECTION_V2 ]: {
getSlug: () => constants.FEATURE_SPELLING_CORRECTION_V2,
getTitle: () => i18n.translate( 'Spelling correction' ),
},
};

export const getPlanFeaturesObject = ( planFeaturesList ) => {
Expand Down
14 changes: 7 additions & 7 deletions client/lib/plans/plans-list.js
Original file line number Diff line number Diff line change
Expand Up @@ -386,8 +386,8 @@ const getPlanJetpackSecurityDailyDetails = () => ( {
getPlanCardFeatures: () => ( {
[ constants.FEATURE_CATEGORY_SECURITY ]: [
constants.FEATURE_PRODUCT_BACKUP_DAILY_V2,
constants.FEATURE_SCAN_DAILY_V2,
constants.FEATURE_ANTISPAM_V2,
constants.FEATURE_PRODUCT_SCAN_DAILY_V2,
constants.FEATURE_PRODUCT_ANTISPAM_V2,
constants.FEATURE_ACTIVITY_LOG_30_DAYS_V2,
],
[ constants.FEATURE_CATEGORY_OTHER ]: [
Expand Down Expand Up @@ -432,8 +432,8 @@ const getPlanJetpackSecurityRealtimeDetails = () => ( {
getPlanCardFeatures: () => ( {
[ constants.FEATURE_CATEGORY_SECURITY ]: [
constants.FEATURE_PRODUCT_BACKUP_REALTIME_V2,
constants.FEATURE_SCAN_REALTIME_V2,
constants.FEATURE_ANTISPAM_V2,
constants.FEATURE_PRODUCT_SCAN_REALTIME_V2,
constants.FEATURE_PRODUCT_ANTISPAM_V2,
constants.FEATURE_ACTIVITY_LOG_1_YEAR_V2,
],
[ constants.FEATURE_CATEGORY_OTHER ]: [
Expand Down Expand Up @@ -483,14 +483,14 @@ const getPlanJetpackCompleteDetails = () => ( {
constants.FEATURE_SECURITY_REALTIME_V2,
[
constants.FEATURE_PRODUCT_BACKUP_REALTIME_V2,
constants.FEATURE_SCAN_REALTIME_V2,
constants.FEATURE_ANTISPAM_V2,
constants.FEATURE_PRODUCT_SCAN_REALTIME_V2,
constants.FEATURE_PRODUCT_ANTISPAM_V2,
constants.FEATURE_ACTIVITY_LOG_1_YEAR_V2,
],
],
],
[ constants.FEATURE_CATEGORY_PERFORMANCE ]: [
constants.FEATURE_SEARCH_V2,
constants.FEATURE_PRODUCT_SEARCH_V2,
constants.FEATURE_VIDEO_HOSTING_V2,
],
[ constants.FEATURE_CATEGORY_GROWTH ]: [
Expand Down
33 changes: 33 additions & 0 deletions client/lib/products-values/get-jetpack-product-call-to-action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/**
* External dependencies
*/
import { TranslateResult } from 'i18n-calypso';

/**
* Internal dependencies
*/
import { assertValidProduct } from 'lib/products-values/utils/assert-valid-product';
import { formatProduct } from 'lib/products-values/format-product';
import { getJetpackProductsCallToAction } from 'lib/products-values/translations';

/**
* Type dependencies
*/
import type { Product } from 'lib/products-values/products-list';

/**
* Get Jetpack product call-to-action based on the product purchase object.
*
* @param {object} product Product purchase object
* @returns {TranslateResult} Product display name
*/
export function getJetpackProductCallToAction( product: object ): TranslateResult | undefined {
product = formatProduct( product );
assertValidProduct( product );
const jetpackProductsCallToActions = getJetpackProductsCallToAction() as Record<
string,
TranslateResult
>;

return jetpackProductsCallToActions?.[ ( product as Product ).product_slug ];
}
1 change: 1 addition & 0 deletions client/lib/products-values/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ export { formatProduct } from './format-product';
export { getDomain } from './get-domain';
export { getDomainProductRanking } from './get-domain-product-ranking';
export { getIncludedDomainPurchaseAmount } from './get-included-domain-purchase-amount';
export { getJetpackProductCallToAction } from './get-jetpack-product-call-to-action';
export { getJetpackProductDescription } from './get-jetpack-product-description';
export { getJetpackProductDisplayName } from './get-jetpack-product-display-name';
export { getJetpackProductShortName } from './get-jetpack-product-short-name';
Expand Down
51 changes: 51 additions & 0 deletions client/lib/products-values/products-list.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,17 @@ import {
FEATURE_ACTIVITY_LOG_30_DAYS_V2,
FEATURE_ACTIVITY_LOG_1_YEAR_V2,
FEATURE_PRIORITY_SUPPORT_V2,
FEATURE_SCAN_V2,
FEATURE_ONE_CLICK_FIX_V2,
FEATURE_INSTANT_EMAIL_V2,
FEATURE_SEARCH_V2,
FEATURE_ANTISPAM_V2,
FEATURE_AKISMET_V2,
FEATURE_SPAM_BLOCK_V2,
FEATURE_ADVANCED_STATS_V2,
FEATURE_FILTERING_V2,
FEATURE_LANGUAGE_SUPPORT_V2,
FEATURE_SPELLING_CORRECTION_V2,
} from 'lib/plans/constants';

/**
Expand Down Expand Up @@ -91,36 +102,76 @@ export const JETPACK_PRODUCTS_LIST: Record< JetpackProductSlug, Product > = {
product_slug: constants.PRODUCT_JETPACK_SCAN,
term: TERM_ANNUALLY,
bill_period: PLAN_ANNUAL_PERIOD,
features: [
FEATURE_SCAN_V2,
FEATURE_ONE_CLICK_FIX_V2,
FEATURE_INSTANT_EMAIL_V2,
FEATURE_PRIORITY_SUPPORT_V2,
],
},
[ constants.PRODUCT_JETPACK_SCAN_MONTHLY ]: {
product_name: PRODUCT_SHORT_NAMES[ constants.PRODUCT_JETPACK_SCAN_MONTHLY ],
product_slug: constants.PRODUCT_JETPACK_SCAN_MONTHLY,
term: TERM_MONTHLY,
bill_period: PLAN_MONTHLY_PERIOD,
features: [
FEATURE_SCAN_V2,
FEATURE_ONE_CLICK_FIX_V2,
FEATURE_INSTANT_EMAIL_V2,
FEATURE_PRIORITY_SUPPORT_V2,
],
},
[ constants.PRODUCT_JETPACK_SEARCH ]: {
product_name: PRODUCT_SHORT_NAMES[ constants.PRODUCT_JETPACK_SEARCH ],
product_slug: constants.PRODUCT_JETPACK_SEARCH,
term: TERM_ANNUALLY,
bill_period: PLAN_ANNUAL_PERIOD,
features: [
FEATURE_SEARCH_V2,
FEATURE_FILTERING_V2,
FEATURE_LANGUAGE_SUPPORT_V2,
FEATURE_SPELLING_CORRECTION_V2,
FEATURE_PRIORITY_SUPPORT_V2,
],
},
[ constants.PRODUCT_JETPACK_SEARCH_MONTHLY ]: {
product_name: PRODUCT_SHORT_NAMES[ constants.PRODUCT_JETPACK_SEARCH_MONTHLY ],
product_slug: constants.PRODUCT_JETPACK_SEARCH_MONTHLY,
term: TERM_MONTHLY,
bill_period: PLAN_MONTHLY_PERIOD,
features: [
FEATURE_SEARCH_V2,
FEATURE_FILTERING_V2,
FEATURE_LANGUAGE_SUPPORT_V2,
FEATURE_SPELLING_CORRECTION_V2,
FEATURE_PRIORITY_SUPPORT_V2,
],
},
[ constants.PRODUCT_JETPACK_ANTI_SPAM ]: {
product_name: PRODUCT_SHORT_NAMES[ constants.PRODUCT_JETPACK_ANTI_SPAM ],
product_slug: constants.PRODUCT_JETPACK_ANTI_SPAM,
term: TERM_ANNUALLY,
bill_period: PLAN_ANNUAL_PERIOD,
features: [
FEATURE_ANTISPAM_V2,
FEATURE_AKISMET_V2,
FEATURE_SPAM_BLOCK_V2,
FEATURE_ADVANCED_STATS_V2,
FEATURE_PRIORITY_SUPPORT_V2,
],
},
[ constants.PRODUCT_JETPACK_ANTI_SPAM_MONTHLY ]: {
product_name: PRODUCT_SHORT_NAMES[ constants.PRODUCT_JETPACK_ANTI_SPAM_MONTHLY ],
product_slug: constants.PRODUCT_JETPACK_ANTI_SPAM_MONTHLY,
term: TERM_MONTHLY,
bill_period: PLAN_MONTHLY_PERIOD,
features: [
FEATURE_ANTISPAM_V2,
FEATURE_AKISMET_V2,
FEATURE_SPAM_BLOCK_V2,
FEATURE_ADVANCED_STATS_V2,
FEATURE_PRIORITY_SUPPORT_V2,
],
},
};

Expand Down
Loading