woocommerce/plugins/woocommerce-admin/src/Features/Marketing.php

291 lines
7.2 KiB
PHP
Raw Normal View History

Marketing Tab MVP (https://github.com/woocommerce/woocommerce-admin/pull/3953) * Add Marketing feature flag * Add marketing page and menu item * Register marketing page with layout controller * Add initial marketing cards * Add max-width to marketing overview page * Add initial marketing WelcomeCard component * Make marketing welcome card permanently dismiss * Add a readme for the marketing page components * Record tracks event when marketing welcome dismissed * Match design width * Add welcome image and initial styles * Use gridicon for close button * Fix whitespace * Add PluginsHelper::get_plugin_data() * Add initial Marketing\InstalledExtensions class * Preload installed marketing extensions data * Tweak extension statuses * Add InstalledExtensionRow component * Add initial extension data to InstalledExtensions card * Refactor PluginsHelper::get_plugin_data method Using the new get_plugin_path_from_slug method * Ensure get_plugins() function is available for PluginsHelper * Simplify using PluginsHelper method * Add MailChimp configured status logic * Add links to InstalledExtensionRow component * Add key prop to extensions list * Setup styles for InstalledExtensions card * Display nothing if no installed extensions * Add InstalledExtensions::get_allowed_plugins() * Setup Marketing Overview API controller * Add /activate-plugin marketing endpoint * Add more extensions URL props * Add Facebook extension configured status logic * Update Facebook extension URL props * Fix extenion data logic * Move component into it’s own directory * Setup /marketing/overview/recommended endpoint * Initial marketing page card header styles * Add basic extension data to RecommendedExtensions * Use color as variable * Tweak card header padding for design * Add basic styling to RecommendedExtensions card * settingsUrl is not available if the plugin is not active * Add /marketing/overview/installed-plugins REST endpoint * Add basic activation functionality to InstalledExtensions component * Don’t throw error on success * Add MVP data store for installed extensions card * Add core dark blue color variable * Add styles for installed extensions card * Move knowledge-base component to its own directory * Pull recommended marketing plugins from remote test site * Hide description when configured As per design * Tweak colors based on design * Finish off styling for RecommendedExtensions * Limit recommended extensions to 6 items * Add error handling to RecommendedExtensions card * Rename ‘copy’ extension prop * Add marketing button component to match design * Create ProductIcon component for marketing * Add InstalledExtension icons * Fix icon image paths * Add ProductIcon to InstallExtensionRow * Final styling to installed extensions card row * Knowledge base card placeholders * Fix missing icons when plugin not activated * Remove logging * Tweak array structure to ensure we have an array in JS and not an object * Refactor KnowledgeBase marketing component - We don’t need loop through every post when rendering, just pick the posts we need - Remove unused classes * Move padding from each slide to the container * Improve slider animations by absolute positioning the slides * Reduce the slider animation timeout and add a note * Add in-app purchase flow url params for recommended extensions * Fix slider animation * Reset slider height on window resize * Short slider animation, fix double margin on smaller screens * Add initial marketing/knowledge-base endpoint * Pull knowledge base posts from API * Rename welcome card dismiss tracks event * Record event on recommended product click * Recond onclick events for installed extensions card * Record event when carousel navigation clicked * img elements must have an alt prop * Remove import that is never used * use camelCase * Decode HTML entities from API call * Remove unused container div * Add card loading state * Add images to knowledge base card * Link knowledge base posts * Use the Pagination component rather than duplicate it’s functionality * Clean up and rename knowledge base slider * Clean knowledge base CSS and update responsive styles for single post slide * Add a README for button component * Add README for product icon component * Add initial readme for Slider component * Add correct image sizes to knowledge base slider, finalize styles * Fix extension link urls * Resolve some code formatting issue * Bind class click methods to this * Wrap nodes in Fragment * Fix wccom-back path * Add placeholder author and gravatar Default avatar url size returned from the API is currently set to 96 so I’ve done a simple replace with 16 * Fix style-lint expected new line * Add docblock for get_knowledge_base_posts() * Setup data store for marketing to handle installedExtensions card * Fix function names “Activating” not “installing” * Move welcome card component to its own dir * IconButton component is going to be deprecated ref: https://github.com/WordPress/gutenberg/pull/19299 * Support multiple activating plugins in the data store * Rename extension to plugin for consistency * Add propTypes to component * Rename data-store/ to data/ * Fix import paths * Extract isActivatingPlugin logic into datastore * Move data store selectors into own file * POST requests are not cached * Export apiFetch action * Don’t wrap API response in object * Implement data store for recommended extensions * Implement data store for marketing knowledge base * Tidy getRecommendedPlugins resolver * Try a cross browser cover/crop image effect to fit proposed design And help fit longer titles in * Add caught errors to handler * Adjust positioning so watermater is displayed * InstalledExtensions phpcs fixes * Marketing phpcs fixes * Alignment fix * MarketingOverview phpcs fixes * Missing full stop * Update breadcrumbs to use new approach * Fix style lint issues * Record `marketing_knowledge_article` track event on knowledge base post click * Import apiFetch and controls from @wordpress/data-controls * Hex color to lowercase * Remove duplicate method after rebase * Use new showPageArrowsLabel rather than hide with CSS * Fix blurry avatars on hidpi displays * Hide avatar if URL is falsy * Replace test author data with live data * Combine conditionals into ternary * Combine conditionals into ternary * Simplify class column logic * Only preload option and component settings in the admin * Fix isActivatingPlugin not updating Component was not re-rendeding. * Use querySelector over getElementsByClassName * Hide Marketing Welcome Card immediately on click * Use create-a-ticket url for supportUrl and make that the default * Add getInstalledPlugins resolver with preloaded data * Revert "Add getInstalledPlugins resolver with preloaded data" This reverts commit b8b127ec6411bef15616576b3bb189dc31777c13. * Load plugin data in a separate request after activation * Update welcome image * Don’t return plugin data in the activation request. * A space is required before closing bracket * Update Jest config to gracefully handle static assets Ref: https://jestjs.io/docs/en/webpack#handling-static-assets * Remove unused onExit property * Remove placeholder README * Use prop directly * yield createNotice * Add note to indicate which Category * Increase transient time to 3 days * Use $gap-small * Add proptype * Add debounce to slider height resize listener * Clean up isLoading logic * Dont show image elements if image data is empty * Open knowledge base posts in a new window * Add “noreferrer” * Turn the tab on in all env Co-authored-by: Daniel Bitzer <danielbitzer@gmail.com>
2020-03-28 13:48:27 +00:00
<?php
/**
* WooCommerce Marketing.
* NOTE: DO NOT edit this file in WooCommerce core, this is generated from woocommerce-admin.
*/
namespace Automattic\WooCommerce\Admin\Features;
use Automattic\WooCommerce\Admin\Marketing\InstalledExtensions;
use Automattic\WooCommerce\Admin\Loader;
Add Coupon feature (https://github.com/woocommerce/woocommerce-admin/pull/4526) * Handle new object for posts and recommendations * Set breadcrumb parent for woocommerce-coupons to be woocommerce-marketing * Add main coupon wrapping component * Render coupon wrapper element below coupon table using wp-admin-scripts * Finish off implementing category param for data store resolvers * Create a helper trait for legacy coupons * Add coupon related titles and descriptions * Add note for the coupons being moved * Allow for querying by note name in the notes Data Store * Revamp coupon moved trait * Add the new note only if we don't have an unactioned note and perform a redirect to ensure menu updates * set_icon is deprecated * Move coupon menu, adding a note for customers * Translate title and descriptions * Whitespace * Account for coupon functionality being disabled * Hide legacy menu before redirect * Don’t keep adding the note if customer dismisses it from inbox * Move behind feature flag * Add note if feature enabled * Add filter to override coupon feature * Tweak option name to refer to wc_admin To help with finding etc. * use css variables * Add the new note only if we don't have an unactioned note * Switch the filter logic so `false` turns off the feature This is a bit more intuitive when utilizing the filter * Remove extraneous string and add trailing new lines * Use correct posts object in tests * Revert accidental removal of where_types * Add coupons category to RecommendedExtensions * Use 1.1 api to get categorized recommendations * Add missing text domains * Fix menu handling to point to woocommerce-marketing * Only load coupon scripts on the coupon page * Rework marketing menu logic to register pages more properly * Use correct wc-admin path for marketing page * Remove separate feature flag WC Admin has existing feature flags to load enable/disable the feature * Only set the coupon parent to marketing when the feature is enabled * Only load coupon feature if marketing feature is enabled Co-authored-by: Dan Bitzer <danielbitzer@gmail.com> Co-authored-by: Jeremy Pry <jeremy.pry@gmail.com>
2020-06-16 02:30:41 +00:00
use Automattic\WooCommerce\Admin\PageController;
Marketing Tab MVP (https://github.com/woocommerce/woocommerce-admin/pull/3953) * Add Marketing feature flag * Add marketing page and menu item * Register marketing page with layout controller * Add initial marketing cards * Add max-width to marketing overview page * Add initial marketing WelcomeCard component * Make marketing welcome card permanently dismiss * Add a readme for the marketing page components * Record tracks event when marketing welcome dismissed * Match design width * Add welcome image and initial styles * Use gridicon for close button * Fix whitespace * Add PluginsHelper::get_plugin_data() * Add initial Marketing\InstalledExtensions class * Preload installed marketing extensions data * Tweak extension statuses * Add InstalledExtensionRow component * Add initial extension data to InstalledExtensions card * Refactor PluginsHelper::get_plugin_data method Using the new get_plugin_path_from_slug method * Ensure get_plugins() function is available for PluginsHelper * Simplify using PluginsHelper method * Add MailChimp configured status logic * Add links to InstalledExtensionRow component * Add key prop to extensions list * Setup styles for InstalledExtensions card * Display nothing if no installed extensions * Add InstalledExtensions::get_allowed_plugins() * Setup Marketing Overview API controller * Add /activate-plugin marketing endpoint * Add more extensions URL props * Add Facebook extension configured status logic * Update Facebook extension URL props * Fix extenion data logic * Move component into it’s own directory * Setup /marketing/overview/recommended endpoint * Initial marketing page card header styles * Add basic extension data to RecommendedExtensions * Use color as variable * Tweak card header padding for design * Add basic styling to RecommendedExtensions card * settingsUrl is not available if the plugin is not active * Add /marketing/overview/installed-plugins REST endpoint * Add basic activation functionality to InstalledExtensions component * Don’t throw error on success * Add MVP data store for installed extensions card * Add core dark blue color variable * Add styles for installed extensions card * Move knowledge-base component to its own directory * Pull recommended marketing plugins from remote test site * Hide description when configured As per design * Tweak colors based on design * Finish off styling for RecommendedExtensions * Limit recommended extensions to 6 items * Add error handling to RecommendedExtensions card * Rename ‘copy’ extension prop * Add marketing button component to match design * Create ProductIcon component for marketing * Add InstalledExtension icons * Fix icon image paths * Add ProductIcon to InstallExtensionRow * Final styling to installed extensions card row * Knowledge base card placeholders * Fix missing icons when plugin not activated * Remove logging * Tweak array structure to ensure we have an array in JS and not an object * Refactor KnowledgeBase marketing component - We don’t need loop through every post when rendering, just pick the posts we need - Remove unused classes * Move padding from each slide to the container * Improve slider animations by absolute positioning the slides * Reduce the slider animation timeout and add a note * Add in-app purchase flow url params for recommended extensions * Fix slider animation * Reset slider height on window resize * Short slider animation, fix double margin on smaller screens * Add initial marketing/knowledge-base endpoint * Pull knowledge base posts from API * Rename welcome card dismiss tracks event * Record event on recommended product click * Recond onclick events for installed extensions card * Record event when carousel navigation clicked * img elements must have an alt prop * Remove import that is never used * use camelCase * Decode HTML entities from API call * Remove unused container div * Add card loading state * Add images to knowledge base card * Link knowledge base posts * Use the Pagination component rather than duplicate it’s functionality * Clean up and rename knowledge base slider * Clean knowledge base CSS and update responsive styles for single post slide * Add a README for button component * Add README for product icon component * Add initial readme for Slider component * Add correct image sizes to knowledge base slider, finalize styles * Fix extension link urls * Resolve some code formatting issue * Bind class click methods to this * Wrap nodes in Fragment * Fix wccom-back path * Add placeholder author and gravatar Default avatar url size returned from the API is currently set to 96 so I’ve done a simple replace with 16 * Fix style-lint expected new line * Add docblock for get_knowledge_base_posts() * Setup data store for marketing to handle installedExtensions card * Fix function names “Activating” not “installing” * Move welcome card component to its own dir * IconButton component is going to be deprecated ref: https://github.com/WordPress/gutenberg/pull/19299 * Support multiple activating plugins in the data store * Rename extension to plugin for consistency * Add propTypes to component * Rename data-store/ to data/ * Fix import paths * Extract isActivatingPlugin logic into datastore * Move data store selectors into own file * POST requests are not cached * Export apiFetch action * Don’t wrap API response in object * Implement data store for recommended extensions * Implement data store for marketing knowledge base * Tidy getRecommendedPlugins resolver * Try a cross browser cover/crop image effect to fit proposed design And help fit longer titles in * Add caught errors to handler * Adjust positioning so watermater is displayed * InstalledExtensions phpcs fixes * Marketing phpcs fixes * Alignment fix * MarketingOverview phpcs fixes * Missing full stop * Update breadcrumbs to use new approach * Fix style lint issues * Record `marketing_knowledge_article` track event on knowledge base post click * Import apiFetch and controls from @wordpress/data-controls * Hex color to lowercase * Remove duplicate method after rebase * Use new showPageArrowsLabel rather than hide with CSS * Fix blurry avatars on hidpi displays * Hide avatar if URL is falsy * Replace test author data with live data * Combine conditionals into ternary * Combine conditionals into ternary * Simplify class column logic * Only preload option and component settings in the admin * Fix isActivatingPlugin not updating Component was not re-rendeding. * Use querySelector over getElementsByClassName * Hide Marketing Welcome Card immediately on click * Use create-a-ticket url for supportUrl and make that the default * Add getInstalledPlugins resolver with preloaded data * Revert "Add getInstalledPlugins resolver with preloaded data" This reverts commit b8b127ec6411bef15616576b3bb189dc31777c13. * Load plugin data in a separate request after activation * Update welcome image * Don’t return plugin data in the activation request. * A space is required before closing bracket * Update Jest config to gracefully handle static assets Ref: https://jestjs.io/docs/en/webpack#handling-static-assets * Remove unused onExit property * Remove placeholder README * Use prop directly * yield createNotice * Add note to indicate which Category * Increase transient time to 3 days * Use $gap-small * Add proptype * Add debounce to slider height resize listener * Clean up isLoading logic * Dont show image elements if image data is empty * Open knowledge base posts in a new window * Add “noreferrer” * Turn the tab on in all env Co-authored-by: Daniel Bitzer <danielbitzer@gmail.com>
2020-03-28 13:48:27 +00:00
/**
* Contains backend logic for the Marketing feature.
*/
class Marketing {
Add Coupon feature (https://github.com/woocommerce/woocommerce-admin/pull/4526) * Handle new object for posts and recommendations * Set breadcrumb parent for woocommerce-coupons to be woocommerce-marketing * Add main coupon wrapping component * Render coupon wrapper element below coupon table using wp-admin-scripts * Finish off implementing category param for data store resolvers * Create a helper trait for legacy coupons * Add coupon related titles and descriptions * Add note for the coupons being moved * Allow for querying by note name in the notes Data Store * Revamp coupon moved trait * Add the new note only if we don't have an unactioned note and perform a redirect to ensure menu updates * set_icon is deprecated * Move coupon menu, adding a note for customers * Translate title and descriptions * Whitespace * Account for coupon functionality being disabled * Hide legacy menu before redirect * Don’t keep adding the note if customer dismisses it from inbox * Move behind feature flag * Add note if feature enabled * Add filter to override coupon feature * Tweak option name to refer to wc_admin To help with finding etc. * use css variables * Add the new note only if we don't have an unactioned note * Switch the filter logic so `false` turns off the feature This is a bit more intuitive when utilizing the filter * Remove extraneous string and add trailing new lines * Use correct posts object in tests * Revert accidental removal of where_types * Add coupons category to RecommendedExtensions * Use 1.1 api to get categorized recommendations * Add missing text domains * Fix menu handling to point to woocommerce-marketing * Only load coupon scripts on the coupon page * Rework marketing menu logic to register pages more properly * Use correct wc-admin path for marketing page * Remove separate feature flag WC Admin has existing feature flags to load enable/disable the feature * Only set the coupon parent to marketing when the feature is enabled * Only load coupon feature if marketing feature is enabled Co-authored-by: Dan Bitzer <danielbitzer@gmail.com> Co-authored-by: Jeremy Pry <jeremy.pry@gmail.com>
2020-06-16 02:30:41 +00:00
use CouponsMovedTrait;
Marketing Tab MVP (https://github.com/woocommerce/woocommerce-admin/pull/3953) * Add Marketing feature flag * Add marketing page and menu item * Register marketing page with layout controller * Add initial marketing cards * Add max-width to marketing overview page * Add initial marketing WelcomeCard component * Make marketing welcome card permanently dismiss * Add a readme for the marketing page components * Record tracks event when marketing welcome dismissed * Match design width * Add welcome image and initial styles * Use gridicon for close button * Fix whitespace * Add PluginsHelper::get_plugin_data() * Add initial Marketing\InstalledExtensions class * Preload installed marketing extensions data * Tweak extension statuses * Add InstalledExtensionRow component * Add initial extension data to InstalledExtensions card * Refactor PluginsHelper::get_plugin_data method Using the new get_plugin_path_from_slug method * Ensure get_plugins() function is available for PluginsHelper * Simplify using PluginsHelper method * Add MailChimp configured status logic * Add links to InstalledExtensionRow component * Add key prop to extensions list * Setup styles for InstalledExtensions card * Display nothing if no installed extensions * Add InstalledExtensions::get_allowed_plugins() * Setup Marketing Overview API controller * Add /activate-plugin marketing endpoint * Add more extensions URL props * Add Facebook extension configured status logic * Update Facebook extension URL props * Fix extenion data logic * Move component into it’s own directory * Setup /marketing/overview/recommended endpoint * Initial marketing page card header styles * Add basic extension data to RecommendedExtensions * Use color as variable * Tweak card header padding for design * Add basic styling to RecommendedExtensions card * settingsUrl is not available if the plugin is not active * Add /marketing/overview/installed-plugins REST endpoint * Add basic activation functionality to InstalledExtensions component * Don’t throw error on success * Add MVP data store for installed extensions card * Add core dark blue color variable * Add styles for installed extensions card * Move knowledge-base component to its own directory * Pull recommended marketing plugins from remote test site * Hide description when configured As per design * Tweak colors based on design * Finish off styling for RecommendedExtensions * Limit recommended extensions to 6 items * Add error handling to RecommendedExtensions card * Rename ‘copy’ extension prop * Add marketing button component to match design * Create ProductIcon component for marketing * Add InstalledExtension icons * Fix icon image paths * Add ProductIcon to InstallExtensionRow * Final styling to installed extensions card row * Knowledge base card placeholders * Fix missing icons when plugin not activated * Remove logging * Tweak array structure to ensure we have an array in JS and not an object * Refactor KnowledgeBase marketing component - We don’t need loop through every post when rendering, just pick the posts we need - Remove unused classes * Move padding from each slide to the container * Improve slider animations by absolute positioning the slides * Reduce the slider animation timeout and add a note * Add in-app purchase flow url params for recommended extensions * Fix slider animation * Reset slider height on window resize * Short slider animation, fix double margin on smaller screens * Add initial marketing/knowledge-base endpoint * Pull knowledge base posts from API * Rename welcome card dismiss tracks event * Record event on recommended product click * Recond onclick events for installed extensions card * Record event when carousel navigation clicked * img elements must have an alt prop * Remove import that is never used * use camelCase * Decode HTML entities from API call * Remove unused container div * Add card loading state * Add images to knowledge base card * Link knowledge base posts * Use the Pagination component rather than duplicate it’s functionality * Clean up and rename knowledge base slider * Clean knowledge base CSS and update responsive styles for single post slide * Add a README for button component * Add README for product icon component * Add initial readme for Slider component * Add correct image sizes to knowledge base slider, finalize styles * Fix extension link urls * Resolve some code formatting issue * Bind class click methods to this * Wrap nodes in Fragment * Fix wccom-back path * Add placeholder author and gravatar Default avatar url size returned from the API is currently set to 96 so I’ve done a simple replace with 16 * Fix style-lint expected new line * Add docblock for get_knowledge_base_posts() * Setup data store for marketing to handle installedExtensions card * Fix function names “Activating” not “installing” * Move welcome card component to its own dir * IconButton component is going to be deprecated ref: https://github.com/WordPress/gutenberg/pull/19299 * Support multiple activating plugins in the data store * Rename extension to plugin for consistency * Add propTypes to component * Rename data-store/ to data/ * Fix import paths * Extract isActivatingPlugin logic into datastore * Move data store selectors into own file * POST requests are not cached * Export apiFetch action * Don’t wrap API response in object * Implement data store for recommended extensions * Implement data store for marketing knowledge base * Tidy getRecommendedPlugins resolver * Try a cross browser cover/crop image effect to fit proposed design And help fit longer titles in * Add caught errors to handler * Adjust positioning so watermater is displayed * InstalledExtensions phpcs fixes * Marketing phpcs fixes * Alignment fix * MarketingOverview phpcs fixes * Missing full stop * Update breadcrumbs to use new approach * Fix style lint issues * Record `marketing_knowledge_article` track event on knowledge base post click * Import apiFetch and controls from @wordpress/data-controls * Hex color to lowercase * Remove duplicate method after rebase * Use new showPageArrowsLabel rather than hide with CSS * Fix blurry avatars on hidpi displays * Hide avatar if URL is falsy * Replace test author data with live data * Combine conditionals into ternary * Combine conditionals into ternary * Simplify class column logic * Only preload option and component settings in the admin * Fix isActivatingPlugin not updating Component was not re-rendeding. * Use querySelector over getElementsByClassName * Hide Marketing Welcome Card immediately on click * Use create-a-ticket url for supportUrl and make that the default * Add getInstalledPlugins resolver with preloaded data * Revert "Add getInstalledPlugins resolver with preloaded data" This reverts commit b8b127ec6411bef15616576b3bb189dc31777c13. * Load plugin data in a separate request after activation * Update welcome image * Don’t return plugin data in the activation request. * A space is required before closing bracket * Update Jest config to gracefully handle static assets Ref: https://jestjs.io/docs/en/webpack#handling-static-assets * Remove unused onExit property * Remove placeholder README * Use prop directly * yield createNotice * Add note to indicate which Category * Increase transient time to 3 days * Use $gap-small * Add proptype * Add debounce to slider height resize listener * Clean up isLoading logic * Dont show image elements if image data is empty * Open knowledge base posts in a new window * Add “noreferrer” * Turn the tab on in all env Co-authored-by: Daniel Bitzer <danielbitzer@gmail.com>
2020-03-28 13:48:27 +00:00
/**
* Name of recommended plugins transient.
*
* @var string
*/
const RECOMMENDED_PLUGINS_TRANSIENT = 'wc_marketing_recommended_plugins';
/**
* Name of knowledge base post transient.
*
* @var string
*/
const KNOWLEDGE_BASE_TRANSIENT = 'wc_marketing_knowledge_base';
/**
* Class instance.
*
* @var Marketing instance
*/
protected static $instance = null;
/**
* Get class instance.
*/
public static function get_instance() {
if ( ! self::$instance ) {
self::$instance = new self();
}
return self::$instance;
}
/**
* Hook into WooCommerce.
*/
public function __construct() {
if ( ! is_admin() ) {
return;
}
Add Coupon feature (https://github.com/woocommerce/woocommerce-admin/pull/4526) * Handle new object for posts and recommendations * Set breadcrumb parent for woocommerce-coupons to be woocommerce-marketing * Add main coupon wrapping component * Render coupon wrapper element below coupon table using wp-admin-scripts * Finish off implementing category param for data store resolvers * Create a helper trait for legacy coupons * Add coupon related titles and descriptions * Add note for the coupons being moved * Allow for querying by note name in the notes Data Store * Revamp coupon moved trait * Add the new note only if we don't have an unactioned note and perform a redirect to ensure menu updates * set_icon is deprecated * Move coupon menu, adding a note for customers * Translate title and descriptions * Whitespace * Account for coupon functionality being disabled * Hide legacy menu before redirect * Don’t keep adding the note if customer dismisses it from inbox * Move behind feature flag * Add note if feature enabled * Add filter to override coupon feature * Tweak option name to refer to wc_admin To help with finding etc. * use css variables * Add the new note only if we don't have an unactioned note * Switch the filter logic so `false` turns off the feature This is a bit more intuitive when utilizing the filter * Remove extraneous string and add trailing new lines * Use correct posts object in tests * Revert accidental removal of where_types * Add coupons category to RecommendedExtensions * Use 1.1 api to get categorized recommendations * Add missing text domains * Fix menu handling to point to woocommerce-marketing * Only load coupon scripts on the coupon page * Rework marketing menu logic to register pages more properly * Use correct wc-admin path for marketing page * Remove separate feature flag WC Admin has existing feature flags to load enable/disable the feature * Only set the coupon parent to marketing when the feature is enabled * Only load coupon feature if marketing feature is enabled Co-authored-by: Dan Bitzer <danielbitzer@gmail.com> Co-authored-by: Jeremy Pry <jeremy.pry@gmail.com>
2020-06-16 02:30:41 +00:00
add_action( 'admin_menu', array( $this, 'register_pages' ), 5 );
add_action( 'admin_menu', array( $this, 'add_parent_menu_item' ), 6 );
Marketing Tab MVP (https://github.com/woocommerce/woocommerce-admin/pull/3953) * Add Marketing feature flag * Add marketing page and menu item * Register marketing page with layout controller * Add initial marketing cards * Add max-width to marketing overview page * Add initial marketing WelcomeCard component * Make marketing welcome card permanently dismiss * Add a readme for the marketing page components * Record tracks event when marketing welcome dismissed * Match design width * Add welcome image and initial styles * Use gridicon for close button * Fix whitespace * Add PluginsHelper::get_plugin_data() * Add initial Marketing\InstalledExtensions class * Preload installed marketing extensions data * Tweak extension statuses * Add InstalledExtensionRow component * Add initial extension data to InstalledExtensions card * Refactor PluginsHelper::get_plugin_data method Using the new get_plugin_path_from_slug method * Ensure get_plugins() function is available for PluginsHelper * Simplify using PluginsHelper method * Add MailChimp configured status logic * Add links to InstalledExtensionRow component * Add key prop to extensions list * Setup styles for InstalledExtensions card * Display nothing if no installed extensions * Add InstalledExtensions::get_allowed_plugins() * Setup Marketing Overview API controller * Add /activate-plugin marketing endpoint * Add more extensions URL props * Add Facebook extension configured status logic * Update Facebook extension URL props * Fix extenion data logic * Move component into it’s own directory * Setup /marketing/overview/recommended endpoint * Initial marketing page card header styles * Add basic extension data to RecommendedExtensions * Use color as variable * Tweak card header padding for design * Add basic styling to RecommendedExtensions card * settingsUrl is not available if the plugin is not active * Add /marketing/overview/installed-plugins REST endpoint * Add basic activation functionality to InstalledExtensions component * Don’t throw error on success * Add MVP data store for installed extensions card * Add core dark blue color variable * Add styles for installed extensions card * Move knowledge-base component to its own directory * Pull recommended marketing plugins from remote test site * Hide description when configured As per design * Tweak colors based on design * Finish off styling for RecommendedExtensions * Limit recommended extensions to 6 items * Add error handling to RecommendedExtensions card * Rename ‘copy’ extension prop * Add marketing button component to match design * Create ProductIcon component for marketing * Add InstalledExtension icons * Fix icon image paths * Add ProductIcon to InstallExtensionRow * Final styling to installed extensions card row * Knowledge base card placeholders * Fix missing icons when plugin not activated * Remove logging * Tweak array structure to ensure we have an array in JS and not an object * Refactor KnowledgeBase marketing component - We don’t need loop through every post when rendering, just pick the posts we need - Remove unused classes * Move padding from each slide to the container * Improve slider animations by absolute positioning the slides * Reduce the slider animation timeout and add a note * Add in-app purchase flow url params for recommended extensions * Fix slider animation * Reset slider height on window resize * Short slider animation, fix double margin on smaller screens * Add initial marketing/knowledge-base endpoint * Pull knowledge base posts from API * Rename welcome card dismiss tracks event * Record event on recommended product click * Recond onclick events for installed extensions card * Record event when carousel navigation clicked * img elements must have an alt prop * Remove import that is never used * use camelCase * Decode HTML entities from API call * Remove unused container div * Add card loading state * Add images to knowledge base card * Link knowledge base posts * Use the Pagination component rather than duplicate it’s functionality * Clean up and rename knowledge base slider * Clean knowledge base CSS and update responsive styles for single post slide * Add a README for button component * Add README for product icon component * Add initial readme for Slider component * Add correct image sizes to knowledge base slider, finalize styles * Fix extension link urls * Resolve some code formatting issue * Bind class click methods to this * Wrap nodes in Fragment * Fix wccom-back path * Add placeholder author and gravatar Default avatar url size returned from the API is currently set to 96 so I’ve done a simple replace with 16 * Fix style-lint expected new line * Add docblock for get_knowledge_base_posts() * Setup data store for marketing to handle installedExtensions card * Fix function names “Activating” not “installing” * Move welcome card component to its own dir * IconButton component is going to be deprecated ref: https://github.com/WordPress/gutenberg/pull/19299 * Support multiple activating plugins in the data store * Rename extension to plugin for consistency * Add propTypes to component * Rename data-store/ to data/ * Fix import paths * Extract isActivatingPlugin logic into datastore * Move data store selectors into own file * POST requests are not cached * Export apiFetch action * Don’t wrap API response in object * Implement data store for recommended extensions * Implement data store for marketing knowledge base * Tidy getRecommendedPlugins resolver * Try a cross browser cover/crop image effect to fit proposed design And help fit longer titles in * Add caught errors to handler * Adjust positioning so watermater is displayed * InstalledExtensions phpcs fixes * Marketing phpcs fixes * Alignment fix * MarketingOverview phpcs fixes * Missing full stop * Update breadcrumbs to use new approach * Fix style lint issues * Record `marketing_knowledge_article` track event on knowledge base post click * Import apiFetch and controls from @wordpress/data-controls * Hex color to lowercase * Remove duplicate method after rebase * Use new showPageArrowsLabel rather than hide with CSS * Fix blurry avatars on hidpi displays * Hide avatar if URL is falsy * Replace test author data with live data * Combine conditionals into ternary * Combine conditionals into ternary * Simplify class column logic * Only preload option and component settings in the admin * Fix isActivatingPlugin not updating Component was not re-rendeding. * Use querySelector over getElementsByClassName * Hide Marketing Welcome Card immediately on click * Use create-a-ticket url for supportUrl and make that the default * Add getInstalledPlugins resolver with preloaded data * Revert "Add getInstalledPlugins resolver with preloaded data" This reverts commit b8b127ec6411bef15616576b3bb189dc31777c13. * Load plugin data in a separate request after activation * Update welcome image * Don’t return plugin data in the activation request. * A space is required before closing bracket * Update Jest config to gracefully handle static assets Ref: https://jestjs.io/docs/en/webpack#handling-static-assets * Remove unused onExit property * Remove placeholder README * Use prop directly * yield createNotice * Add note to indicate which Category * Increase transient time to 3 days * Use $gap-small * Add proptype * Add debounce to slider height resize listener * Clean up isLoading logic * Dont show image elements if image data is empty * Open knowledge base posts in a new window * Add “noreferrer” * Turn the tab on in all env Co-authored-by: Daniel Bitzer <danielbitzer@gmail.com>
2020-03-28 13:48:27 +00:00
add_filter( 'woocommerce_admin_preload_options', array( $this, 'preload_options' ) );
add_filter( 'woocommerce_shared_settings', array( $this, 'component_settings' ), 30 );
}
/**
* Add main marketing menu item.
*
* Uses priority of 9 so other items can easily be added at the default priority (10).
*/
public function add_parent_menu_item() {
if ( ! Loader::is_feature_enabled( 'navigation' ) ) {
add_menu_page(
__( 'Marketing', 'woocommerce-admin' ),
__( 'Marketing', 'woocommerce-admin' ),
'manage_woocommerce',
'woocommerce-marketing',
null,
'dashicons-megaphone',
58
);
}
Add Coupon feature (https://github.com/woocommerce/woocommerce-admin/pull/4526) * Handle new object for posts and recommendations * Set breadcrumb parent for woocommerce-coupons to be woocommerce-marketing * Add main coupon wrapping component * Render coupon wrapper element below coupon table using wp-admin-scripts * Finish off implementing category param for data store resolvers * Create a helper trait for legacy coupons * Add coupon related titles and descriptions * Add note for the coupons being moved * Allow for querying by note name in the notes Data Store * Revamp coupon moved trait * Add the new note only if we don't have an unactioned note and perform a redirect to ensure menu updates * set_icon is deprecated * Move coupon menu, adding a note for customers * Translate title and descriptions * Whitespace * Account for coupon functionality being disabled * Hide legacy menu before redirect * Don’t keep adding the note if customer dismisses it from inbox * Move behind feature flag * Add note if feature enabled * Add filter to override coupon feature * Tweak option name to refer to wc_admin To help with finding etc. * use css variables * Add the new note only if we don't have an unactioned note * Switch the filter logic so `false` turns off the feature This is a bit more intuitive when utilizing the filter * Remove extraneous string and add trailing new lines * Use correct posts object in tests * Revert accidental removal of where_types * Add coupons category to RecommendedExtensions * Use 1.1 api to get categorized recommendations * Add missing text domains * Fix menu handling to point to woocommerce-marketing * Only load coupon scripts on the coupon page * Rework marketing menu logic to register pages more properly * Use correct wc-admin path for marketing page * Remove separate feature flag WC Admin has existing feature flags to load enable/disable the feature * Only set the coupon parent to marketing when the feature is enabled * Only load coupon feature if marketing feature is enabled Co-authored-by: Dan Bitzer <danielbitzer@gmail.com> Co-authored-by: Jeremy Pry <jeremy.pry@gmail.com>
2020-06-16 02:30:41 +00:00
PageController::get_instance()->connect_page(
[
'id' => 'woocommerce-marketing',
'title' => 'Marketing',
'capability' => 'manage_woocommerce',
'path' => 'wc-admin&path=/marketing',
]
);
}
Marketing Tab MVP (https://github.com/woocommerce/woocommerce-admin/pull/3953) * Add Marketing feature flag * Add marketing page and menu item * Register marketing page with layout controller * Add initial marketing cards * Add max-width to marketing overview page * Add initial marketing WelcomeCard component * Make marketing welcome card permanently dismiss * Add a readme for the marketing page components * Record tracks event when marketing welcome dismissed * Match design width * Add welcome image and initial styles * Use gridicon for close button * Fix whitespace * Add PluginsHelper::get_plugin_data() * Add initial Marketing\InstalledExtensions class * Preload installed marketing extensions data * Tweak extension statuses * Add InstalledExtensionRow component * Add initial extension data to InstalledExtensions card * Refactor PluginsHelper::get_plugin_data method Using the new get_plugin_path_from_slug method * Ensure get_plugins() function is available for PluginsHelper * Simplify using PluginsHelper method * Add MailChimp configured status logic * Add links to InstalledExtensionRow component * Add key prop to extensions list * Setup styles for InstalledExtensions card * Display nothing if no installed extensions * Add InstalledExtensions::get_allowed_plugins() * Setup Marketing Overview API controller * Add /activate-plugin marketing endpoint * Add more extensions URL props * Add Facebook extension configured status logic * Update Facebook extension URL props * Fix extenion data logic * Move component into it’s own directory * Setup /marketing/overview/recommended endpoint * Initial marketing page card header styles * Add basic extension data to RecommendedExtensions * Use color as variable * Tweak card header padding for design * Add basic styling to RecommendedExtensions card * settingsUrl is not available if the plugin is not active * Add /marketing/overview/installed-plugins REST endpoint * Add basic activation functionality to InstalledExtensions component * Don’t throw error on success * Add MVP data store for installed extensions card * Add core dark blue color variable * Add styles for installed extensions card * Move knowledge-base component to its own directory * Pull recommended marketing plugins from remote test site * Hide description when configured As per design * Tweak colors based on design * Finish off styling for RecommendedExtensions * Limit recommended extensions to 6 items * Add error handling to RecommendedExtensions card * Rename ‘copy’ extension prop * Add marketing button component to match design * Create ProductIcon component for marketing * Add InstalledExtension icons * Fix icon image paths * Add ProductIcon to InstallExtensionRow * Final styling to installed extensions card row * Knowledge base card placeholders * Fix missing icons when plugin not activated * Remove logging * Tweak array structure to ensure we have an array in JS and not an object * Refactor KnowledgeBase marketing component - We don’t need loop through every post when rendering, just pick the posts we need - Remove unused classes * Move padding from each slide to the container * Improve slider animations by absolute positioning the slides * Reduce the slider animation timeout and add a note * Add in-app purchase flow url params for recommended extensions * Fix slider animation * Reset slider height on window resize * Short slider animation, fix double margin on smaller screens * Add initial marketing/knowledge-base endpoint * Pull knowledge base posts from API * Rename welcome card dismiss tracks event * Record event on recommended product click * Recond onclick events for installed extensions card * Record event when carousel navigation clicked * img elements must have an alt prop * Remove import that is never used * use camelCase * Decode HTML entities from API call * Remove unused container div * Add card loading state * Add images to knowledge base card * Link knowledge base posts * Use the Pagination component rather than duplicate it’s functionality * Clean up and rename knowledge base slider * Clean knowledge base CSS and update responsive styles for single post slide * Add a README for button component * Add README for product icon component * Add initial readme for Slider component * Add correct image sizes to knowledge base slider, finalize styles * Fix extension link urls * Resolve some code formatting issue * Bind class click methods to this * Wrap nodes in Fragment * Fix wccom-back path * Add placeholder author and gravatar Default avatar url size returned from the API is currently set to 96 so I’ve done a simple replace with 16 * Fix style-lint expected new line * Add docblock for get_knowledge_base_posts() * Setup data store for marketing to handle installedExtensions card * Fix function names “Activating” not “installing” * Move welcome card component to its own dir * IconButton component is going to be deprecated ref: https://github.com/WordPress/gutenberg/pull/19299 * Support multiple activating plugins in the data store * Rename extension to plugin for consistency * Add propTypes to component * Rename data-store/ to data/ * Fix import paths * Extract isActivatingPlugin logic into datastore * Move data store selectors into own file * POST requests are not cached * Export apiFetch action * Don’t wrap API response in object * Implement data store for recommended extensions * Implement data store for marketing knowledge base * Tidy getRecommendedPlugins resolver * Try a cross browser cover/crop image effect to fit proposed design And help fit longer titles in * Add caught errors to handler * Adjust positioning so watermater is displayed * InstalledExtensions phpcs fixes * Marketing phpcs fixes * Alignment fix * MarketingOverview phpcs fixes * Missing full stop * Update breadcrumbs to use new approach * Fix style lint issues * Record `marketing_knowledge_article` track event on knowledge base post click * Import apiFetch and controls from @wordpress/data-controls * Hex color to lowercase * Remove duplicate method after rebase * Use new showPageArrowsLabel rather than hide with CSS * Fix blurry avatars on hidpi displays * Hide avatar if URL is falsy * Replace test author data with live data * Combine conditionals into ternary * Combine conditionals into ternary * Simplify class column logic * Only preload option and component settings in the admin * Fix isActivatingPlugin not updating Component was not re-rendeding. * Use querySelector over getElementsByClassName * Hide Marketing Welcome Card immediately on click * Use create-a-ticket url for supportUrl and make that the default * Add getInstalledPlugins resolver with preloaded data * Revert "Add getInstalledPlugins resolver with preloaded data" This reverts commit b8b127ec6411bef15616576b3bb189dc31777c13. * Load plugin data in a separate request after activation * Update welcome image * Don’t return plugin data in the activation request. * A space is required before closing bracket * Update Jest config to gracefully handle static assets Ref: https://jestjs.io/docs/en/webpack#handling-static-assets * Remove unused onExit property * Remove placeholder README * Use prop directly * yield createNotice * Add note to indicate which Category * Increase transient time to 3 days * Use $gap-small * Add proptype * Add debounce to slider height resize listener * Clean up isLoading logic * Dont show image elements if image data is empty * Open knowledge base posts in a new window * Add “noreferrer” * Turn the tab on in all env Co-authored-by: Daniel Bitzer <danielbitzer@gmail.com>
2020-03-28 13:48:27 +00:00
/**
* Registers report pages.
*/
public function register_pages() {
Add Coupon feature (https://github.com/woocommerce/woocommerce-admin/pull/4526) * Handle new object for posts and recommendations * Set breadcrumb parent for woocommerce-coupons to be woocommerce-marketing * Add main coupon wrapping component * Render coupon wrapper element below coupon table using wp-admin-scripts * Finish off implementing category param for data store resolvers * Create a helper trait for legacy coupons * Add coupon related titles and descriptions * Add note for the coupons being moved * Allow for querying by note name in the notes Data Store * Revamp coupon moved trait * Add the new note only if we don't have an unactioned note and perform a redirect to ensure menu updates * set_icon is deprecated * Move coupon menu, adding a note for customers * Translate title and descriptions * Whitespace * Account for coupon functionality being disabled * Hide legacy menu before redirect * Don’t keep adding the note if customer dismisses it from inbox * Move behind feature flag * Add note if feature enabled * Add filter to override coupon feature * Tweak option name to refer to wc_admin To help with finding etc. * use css variables * Add the new note only if we don't have an unactioned note * Switch the filter logic so `false` turns off the feature This is a bit more intuitive when utilizing the filter * Remove extraneous string and add trailing new lines * Use correct posts object in tests * Revert accidental removal of where_types * Add coupons category to RecommendedExtensions * Use 1.1 api to get categorized recommendations * Add missing text domains * Fix menu handling to point to woocommerce-marketing * Only load coupon scripts on the coupon page * Rework marketing menu logic to register pages more properly * Use correct wc-admin path for marketing page * Remove separate feature flag WC Admin has existing feature flags to load enable/disable the feature * Only set the coupon parent to marketing when the feature is enabled * Only load coupon feature if marketing feature is enabled Co-authored-by: Dan Bitzer <danielbitzer@gmail.com> Co-authored-by: Jeremy Pry <jeremy.pry@gmail.com>
2020-06-16 02:30:41 +00:00
$this->register_overview_page();
Marketing Tab MVP (https://github.com/woocommerce/woocommerce-admin/pull/3953) * Add Marketing feature flag * Add marketing page and menu item * Register marketing page with layout controller * Add initial marketing cards * Add max-width to marketing overview page * Add initial marketing WelcomeCard component * Make marketing welcome card permanently dismiss * Add a readme for the marketing page components * Record tracks event when marketing welcome dismissed * Match design width * Add welcome image and initial styles * Use gridicon for close button * Fix whitespace * Add PluginsHelper::get_plugin_data() * Add initial Marketing\InstalledExtensions class * Preload installed marketing extensions data * Tweak extension statuses * Add InstalledExtensionRow component * Add initial extension data to InstalledExtensions card * Refactor PluginsHelper::get_plugin_data method Using the new get_plugin_path_from_slug method * Ensure get_plugins() function is available for PluginsHelper * Simplify using PluginsHelper method * Add MailChimp configured status logic * Add links to InstalledExtensionRow component * Add key prop to extensions list * Setup styles for InstalledExtensions card * Display nothing if no installed extensions * Add InstalledExtensions::get_allowed_plugins() * Setup Marketing Overview API controller * Add /activate-plugin marketing endpoint * Add more extensions URL props * Add Facebook extension configured status logic * Update Facebook extension URL props * Fix extenion data logic * Move component into it’s own directory * Setup /marketing/overview/recommended endpoint * Initial marketing page card header styles * Add basic extension data to RecommendedExtensions * Use color as variable * Tweak card header padding for design * Add basic styling to RecommendedExtensions card * settingsUrl is not available if the plugin is not active * Add /marketing/overview/installed-plugins REST endpoint * Add basic activation functionality to InstalledExtensions component * Don’t throw error on success * Add MVP data store for installed extensions card * Add core dark blue color variable * Add styles for installed extensions card * Move knowledge-base component to its own directory * Pull recommended marketing plugins from remote test site * Hide description when configured As per design * Tweak colors based on design * Finish off styling for RecommendedExtensions * Limit recommended extensions to 6 items * Add error handling to RecommendedExtensions card * Rename ‘copy’ extension prop * Add marketing button component to match design * Create ProductIcon component for marketing * Add InstalledExtension icons * Fix icon image paths * Add ProductIcon to InstallExtensionRow * Final styling to installed extensions card row * Knowledge base card placeholders * Fix missing icons when plugin not activated * Remove logging * Tweak array structure to ensure we have an array in JS and not an object * Refactor KnowledgeBase marketing component - We don’t need loop through every post when rendering, just pick the posts we need - Remove unused classes * Move padding from each slide to the container * Improve slider animations by absolute positioning the slides * Reduce the slider animation timeout and add a note * Add in-app purchase flow url params for recommended extensions * Fix slider animation * Reset slider height on window resize * Short slider animation, fix double margin on smaller screens * Add initial marketing/knowledge-base endpoint * Pull knowledge base posts from API * Rename welcome card dismiss tracks event * Record event on recommended product click * Recond onclick events for installed extensions card * Record event when carousel navigation clicked * img elements must have an alt prop * Remove import that is never used * use camelCase * Decode HTML entities from API call * Remove unused container div * Add card loading state * Add images to knowledge base card * Link knowledge base posts * Use the Pagination component rather than duplicate it’s functionality * Clean up and rename knowledge base slider * Clean knowledge base CSS and update responsive styles for single post slide * Add a README for button component * Add README for product icon component * Add initial readme for Slider component * Add correct image sizes to knowledge base slider, finalize styles * Fix extension link urls * Resolve some code formatting issue * Bind class click methods to this * Wrap nodes in Fragment * Fix wccom-back path * Add placeholder author and gravatar Default avatar url size returned from the API is currently set to 96 so I’ve done a simple replace with 16 * Fix style-lint expected new line * Add docblock for get_knowledge_base_posts() * Setup data store for marketing to handle installedExtensions card * Fix function names “Activating” not “installing” * Move welcome card component to its own dir * IconButton component is going to be deprecated ref: https://github.com/WordPress/gutenberg/pull/19299 * Support multiple activating plugins in the data store * Rename extension to plugin for consistency * Add propTypes to component * Rename data-store/ to data/ * Fix import paths * Extract isActivatingPlugin logic into datastore * Move data store selectors into own file * POST requests are not cached * Export apiFetch action * Don’t wrap API response in object * Implement data store for recommended extensions * Implement data store for marketing knowledge base * Tidy getRecommendedPlugins resolver * Try a cross browser cover/crop image effect to fit proposed design And help fit longer titles in * Add caught errors to handler * Adjust positioning so watermater is displayed * InstalledExtensions phpcs fixes * Marketing phpcs fixes * Alignment fix * MarketingOverview phpcs fixes * Missing full stop * Update breadcrumbs to use new approach * Fix style lint issues * Record `marketing_knowledge_article` track event on knowledge base post click * Import apiFetch and controls from @wordpress/data-controls * Hex color to lowercase * Remove duplicate method after rebase * Use new showPageArrowsLabel rather than hide with CSS * Fix blurry avatars on hidpi displays * Hide avatar if URL is falsy * Replace test author data with live data * Combine conditionals into ternary * Combine conditionals into ternary * Simplify class column logic * Only preload option and component settings in the admin * Fix isActivatingPlugin not updating Component was not re-rendeding. * Use querySelector over getElementsByClassName * Hide Marketing Welcome Card immediately on click * Use create-a-ticket url for supportUrl and make that the default * Add getInstalledPlugins resolver with preloaded data * Revert "Add getInstalledPlugins resolver with preloaded data" This reverts commit b8b127ec6411bef15616576b3bb189dc31777c13. * Load plugin data in a separate request after activation * Update welcome image * Don’t return plugin data in the activation request. * A space is required before closing bracket * Update Jest config to gracefully handle static assets Ref: https://jestjs.io/docs/en/webpack#handling-static-assets * Remove unused onExit property * Remove placeholder README * Use prop directly * yield createNotice * Add note to indicate which Category * Increase transient time to 3 days * Use $gap-small * Add proptype * Add debounce to slider height resize listener * Clean up isLoading logic * Dont show image elements if image data is empty * Open knowledge base posts in a new window * Add “noreferrer” * Turn the tab on in all env Co-authored-by: Daniel Bitzer <danielbitzer@gmail.com>
2020-03-28 13:48:27 +00:00
Add Coupon feature (https://github.com/woocommerce/woocommerce-admin/pull/4526) * Handle new object for posts and recommendations * Set breadcrumb parent for woocommerce-coupons to be woocommerce-marketing * Add main coupon wrapping component * Render coupon wrapper element below coupon table using wp-admin-scripts * Finish off implementing category param for data store resolvers * Create a helper trait for legacy coupons * Add coupon related titles and descriptions * Add note for the coupons being moved * Allow for querying by note name in the notes Data Store * Revamp coupon moved trait * Add the new note only if we don't have an unactioned note and perform a redirect to ensure menu updates * set_icon is deprecated * Move coupon menu, adding a note for customers * Translate title and descriptions * Whitespace * Account for coupon functionality being disabled * Hide legacy menu before redirect * Don’t keep adding the note if customer dismisses it from inbox * Move behind feature flag * Add note if feature enabled * Add filter to override coupon feature * Tweak option name to refer to wc_admin To help with finding etc. * use css variables * Add the new note only if we don't have an unactioned note * Switch the filter logic so `false` turns off the feature This is a bit more intuitive when utilizing the filter * Remove extraneous string and add trailing new lines * Use correct posts object in tests * Revert accidental removal of where_types * Add coupons category to RecommendedExtensions * Use 1.1 api to get categorized recommendations * Add missing text domains * Fix menu handling to point to woocommerce-marketing * Only load coupon scripts on the coupon page * Rework marketing menu logic to register pages more properly * Use correct wc-admin path for marketing page * Remove separate feature flag WC Admin has existing feature flags to load enable/disable the feature * Only set the coupon parent to marketing when the feature is enabled * Only load coupon feature if marketing feature is enabled Co-authored-by: Dan Bitzer <danielbitzer@gmail.com> Co-authored-by: Jeremy Pry <jeremy.pry@gmail.com>
2020-06-16 02:30:41 +00:00
$controller = PageController::get_instance();
$defaults = [
'parent' => 'woocommerce-marketing',
'existing_page' => false,
];
Marketing Tab MVP (https://github.com/woocommerce/woocommerce-admin/pull/3953) * Add Marketing feature flag * Add marketing page and menu item * Register marketing page with layout controller * Add initial marketing cards * Add max-width to marketing overview page * Add initial marketing WelcomeCard component * Make marketing welcome card permanently dismiss * Add a readme for the marketing page components * Record tracks event when marketing welcome dismissed * Match design width * Add welcome image and initial styles * Use gridicon for close button * Fix whitespace * Add PluginsHelper::get_plugin_data() * Add initial Marketing\InstalledExtensions class * Preload installed marketing extensions data * Tweak extension statuses * Add InstalledExtensionRow component * Add initial extension data to InstalledExtensions card * Refactor PluginsHelper::get_plugin_data method Using the new get_plugin_path_from_slug method * Ensure get_plugins() function is available for PluginsHelper * Simplify using PluginsHelper method * Add MailChimp configured status logic * Add links to InstalledExtensionRow component * Add key prop to extensions list * Setup styles for InstalledExtensions card * Display nothing if no installed extensions * Add InstalledExtensions::get_allowed_plugins() * Setup Marketing Overview API controller * Add /activate-plugin marketing endpoint * Add more extensions URL props * Add Facebook extension configured status logic * Update Facebook extension URL props * Fix extenion data logic * Move component into it’s own directory * Setup /marketing/overview/recommended endpoint * Initial marketing page card header styles * Add basic extension data to RecommendedExtensions * Use color as variable * Tweak card header padding for design * Add basic styling to RecommendedExtensions card * settingsUrl is not available if the plugin is not active * Add /marketing/overview/installed-plugins REST endpoint * Add basic activation functionality to InstalledExtensions component * Don’t throw error on success * Add MVP data store for installed extensions card * Add core dark blue color variable * Add styles for installed extensions card * Move knowledge-base component to its own directory * Pull recommended marketing plugins from remote test site * Hide description when configured As per design * Tweak colors based on design * Finish off styling for RecommendedExtensions * Limit recommended extensions to 6 items * Add error handling to RecommendedExtensions card * Rename ‘copy’ extension prop * Add marketing button component to match design * Create ProductIcon component for marketing * Add InstalledExtension icons * Fix icon image paths * Add ProductIcon to InstallExtensionRow * Final styling to installed extensions card row * Knowledge base card placeholders * Fix missing icons when plugin not activated * Remove logging * Tweak array structure to ensure we have an array in JS and not an object * Refactor KnowledgeBase marketing component - We don’t need loop through every post when rendering, just pick the posts we need - Remove unused classes * Move padding from each slide to the container * Improve slider animations by absolute positioning the slides * Reduce the slider animation timeout and add a note * Add in-app purchase flow url params for recommended extensions * Fix slider animation * Reset slider height on window resize * Short slider animation, fix double margin on smaller screens * Add initial marketing/knowledge-base endpoint * Pull knowledge base posts from API * Rename welcome card dismiss tracks event * Record event on recommended product click * Recond onclick events for installed extensions card * Record event when carousel navigation clicked * img elements must have an alt prop * Remove import that is never used * use camelCase * Decode HTML entities from API call * Remove unused container div * Add card loading state * Add images to knowledge base card * Link knowledge base posts * Use the Pagination component rather than duplicate it’s functionality * Clean up and rename knowledge base slider * Clean knowledge base CSS and update responsive styles for single post slide * Add a README for button component * Add README for product icon component * Add initial readme for Slider component * Add correct image sizes to knowledge base slider, finalize styles * Fix extension link urls * Resolve some code formatting issue * Bind class click methods to this * Wrap nodes in Fragment * Fix wccom-back path * Add placeholder author and gravatar Default avatar url size returned from the API is currently set to 96 so I’ve done a simple replace with 16 * Fix style-lint expected new line * Add docblock for get_knowledge_base_posts() * Setup data store for marketing to handle installedExtensions card * Fix function names “Activating” not “installing” * Move welcome card component to its own dir * IconButton component is going to be deprecated ref: https://github.com/WordPress/gutenberg/pull/19299 * Support multiple activating plugins in the data store * Rename extension to plugin for consistency * Add propTypes to component * Rename data-store/ to data/ * Fix import paths * Extract isActivatingPlugin logic into datastore * Move data store selectors into own file * POST requests are not cached * Export apiFetch action * Don’t wrap API response in object * Implement data store for recommended extensions * Implement data store for marketing knowledge base * Tidy getRecommendedPlugins resolver * Try a cross browser cover/crop image effect to fit proposed design And help fit longer titles in * Add caught errors to handler * Adjust positioning so watermater is displayed * InstalledExtensions phpcs fixes * Marketing phpcs fixes * Alignment fix * MarketingOverview phpcs fixes * Missing full stop * Update breadcrumbs to use new approach * Fix style lint issues * Record `marketing_knowledge_article` track event on knowledge base post click * Import apiFetch and controls from @wordpress/data-controls * Hex color to lowercase * Remove duplicate method after rebase * Use new showPageArrowsLabel rather than hide with CSS * Fix blurry avatars on hidpi displays * Hide avatar if URL is falsy * Replace test author data with live data * Combine conditionals into ternary * Combine conditionals into ternary * Simplify class column logic * Only preload option and component settings in the admin * Fix isActivatingPlugin not updating Component was not re-rendeding. * Use querySelector over getElementsByClassName * Hide Marketing Welcome Card immediately on click * Use create-a-ticket url for supportUrl and make that the default * Add getInstalledPlugins resolver with preloaded data * Revert "Add getInstalledPlugins resolver with preloaded data" This reverts commit b8b127ec6411bef15616576b3bb189dc31777c13. * Load plugin data in a separate request after activation * Update welcome image * Don’t return plugin data in the activation request. * A space is required before closing bracket * Update Jest config to gracefully handle static assets Ref: https://jestjs.io/docs/en/webpack#handling-static-assets * Remove unused onExit property * Remove placeholder README * Use prop directly * yield createNotice * Add note to indicate which Category * Increase transient time to 3 days * Use $gap-small * Add proptype * Add debounce to slider height resize listener * Clean up isLoading logic * Dont show image elements if image data is empty * Open knowledge base posts in a new window * Add “noreferrer” * Turn the tab on in all env Co-authored-by: Daniel Bitzer <danielbitzer@gmail.com>
2020-03-28 13:48:27 +00:00
Add Coupon feature (https://github.com/woocommerce/woocommerce-admin/pull/4526) * Handle new object for posts and recommendations * Set breadcrumb parent for woocommerce-coupons to be woocommerce-marketing * Add main coupon wrapping component * Render coupon wrapper element below coupon table using wp-admin-scripts * Finish off implementing category param for data store resolvers * Create a helper trait for legacy coupons * Add coupon related titles and descriptions * Add note for the coupons being moved * Allow for querying by note name in the notes Data Store * Revamp coupon moved trait * Add the new note only if we don't have an unactioned note and perform a redirect to ensure menu updates * set_icon is deprecated * Move coupon menu, adding a note for customers * Translate title and descriptions * Whitespace * Account for coupon functionality being disabled * Hide legacy menu before redirect * Don’t keep adding the note if customer dismisses it from inbox * Move behind feature flag * Add note if feature enabled * Add filter to override coupon feature * Tweak option name to refer to wc_admin To help with finding etc. * use css variables * Add the new note only if we don't have an unactioned note * Switch the filter logic so `false` turns off the feature This is a bit more intuitive when utilizing the filter * Remove extraneous string and add trailing new lines * Use correct posts object in tests * Revert accidental removal of where_types * Add coupons category to RecommendedExtensions * Use 1.1 api to get categorized recommendations * Add missing text domains * Fix menu handling to point to woocommerce-marketing * Only load coupon scripts on the coupon page * Rework marketing menu logic to register pages more properly * Use correct wc-admin path for marketing page * Remove separate feature flag WC Admin has existing feature flags to load enable/disable the feature * Only set the coupon parent to marketing when the feature is enabled * Only load coupon feature if marketing feature is enabled Co-authored-by: Dan Bitzer <danielbitzer@gmail.com> Co-authored-by: Jeremy Pry <jeremy.pry@gmail.com>
2020-06-16 02:30:41 +00:00
$marketing_pages = apply_filters( 'woocommerce_marketing_menu_items', [] );
Marketing Tab MVP (https://github.com/woocommerce/woocommerce-admin/pull/3953) * Add Marketing feature flag * Add marketing page and menu item * Register marketing page with layout controller * Add initial marketing cards * Add max-width to marketing overview page * Add initial marketing WelcomeCard component * Make marketing welcome card permanently dismiss * Add a readme for the marketing page components * Record tracks event when marketing welcome dismissed * Match design width * Add welcome image and initial styles * Use gridicon for close button * Fix whitespace * Add PluginsHelper::get_plugin_data() * Add initial Marketing\InstalledExtensions class * Preload installed marketing extensions data * Tweak extension statuses * Add InstalledExtensionRow component * Add initial extension data to InstalledExtensions card * Refactor PluginsHelper::get_plugin_data method Using the new get_plugin_path_from_slug method * Ensure get_plugins() function is available for PluginsHelper * Simplify using PluginsHelper method * Add MailChimp configured status logic * Add links to InstalledExtensionRow component * Add key prop to extensions list * Setup styles for InstalledExtensions card * Display nothing if no installed extensions * Add InstalledExtensions::get_allowed_plugins() * Setup Marketing Overview API controller * Add /activate-plugin marketing endpoint * Add more extensions URL props * Add Facebook extension configured status logic * Update Facebook extension URL props * Fix extenion data logic * Move component into it’s own directory * Setup /marketing/overview/recommended endpoint * Initial marketing page card header styles * Add basic extension data to RecommendedExtensions * Use color as variable * Tweak card header padding for design * Add basic styling to RecommendedExtensions card * settingsUrl is not available if the plugin is not active * Add /marketing/overview/installed-plugins REST endpoint * Add basic activation functionality to InstalledExtensions component * Don’t throw error on success * Add MVP data store for installed extensions card * Add core dark blue color variable * Add styles for installed extensions card * Move knowledge-base component to its own directory * Pull recommended marketing plugins from remote test site * Hide description when configured As per design * Tweak colors based on design * Finish off styling for RecommendedExtensions * Limit recommended extensions to 6 items * Add error handling to RecommendedExtensions card * Rename ‘copy’ extension prop * Add marketing button component to match design * Create ProductIcon component for marketing * Add InstalledExtension icons * Fix icon image paths * Add ProductIcon to InstallExtensionRow * Final styling to installed extensions card row * Knowledge base card placeholders * Fix missing icons when plugin not activated * Remove logging * Tweak array structure to ensure we have an array in JS and not an object * Refactor KnowledgeBase marketing component - We don’t need loop through every post when rendering, just pick the posts we need - Remove unused classes * Move padding from each slide to the container * Improve slider animations by absolute positioning the slides * Reduce the slider animation timeout and add a note * Add in-app purchase flow url params for recommended extensions * Fix slider animation * Reset slider height on window resize * Short slider animation, fix double margin on smaller screens * Add initial marketing/knowledge-base endpoint * Pull knowledge base posts from API * Rename welcome card dismiss tracks event * Record event on recommended product click * Recond onclick events for installed extensions card * Record event when carousel navigation clicked * img elements must have an alt prop * Remove import that is never used * use camelCase * Decode HTML entities from API call * Remove unused container div * Add card loading state * Add images to knowledge base card * Link knowledge base posts * Use the Pagination component rather than duplicate it’s functionality * Clean up and rename knowledge base slider * Clean knowledge base CSS and update responsive styles for single post slide * Add a README for button component * Add README for product icon component * Add initial readme for Slider component * Add correct image sizes to knowledge base slider, finalize styles * Fix extension link urls * Resolve some code formatting issue * Bind class click methods to this * Wrap nodes in Fragment * Fix wccom-back path * Add placeholder author and gravatar Default avatar url size returned from the API is currently set to 96 so I’ve done a simple replace with 16 * Fix style-lint expected new line * Add docblock for get_knowledge_base_posts() * Setup data store for marketing to handle installedExtensions card * Fix function names “Activating” not “installing” * Move welcome card component to its own dir * IconButton component is going to be deprecated ref: https://github.com/WordPress/gutenberg/pull/19299 * Support multiple activating plugins in the data store * Rename extension to plugin for consistency * Add propTypes to component * Rename data-store/ to data/ * Fix import paths * Extract isActivatingPlugin logic into datastore * Move data store selectors into own file * POST requests are not cached * Export apiFetch action * Don’t wrap API response in object * Implement data store for recommended extensions * Implement data store for marketing knowledge base * Tidy getRecommendedPlugins resolver * Try a cross browser cover/crop image effect to fit proposed design And help fit longer titles in * Add caught errors to handler * Adjust positioning so watermater is displayed * InstalledExtensions phpcs fixes * Marketing phpcs fixes * Alignment fix * MarketingOverview phpcs fixes * Missing full stop * Update breadcrumbs to use new approach * Fix style lint issues * Record `marketing_knowledge_article` track event on knowledge base post click * Import apiFetch and controls from @wordpress/data-controls * Hex color to lowercase * Remove duplicate method after rebase * Use new showPageArrowsLabel rather than hide with CSS * Fix blurry avatars on hidpi displays * Hide avatar if URL is falsy * Replace test author data with live data * Combine conditionals into ternary * Combine conditionals into ternary * Simplify class column logic * Only preload option and component settings in the admin * Fix isActivatingPlugin not updating Component was not re-rendeding. * Use querySelector over getElementsByClassName * Hide Marketing Welcome Card immediately on click * Use create-a-ticket url for supportUrl and make that the default * Add getInstalledPlugins resolver with preloaded data * Revert "Add getInstalledPlugins resolver with preloaded data" This reverts commit b8b127ec6411bef15616576b3bb189dc31777c13. * Load plugin data in a separate request after activation * Update welcome image * Don’t return plugin data in the activation request. * A space is required before closing bracket * Update Jest config to gracefully handle static assets Ref: https://jestjs.io/docs/en/webpack#handling-static-assets * Remove unused onExit property * Remove placeholder README * Use prop directly * yield createNotice * Add note to indicate which Category * Increase transient time to 3 days * Use $gap-small * Add proptype * Add debounce to slider height resize listener * Clean up isLoading logic * Dont show image elements if image data is empty * Open knowledge base posts in a new window * Add “noreferrer” * Turn the tab on in all env Co-authored-by: Daniel Bitzer <danielbitzer@gmail.com>
2020-03-28 13:48:27 +00:00
foreach ( $marketing_pages as $marketing_page ) {
Add Coupon feature (https://github.com/woocommerce/woocommerce-admin/pull/4526) * Handle new object for posts and recommendations * Set breadcrumb parent for woocommerce-coupons to be woocommerce-marketing * Add main coupon wrapping component * Render coupon wrapper element below coupon table using wp-admin-scripts * Finish off implementing category param for data store resolvers * Create a helper trait for legacy coupons * Add coupon related titles and descriptions * Add note for the coupons being moved * Allow for querying by note name in the notes Data Store * Revamp coupon moved trait * Add the new note only if we don't have an unactioned note and perform a redirect to ensure menu updates * set_icon is deprecated * Move coupon menu, adding a note for customers * Translate title and descriptions * Whitespace * Account for coupon functionality being disabled * Hide legacy menu before redirect * Don’t keep adding the note if customer dismisses it from inbox * Move behind feature flag * Add note if feature enabled * Add filter to override coupon feature * Tweak option name to refer to wc_admin To help with finding etc. * use css variables * Add the new note only if we don't have an unactioned note * Switch the filter logic so `false` turns off the feature This is a bit more intuitive when utilizing the filter * Remove extraneous string and add trailing new lines * Use correct posts object in tests * Revert accidental removal of where_types * Add coupons category to RecommendedExtensions * Use 1.1 api to get categorized recommendations * Add missing text domains * Fix menu handling to point to woocommerce-marketing * Only load coupon scripts on the coupon page * Rework marketing menu logic to register pages more properly * Use correct wc-admin path for marketing page * Remove separate feature flag WC Admin has existing feature flags to load enable/disable the feature * Only set the coupon parent to marketing when the feature is enabled * Only load coupon feature if marketing feature is enabled Co-authored-by: Dan Bitzer <danielbitzer@gmail.com> Co-authored-by: Jeremy Pry <jeremy.pry@gmail.com>
2020-06-16 02:30:41 +00:00
if ( ! is_array( $marketing_page ) ) {
continue;
}
$marketing_page = array_merge( $defaults, $marketing_page );
if ( $marketing_page['existing_page'] ) {
$controller->connect_page( $marketing_page );
} else {
$controller->register_page( $marketing_page );
Marketing Tab MVP (https://github.com/woocommerce/woocommerce-admin/pull/3953) * Add Marketing feature flag * Add marketing page and menu item * Register marketing page with layout controller * Add initial marketing cards * Add max-width to marketing overview page * Add initial marketing WelcomeCard component * Make marketing welcome card permanently dismiss * Add a readme for the marketing page components * Record tracks event when marketing welcome dismissed * Match design width * Add welcome image and initial styles * Use gridicon for close button * Fix whitespace * Add PluginsHelper::get_plugin_data() * Add initial Marketing\InstalledExtensions class * Preload installed marketing extensions data * Tweak extension statuses * Add InstalledExtensionRow component * Add initial extension data to InstalledExtensions card * Refactor PluginsHelper::get_plugin_data method Using the new get_plugin_path_from_slug method * Ensure get_plugins() function is available for PluginsHelper * Simplify using PluginsHelper method * Add MailChimp configured status logic * Add links to InstalledExtensionRow component * Add key prop to extensions list * Setup styles for InstalledExtensions card * Display nothing if no installed extensions * Add InstalledExtensions::get_allowed_plugins() * Setup Marketing Overview API controller * Add /activate-plugin marketing endpoint * Add more extensions URL props * Add Facebook extension configured status logic * Update Facebook extension URL props * Fix extenion data logic * Move component into it’s own directory * Setup /marketing/overview/recommended endpoint * Initial marketing page card header styles * Add basic extension data to RecommendedExtensions * Use color as variable * Tweak card header padding for design * Add basic styling to RecommendedExtensions card * settingsUrl is not available if the plugin is not active * Add /marketing/overview/installed-plugins REST endpoint * Add basic activation functionality to InstalledExtensions component * Don’t throw error on success * Add MVP data store for installed extensions card * Add core dark blue color variable * Add styles for installed extensions card * Move knowledge-base component to its own directory * Pull recommended marketing plugins from remote test site * Hide description when configured As per design * Tweak colors based on design * Finish off styling for RecommendedExtensions * Limit recommended extensions to 6 items * Add error handling to RecommendedExtensions card * Rename ‘copy’ extension prop * Add marketing button component to match design * Create ProductIcon component for marketing * Add InstalledExtension icons * Fix icon image paths * Add ProductIcon to InstallExtensionRow * Final styling to installed extensions card row * Knowledge base card placeholders * Fix missing icons when plugin not activated * Remove logging * Tweak array structure to ensure we have an array in JS and not an object * Refactor KnowledgeBase marketing component - We don’t need loop through every post when rendering, just pick the posts we need - Remove unused classes * Move padding from each slide to the container * Improve slider animations by absolute positioning the slides * Reduce the slider animation timeout and add a note * Add in-app purchase flow url params for recommended extensions * Fix slider animation * Reset slider height on window resize * Short slider animation, fix double margin on smaller screens * Add initial marketing/knowledge-base endpoint * Pull knowledge base posts from API * Rename welcome card dismiss tracks event * Record event on recommended product click * Recond onclick events for installed extensions card * Record event when carousel navigation clicked * img elements must have an alt prop * Remove import that is never used * use camelCase * Decode HTML entities from API call * Remove unused container div * Add card loading state * Add images to knowledge base card * Link knowledge base posts * Use the Pagination component rather than duplicate it’s functionality * Clean up and rename knowledge base slider * Clean knowledge base CSS and update responsive styles for single post slide * Add a README for button component * Add README for product icon component * Add initial readme for Slider component * Add correct image sizes to knowledge base slider, finalize styles * Fix extension link urls * Resolve some code formatting issue * Bind class click methods to this * Wrap nodes in Fragment * Fix wccom-back path * Add placeholder author and gravatar Default avatar url size returned from the API is currently set to 96 so I’ve done a simple replace with 16 * Fix style-lint expected new line * Add docblock for get_knowledge_base_posts() * Setup data store for marketing to handle installedExtensions card * Fix function names “Activating” not “installing” * Move welcome card component to its own dir * IconButton component is going to be deprecated ref: https://github.com/WordPress/gutenberg/pull/19299 * Support multiple activating plugins in the data store * Rename extension to plugin for consistency * Add propTypes to component * Rename data-store/ to data/ * Fix import paths * Extract isActivatingPlugin logic into datastore * Move data store selectors into own file * POST requests are not cached * Export apiFetch action * Don’t wrap API response in object * Implement data store for recommended extensions * Implement data store for marketing knowledge base * Tidy getRecommendedPlugins resolver * Try a cross browser cover/crop image effect to fit proposed design And help fit longer titles in * Add caught errors to handler * Adjust positioning so watermater is displayed * InstalledExtensions phpcs fixes * Marketing phpcs fixes * Alignment fix * MarketingOverview phpcs fixes * Missing full stop * Update breadcrumbs to use new approach * Fix style lint issues * Record `marketing_knowledge_article` track event on knowledge base post click * Import apiFetch and controls from @wordpress/data-controls * Hex color to lowercase * Remove duplicate method after rebase * Use new showPageArrowsLabel rather than hide with CSS * Fix blurry avatars on hidpi displays * Hide avatar if URL is falsy * Replace test author data with live data * Combine conditionals into ternary * Combine conditionals into ternary * Simplify class column logic * Only preload option and component settings in the admin * Fix isActivatingPlugin not updating Component was not re-rendeding. * Use querySelector over getElementsByClassName * Hide Marketing Welcome Card immediately on click * Use create-a-ticket url for supportUrl and make that the default * Add getInstalledPlugins resolver with preloaded data * Revert "Add getInstalledPlugins resolver with preloaded data" This reverts commit b8b127ec6411bef15616576b3bb189dc31777c13. * Load plugin data in a separate request after activation * Update welcome image * Don’t return plugin data in the activation request. * A space is required before closing bracket * Update Jest config to gracefully handle static assets Ref: https://jestjs.io/docs/en/webpack#handling-static-assets * Remove unused onExit property * Remove placeholder README * Use prop directly * yield createNotice * Add note to indicate which Category * Increase transient time to 3 days * Use $gap-small * Add proptype * Add debounce to slider height resize listener * Clean up isLoading logic * Dont show image elements if image data is empty * Open knowledge base posts in a new window * Add “noreferrer” * Turn the tab on in all env Co-authored-by: Daniel Bitzer <danielbitzer@gmail.com>
2020-03-28 13:48:27 +00:00
}
}
}
/**
Add Coupon feature (https://github.com/woocommerce/woocommerce-admin/pull/4526) * Handle new object for posts and recommendations * Set breadcrumb parent for woocommerce-coupons to be woocommerce-marketing * Add main coupon wrapping component * Render coupon wrapper element below coupon table using wp-admin-scripts * Finish off implementing category param for data store resolvers * Create a helper trait for legacy coupons * Add coupon related titles and descriptions * Add note for the coupons being moved * Allow for querying by note name in the notes Data Store * Revamp coupon moved trait * Add the new note only if we don't have an unactioned note and perform a redirect to ensure menu updates * set_icon is deprecated * Move coupon menu, adding a note for customers * Translate title and descriptions * Whitespace * Account for coupon functionality being disabled * Hide legacy menu before redirect * Don’t keep adding the note if customer dismisses it from inbox * Move behind feature flag * Add note if feature enabled * Add filter to override coupon feature * Tweak option name to refer to wc_admin To help with finding etc. * use css variables * Add the new note only if we don't have an unactioned note * Switch the filter logic so `false` turns off the feature This is a bit more intuitive when utilizing the filter * Remove extraneous string and add trailing new lines * Use correct posts object in tests * Revert accidental removal of where_types * Add coupons category to RecommendedExtensions * Use 1.1 api to get categorized recommendations * Add missing text domains * Fix menu handling to point to woocommerce-marketing * Only load coupon scripts on the coupon page * Rework marketing menu logic to register pages more properly * Use correct wc-admin path for marketing page * Remove separate feature flag WC Admin has existing feature flags to load enable/disable the feature * Only set the coupon parent to marketing when the feature is enabled * Only load coupon feature if marketing feature is enabled Co-authored-by: Dan Bitzer <danielbitzer@gmail.com> Co-authored-by: Jeremy Pry <jeremy.pry@gmail.com>
2020-06-16 02:30:41 +00:00
* Register the main Marketing page, which is Marketing > Overview.
*
* This is done separately because we need to ensure the page is registered properly and
* that the link is done properly. For some reason the normal page registration process
* gives us the wrong menu link.
*/
Add Coupon feature (https://github.com/woocommerce/woocommerce-admin/pull/4526) * Handle new object for posts and recommendations * Set breadcrumb parent for woocommerce-coupons to be woocommerce-marketing * Add main coupon wrapping component * Render coupon wrapper element below coupon table using wp-admin-scripts * Finish off implementing category param for data store resolvers * Create a helper trait for legacy coupons * Add coupon related titles and descriptions * Add note for the coupons being moved * Allow for querying by note name in the notes Data Store * Revamp coupon moved trait * Add the new note only if we don't have an unactioned note and perform a redirect to ensure menu updates * set_icon is deprecated * Move coupon menu, adding a note for customers * Translate title and descriptions * Whitespace * Account for coupon functionality being disabled * Hide legacy menu before redirect * Don’t keep adding the note if customer dismisses it from inbox * Move behind feature flag * Add note if feature enabled * Add filter to override coupon feature * Tweak option name to refer to wc_admin To help with finding etc. * use css variables * Add the new note only if we don't have an unactioned note * Switch the filter logic so `false` turns off the feature This is a bit more intuitive when utilizing the filter * Remove extraneous string and add trailing new lines * Use correct posts object in tests * Revert accidental removal of where_types * Add coupons category to RecommendedExtensions * Use 1.1 api to get categorized recommendations * Add missing text domains * Fix menu handling to point to woocommerce-marketing * Only load coupon scripts on the coupon page * Rework marketing menu logic to register pages more properly * Use correct wc-admin path for marketing page * Remove separate feature flag WC Admin has existing feature flags to load enable/disable the feature * Only set the coupon parent to marketing when the feature is enabled * Only load coupon feature if marketing feature is enabled Co-authored-by: Dan Bitzer <danielbitzer@gmail.com> Co-authored-by: Jeremy Pry <jeremy.pry@gmail.com>
2020-06-16 02:30:41 +00:00
protected function register_overview_page() {
global $submenu;
Add Coupon feature (https://github.com/woocommerce/woocommerce-admin/pull/4526) * Handle new object for posts and recommendations * Set breadcrumb parent for woocommerce-coupons to be woocommerce-marketing * Add main coupon wrapping component * Render coupon wrapper element below coupon table using wp-admin-scripts * Finish off implementing category param for data store resolvers * Create a helper trait for legacy coupons * Add coupon related titles and descriptions * Add note for the coupons being moved * Allow for querying by note name in the notes Data Store * Revamp coupon moved trait * Add the new note only if we don't have an unactioned note and perform a redirect to ensure menu updates * set_icon is deprecated * Move coupon menu, adding a note for customers * Translate title and descriptions * Whitespace * Account for coupon functionality being disabled * Hide legacy menu before redirect * Don’t keep adding the note if customer dismisses it from inbox * Move behind feature flag * Add note if feature enabled * Add filter to override coupon feature * Tweak option name to refer to wc_admin To help with finding etc. * use css variables * Add the new note only if we don't have an unactioned note * Switch the filter logic so `false` turns off the feature This is a bit more intuitive when utilizing the filter * Remove extraneous string and add trailing new lines * Use correct posts object in tests * Revert accidental removal of where_types * Add coupons category to RecommendedExtensions * Use 1.1 api to get categorized recommendations * Add missing text domains * Fix menu handling to point to woocommerce-marketing * Only load coupon scripts on the coupon page * Rework marketing menu logic to register pages more properly * Use correct wc-admin path for marketing page * Remove separate feature flag WC Admin has existing feature flags to load enable/disable the feature * Only set the coupon parent to marketing when the feature is enabled * Only load coupon feature if marketing feature is enabled Co-authored-by: Dan Bitzer <danielbitzer@gmail.com> Co-authored-by: Jeremy Pry <jeremy.pry@gmail.com>
2020-06-16 02:30:41 +00:00
// First register the page.
PageController::get_instance()->register_page(
[
'id' => 'woocommerce-marketing-overview',
'title' => __( 'Overview', 'woocommerce-admin' ),
'path' => 'wc-admin&path=/marketing',
'parent' => 'woocommerce-marketing',
]
);
Add Coupon feature (https://github.com/woocommerce/woocommerce-admin/pull/4526) * Handle new object for posts and recommendations * Set breadcrumb parent for woocommerce-coupons to be woocommerce-marketing * Add main coupon wrapping component * Render coupon wrapper element below coupon table using wp-admin-scripts * Finish off implementing category param for data store resolvers * Create a helper trait for legacy coupons * Add coupon related titles and descriptions * Add note for the coupons being moved * Allow for querying by note name in the notes Data Store * Revamp coupon moved trait * Add the new note only if we don't have an unactioned note and perform a redirect to ensure menu updates * set_icon is deprecated * Move coupon menu, adding a note for customers * Translate title and descriptions * Whitespace * Account for coupon functionality being disabled * Hide legacy menu before redirect * Don’t keep adding the note if customer dismisses it from inbox * Move behind feature flag * Add note if feature enabled * Add filter to override coupon feature * Tweak option name to refer to wc_admin To help with finding etc. * use css variables * Add the new note only if we don't have an unactioned note * Switch the filter logic so `false` turns off the feature This is a bit more intuitive when utilizing the filter * Remove extraneous string and add trailing new lines * Use correct posts object in tests * Revert accidental removal of where_types * Add coupons category to RecommendedExtensions * Use 1.1 api to get categorized recommendations * Add missing text domains * Fix menu handling to point to woocommerce-marketing * Only load coupon scripts on the coupon page * Rework marketing menu logic to register pages more properly * Use correct wc-admin path for marketing page * Remove separate feature flag WC Admin has existing feature flags to load enable/disable the feature * Only set the coupon parent to marketing when the feature is enabled * Only load coupon feature if marketing feature is enabled Co-authored-by: Dan Bitzer <danielbitzer@gmail.com> Co-authored-by: Jeremy Pry <jeremy.pry@gmail.com>
2020-06-16 02:30:41 +00:00
// Now fix the path, since register_page() gets it wrong.
if ( ! isset( $submenu['woocommerce-marketing'] ) ) {
return;
}
Add Coupon feature (https://github.com/woocommerce/woocommerce-admin/pull/4526) * Handle new object for posts and recommendations * Set breadcrumb parent for woocommerce-coupons to be woocommerce-marketing * Add main coupon wrapping component * Render coupon wrapper element below coupon table using wp-admin-scripts * Finish off implementing category param for data store resolvers * Create a helper trait for legacy coupons * Add coupon related titles and descriptions * Add note for the coupons being moved * Allow for querying by note name in the notes Data Store * Revamp coupon moved trait * Add the new note only if we don't have an unactioned note and perform a redirect to ensure menu updates * set_icon is deprecated * Move coupon menu, adding a note for customers * Translate title and descriptions * Whitespace * Account for coupon functionality being disabled * Hide legacy menu before redirect * Don’t keep adding the note if customer dismisses it from inbox * Move behind feature flag * Add note if feature enabled * Add filter to override coupon feature * Tweak option name to refer to wc_admin To help with finding etc. * use css variables * Add the new note only if we don't have an unactioned note * Switch the filter logic so `false` turns off the feature This is a bit more intuitive when utilizing the filter * Remove extraneous string and add trailing new lines * Use correct posts object in tests * Revert accidental removal of where_types * Add coupons category to RecommendedExtensions * Use 1.1 api to get categorized recommendations * Add missing text domains * Fix menu handling to point to woocommerce-marketing * Only load coupon scripts on the coupon page * Rework marketing menu logic to register pages more properly * Use correct wc-admin path for marketing page * Remove separate feature flag WC Admin has existing feature flags to load enable/disable the feature * Only set the coupon parent to marketing when the feature is enabled * Only load coupon feature if marketing feature is enabled Co-authored-by: Dan Bitzer <danielbitzer@gmail.com> Co-authored-by: Jeremy Pry <jeremy.pry@gmail.com>
2020-06-16 02:30:41 +00:00
foreach ( $submenu['woocommerce-marketing'] as &$item ) {
// The "slug" (aka the path) is the third item in the array.
if ( 0 === strpos( $item[2], 'wc-admin' ) ) {
$item[2] = 'admin.php?page=' . $item[2];
}
}
}
Marketing Tab MVP (https://github.com/woocommerce/woocommerce-admin/pull/3953) * Add Marketing feature flag * Add marketing page and menu item * Register marketing page with layout controller * Add initial marketing cards * Add max-width to marketing overview page * Add initial marketing WelcomeCard component * Make marketing welcome card permanently dismiss * Add a readme for the marketing page components * Record tracks event when marketing welcome dismissed * Match design width * Add welcome image and initial styles * Use gridicon for close button * Fix whitespace * Add PluginsHelper::get_plugin_data() * Add initial Marketing\InstalledExtensions class * Preload installed marketing extensions data * Tweak extension statuses * Add InstalledExtensionRow component * Add initial extension data to InstalledExtensions card * Refactor PluginsHelper::get_plugin_data method Using the new get_plugin_path_from_slug method * Ensure get_plugins() function is available for PluginsHelper * Simplify using PluginsHelper method * Add MailChimp configured status logic * Add links to InstalledExtensionRow component * Add key prop to extensions list * Setup styles for InstalledExtensions card * Display nothing if no installed extensions * Add InstalledExtensions::get_allowed_plugins() * Setup Marketing Overview API controller * Add /activate-plugin marketing endpoint * Add more extensions URL props * Add Facebook extension configured status logic * Update Facebook extension URL props * Fix extenion data logic * Move component into it’s own directory * Setup /marketing/overview/recommended endpoint * Initial marketing page card header styles * Add basic extension data to RecommendedExtensions * Use color as variable * Tweak card header padding for design * Add basic styling to RecommendedExtensions card * settingsUrl is not available if the plugin is not active * Add /marketing/overview/installed-plugins REST endpoint * Add basic activation functionality to InstalledExtensions component * Don’t throw error on success * Add MVP data store for installed extensions card * Add core dark blue color variable * Add styles for installed extensions card * Move knowledge-base component to its own directory * Pull recommended marketing plugins from remote test site * Hide description when configured As per design * Tweak colors based on design * Finish off styling for RecommendedExtensions * Limit recommended extensions to 6 items * Add error handling to RecommendedExtensions card * Rename ‘copy’ extension prop * Add marketing button component to match design * Create ProductIcon component for marketing * Add InstalledExtension icons * Fix icon image paths * Add ProductIcon to InstallExtensionRow * Final styling to installed extensions card row * Knowledge base card placeholders * Fix missing icons when plugin not activated * Remove logging * Tweak array structure to ensure we have an array in JS and not an object * Refactor KnowledgeBase marketing component - We don’t need loop through every post when rendering, just pick the posts we need - Remove unused classes * Move padding from each slide to the container * Improve slider animations by absolute positioning the slides * Reduce the slider animation timeout and add a note * Add in-app purchase flow url params for recommended extensions * Fix slider animation * Reset slider height on window resize * Short slider animation, fix double margin on smaller screens * Add initial marketing/knowledge-base endpoint * Pull knowledge base posts from API * Rename welcome card dismiss tracks event * Record event on recommended product click * Recond onclick events for installed extensions card * Record event when carousel navigation clicked * img elements must have an alt prop * Remove import that is never used * use camelCase * Decode HTML entities from API call * Remove unused container div * Add card loading state * Add images to knowledge base card * Link knowledge base posts * Use the Pagination component rather than duplicate it’s functionality * Clean up and rename knowledge base slider * Clean knowledge base CSS and update responsive styles for single post slide * Add a README for button component * Add README for product icon component * Add initial readme for Slider component * Add correct image sizes to knowledge base slider, finalize styles * Fix extension link urls * Resolve some code formatting issue * Bind class click methods to this * Wrap nodes in Fragment * Fix wccom-back path * Add placeholder author and gravatar Default avatar url size returned from the API is currently set to 96 so I’ve done a simple replace with 16 * Fix style-lint expected new line * Add docblock for get_knowledge_base_posts() * Setup data store for marketing to handle installedExtensions card * Fix function names “Activating” not “installing” * Move welcome card component to its own dir * IconButton component is going to be deprecated ref: https://github.com/WordPress/gutenberg/pull/19299 * Support multiple activating plugins in the data store * Rename extension to plugin for consistency * Add propTypes to component * Rename data-store/ to data/ * Fix import paths * Extract isActivatingPlugin logic into datastore * Move data store selectors into own file * POST requests are not cached * Export apiFetch action * Don’t wrap API response in object * Implement data store for recommended extensions * Implement data store for marketing knowledge base * Tidy getRecommendedPlugins resolver * Try a cross browser cover/crop image effect to fit proposed design And help fit longer titles in * Add caught errors to handler * Adjust positioning so watermater is displayed * InstalledExtensions phpcs fixes * Marketing phpcs fixes * Alignment fix * MarketingOverview phpcs fixes * Missing full stop * Update breadcrumbs to use new approach * Fix style lint issues * Record `marketing_knowledge_article` track event on knowledge base post click * Import apiFetch and controls from @wordpress/data-controls * Hex color to lowercase * Remove duplicate method after rebase * Use new showPageArrowsLabel rather than hide with CSS * Fix blurry avatars on hidpi displays * Hide avatar if URL is falsy * Replace test author data with live data * Combine conditionals into ternary * Combine conditionals into ternary * Simplify class column logic * Only preload option and component settings in the admin * Fix isActivatingPlugin not updating Component was not re-rendeding. * Use querySelector over getElementsByClassName * Hide Marketing Welcome Card immediately on click * Use create-a-ticket url for supportUrl and make that the default * Add getInstalledPlugins resolver with preloaded data * Revert "Add getInstalledPlugins resolver with preloaded data" This reverts commit b8b127ec6411bef15616576b3bb189dc31777c13. * Load plugin data in a separate request after activation * Update welcome image * Don’t return plugin data in the activation request. * A space is required before closing bracket * Update Jest config to gracefully handle static assets Ref: https://jestjs.io/docs/en/webpack#handling-static-assets * Remove unused onExit property * Remove placeholder README * Use prop directly * yield createNotice * Add note to indicate which Category * Increase transient time to 3 days * Use $gap-small * Add proptype * Add debounce to slider height resize listener * Clean up isLoading logic * Dont show image elements if image data is empty * Open knowledge base posts in a new window * Add “noreferrer” * Turn the tab on in all env Co-authored-by: Daniel Bitzer <danielbitzer@gmail.com>
2020-03-28 13:48:27 +00:00
/**
* Preload options to prime state of the application.
*
* @param array $options Array of options to preload.
* @return array
*/
public function preload_options( $options ) {
$options[] = 'woocommerce_marketing_overview_welcome_hidden';
return $options;
}
/**
* Add settings for marketing feature.
*
* @param array $settings Component settings.
* @return array
*/
public function component_settings( $settings ) {
// Bail early if not on a wc-admin powered page.
if ( ! Loader::is_admin_page() ) {
return $settings;
}
$settings['marketing']['installedExtensions'] = InstalledExtensions::get_data();
return $settings;
}
/**
* Load recommended plugins from WooCommerce.com
*
* @return array
*/
public function get_recommended_plugins() {
$plugins = get_transient( self::RECOMMENDED_PLUGINS_TRANSIENT );
if ( false === $plugins ) {
Add Coupon feature (https://github.com/woocommerce/woocommerce-admin/pull/4526) * Handle new object for posts and recommendations * Set breadcrumb parent for woocommerce-coupons to be woocommerce-marketing * Add main coupon wrapping component * Render coupon wrapper element below coupon table using wp-admin-scripts * Finish off implementing category param for data store resolvers * Create a helper trait for legacy coupons * Add coupon related titles and descriptions * Add note for the coupons being moved * Allow for querying by note name in the notes Data Store * Revamp coupon moved trait * Add the new note only if we don't have an unactioned note and perform a redirect to ensure menu updates * set_icon is deprecated * Move coupon menu, adding a note for customers * Translate title and descriptions * Whitespace * Account for coupon functionality being disabled * Hide legacy menu before redirect * Don’t keep adding the note if customer dismisses it from inbox * Move behind feature flag * Add note if feature enabled * Add filter to override coupon feature * Tweak option name to refer to wc_admin To help with finding etc. * use css variables * Add the new note only if we don't have an unactioned note * Switch the filter logic so `false` turns off the feature This is a bit more intuitive when utilizing the filter * Remove extraneous string and add trailing new lines * Use correct posts object in tests * Revert accidental removal of where_types * Add coupons category to RecommendedExtensions * Use 1.1 api to get categorized recommendations * Add missing text domains * Fix menu handling to point to woocommerce-marketing * Only load coupon scripts on the coupon page * Rework marketing menu logic to register pages more properly * Use correct wc-admin path for marketing page * Remove separate feature flag WC Admin has existing feature flags to load enable/disable the feature * Only set the coupon parent to marketing when the feature is enabled * Only load coupon feature if marketing feature is enabled Co-authored-by: Dan Bitzer <danielbitzer@gmail.com> Co-authored-by: Jeremy Pry <jeremy.pry@gmail.com>
2020-06-16 02:30:41 +00:00
$request = wp_remote_get( 'https://woocommerce.com/wp-json/wccom/marketing-tab/1.1/recommendations.json' );
Marketing Tab MVP (https://github.com/woocommerce/woocommerce-admin/pull/3953) * Add Marketing feature flag * Add marketing page and menu item * Register marketing page with layout controller * Add initial marketing cards * Add max-width to marketing overview page * Add initial marketing WelcomeCard component * Make marketing welcome card permanently dismiss * Add a readme for the marketing page components * Record tracks event when marketing welcome dismissed * Match design width * Add welcome image and initial styles * Use gridicon for close button * Fix whitespace * Add PluginsHelper::get_plugin_data() * Add initial Marketing\InstalledExtensions class * Preload installed marketing extensions data * Tweak extension statuses * Add InstalledExtensionRow component * Add initial extension data to InstalledExtensions card * Refactor PluginsHelper::get_plugin_data method Using the new get_plugin_path_from_slug method * Ensure get_plugins() function is available for PluginsHelper * Simplify using PluginsHelper method * Add MailChimp configured status logic * Add links to InstalledExtensionRow component * Add key prop to extensions list * Setup styles for InstalledExtensions card * Display nothing if no installed extensions * Add InstalledExtensions::get_allowed_plugins() * Setup Marketing Overview API controller * Add /activate-plugin marketing endpoint * Add more extensions URL props * Add Facebook extension configured status logic * Update Facebook extension URL props * Fix extenion data logic * Move component into it’s own directory * Setup /marketing/overview/recommended endpoint * Initial marketing page card header styles * Add basic extension data to RecommendedExtensions * Use color as variable * Tweak card header padding for design * Add basic styling to RecommendedExtensions card * settingsUrl is not available if the plugin is not active * Add /marketing/overview/installed-plugins REST endpoint * Add basic activation functionality to InstalledExtensions component * Don’t throw error on success * Add MVP data store for installed extensions card * Add core dark blue color variable * Add styles for installed extensions card * Move knowledge-base component to its own directory * Pull recommended marketing plugins from remote test site * Hide description when configured As per design * Tweak colors based on design * Finish off styling for RecommendedExtensions * Limit recommended extensions to 6 items * Add error handling to RecommendedExtensions card * Rename ‘copy’ extension prop * Add marketing button component to match design * Create ProductIcon component for marketing * Add InstalledExtension icons * Fix icon image paths * Add ProductIcon to InstallExtensionRow * Final styling to installed extensions card row * Knowledge base card placeholders * Fix missing icons when plugin not activated * Remove logging * Tweak array structure to ensure we have an array in JS and not an object * Refactor KnowledgeBase marketing component - We don’t need loop through every post when rendering, just pick the posts we need - Remove unused classes * Move padding from each slide to the container * Improve slider animations by absolute positioning the slides * Reduce the slider animation timeout and add a note * Add in-app purchase flow url params for recommended extensions * Fix slider animation * Reset slider height on window resize * Short slider animation, fix double margin on smaller screens * Add initial marketing/knowledge-base endpoint * Pull knowledge base posts from API * Rename welcome card dismiss tracks event * Record event on recommended product click * Recond onclick events for installed extensions card * Record event when carousel navigation clicked * img elements must have an alt prop * Remove import that is never used * use camelCase * Decode HTML entities from API call * Remove unused container div * Add card loading state * Add images to knowledge base card * Link knowledge base posts * Use the Pagination component rather than duplicate it’s functionality * Clean up and rename knowledge base slider * Clean knowledge base CSS and update responsive styles for single post slide * Add a README for button component * Add README for product icon component * Add initial readme for Slider component * Add correct image sizes to knowledge base slider, finalize styles * Fix extension link urls * Resolve some code formatting issue * Bind class click methods to this * Wrap nodes in Fragment * Fix wccom-back path * Add placeholder author and gravatar Default avatar url size returned from the API is currently set to 96 so I’ve done a simple replace with 16 * Fix style-lint expected new line * Add docblock for get_knowledge_base_posts() * Setup data store for marketing to handle installedExtensions card * Fix function names “Activating” not “installing” * Move welcome card component to its own dir * IconButton component is going to be deprecated ref: https://github.com/WordPress/gutenberg/pull/19299 * Support multiple activating plugins in the data store * Rename extension to plugin for consistency * Add propTypes to component * Rename data-store/ to data/ * Fix import paths * Extract isActivatingPlugin logic into datastore * Move data store selectors into own file * POST requests are not cached * Export apiFetch action * Don’t wrap API response in object * Implement data store for recommended extensions * Implement data store for marketing knowledge base * Tidy getRecommendedPlugins resolver * Try a cross browser cover/crop image effect to fit proposed design And help fit longer titles in * Add caught errors to handler * Adjust positioning so watermater is displayed * InstalledExtensions phpcs fixes * Marketing phpcs fixes * Alignment fix * MarketingOverview phpcs fixes * Missing full stop * Update breadcrumbs to use new approach * Fix style lint issues * Record `marketing_knowledge_article` track event on knowledge base post click * Import apiFetch and controls from @wordpress/data-controls * Hex color to lowercase * Remove duplicate method after rebase * Use new showPageArrowsLabel rather than hide with CSS * Fix blurry avatars on hidpi displays * Hide avatar if URL is falsy * Replace test author data with live data * Combine conditionals into ternary * Combine conditionals into ternary * Simplify class column logic * Only preload option and component settings in the admin * Fix isActivatingPlugin not updating Component was not re-rendeding. * Use querySelector over getElementsByClassName * Hide Marketing Welcome Card immediately on click * Use create-a-ticket url for supportUrl and make that the default * Add getInstalledPlugins resolver with preloaded data * Revert "Add getInstalledPlugins resolver with preloaded data" This reverts commit b8b127ec6411bef15616576b3bb189dc31777c13. * Load plugin data in a separate request after activation * Update welcome image * Don’t return plugin data in the activation request. * A space is required before closing bracket * Update Jest config to gracefully handle static assets Ref: https://jestjs.io/docs/en/webpack#handling-static-assets * Remove unused onExit property * Remove placeholder README * Use prop directly * yield createNotice * Add note to indicate which Category * Increase transient time to 3 days * Use $gap-small * Add proptype * Add debounce to slider height resize listener * Clean up isLoading logic * Dont show image elements if image data is empty * Open knowledge base posts in a new window * Add “noreferrer” * Turn the tab on in all env Co-authored-by: Daniel Bitzer <danielbitzer@gmail.com>
2020-03-28 13:48:27 +00:00
$plugins = [];
if ( ! is_wp_error( $request ) && 200 === $request['response']['code'] ) {
$plugins = json_decode( $request['body'], true );
}
set_transient(
self::RECOMMENDED_PLUGINS_TRANSIENT,
$plugins,
// Expire transient in 15 minutes if remote get failed.
// Cache an empty result to avoid repeated failed requests.
empty( $plugins ) ? 900 : 3 * DAY_IN_SECONDS
);
Marketing Tab MVP (https://github.com/woocommerce/woocommerce-admin/pull/3953) * Add Marketing feature flag * Add marketing page and menu item * Register marketing page with layout controller * Add initial marketing cards * Add max-width to marketing overview page * Add initial marketing WelcomeCard component * Make marketing welcome card permanently dismiss * Add a readme for the marketing page components * Record tracks event when marketing welcome dismissed * Match design width * Add welcome image and initial styles * Use gridicon for close button * Fix whitespace * Add PluginsHelper::get_plugin_data() * Add initial Marketing\InstalledExtensions class * Preload installed marketing extensions data * Tweak extension statuses * Add InstalledExtensionRow component * Add initial extension data to InstalledExtensions card * Refactor PluginsHelper::get_plugin_data method Using the new get_plugin_path_from_slug method * Ensure get_plugins() function is available for PluginsHelper * Simplify using PluginsHelper method * Add MailChimp configured status logic * Add links to InstalledExtensionRow component * Add key prop to extensions list * Setup styles for InstalledExtensions card * Display nothing if no installed extensions * Add InstalledExtensions::get_allowed_plugins() * Setup Marketing Overview API controller * Add /activate-plugin marketing endpoint * Add more extensions URL props * Add Facebook extension configured status logic * Update Facebook extension URL props * Fix extenion data logic * Move component into it’s own directory * Setup /marketing/overview/recommended endpoint * Initial marketing page card header styles * Add basic extension data to RecommendedExtensions * Use color as variable * Tweak card header padding for design * Add basic styling to RecommendedExtensions card * settingsUrl is not available if the plugin is not active * Add /marketing/overview/installed-plugins REST endpoint * Add basic activation functionality to InstalledExtensions component * Don’t throw error on success * Add MVP data store for installed extensions card * Add core dark blue color variable * Add styles for installed extensions card * Move knowledge-base component to its own directory * Pull recommended marketing plugins from remote test site * Hide description when configured As per design * Tweak colors based on design * Finish off styling for RecommendedExtensions * Limit recommended extensions to 6 items * Add error handling to RecommendedExtensions card * Rename ‘copy’ extension prop * Add marketing button component to match design * Create ProductIcon component for marketing * Add InstalledExtension icons * Fix icon image paths * Add ProductIcon to InstallExtensionRow * Final styling to installed extensions card row * Knowledge base card placeholders * Fix missing icons when plugin not activated * Remove logging * Tweak array structure to ensure we have an array in JS and not an object * Refactor KnowledgeBase marketing component - We don’t need loop through every post when rendering, just pick the posts we need - Remove unused classes * Move padding from each slide to the container * Improve slider animations by absolute positioning the slides * Reduce the slider animation timeout and add a note * Add in-app purchase flow url params for recommended extensions * Fix slider animation * Reset slider height on window resize * Short slider animation, fix double margin on smaller screens * Add initial marketing/knowledge-base endpoint * Pull knowledge base posts from API * Rename welcome card dismiss tracks event * Record event on recommended product click * Recond onclick events for installed extensions card * Record event when carousel navigation clicked * img elements must have an alt prop * Remove import that is never used * use camelCase * Decode HTML entities from API call * Remove unused container div * Add card loading state * Add images to knowledge base card * Link knowledge base posts * Use the Pagination component rather than duplicate it’s functionality * Clean up and rename knowledge base slider * Clean knowledge base CSS and update responsive styles for single post slide * Add a README for button component * Add README for product icon component * Add initial readme for Slider component * Add correct image sizes to knowledge base slider, finalize styles * Fix extension link urls * Resolve some code formatting issue * Bind class click methods to this * Wrap nodes in Fragment * Fix wccom-back path * Add placeholder author and gravatar Default avatar url size returned from the API is currently set to 96 so I’ve done a simple replace with 16 * Fix style-lint expected new line * Add docblock for get_knowledge_base_posts() * Setup data store for marketing to handle installedExtensions card * Fix function names “Activating” not “installing” * Move welcome card component to its own dir * IconButton component is going to be deprecated ref: https://github.com/WordPress/gutenberg/pull/19299 * Support multiple activating plugins in the data store * Rename extension to plugin for consistency * Add propTypes to component * Rename data-store/ to data/ * Fix import paths * Extract isActivatingPlugin logic into datastore * Move data store selectors into own file * POST requests are not cached * Export apiFetch action * Don’t wrap API response in object * Implement data store for recommended extensions * Implement data store for marketing knowledge base * Tidy getRecommendedPlugins resolver * Try a cross browser cover/crop image effect to fit proposed design And help fit longer titles in * Add caught errors to handler * Adjust positioning so watermater is displayed * InstalledExtensions phpcs fixes * Marketing phpcs fixes * Alignment fix * MarketingOverview phpcs fixes * Missing full stop * Update breadcrumbs to use new approach * Fix style lint issues * Record `marketing_knowledge_article` track event on knowledge base post click * Import apiFetch and controls from @wordpress/data-controls * Hex color to lowercase * Remove duplicate method after rebase * Use new showPageArrowsLabel rather than hide with CSS * Fix blurry avatars on hidpi displays * Hide avatar if URL is falsy * Replace test author data with live data * Combine conditionals into ternary * Combine conditionals into ternary * Simplify class column logic * Only preload option and component settings in the admin * Fix isActivatingPlugin not updating Component was not re-rendeding. * Use querySelector over getElementsByClassName * Hide Marketing Welcome Card immediately on click * Use create-a-ticket url for supportUrl and make that the default * Add getInstalledPlugins resolver with preloaded data * Revert "Add getInstalledPlugins resolver with preloaded data" This reverts commit b8b127ec6411bef15616576b3bb189dc31777c13. * Load plugin data in a separate request after activation * Update welcome image * Don’t return plugin data in the activation request. * A space is required before closing bracket * Update Jest config to gracefully handle static assets Ref: https://jestjs.io/docs/en/webpack#handling-static-assets * Remove unused onExit property * Remove placeholder README * Use prop directly * yield createNotice * Add note to indicate which Category * Increase transient time to 3 days * Use $gap-small * Add proptype * Add debounce to slider height resize listener * Clean up isLoading logic * Dont show image elements if image data is empty * Open knowledge base posts in a new window * Add “noreferrer” * Turn the tab on in all env Co-authored-by: Daniel Bitzer <danielbitzer@gmail.com>
2020-03-28 13:48:27 +00:00
}
return array_values( $plugins );
}
/**
* Load knowledge base posts from WooCommerce.com
*
* @param string $category Category of posts to retrieve.
Marketing Tab MVP (https://github.com/woocommerce/woocommerce-admin/pull/3953) * Add Marketing feature flag * Add marketing page and menu item * Register marketing page with layout controller * Add initial marketing cards * Add max-width to marketing overview page * Add initial marketing WelcomeCard component * Make marketing welcome card permanently dismiss * Add a readme for the marketing page components * Record tracks event when marketing welcome dismissed * Match design width * Add welcome image and initial styles * Use gridicon for close button * Fix whitespace * Add PluginsHelper::get_plugin_data() * Add initial Marketing\InstalledExtensions class * Preload installed marketing extensions data * Tweak extension statuses * Add InstalledExtensionRow component * Add initial extension data to InstalledExtensions card * Refactor PluginsHelper::get_plugin_data method Using the new get_plugin_path_from_slug method * Ensure get_plugins() function is available for PluginsHelper * Simplify using PluginsHelper method * Add MailChimp configured status logic * Add links to InstalledExtensionRow component * Add key prop to extensions list * Setup styles for InstalledExtensions card * Display nothing if no installed extensions * Add InstalledExtensions::get_allowed_plugins() * Setup Marketing Overview API controller * Add /activate-plugin marketing endpoint * Add more extensions URL props * Add Facebook extension configured status logic * Update Facebook extension URL props * Fix extenion data logic * Move component into it’s own directory * Setup /marketing/overview/recommended endpoint * Initial marketing page card header styles * Add basic extension data to RecommendedExtensions * Use color as variable * Tweak card header padding for design * Add basic styling to RecommendedExtensions card * settingsUrl is not available if the plugin is not active * Add /marketing/overview/installed-plugins REST endpoint * Add basic activation functionality to InstalledExtensions component * Don’t throw error on success * Add MVP data store for installed extensions card * Add core dark blue color variable * Add styles for installed extensions card * Move knowledge-base component to its own directory * Pull recommended marketing plugins from remote test site * Hide description when configured As per design * Tweak colors based on design * Finish off styling for RecommendedExtensions * Limit recommended extensions to 6 items * Add error handling to RecommendedExtensions card * Rename ‘copy’ extension prop * Add marketing button component to match design * Create ProductIcon component for marketing * Add InstalledExtension icons * Fix icon image paths * Add ProductIcon to InstallExtensionRow * Final styling to installed extensions card row * Knowledge base card placeholders * Fix missing icons when plugin not activated * Remove logging * Tweak array structure to ensure we have an array in JS and not an object * Refactor KnowledgeBase marketing component - We don’t need loop through every post when rendering, just pick the posts we need - Remove unused classes * Move padding from each slide to the container * Improve slider animations by absolute positioning the slides * Reduce the slider animation timeout and add a note * Add in-app purchase flow url params for recommended extensions * Fix slider animation * Reset slider height on window resize * Short slider animation, fix double margin on smaller screens * Add initial marketing/knowledge-base endpoint * Pull knowledge base posts from API * Rename welcome card dismiss tracks event * Record event on recommended product click * Recond onclick events for installed extensions card * Record event when carousel navigation clicked * img elements must have an alt prop * Remove import that is never used * use camelCase * Decode HTML entities from API call * Remove unused container div * Add card loading state * Add images to knowledge base card * Link knowledge base posts * Use the Pagination component rather than duplicate it’s functionality * Clean up and rename knowledge base slider * Clean knowledge base CSS and update responsive styles for single post slide * Add a README for button component * Add README for product icon component * Add initial readme for Slider component * Add correct image sizes to knowledge base slider, finalize styles * Fix extension link urls * Resolve some code formatting issue * Bind class click methods to this * Wrap nodes in Fragment * Fix wccom-back path * Add placeholder author and gravatar Default avatar url size returned from the API is currently set to 96 so I’ve done a simple replace with 16 * Fix style-lint expected new line * Add docblock for get_knowledge_base_posts() * Setup data store for marketing to handle installedExtensions card * Fix function names “Activating” not “installing” * Move welcome card component to its own dir * IconButton component is going to be deprecated ref: https://github.com/WordPress/gutenberg/pull/19299 * Support multiple activating plugins in the data store * Rename extension to plugin for consistency * Add propTypes to component * Rename data-store/ to data/ * Fix import paths * Extract isActivatingPlugin logic into datastore * Move data store selectors into own file * POST requests are not cached * Export apiFetch action * Don’t wrap API response in object * Implement data store for recommended extensions * Implement data store for marketing knowledge base * Tidy getRecommendedPlugins resolver * Try a cross browser cover/crop image effect to fit proposed design And help fit longer titles in * Add caught errors to handler * Adjust positioning so watermater is displayed * InstalledExtensions phpcs fixes * Marketing phpcs fixes * Alignment fix * MarketingOverview phpcs fixes * Missing full stop * Update breadcrumbs to use new approach * Fix style lint issues * Record `marketing_knowledge_article` track event on knowledge base post click * Import apiFetch and controls from @wordpress/data-controls * Hex color to lowercase * Remove duplicate method after rebase * Use new showPageArrowsLabel rather than hide with CSS * Fix blurry avatars on hidpi displays * Hide avatar if URL is falsy * Replace test author data with live data * Combine conditionals into ternary * Combine conditionals into ternary * Simplify class column logic * Only preload option and component settings in the admin * Fix isActivatingPlugin not updating Component was not re-rendeding. * Use querySelector over getElementsByClassName * Hide Marketing Welcome Card immediately on click * Use create-a-ticket url for supportUrl and make that the default * Add getInstalledPlugins resolver with preloaded data * Revert "Add getInstalledPlugins resolver with preloaded data" This reverts commit b8b127ec6411bef15616576b3bb189dc31777c13. * Load plugin data in a separate request after activation * Update welcome image * Don’t return plugin data in the activation request. * A space is required before closing bracket * Update Jest config to gracefully handle static assets Ref: https://jestjs.io/docs/en/webpack#handling-static-assets * Remove unused onExit property * Remove placeholder README * Use prop directly * yield createNotice * Add note to indicate which Category * Increase transient time to 3 days * Use $gap-small * Add proptype * Add debounce to slider height resize listener * Clean up isLoading logic * Dont show image elements if image data is empty * Open knowledge base posts in a new window * Add “noreferrer” * Turn the tab on in all env Co-authored-by: Daniel Bitzer <danielbitzer@gmail.com>
2020-03-28 13:48:27 +00:00
* @return array
*/
public function get_knowledge_base_posts( $category ) {
$kb_transient = self::KNOWLEDGE_BASE_TRANSIENT;
$categories = array(
'marketing' => 1744,
'coupons' => 25202,
);
// Default to marketing category (if no category set on the kb component).
if ( ! empty( $category ) && array_key_exists( $category, $categories ) ) {
$category_id = $categories[ $category ];
$kb_transient = $kb_transient . '_' . strtolower( $category );
} else {
$category_id = $categories['marketing'];
}
$posts = get_transient( $kb_transient );
Marketing Tab MVP (https://github.com/woocommerce/woocommerce-admin/pull/3953) * Add Marketing feature flag * Add marketing page and menu item * Register marketing page with layout controller * Add initial marketing cards * Add max-width to marketing overview page * Add initial marketing WelcomeCard component * Make marketing welcome card permanently dismiss * Add a readme for the marketing page components * Record tracks event when marketing welcome dismissed * Match design width * Add welcome image and initial styles * Use gridicon for close button * Fix whitespace * Add PluginsHelper::get_plugin_data() * Add initial Marketing\InstalledExtensions class * Preload installed marketing extensions data * Tweak extension statuses * Add InstalledExtensionRow component * Add initial extension data to InstalledExtensions card * Refactor PluginsHelper::get_plugin_data method Using the new get_plugin_path_from_slug method * Ensure get_plugins() function is available for PluginsHelper * Simplify using PluginsHelper method * Add MailChimp configured status logic * Add links to InstalledExtensionRow component * Add key prop to extensions list * Setup styles for InstalledExtensions card * Display nothing if no installed extensions * Add InstalledExtensions::get_allowed_plugins() * Setup Marketing Overview API controller * Add /activate-plugin marketing endpoint * Add more extensions URL props * Add Facebook extension configured status logic * Update Facebook extension URL props * Fix extenion data logic * Move component into it’s own directory * Setup /marketing/overview/recommended endpoint * Initial marketing page card header styles * Add basic extension data to RecommendedExtensions * Use color as variable * Tweak card header padding for design * Add basic styling to RecommendedExtensions card * settingsUrl is not available if the plugin is not active * Add /marketing/overview/installed-plugins REST endpoint * Add basic activation functionality to InstalledExtensions component * Don’t throw error on success * Add MVP data store for installed extensions card * Add core dark blue color variable * Add styles for installed extensions card * Move knowledge-base component to its own directory * Pull recommended marketing plugins from remote test site * Hide description when configured As per design * Tweak colors based on design * Finish off styling for RecommendedExtensions * Limit recommended extensions to 6 items * Add error handling to RecommendedExtensions card * Rename ‘copy’ extension prop * Add marketing button component to match design * Create ProductIcon component for marketing * Add InstalledExtension icons * Fix icon image paths * Add ProductIcon to InstallExtensionRow * Final styling to installed extensions card row * Knowledge base card placeholders * Fix missing icons when plugin not activated * Remove logging * Tweak array structure to ensure we have an array in JS and not an object * Refactor KnowledgeBase marketing component - We don’t need loop through every post when rendering, just pick the posts we need - Remove unused classes * Move padding from each slide to the container * Improve slider animations by absolute positioning the slides * Reduce the slider animation timeout and add a note * Add in-app purchase flow url params for recommended extensions * Fix slider animation * Reset slider height on window resize * Short slider animation, fix double margin on smaller screens * Add initial marketing/knowledge-base endpoint * Pull knowledge base posts from API * Rename welcome card dismiss tracks event * Record event on recommended product click * Recond onclick events for installed extensions card * Record event when carousel navigation clicked * img elements must have an alt prop * Remove import that is never used * use camelCase * Decode HTML entities from API call * Remove unused container div * Add card loading state * Add images to knowledge base card * Link knowledge base posts * Use the Pagination component rather than duplicate it’s functionality * Clean up and rename knowledge base slider * Clean knowledge base CSS and update responsive styles for single post slide * Add a README for button component * Add README for product icon component * Add initial readme for Slider component * Add correct image sizes to knowledge base slider, finalize styles * Fix extension link urls * Resolve some code formatting issue * Bind class click methods to this * Wrap nodes in Fragment * Fix wccom-back path * Add placeholder author and gravatar Default avatar url size returned from the API is currently set to 96 so I’ve done a simple replace with 16 * Fix style-lint expected new line * Add docblock for get_knowledge_base_posts() * Setup data store for marketing to handle installedExtensions card * Fix function names “Activating” not “installing” * Move welcome card component to its own dir * IconButton component is going to be deprecated ref: https://github.com/WordPress/gutenberg/pull/19299 * Support multiple activating plugins in the data store * Rename extension to plugin for consistency * Add propTypes to component * Rename data-store/ to data/ * Fix import paths * Extract isActivatingPlugin logic into datastore * Move data store selectors into own file * POST requests are not cached * Export apiFetch action * Don’t wrap API response in object * Implement data store for recommended extensions * Implement data store for marketing knowledge base * Tidy getRecommendedPlugins resolver * Try a cross browser cover/crop image effect to fit proposed design And help fit longer titles in * Add caught errors to handler * Adjust positioning so watermater is displayed * InstalledExtensions phpcs fixes * Marketing phpcs fixes * Alignment fix * MarketingOverview phpcs fixes * Missing full stop * Update breadcrumbs to use new approach * Fix style lint issues * Record `marketing_knowledge_article` track event on knowledge base post click * Import apiFetch and controls from @wordpress/data-controls * Hex color to lowercase * Remove duplicate method after rebase * Use new showPageArrowsLabel rather than hide with CSS * Fix blurry avatars on hidpi displays * Hide avatar if URL is falsy * Replace test author data with live data * Combine conditionals into ternary * Combine conditionals into ternary * Simplify class column logic * Only preload option and component settings in the admin * Fix isActivatingPlugin not updating Component was not re-rendeding. * Use querySelector over getElementsByClassName * Hide Marketing Welcome Card immediately on click * Use create-a-ticket url for supportUrl and make that the default * Add getInstalledPlugins resolver with preloaded data * Revert "Add getInstalledPlugins resolver with preloaded data" This reverts commit b8b127ec6411bef15616576b3bb189dc31777c13. * Load plugin data in a separate request after activation * Update welcome image * Don’t return plugin data in the activation request. * A space is required before closing bracket * Update Jest config to gracefully handle static assets Ref: https://jestjs.io/docs/en/webpack#handling-static-assets * Remove unused onExit property * Remove placeholder README * Use prop directly * yield createNotice * Add note to indicate which Category * Increase transient time to 3 days * Use $gap-small * Add proptype * Add debounce to slider height resize listener * Clean up isLoading logic * Dont show image elements if image data is empty * Open knowledge base posts in a new window * Add “noreferrer” * Turn the tab on in all env Co-authored-by: Daniel Bitzer <danielbitzer@gmail.com>
2020-03-28 13:48:27 +00:00
if ( false === $posts ) {
$request_url = add_query_arg(
array(
'categories' => $category_id,
Marketing Tab MVP (https://github.com/woocommerce/woocommerce-admin/pull/3953) * Add Marketing feature flag * Add marketing page and menu item * Register marketing page with layout controller * Add initial marketing cards * Add max-width to marketing overview page * Add initial marketing WelcomeCard component * Make marketing welcome card permanently dismiss * Add a readme for the marketing page components * Record tracks event when marketing welcome dismissed * Match design width * Add welcome image and initial styles * Use gridicon for close button * Fix whitespace * Add PluginsHelper::get_plugin_data() * Add initial Marketing\InstalledExtensions class * Preload installed marketing extensions data * Tweak extension statuses * Add InstalledExtensionRow component * Add initial extension data to InstalledExtensions card * Refactor PluginsHelper::get_plugin_data method Using the new get_plugin_path_from_slug method * Ensure get_plugins() function is available for PluginsHelper * Simplify using PluginsHelper method * Add MailChimp configured status logic * Add links to InstalledExtensionRow component * Add key prop to extensions list * Setup styles for InstalledExtensions card * Display nothing if no installed extensions * Add InstalledExtensions::get_allowed_plugins() * Setup Marketing Overview API controller * Add /activate-plugin marketing endpoint * Add more extensions URL props * Add Facebook extension configured status logic * Update Facebook extension URL props * Fix extenion data logic * Move component into it’s own directory * Setup /marketing/overview/recommended endpoint * Initial marketing page card header styles * Add basic extension data to RecommendedExtensions * Use color as variable * Tweak card header padding for design * Add basic styling to RecommendedExtensions card * settingsUrl is not available if the plugin is not active * Add /marketing/overview/installed-plugins REST endpoint * Add basic activation functionality to InstalledExtensions component * Don’t throw error on success * Add MVP data store for installed extensions card * Add core dark blue color variable * Add styles for installed extensions card * Move knowledge-base component to its own directory * Pull recommended marketing plugins from remote test site * Hide description when configured As per design * Tweak colors based on design * Finish off styling for RecommendedExtensions * Limit recommended extensions to 6 items * Add error handling to RecommendedExtensions card * Rename ‘copy’ extension prop * Add marketing button component to match design * Create ProductIcon component for marketing * Add InstalledExtension icons * Fix icon image paths * Add ProductIcon to InstallExtensionRow * Final styling to installed extensions card row * Knowledge base card placeholders * Fix missing icons when plugin not activated * Remove logging * Tweak array structure to ensure we have an array in JS and not an object * Refactor KnowledgeBase marketing component - We don’t need loop through every post when rendering, just pick the posts we need - Remove unused classes * Move padding from each slide to the container * Improve slider animations by absolute positioning the slides * Reduce the slider animation timeout and add a note * Add in-app purchase flow url params for recommended extensions * Fix slider animation * Reset slider height on window resize * Short slider animation, fix double margin on smaller screens * Add initial marketing/knowledge-base endpoint * Pull knowledge base posts from API * Rename welcome card dismiss tracks event * Record event on recommended product click * Recond onclick events for installed extensions card * Record event when carousel navigation clicked * img elements must have an alt prop * Remove import that is never used * use camelCase * Decode HTML entities from API call * Remove unused container div * Add card loading state * Add images to knowledge base card * Link knowledge base posts * Use the Pagination component rather than duplicate it’s functionality * Clean up and rename knowledge base slider * Clean knowledge base CSS and update responsive styles for single post slide * Add a README for button component * Add README for product icon component * Add initial readme for Slider component * Add correct image sizes to knowledge base slider, finalize styles * Fix extension link urls * Resolve some code formatting issue * Bind class click methods to this * Wrap nodes in Fragment * Fix wccom-back path * Add placeholder author and gravatar Default avatar url size returned from the API is currently set to 96 so I’ve done a simple replace with 16 * Fix style-lint expected new line * Add docblock for get_knowledge_base_posts() * Setup data store for marketing to handle installedExtensions card * Fix function names “Activating” not “installing” * Move welcome card component to its own dir * IconButton component is going to be deprecated ref: https://github.com/WordPress/gutenberg/pull/19299 * Support multiple activating plugins in the data store * Rename extension to plugin for consistency * Add propTypes to component * Rename data-store/ to data/ * Fix import paths * Extract isActivatingPlugin logic into datastore * Move data store selectors into own file * POST requests are not cached * Export apiFetch action * Don’t wrap API response in object * Implement data store for recommended extensions * Implement data store for marketing knowledge base * Tidy getRecommendedPlugins resolver * Try a cross browser cover/crop image effect to fit proposed design And help fit longer titles in * Add caught errors to handler * Adjust positioning so watermater is displayed * InstalledExtensions phpcs fixes * Marketing phpcs fixes * Alignment fix * MarketingOverview phpcs fixes * Missing full stop * Update breadcrumbs to use new approach * Fix style lint issues * Record `marketing_knowledge_article` track event on knowledge base post click * Import apiFetch and controls from @wordpress/data-controls * Hex color to lowercase * Remove duplicate method after rebase * Use new showPageArrowsLabel rather than hide with CSS * Fix blurry avatars on hidpi displays * Hide avatar if URL is falsy * Replace test author data with live data * Combine conditionals into ternary * Combine conditionals into ternary * Simplify class column logic * Only preload option and component settings in the admin * Fix isActivatingPlugin not updating Component was not re-rendeding. * Use querySelector over getElementsByClassName * Hide Marketing Welcome Card immediately on click * Use create-a-ticket url for supportUrl and make that the default * Add getInstalledPlugins resolver with preloaded data * Revert "Add getInstalledPlugins resolver with preloaded data" This reverts commit b8b127ec6411bef15616576b3bb189dc31777c13. * Load plugin data in a separate request after activation * Update welcome image * Don’t return plugin data in the activation request. * A space is required before closing bracket * Update Jest config to gracefully handle static assets Ref: https://jestjs.io/docs/en/webpack#handling-static-assets * Remove unused onExit property * Remove placeholder README * Use prop directly * yield createNotice * Add note to indicate which Category * Increase transient time to 3 days * Use $gap-small * Add proptype * Add debounce to slider height resize listener * Clean up isLoading logic * Dont show image elements if image data is empty * Open knowledge base posts in a new window * Add “noreferrer” * Turn the tab on in all env Co-authored-by: Daniel Bitzer <danielbitzer@gmail.com>
2020-03-28 13:48:27 +00:00
'page' => 1,
'per_page' => 8,
'_embed' => 1,
),
'https://woocommerce.com/wp-json/wp/v2/posts'
);
Marketing Tab MVP (https://github.com/woocommerce/woocommerce-admin/pull/3953) * Add Marketing feature flag * Add marketing page and menu item * Register marketing page with layout controller * Add initial marketing cards * Add max-width to marketing overview page * Add initial marketing WelcomeCard component * Make marketing welcome card permanently dismiss * Add a readme for the marketing page components * Record tracks event when marketing welcome dismissed * Match design width * Add welcome image and initial styles * Use gridicon for close button * Fix whitespace * Add PluginsHelper::get_plugin_data() * Add initial Marketing\InstalledExtensions class * Preload installed marketing extensions data * Tweak extension statuses * Add InstalledExtensionRow component * Add initial extension data to InstalledExtensions card * Refactor PluginsHelper::get_plugin_data method Using the new get_plugin_path_from_slug method * Ensure get_plugins() function is available for PluginsHelper * Simplify using PluginsHelper method * Add MailChimp configured status logic * Add links to InstalledExtensionRow component * Add key prop to extensions list * Setup styles for InstalledExtensions card * Display nothing if no installed extensions * Add InstalledExtensions::get_allowed_plugins() * Setup Marketing Overview API controller * Add /activate-plugin marketing endpoint * Add more extensions URL props * Add Facebook extension configured status logic * Update Facebook extension URL props * Fix extenion data logic * Move component into it’s own directory * Setup /marketing/overview/recommended endpoint * Initial marketing page card header styles * Add basic extension data to RecommendedExtensions * Use color as variable * Tweak card header padding for design * Add basic styling to RecommendedExtensions card * settingsUrl is not available if the plugin is not active * Add /marketing/overview/installed-plugins REST endpoint * Add basic activation functionality to InstalledExtensions component * Don’t throw error on success * Add MVP data store for installed extensions card * Add core dark blue color variable * Add styles for installed extensions card * Move knowledge-base component to its own directory * Pull recommended marketing plugins from remote test site * Hide description when configured As per design * Tweak colors based on design * Finish off styling for RecommendedExtensions * Limit recommended extensions to 6 items * Add error handling to RecommendedExtensions card * Rename ‘copy’ extension prop * Add marketing button component to match design * Create ProductIcon component for marketing * Add InstalledExtension icons * Fix icon image paths * Add ProductIcon to InstallExtensionRow * Final styling to installed extensions card row * Knowledge base card placeholders * Fix missing icons when plugin not activated * Remove logging * Tweak array structure to ensure we have an array in JS and not an object * Refactor KnowledgeBase marketing component - We don’t need loop through every post when rendering, just pick the posts we need - Remove unused classes * Move padding from each slide to the container * Improve slider animations by absolute positioning the slides * Reduce the slider animation timeout and add a note * Add in-app purchase flow url params for recommended extensions * Fix slider animation * Reset slider height on window resize * Short slider animation, fix double margin on smaller screens * Add initial marketing/knowledge-base endpoint * Pull knowledge base posts from API * Rename welcome card dismiss tracks event * Record event on recommended product click * Recond onclick events for installed extensions card * Record event when carousel navigation clicked * img elements must have an alt prop * Remove import that is never used * use camelCase * Decode HTML entities from API call * Remove unused container div * Add card loading state * Add images to knowledge base card * Link knowledge base posts * Use the Pagination component rather than duplicate it’s functionality * Clean up and rename knowledge base slider * Clean knowledge base CSS and update responsive styles for single post slide * Add a README for button component * Add README for product icon component * Add initial readme for Slider component * Add correct image sizes to knowledge base slider, finalize styles * Fix extension link urls * Resolve some code formatting issue * Bind class click methods to this * Wrap nodes in Fragment * Fix wccom-back path * Add placeholder author and gravatar Default avatar url size returned from the API is currently set to 96 so I’ve done a simple replace with 16 * Fix style-lint expected new line * Add docblock for get_knowledge_base_posts() * Setup data store for marketing to handle installedExtensions card * Fix function names “Activating” not “installing” * Move welcome card component to its own dir * IconButton component is going to be deprecated ref: https://github.com/WordPress/gutenberg/pull/19299 * Support multiple activating plugins in the data store * Rename extension to plugin for consistency * Add propTypes to component * Rename data-store/ to data/ * Fix import paths * Extract isActivatingPlugin logic into datastore * Move data store selectors into own file * POST requests are not cached * Export apiFetch action * Don’t wrap API response in object * Implement data store for recommended extensions * Implement data store for marketing knowledge base * Tidy getRecommendedPlugins resolver * Try a cross browser cover/crop image effect to fit proposed design And help fit longer titles in * Add caught errors to handler * Adjust positioning so watermater is displayed * InstalledExtensions phpcs fixes * Marketing phpcs fixes * Alignment fix * MarketingOverview phpcs fixes * Missing full stop * Update breadcrumbs to use new approach * Fix style lint issues * Record `marketing_knowledge_article` track event on knowledge base post click * Import apiFetch and controls from @wordpress/data-controls * Hex color to lowercase * Remove duplicate method after rebase * Use new showPageArrowsLabel rather than hide with CSS * Fix blurry avatars on hidpi displays * Hide avatar if URL is falsy * Replace test author data with live data * Combine conditionals into ternary * Combine conditionals into ternary * Simplify class column logic * Only preload option and component settings in the admin * Fix isActivatingPlugin not updating Component was not re-rendeding. * Use querySelector over getElementsByClassName * Hide Marketing Welcome Card immediately on click * Use create-a-ticket url for supportUrl and make that the default * Add getInstalledPlugins resolver with preloaded data * Revert "Add getInstalledPlugins resolver with preloaded data" This reverts commit b8b127ec6411bef15616576b3bb189dc31777c13. * Load plugin data in a separate request after activation * Update welcome image * Don’t return plugin data in the activation request. * A space is required before closing bracket * Update Jest config to gracefully handle static assets Ref: https://jestjs.io/docs/en/webpack#handling-static-assets * Remove unused onExit property * Remove placeholder README * Use prop directly * yield createNotice * Add note to indicate which Category * Increase transient time to 3 days * Use $gap-small * Add proptype * Add debounce to slider height resize listener * Clean up isLoading logic * Dont show image elements if image data is empty * Open knowledge base posts in a new window * Add “noreferrer” * Turn the tab on in all env Co-authored-by: Daniel Bitzer <danielbitzer@gmail.com>
2020-03-28 13:48:27 +00:00
$request = wp_remote_get( $request_url );
$posts = [];
if ( ! is_wp_error( $request ) && 200 === $request['response']['code'] ) {
$raw_posts = json_decode( $request['body'], true );
foreach ( $raw_posts as $raw_post ) {
$post = [
'title' => html_entity_decode( $raw_post['title']['rendered'] ),
'date' => $raw_post['date_gmt'],
'link' => $raw_post['link'],
'author_name' => isset( $raw_post['author_name'] ) ? html_entity_decode( $raw_post['author_name'] ) : '',
'author_avatar' => isset( $raw_post['author_avatar_url'] ) ? $raw_post['author_avatar_url'] : '',
];
$featured_media = $raw_post['_embedded']['wp:featuredmedia'];
if ( count( $featured_media ) > 0 ) {
$image = current( $featured_media );
$post['image'] = add_query_arg(
array(
'resize' => '650,340',
'crop' => 1,
),
$image['source_url']
);
}
$posts[] = $post;
}
}
set_transient(
$kb_transient,
$posts,
// Expire transient in 15 minutes if remote get failed.
empty( $posts ) ? 900 : DAY_IN_SECONDS
);
Marketing Tab MVP (https://github.com/woocommerce/woocommerce-admin/pull/3953) * Add Marketing feature flag * Add marketing page and menu item * Register marketing page with layout controller * Add initial marketing cards * Add max-width to marketing overview page * Add initial marketing WelcomeCard component * Make marketing welcome card permanently dismiss * Add a readme for the marketing page components * Record tracks event when marketing welcome dismissed * Match design width * Add welcome image and initial styles * Use gridicon for close button * Fix whitespace * Add PluginsHelper::get_plugin_data() * Add initial Marketing\InstalledExtensions class * Preload installed marketing extensions data * Tweak extension statuses * Add InstalledExtensionRow component * Add initial extension data to InstalledExtensions card * Refactor PluginsHelper::get_plugin_data method Using the new get_plugin_path_from_slug method * Ensure get_plugins() function is available for PluginsHelper * Simplify using PluginsHelper method * Add MailChimp configured status logic * Add links to InstalledExtensionRow component * Add key prop to extensions list * Setup styles for InstalledExtensions card * Display nothing if no installed extensions * Add InstalledExtensions::get_allowed_plugins() * Setup Marketing Overview API controller * Add /activate-plugin marketing endpoint * Add more extensions URL props * Add Facebook extension configured status logic * Update Facebook extension URL props * Fix extenion data logic * Move component into it’s own directory * Setup /marketing/overview/recommended endpoint * Initial marketing page card header styles * Add basic extension data to RecommendedExtensions * Use color as variable * Tweak card header padding for design * Add basic styling to RecommendedExtensions card * settingsUrl is not available if the plugin is not active * Add /marketing/overview/installed-plugins REST endpoint * Add basic activation functionality to InstalledExtensions component * Don’t throw error on success * Add MVP data store for installed extensions card * Add core dark blue color variable * Add styles for installed extensions card * Move knowledge-base component to its own directory * Pull recommended marketing plugins from remote test site * Hide description when configured As per design * Tweak colors based on design * Finish off styling for RecommendedExtensions * Limit recommended extensions to 6 items * Add error handling to RecommendedExtensions card * Rename ‘copy’ extension prop * Add marketing button component to match design * Create ProductIcon component for marketing * Add InstalledExtension icons * Fix icon image paths * Add ProductIcon to InstallExtensionRow * Final styling to installed extensions card row * Knowledge base card placeholders * Fix missing icons when plugin not activated * Remove logging * Tweak array structure to ensure we have an array in JS and not an object * Refactor KnowledgeBase marketing component - We don’t need loop through every post when rendering, just pick the posts we need - Remove unused classes * Move padding from each slide to the container * Improve slider animations by absolute positioning the slides * Reduce the slider animation timeout and add a note * Add in-app purchase flow url params for recommended extensions * Fix slider animation * Reset slider height on window resize * Short slider animation, fix double margin on smaller screens * Add initial marketing/knowledge-base endpoint * Pull knowledge base posts from API * Rename welcome card dismiss tracks event * Record event on recommended product click * Recond onclick events for installed extensions card * Record event when carousel navigation clicked * img elements must have an alt prop * Remove import that is never used * use camelCase * Decode HTML entities from API call * Remove unused container div * Add card loading state * Add images to knowledge base card * Link knowledge base posts * Use the Pagination component rather than duplicate it’s functionality * Clean up and rename knowledge base slider * Clean knowledge base CSS and update responsive styles for single post slide * Add a README for button component * Add README for product icon component * Add initial readme for Slider component * Add correct image sizes to knowledge base slider, finalize styles * Fix extension link urls * Resolve some code formatting issue * Bind class click methods to this * Wrap nodes in Fragment * Fix wccom-back path * Add placeholder author and gravatar Default avatar url size returned from the API is currently set to 96 so I’ve done a simple replace with 16 * Fix style-lint expected new line * Add docblock for get_knowledge_base_posts() * Setup data store for marketing to handle installedExtensions card * Fix function names “Activating” not “installing” * Move welcome card component to its own dir * IconButton component is going to be deprecated ref: https://github.com/WordPress/gutenberg/pull/19299 * Support multiple activating plugins in the data store * Rename extension to plugin for consistency * Add propTypes to component * Rename data-store/ to data/ * Fix import paths * Extract isActivatingPlugin logic into datastore * Move data store selectors into own file * POST requests are not cached * Export apiFetch action * Don’t wrap API response in object * Implement data store for recommended extensions * Implement data store for marketing knowledge base * Tidy getRecommendedPlugins resolver * Try a cross browser cover/crop image effect to fit proposed design And help fit longer titles in * Add caught errors to handler * Adjust positioning so watermater is displayed * InstalledExtensions phpcs fixes * Marketing phpcs fixes * Alignment fix * MarketingOverview phpcs fixes * Missing full stop * Update breadcrumbs to use new approach * Fix style lint issues * Record `marketing_knowledge_article` track event on knowledge base post click * Import apiFetch and controls from @wordpress/data-controls * Hex color to lowercase * Remove duplicate method after rebase * Use new showPageArrowsLabel rather than hide with CSS * Fix blurry avatars on hidpi displays * Hide avatar if URL is falsy * Replace test author data with live data * Combine conditionals into ternary * Combine conditionals into ternary * Simplify class column logic * Only preload option and component settings in the admin * Fix isActivatingPlugin not updating Component was not re-rendeding. * Use querySelector over getElementsByClassName * Hide Marketing Welcome Card immediately on click * Use create-a-ticket url for supportUrl and make that the default * Add getInstalledPlugins resolver with preloaded data * Revert "Add getInstalledPlugins resolver with preloaded data" This reverts commit b8b127ec6411bef15616576b3bb189dc31777c13. * Load plugin data in a separate request after activation * Update welcome image * Don’t return plugin data in the activation request. * A space is required before closing bracket * Update Jest config to gracefully handle static assets Ref: https://jestjs.io/docs/en/webpack#handling-static-assets * Remove unused onExit property * Remove placeholder README * Use prop directly * yield createNotice * Add note to indicate which Category * Increase transient time to 3 days * Use $gap-small * Add proptype * Add debounce to slider height resize listener * Clean up isLoading logic * Dont show image elements if image data is empty * Open knowledge base posts in a new window * Add “noreferrer” * Turn the tab on in all env Co-authored-by: Daniel Bitzer <danielbitzer@gmail.com>
2020-03-28 13:48:27 +00:00
}
return $posts;
}
}