* Add product id to product data
* Create a React Hook for updating product slug
* Update product slug when title is updated.
* Add changelog
* Import hooks from index
* Use getPostId util to get product ID
* Only update draft product's slug
* Revert "Always show pricing group fields, disable if not available for a product type (#38531)"
This reverts commit 18f2de2bc4.
* Add changelog and fix lint issues
* Remove call to removed function
* Add new countries in isWCPaySupported
* Add new countries in get_wcpay_countries
* Add new countries in default free extension 'woocommerce-payments'
* changelog
* fox linting issue
* Remove support for Czech Republic, Sweden, Hungary
* Revert "Remove support for Czech Republic, Sweden, Hungary"
This reverts commit 0a8309f664.
* When ExtendedContainer::replace is used and an instance of an object is passed as the replacement, the init method of the passed object will be executed (previously the container would execute init only when creating a new instance from a class name).
* Added the ExtendedContainer::reset_replacement method, this will undo a replace and reset the registration back to its original state (so get will act as if replace had never been executed for the given class name). Note that for shared definitions this needs to be combined with reset_all_resolved.
* Similarly, added the ExtendedContainer::reset_all_replacements method.
* Add possibility to track select and checkbox values for non_option settings
* Track select and checkboxes in abstract-wc-settings-api
* Add changelog
* Add hook comment and ignore phpcs for actions that were already called before
With orders table authoritative, sync disabled, an order with refunds
is deleted, a duplicate deletion record was being created for the refund.
That's because 'upshift_or_delete_child_orders' was deleting the child
orders, which caused a deletion record to be already created; and
after that, 'handle_order_deletion_with_sync_disabled' was again
creating a record for these child orders.
The fix is a bit convoluted because we can't know for sure if
'upshift_or_delete_child_orders' will delete the child orders or not.
* Fix overlapping button position when the height is less than 667px (iphone SE)
* Fix misaligned check icon on mobile
* Prevent the menu from closing when clicking on a selected item
* Add changelog
* Fix lint
---------
Co-authored-by: moon <moon.kyong@automattic.com>
* Remove feature related query args after enabling/disabling it
* Test to see if E2E tests pass
* Revert "Test to see if E2E tests pass"
This reverts commit 120e971f33f22dc3e7eec6e5ab228b1908c56364.
* Add support to remove multiple query params
* Add wc_get_default_product_type_options function
* Use wc_get_default_product_type_options() as initial input for product_type_options filter
* Changelog
* Only record product update on already published products
* Add source into published product tracks event
* Add missing tracks options to product update event
* Track tab clicks in the editor
* Add source to tab clicks
* Record tracks on preview click
* Add events for media gallery, description, and attributes
* Add tracks events to more menu
* Replace new_product_page with source
* Add changelog entry
* Fix lint errors
* Add tracks for About the Editor menu item
* Add onClick event to AboutTheEditor menu item
* Use dropdown option event for classic editor menu click
- When ExtendedContainer::replace is used passing an instance of
an object, the 'init' method will be executed in the instance
when resolving the replaced class name.
- Added the ExtendedContainer::reset_replacement method, this will
undo a 'replace' and reset the registration back to its original state.
- Similarly, added the ExtendedContainer::reset_all_replacements method.
This makes the behavior of wc_get_order to be the same as when HPOS
is disabled (and Abstract_WC_Order_Data_Store_CPT is thus used
instead): the order is still retrieved (although without the errored
properties set) instead of the function just returning false.
An example of when this can happen is if an order refund has the id
of a no longer existing order as the parent id.
* get_index_columns using SHOW INDEX FROM query instead of information_schema
* returning empty array for clarity
* ignore interpolated query
* adding changelog entry
* Adding unit tests for the updated DatabaseUtil::get_index_columns()
---------
Co-authored-by: Michael Pretty <prettyboymp@Michaels-MacBook-Pro.local>
* Disable 'Used for variations' checkbox when product type is not variable and remove leftover code
* Run disable or enable fields after saving attributes
* Update orders status query to ensure it exclude trash.
* Add incentive ID to every track event
on the welcome incentive page.
* Remove unnecessary SCSS after #38775 fix
* Add changelog entry
* Replace tos_url with tc_url for accurate naming
* Fix phpcs errors
---------
Co-authored-by: Vlad Olaru <vlad@pixelgrade.com>
* Enable core-profiler in prod
* Add Changelog
* Skip StoreDetails tests -- we're replacing it with Core Profiler
* Add features.is_enablefd to detect features
* Skip the onboarding wizard tests when the core profiler is enabled
* Skip skipping the onboarding wizard when the core profielr is enabled
* Incldue features module
* Skip core profiler for testing
* Skip core profiler for testing
* Remove test code
* Skip teh plugin page when all the plugins are activated
* Fix the if statement so that stageIndex becomes 2 when progress is over 60
* Add a 2nd loader stage for the skipped guided setup
* Add changelog
* Lint fix -- css
* fix: banished core profiler page spinners
* addressed pr comments
* update jest snapshot
---------
Co-authored-by: rjchow <me@rjchow.com>
* Use theme color for the option hover
* Add Changelog
* Remvoe absolute position -- can't predict correct value for bottom
* Fix css lint error
* Fix button width
* Use gray-0 for dropdown item hover color
* Fix border style for Give your store a name field
* Fix hover color for the platform options
* Remove light color on hover
---------
Co-authored-by: Ilyas Foo <foo.ilyas@gmail.com>
* Fix font heading font style and adjust main component max width to match design
* Remove redundant #FunWooFact
* Reset button font color to follow admin theme
* Fix Installed label vertical alignment
* Changelog
* Remove permanent borders from consent checkbox, lint fix
* Remove box shadow on checkboxes in plugins page
* Standardize checkbox styling across core profiler
* Fix heading font styling
* Lint
* More lint
* Update snapshot
Squashed commit of the following:
commit 8ccd8e26127594e859b37ead9fd150f05d36d9f5
Author: barryhughes <3594411+barryhughes@users.noreply.github.com>
Date: Mon Jun 5 19:37:57 2023 -0700
Do not output payment gateway nonce to unqualified users.
commit 882946bb18dee5eb7ffea48ddfbd4c14a5092c94
Author: barryhughes <3594411+barryhughes@users.noreply.github.com>
Date: Wed Jun 7 14:24:58 2023 -0700
Instead of looking for `?wc-ajax`, specifically exempt `admin-ajax.php`.
This mimics the existing approach used for `admin-post.php` requests, and is stricter by default.
commit 99cffd7cde1aa87176254845c732c91a446232f7
Author: barryhughes <3594411+barryhughes@users.noreply.github.com>
Date: Tue Jun 6 12:40:21 2023 -0700
Nonce verification not needed when evaluating ajax properties.
commit 99157d2a18ea78c68c265609dfdd1bddadeee7b2
Author: barryhughes <3594411+barryhughes@users.noreply.github.com>
Date: Tue Jun 6 12:38:53 2023 -0700
Document `woocommerce_disable_admin_bar` hook.
commit badcf8f50099dd38fa855d2aa71c8507d3f2a252
Author: barryhughes <3594411+barryhughes@users.noreply.github.com>
Date: Mon Jun 5 18:49:25 2023 -0700
Describe expectations around customer access to the dashboard.
commit 127053e1c27e7da5515c6638859fa09384241624
Author: barryhughes <3594411+barryhughes@users.noreply.github.com>
Date: Mon Jun 5 13:30:03 2023 -0700
'wc-ajax' requests should be filtered out of admin access logic.
commit 2e8182761e050cc4371181eaa197b6d4b2867f89
Author: Vedanshu Jain <vedanshu.jain.2012@gmail.com>
Date: Fri May 12 15:15:57 2023 +0530
Clean up individual escape to also do it again when it is used.
* Initial refactor of components
Move out from index every UI component to make it easier to maintain.
* Initial implementation of new design
Some minor adjustments are missing, and I've added a few TODOs to complete later.
* Add changelog entry
* Finish design update
* Compress menu icon
* Add user's first name to heading copy
* Fetch and cache eligible incentive from WCPay API
Sharing its properties under `window.WcSettings.admin`
* Filter `allowed_promo_notes`
To be able to add those form WCPay API request
* Update JS side to use the new shared incentive details
* Ensure we cache requests even if there are no eligible incentives
* Fix a typo in WCPayBanner
* Move incentive preloaded data from wcSettings
to a new window variable which will be only loaded on WCPay welcome page.
* Simplify `has_wcpay` check
* Render sanitized HTML from incentive description
* Update get incentive logic to also cache non success responses
* Add incentive ID to page view track
* Add changelog entry for the onboarding package
* Update used options names
and add them to `get_default_option_permissions
* Differentiate every dismissed incentive
Reuse WCPay welcome page logic for notes display conditions
* Use tos_url instead of tos_link to match response
* Fix incentives endpoint request payload
* Back to preload incentive on admin shared settings
* Move promo notes filter to where it's used
to avoid any possible race conditions.
* Replace every occurrence of `WooCommerce Payments` with `WooPayments`
* Prevent modal large padding-bottom
* Prevent another global style override on modal
* Fix TS error coming from trunk merge
* Fix wrong style property
* Further restrict WCPay incentives to plugin not active and countries supported
* Adjust the meaning of has_wcpay
* Wait for dismiss option update before redirect
to prevent the side menu entry to be visible after redirecting back to WC admin.
* Enforce TOS asterix at the end of incentive description
* Remove underscore from priavate instance var.
* Fix ESLint error
* Fix SCSS linting issues
* Refine `has_wcpay` and `has_orders`
* Enforce consistent WooPayments branding
* Enforce stricter i18n calls with escape
* Update page title to match new branding
* docs: Enforce branding in code docs also
* Remove method that is unreliable to be used outside of onboarding
* Remove unused constant
* Missing new line
Co-authored-by: Ilyas Foo <foo.ilyas@gmail.com>
---------
Co-authored-by: Vlad Olaru <vlad@pixelgrade.com>
Co-authored-by: Ilyas Foo <foo.ilyas@gmail.com>
* Return full response from getJetpackAuth
* Add success and errors
* Redirect to Home in case of an error from getJetpackAuth endpoint
* Add changelog
* Use redirectToJetpackAuthPage
* Replace window.location.href with navigateTo
* Fix type issue with getJetpackAuthUrl
* Update plugins/woocommerce-admin/client/core-profiler/index.tsx
Co-authored-by: Chi-Hsuan Huang <chihsuan.tw@gmail.com>
---------
Co-authored-by: Chi-Hsuan Huang <chihsuan.tw@gmail.com>
* Add install-and-activate-plugins-async action to onboarding
* Add label and learn_more_link types
* Use label and learn_more_link
* Remove unused imports
* ts fixes
* Visual changes on the plugin page
* Change CTA font size from 13px to 14px
* Change spacing between the chebox and logo to 24px
* Change heading font-weight to 500
* Fix css lint error
* Add back learn more link that was removed from rebase
* Add required packages
* Load Jetpack Config
* Add getJetpackAuthUrl to data/onboarding
* Add Connection Rest Auth -- seems like this is required for Jetpack to communicate back to the connected site
* Add jetpack-authorization-url REST API
* Redirect to Jetpack Auth page after the installatino process if jetpack was selected
* Require can_install_plugins permission for jetpack auth url endpoint
* Update packages/js/data/src/onboarding/resolvers.ts
Co-authored-by: Ilyas Foo <foo.ilyas@gmail.com>
* Update plugins/woocommerce/src/Admin/API/OnboardingPlugins.php
Co-authored-by: Ilyas Foo <foo.ilyas@gmail.com>
* Remove automattic/jetpack-sync and its config
* Support redirect_url and from params
* Do not redirect to Jetpack auth if it is already connected
* Add installed_ext_success=1
* Use woocommerce-core-profiler for from value
* Revert unrelated lock file changes
* Minor refactor
* Extracted out isJetpackConnected cond to a guard
* Added meta data for isJetpackConnected to prevent unwanted spinner
* Add Changelog
* Lint fix
* Move Jetpack Connection config init to class-woocommerce
* Add changelog
* Remove unnecessary require
* Note jetpack-authorization-url endpoint is experimental
* Fix broken test
* Add component to sendToJetPackAuthPage state
* Fix lint error
---------
Co-authored-by: rjchow <me@rjchow.com>
Co-authored-by: Ilyas Foo <foo.ilyas@gmail.com>
Actions starting with “mark_” were silently handled by our own code, preventing 3rd parties from adding their own “mark_” bulk actions and acting on them.
* Configure the expiriment to redirect variation treatment to the new product editor
* Add changelog file
* Fix experiment name
* Fix changelog description
* Options menu in product editor view should show Turn off the new product editor with some subtext
* Record event product_editor_options_turn_off_editor_click when clicking Turn off the new product form menu item
* Add changelog file
* Add 'About the Editor' menu item
* Show the guide when clicking the menu item
* Add track event when clicking about the editor
* Add changelog
* Remove from product more menu
Adds the following pnpm commands for utilizing the new phpcs-changed
composer scripts (see #37465 and #38085):
- `pnpm --filter=woocommerce run lint:php:changes`
- `pnpm --filter=woocommerce run lint:php:changes:staged`
- `pnpm --filter=woocommerce run lint:php:changes:branch`
Also updates the contributing guidelines to make these commands more
discoverable.
* Use WooFooterItem for Footer
* Use WooFooterItem fill for TransientNotices
* Adjust TransientNotices styling to work in footer
* Fix footer width when in setup wizard
* Change export of TransientNotices from default to named
* Add border to footer
* Changelog
* Changelog
* Mock WooFooterItem to allow unit tests to pass
* Fix lint error in test
* Adds a data key with the list of WC features that are currently enabled on the site.
* Adds a feature_compat key to each plugin that shows its compatibility with each feature (compatible, incompatible, or uncertain) if the plugin is "WooCommerce aware", otherwise just an empty array.
This PR fixes two unit test files that could not be run individually by adding HPOSToggleTrait.php to the unit test boot loader. It also does a bit of namespace cleanup in HPOSToggleTrait.php.
The mocks in this test were affecting other unit tests for the
PluginUtil class, but only when run in GitHub actions (the tests were
working fine locally). Rather than hold up this PR, I've created
issue #38720 as a future task to add the unit test back in once we've
figured out if there's something buggy happening with dependency
injection.
* Add support for new properties "added" and "deleted" in settings tracking
* Add calls to actions when adding and deleting shipping zones and classes
* Add changelog
* Cover an edge case where the zone is created through adding a method and add more comments
* Fix lint issues
* Add inline comment explaining if statement
Refactor WC_Settings_Tracking to work with a single action with an additional parameter
We were checking whether an order is modified before migrating them. While on surface this looks good, the logic itself has following flaws:
1. We were only checking the columns in the core posts table, but none of the meta fields.
2. Our comparison logic was written in SQL, but given that we have a much better comparison logic already written in PHP, it does not makes sense to maintain two different versions.
3. We are alrady checking for modified records in the batch processor itself, so another check this close to migration logic is not really needed.
* Change Skip this setup to Skip this step
* Visual changes on intro, user profile, and skip guided page
* Always check tracking agreement
* Change border to 2px
* Change Give yoru store a name font-size to 13
* Add Changelog
* Update test to reflect the text change
* Remove !important
* Update test snapshot
* Update test snapshot
* Remove test that is no longer necessary
* Add install-and-activate-plugins-async action to onboarding
* Add label and learn_more_link types
* Use label and learn_more_link
* Fix type
* Add changelog
* Add changelog
* Add install_priority -- this will be used in the core profiler
* Sort selected plugins by install_priority for installation
* Remove unused imports
* dev: refactor installAndActivatePlugins to xstate
* ts fixes
* Sort plugins by install_priority
* Make sure WooCommerce Shipping is always visible
* Update free extension list content
* Updated WC payment description
* Updated logo images
* Visual changes on the plugin page
* Change CTA font size from 13px to 14px
* Change spacing between the chebox and logo to 24px
* Change heading font-weight to 500
* Fix css lint error
* Fix gray-900 variable name
* Hide learn more link on mobile view
* Add back learn more link that was removed from rebase
* Send pluginsAvailable to pluginInstallermachine
* Use is_activated to determine plugin availability and install status
* Update packages/js/data/src/onboarding/types.ts
Co-authored-by: Ilyas Foo <foo.ilyas@gmail.com>
* Update plugins/woocommerce/src/Internal/Admin/RemoteFreeExtensions/DefaultFreeExtensions.php
Co-authored-by: Ilyas Foo <foo.ilyas@gmail.com>
* Add back recordTracksPluginsLearnMoreLinkClicked
* Use install-and-activate-plugins-async when timer is up
* Record plugin and link with learn more linked clicked event
* Fix failign tests
* Add comment for install_priority
---------
Co-authored-by: rjchow <me@rjchow.com>
Co-authored-by: Ilyas Foo <foo.ilyas@gmail.com>
* Ensure order ordering in order filter unit test
* remove unused variable, fix spacing
---------
Co-authored-by: Ron Rennick <ronald.rennick@automattic.com>
* Copy Guide component from @wordpress/components and fix focus issue
* Add 'tell me more' button and behavior
* Move Guide component from components package to admin package
Implement assigning an href to the finish button, sending the current page and origin as a parameter on the onFinish callback
* Remove dependency
* Restore pnpm-lock.yaml
* Add changelog
* Add comment in Guide component
* Dismiss modal only when it's finished or X button is clicked
* Add 'rel' when opening link in a new tab
* Always show General product tab
* Add info messages for variable and grouped products
* Add logic to disable/enable fields and labels based on product type
* Tweak CSS and fix links
* Add tracks events for links
* Add filters to pricing disabled message
* Tweak logic to only enable fields on certain product types instead of disabling in the opposite ones
Add fallback message when pricing is disabled but it's not Variable or Grouped product
* Add docblocks
* Fix more lint issues
* Fix last lint issues
* Update selector in e2e test
* Refactor PHP echo
* Attach to #woocommerce-product-data instead of attaching to body
* Adds a data key with the list of WC features that are currently
enabled on the site.
* Adds a `feature_compat` key to each plugin that shows its
compatibility with each feature (compatibile, incompatible, uncertain)
if the plugin is "woocommerce aware", otherwise just an empty array.
* Changes the feature given it's id and a toggle value as a query param
* Swap classic editor and new product block editor url when product_block_editor feature changes
* Turn off the product_block_editor feature when user choose to use the classic editor
* Add changelog files
* Fix linter errors
* Add nonce to each feature change request
* Change the hooks name for better readability
* Use get_current_screen function to better identify if the current screen is the product creation or edition
* Add wp_die if the nonce verification failed
* Change regex for explode/parse_url for better reading
* dev: refactor installAndActivatePlugins to xstate
* ts fixes
* fixed first plugin install progress bar reset issue
* clean up todo comments
* fixed bug where errors were not reported if past 30s timeout
* fix lint
Co-authored-by: Joel Thiessen <444632+joelclimbsthings@users.noreply.github.com>
Co-authored-by: Nima Karimi <73110514+nima-karimi@users.noreply.github.com>
Co-authored-by: Thomas Shellberg <tommy.shellberg@automattic.com>
In PHP 8.1 the behavior of mb_detect_encoding has changed from
"return the first suitable encoding from the list" to
"return the most probable encoding from the list". The algorithm used
for "most probable" often fails, though, and detects valid UTF-8
strings as if they were ISO-8859-1. The fix is to use mb_check_encoding
instead.
Additionally, if conversion is needed, mb_convert_encoding is now used
since utf8_encode is deprecated.
In PHP 8.1 several functions that accept a string as an argument
(e.g. str_replace) throw a deprecation notice when null is passed.
This commit changes the usages of these functions in
wc-formatting-functions.php so that null inputs are converted
to empty strings.
* dev: refactor core-profiler - modularise each page
- wrapped each page's pre, post, and main states into their top level states for tidiness
- tagged them with id so that we can easily jump to them when doing routing
- generalised component finder code such that it recursively traverses the state meta object until it finds a component key
- fixed css label to use top level state key
* moved initializing into introOptIn so it's not a special case by itself
Makes it possible to do a partial match search for customers across
name, username, and email, instead of having to choose one of those
fields.
Refs #33383
* Add placeholder TourKit in product-page
* Create component and configure it to show to the right of wp menu
* Finish TourKit and start creating features guide
* Implement CSS changes and background color
* Create Wrapper to facilitate showing the tour and guide without relying on the options in the future
* Refactor
Add tracks events
* Add changelog
* Fix lint problems
* Fix CSS
* Refactor styles
* General refactor and extract BlockEditorGuide component
* Add changelog
* Fix lint issues
This introduces 2 filters: `woocommerce_order_table_orders_clauses` and `woocommerce_order_table_orders_request`. They mimic the ones found in `WP_Query::get_posts()`.
They allow to modify the query's clauses, depending on the query args (available in the `OrdersTableQuery` object) for example.
Fixes a bug where on 2-col layouts, text was overlapping the image because the overall container size is less than 500px.
75% is the equivelent of 500px for single-col layout.
* Update the margin-left on the buttons in the top bar from 16px to 8px
* On mobile, the left and right body margins should be 32 px
* The inner padding in the tab in the top bar should be 12px, not 16px
* In the edit product link modal, let's set this modal’s width to 650 px and remove the line separating the header from the contents
* All modals should now have 8 px window radius
* In the feedback form, can we fix the buttons at the bottom
* The help icon in checkboxes small, detached from the item label, and vertically misaligned. Left margin of 4 px, no vertical adjustment; somehow it has a -2px set for the top margin)
* Fix block-editor-block-contextual-toolbar top position
* When the product is in a draft state, the button in the top bar should say Add, not Save. It should change into Update once it's published on the store
* Fix layout margin top
* Add ection support for blockGap and set title and description to optional
* Remove non needed control field margin bottom
* Fix schedule sale block spacing
* Remove non needed control field help text margin bottom
* Remove the sub section outer spacing
* Move pricing fields into a sub section block
* Fix collapsible-contet margin top
* Remove invalid inner block layout spacing
* Wrap sku, stock toogle and quantity within a sub section
* Group inventory advance section inner blocks into a sub section
* Fix linter error
* Add changelog files
* Fix php lint error
* Change unit names to fit GB definitions
see: b2c16f3c68/packages/base-styles/_variables.scss\#L31-L41
* Make option API fail when using a disallowed option name in non-produciton environments and update permission list
* Add changelog
* Change Option API deprecated notice version to WC 6.3
* Change install-async to install-activate-async
* Add changelog
* Add comment for activated function
* Fix tests and rename install-activate-async to install-and-activate-async
* Rename callback function to static
* Filter by date_paid and date_completed on list table orders based on configuration
* Use separate query param 'order_date_type' to filter orders
* Add clarifying comment
* Add missing phpcs ignore
* Refactor to use 'm' and 'order_date_type' query parameters
When WC is provided only the country for the option `woocommerce_default_country` then it will fail to select a default state within the listed states.
Try this by manually setting `woocommerce_default_country` to "US" and you will see it selects the first country in the list instead of the first state within that country.
This only happens for countries that have states like US and CA for instance.
This ensures that the instance of the page controller class that
is used to set up the HPOS order admin screens is accessible and has
all its properties set correctly for use with the new is_order_screen
method.
* Make `ready` call jQuery 3 valid
* Another call during setup.
* Add changelog.
* Trigger CI
---------
Co-authored-by: Jorge A. Torres <jorge.torres@automattic.com>
* Add lint-branch.sh
* Add doc block and make var name more explicit
* Add changelog file
* Update composer's lint and lint-staged scripts
It turns out that using single brackets for a test doesn't work
sometimes when the variable contains spaces or multiple items.
Double brackets handles this better, so should make the scripts more
robust.
* Use double brackets in lint-branch script
Using double brackets for a test is more robust and may be able to
handle some cases that single brackets can't, such as a variable that
contains spaces or multiple items.
Note that this also required updating the shebang at the top of the
script file from `sh` to `bash` since double brackets is a syntax
introduced in Bash.
This PR adds support to HPOS for order edit locking in the admin (similar to what posts and custom post types get by default). Specifically, the following is implemented:
* The lock is stored in order meta for interoperability with WP's implementation.
* Orders that are being edited by a user other than the current one will appear with a lock icon next to them in the list table. This lock icon/status is updated live via heartbeat with no page refresh necessary.
* When opening an order that is being edited by another user, a warning will be displayed, with the ability to take over the order:
* When someone has taken over an order you're editing, you'll get a warning about it automatically via heartbeat (no page refresh involved)
Fixes#37108
* Change attributes of tracks event product_attributes_add
* Don't send used_for_variations_count if it's not variable product type
* Explicitly add null values in product_attributes_add when the attribute is sent on the other call
* Rename product_attributes_add on the product page to product_attributes_save
Fix inverted local and global attributes count
Remove unnecessary parameters
Refactor code
* Update changelog
* Remove sample data from product templates for product task
* Add changelog
* Update product templates
* Remove unused columns from product templates and set Published to -1
This PR fixes the bug the where we were only verifying shop_order orders. This also adds the option to provide a list separated by , of order types to verify.
Fixes#38317
* Refactor Layout component to functional component
* Add class to pages based on page path
* Add styling for interface skeleton on product pages
* Add changelog entries
* Move product page styles out of product editor package and into client
* Fix linting issues
* Check for location before checking path in page tracking
* Dont add body classes when no page path exists
* Record page view without router location for embed pages
add: fetch extensions and countries from API for core profiler
- prefetch it once in the machine init so that it's instant when used later
- fetch it again in preExtensions state and store it to context
- added prefetch for getCountries as well
* Remove unused $job_id argument
* Support WP_Upgrader argument -- helps for testing
* Minor refactor to support a custom logger in install_plugins
* Support a custom logger in install_plugins
* Support swapping out WP_Upgrader impl.
* Added woocommerce_plugins_install_async_callback callback to call install_plugins with a custom logger from action scheduler
* Add a new REST endpoint for onboarding plugins
* POST /wc-admin/onboarding/plugins/install-async -- queues plugin installs to action scheudler
* GET /wc-admin/onboarding/plugins/scheduled-installs/:job_id -- returns current status of given job id
* Remove WP_Upgrader support -- not using it
* Add changelog
* Fix phpcs errors
* Call complete
* Update test to wait 1 sec before checking the action scheduler
* Remove test that requires waiting an async action
* Add test for 404 status
* Add status field
* Remove woocommerce_plugins_install_async_callback action -- no longer used
* Call run-in-background endpoint with blocking=false to simulate a background process
* Update plugins/woocommerce/src/Admin/PluginsInstallLoggers/AsynPluginsInstallLogger.php
Co-authored-by: Chi-Hsuan Huang <chihsuan.tw@gmail.com>
* Update plugins/woocommerce/src/Admin/PluginsInstallLoggers/PluginsInstallLogger.php
Co-authored-by: Chi-Hsuan Huang <chihsuan.tw@gmail.com>
* Update plugins/woocommerce/tests/php/src/Admin/API/OnboardingPluginsTest.php
Co-authored-by: Chi-Hsuan Huang <chihsuan.tw@gmail.com>
* Update plugins/woocommerce/tests/php/src/Admin/API/OnboardingPluginsTest.php
Co-authored-by: Chi-Hsuan Huang <chihsuan.tw@gmail.com>
* Update plugins/woocommerce/tests/php/src/Admin/API/OnboardingPluginsTest.php
Co-authored-by: Chi-Hsuan Huang <chihsuan.tw@gmail.com>
* Update plugins/woocommerce/src/Admin/PluginsInstallLoggers/PluginsInstallLogger.php
Co-authored-by: Chi-Hsuan Huang <chihsuan.tw@gmail.com>
* Fix incorrect logger name
* Add max_execution_time setting
* Remove test code
* Skip failing test -- hard to test as the function uses site url and test env does not actaully have a running WP
* code format
* Revert background process changes
* Add install and activate endpoint
* Update plugins/woocommerce/src/Admin/PluginsInstallLoggers/AsynPluginsInstallLogger.php
Co-authored-by: Ilyas Foo <foo.ilyas@gmail.com>
* Update plugins/woocommerce/src/Admin/API/OnboardingPlugins.php
Co-authored-by: Ilyas Foo <foo.ilyas@gmail.com>
* Require activate_plugins permission
* Add test to check for permissions
* Update install and activate schema
* Fix: import AsyncPluginsInstallLogger correctly
* Fix: add missing comments
---------
Co-authored-by: Chi-Hsuan Huang <chihsuan.tw@gmail.com>
Co-authored-by: Ilyas Foo <foo.ilyas@gmail.com>
Co-authored-by: James Collins <james@om4.com.au>
Co-authored-by: Nestor Soriano <konamiman@konamiman.com>
Includes UI detailing how many webhooks are assigned to each of the users being deleted, and explaining how the re-assignment works.
* Remove block registration from within the Editor component
* Expose the initBlocks function to be used outside of the product package
* Register blocks within the ProductPage component
* Add changelog files
* Unregister blocks when product page gets unmounted
* Add core profiler - welcome to woo page
* Update checkbox styles
* Add tracks
* Update default tracking value
* Update copies
* using invoked promise instead of useState
- take advantage of xstate's built ins for side effects instead of useEffect/hooks
- discovered that error result wasn't really handled in original useEffect
- use text labels instead of inline functions so that we can decouple the implementation from the machine model
- todo: can move the invoked function out elsewhere and also tests if needed (not necessary here because it's a simple call)
* add: core profiler scaffolding using xstate
* Add navigation and progress-bar components
* fix css lint error
* Update plugins/woocommerce-admin/client/core-profiler/components/navigation/woologo.tsx
Co-authored-by: Chi-Hsuan Huang <chihsuan.tw@gmail.com>
* Update plugins/woocommerce-admin/client/core-profiler/components/progress-bar/progress-bar.tsx
Co-authored-by: Chi-Hsuan Huang <chihsuan.tw@gmail.com>
* Update plugins/woocommerce-admin/client/core-profiler/components/navigation/navigation.tsx
Co-authored-by: Chi-Hsuan Huang <chihsuan.tw@gmail.com>
* Remove var from __ function
* Use woocommerce prefix for classnames
* Fix css lint error
* Fix broken tests
* Add business location page
* Remove unwanted changes from rebase
* Remove unwanted changes from rebase
* Redirect to Woo Home on exit
* Add tracks
* Fix js lint error
* Add loader page
* Support meta value from nested states
* Use navigateTo
* Add tests for getCountryStateOptions
* Use Country type from navigation package
* Rename useStages to getLoaderStageMeta
* Add changelog
* Move progress from 20 to 80
* Fix xstate warning
* Fix broken pnpm lock
* Fix eslint errors
* Update plugins/woocommerce-admin/client/core-profiler/services/country.ts
Co-authored-by: RJ <27843274+rjchow@users.noreply.github.com>
* Update plugins/woocommerce-admin/client/core-profiler/index.tsx
Co-authored-by: RJ <27843274+rjchow@users.noreply.github.com>
* Save country to option
* Fix jslint error
* Update plugins/woocommerce-admin/client/core-profiler/services/country.ts
Co-authored-by: Chi-Hsuan Huang <chihsuan.tw@gmail.com>
* Update plugins/woocommerce-admin/client/core-profiler/style.scss
Co-authored-by: Chi-Hsuan Huang <chihsuan.tw@gmail.com>
* Fix eslint error
* Use decodeEntities directly
* Update comment for artificial 3 seconds wait
* Disable Go to my store button when country is empty
* Style for mobile devices
* Style updates for the country dropdown
* Fix js lint error
* Update country dropdown border color
* Style the loader
* Fix css lint
---------
Co-authored-by: Chi-Hsuan Huang <chihsuan.tw@gmail.com>
Co-authored-by: rjchow <me@rjchow.com>
Co-authored-by: RJ <27843274+rjchow@users.noreply.github.com>
* Add `aria-describedby` to select options button
* add a changelog
* update the chnagelog file
* fix type
* fix the function name
* remove `aria-describedby`s if with value
* suggestions implemented
* Minor PHPCS fixes
---------
Co-authored-by: Jorge A. Torres <jorge.torres@automattic.com>
We change the behavior of how we decide whether to continue or stop the migration. Earlier, when deciding, we were counting all pending orders which was slow especially on large sites, and will continue to get slower as the migration processes. However, now we will only fetch if there is any order that needs migrating to decide whether to go ahead with the migration or not, which should be much faster then calculating the total count.
* Add create-page.spec.js
Create e2e test for Critical Flow: Merchant > Pages > Can create a new page
* Add changelog entry
* Update selector for close dialog
---------
Co-authored-by: Jon Lane <jon.lane@automattic.com>
* Create new attribute to calculate more accurately if activity tab has something "new"
* Fix wrong attribute name
* Revert previous change, rename functions and remove isPanelOpen clause from hasAbbreviatedNotifications logic
* Rename functions
* Updated `wp-env` To 7.0.0
* Adopted `wp-env` Changes To `update-wp-env.php`
* Updated E2E Test Bootstrapping
With the changes to `wp-env` we can update our
test bootstrapping to use the new functionality.
* Changelogs
* Restored `update-wp-env.php` Usage
There's a bit of work to do in support of this and I
don't want it to hold up the pull request!
* Fixed `wp-env` JSON Problems
It was writing an empty array in places where the
expectation was an empty object.
* Fixed Broken Echo Escape
* Fixed Init Quoting
* Update close button locator
* Reverted Quote Removal
There is an upstream bug relating to quotes that needs to be resolved!
* Reverted Quote Removal
---------
Co-authored-by: rodelgc <rodel.calasagsag@automattic.com>
* Add test for inbox_note_view event
* Add tracks test for Layout's page_view
* Add test to inbox_action_click
* Add tests to analytics_filter tracks event
* Add tracks event test to activity_panel_open
* Add tests to tracks event activity_panel_orders_orders_begin_fulfillment
* Add tracks tests to activity_panel_stock_update_stock
* Improve tests based on code review comments
* Mock recordEvent and recordPageView globally
* Add missing mock
* Improve inbox panel tests
PR 36218 implemented child order upshifting (setting their parent
order id to 0) when the parent order is deleted, but this needs to
happen only when the post type of the parent order is hierarchical,
otherwise child orders need to just be deleted. This commit fixes that.
* Add a 24px spacing between the Manage my store header and the Marketing & Merchandising heading
* Add changelog
* Update store management card style
* Update .woocommerce-store-management-links__card-body padding
* Add LayoutContextProvider to embedded body layout to fix shipping tour error
* Show an error notice and record track when failing to update shipping option
* Add changelog
* Update error message
* Remove unused import
* Add create-post.spec.js
Create e2e test for Critical Flow: Merchant > Posts > Can create a new post
* Fix e2e Merchant Create Post
* Force delete created post
* Check for Welcome modal - close if exists
* Change assertion for Published post confirmation from `check if true` to `check if visible`
* Added changelog file
* e2e-pw: Create post - replace btoa
Replace deprecated function btoa with Buffer function
* change reference of Catpure to Capture
Co-Authored-By: Vikram <93216400+vikrampm1@users.noreply.github.com>
* change reference of expicitly to explicitly
Co-Authored-By: Vikram <93216400+vikrampm1@users.noreply.github.com>
* change reference 'cutted' to 'cut'
* change reference 'determening' to 'determining'
* change reference 'retreive' to 'retrieve'
* change reference 'neccessary' to 'necessary'
* change reference 'Fitler' to 'Filter'
* change reference of "seperate" to "separate"
Co-Authored-By: Ankit K Gupta <ankit.himcs@gmail.com>
* change reference of "wether" to "whether"
Co-Authored-By: Sumit Bagthariya <67687255+qasumitbagthariya@users.noreply.github.com>
* change reference of "staus" to "status"
* change reference of "retrive" to "retrieve"
* change references of "gatways" to "gateways"
* change references of "existant" to "existent"
* change reference of "requries" to "requires"
* change reference of "configuation" to "configuration"
* change reference of "processsing" to "processing"
* change reference of "represenation" to "representation"
* change reference of "dimentions" to "dimensions"
* change references of "reigster" to "register"
* change reference of "colum" to "column"
* change reference of "transtions" to "transitions"
* change references of "intially" to "initially"
* change references of "orignal" to "original"
* change references of "deprected" to "deprecated"
* change references of "paramter" to "parameter"
* change reference of "intance" to "instance"
* change reference of "elemets" to "elements"
* change references of "funcitons" to "functions"
* change reference of "specificed" to "specified"
* change references of "atributes" to "attributes"
* change reference of "tast" to "task"
* change reference of "chaning" to "changing"
* change reference of "retreiving" to "retrieving"
* change reference of "caluclation" to "calculation"
* change references of "Invaid" to "Invalid"
* change references of "paramaters" to "parameters"
* change reference of "Additonal" to "Additional"
* change reference of "teh" to "the"
* change reference of "evalutes" to "evaluates"
* change reference of "addedd" to "added"
* change reference of "excempt" to "exempt"
* change reference of "sequencially" to "sequentially"
* change reference of "previos" to "previous"
* change reference of "elegible" to "eligible"
* change references of "Boostrap" to "Bootstrap"
* change references of "compability" to "compatibility"
* change reference of "heirarchy" to "hierarchy"
* change references of "visibilty" to "visibility"
* change reference of "comparsion" to "comparison"
* change reference of "capabilties" to "capabilities"
* change reference of "datatores" to "datastores"
* change reference of "occured" to "occurred"
* change reference of "coresponding" to "corresponding"
* change references of "thier" to "their"
* change reference of "sucessfully" to "successfully"
* change reference of "insde" to "inside"
* change reference of "nagivation" to "navigation"
* change references of "visiblity" to "visibility"
* change reference of "documentaiton" to "documentation"
* change reference of "anayltics" to "analytics"
* change reference of "intalling" to "installing"
* change reference of "mininum" to "minimum"
* change references of "intial" to "initial"
* change reference of "Feld" to "Field"
* change reference of "taks" to "task"
* change reference of "trasnfer" to "transfer"
* change reference of "respone" to "response"
* change reference of "Extenstions" to "Extensions"
* change reference of "detault" to "default"
* change reference of "simultanious" to "simultaneous"
* change reference of "overides" to "overrides"
* change references of "Indvidual" to "Individual"
* change reference of "refering" to "referring"
* change reference of "aginst" to "against"
* change reference of "execuatable" to "executable"
* change reference of "repsonse" to "response"
* change reference of "documention" to "documentation"
* change reference of "asumed" to "assumed"
* change reference of "Minium" to "Minimum"
* change reference of "unqiue" to "unique"
* change references of "existance" to "existence"
* change reference of "compatability" to "compatibility"
* change reference of "Taxnomy" to "Taxonomy"
* change reference of "quering" to "querying"
* change reference of "retrun" to "return"
* change reference of "informations" to "information"
Co-Authored-By: Viktor Szépe <viktor@szepe.net>
* Add changelog
* Add changelog
* Fix typo
---------
Co-authored-by: Vikram <93216400+vikrampm1@users.noreply.github.com>
Co-authored-by: Ankit K Gupta <ankit.himcs@gmail.com>
Co-authored-by: Sumit Bagthariya <67687255+qasumitbagthariya@users.noreply.github.com>
Co-authored-by: Viktor Szépe <viktor@szepe.net>
Co-authored-by: Chi-Hsuan Huang <chihsuan.tw@gmail.com>
Makes the `wc_checkout_form` object available to Javascript event handlers during the checkout process. This makes it easier for extension (payment gateway) developers to manipulate the checkout experience. In isolation, though, nothing should change and everything should work as before.
Fixes#26827
* Fix typo
"Log out" is a verb
"logout" is a noun.
This link should be an action. So it's the verb form.
* Add changelog file
* update E2E tests for text change
* update unit test for text change
---------
Co-authored-by: Ron Rennick <ron@ronandandrea.com>
Co-authored-by: Ron Rennick <ronald.rennick@automattic.com>
* Update WCA Test Helper JS script dependencies
Add the WooCommerce Admin app script as a dependency to ensure it loads before WCA Test Helper. This enables WCA Test Helper scripts to check available features.
* Add experimental_woocommerce_wcpay_feature fill
* Add beta-tester-slotfill-examples feature
* Fix a bug
* Fix lint issues
* Add changelog
* Add core profiler - welcome to woo page
* Add changelog
* Update checkbox styles
* Update copies
* Add test
* Add enable prop to window.wcTracks type
* Add tracks
* Add explat changelog
* Fix import
* Update default tracking value
* Update copies
* Fix test
* using invoked promise instead of useState
- take advantage of xstate's built ins for side effects instead of useEffect/hooks
- discovered that error result wasn't really handled in original useEffect
- use text labels instead of inline functions so that we can decouple the implementation from the machine model
- todo: can move the invoked function out elsewhere and also tests if needed (not necessary here because it's a simple call)
* use actions.choose instead of branching inside action
- https://stately.ai/docs/xstate/transitions-and-choices/guarded-actions#the-choose-action
- makes it so that the machine model is serializeable
- todo: in the distant future i wonder if it might be tidier to have tracks be its own actor that just receives the same events that this machine does, that way it's just standalone instead of mixing up tracks with the implementation
* use dispatch instead of useDispatch
- decouples the implementation of the handler from the react component
- makes the handler testable on its own if needed
- makes the state machine testable without relying on external dependencies
* decoupled remaining function calls
* Fix lint error
* Fix style lint
* address xstate console warnings
- .withConfig() is a function call that returns a new object every invocation so we need to wrap it in useMemo to keep it stable
* Add optInDataSharing is false test
* Fix lint
---------
Co-authored-by: rjchow <me@rjchow.com>
* Add product_type_options to wcadmin_product_add_publish
* Add product_type_options to wcadmin_product_update
* Add product_type_options to other wcadmin_product_ events
* Register server-side tracking during rest requests
* Move loading of tracks related functionality to WC class
* Load tracks functions to allow tests to pass
* Move single init hook for WC Site Tracking to core class
* Update List price Pricing link on the general tab to navigate to the Pricing tab
* Add changelog files
* Simplify the event name to product_pricing_help_click
* Order is search with the phone number and linked with the user account. #36810
* updated the query and tested on local env
* fixed the phpcs issue
* added the changelog
* updated the string concatenation issue and also moved the change log file to the correct path
* removed the %i placeholder from the query and used the old way to add the table name
* add: core profiler scaffolding using xstate
* Add navigation and progress-bar components
* fix css lint error
* Update plugins/woocommerce-admin/client/core-profiler/components/navigation/woologo.tsx
Co-authored-by: Chi-Hsuan Huang <chihsuan.tw@gmail.com>
* Update plugins/woocommerce-admin/client/core-profiler/components/progress-bar/progress-bar.tsx
Co-authored-by: Chi-Hsuan Huang <chihsuan.tw@gmail.com>
* Update plugins/woocommerce-admin/client/core-profiler/components/navigation/navigation.tsx
Co-authored-by: Chi-Hsuan Huang <chihsuan.tw@gmail.com>
* Import HTMLAttributes
* Remove var from __ function
* Make progress bar color configurable
* Destruct props directly in the function and use const to define the comp
* Refactor fillerStyles
* Use woocommerce prefix for classnames
* Use inherit for display -- initial did not work properly
* Fix css lint error
* Remove unused WooLogo var
* Use named export
* Fix js style
* Add changelog
* Fix broken tests
---------
Co-authored-by: rjchow <me@rjchow.com>
Co-authored-by: Chi-Hsuan Huang <chihsuan.tw@gmail.com>
* tweeak: use locator to fill values
* chore: log change
* format: improve code formatting
* chore: remove locator refference from variable name
* Update create-variable-product.spec.js
Specify last element with selector
* Update create-variable-product.spec.js
Different selector
* Update create-variable-product.spec.js
Third time is a charm.
* Update create-variable-product.spec.js
.second doesn't exist. User .nth
---------
Co-authored-by: Jonathan Lane <lanej0@users.noreply.github.com>
* Track stock quantity for this product should be disabled when Enable stock management within settings is disabled, and enabled otherwise.
* Add changelog files
* add: core profiler scaffolding using xstate
* address review feedback and questions
* changed path to use setup-wizard
* default new core-profiler feature flag to false
* Change woocommerce/product-name to woocommerce/product-name-field
* Change woocommerce/product-summary to woocommerce/product-summary-field
* Change woocommerce/product-pricing to woocommerce/product-pricing-field
* Change woocommerce/product-radio to woocommerce/product-radio-field
* Change woocommerce/product-images to woocommerce/product-images-field
* Fix product name block invalid class name
* Move woocommerce/product-section to blocks folder
* Move woocommerce/product-tab to blocks folder
* Move woocommerce/product-collapsible to blocks folder
* Organize block registration, imports and styles
* Add changelog files
* Change woocommerce/product-category to woocommerce/product-category-field
* Change woocommerce/product-checkbox to woocommerce/product-checkbox-field
* Change woocommerce/product-inventory-email to woocommerce/product-inventory-email-field
* Change woocommerce/product-sku to woocommerce/product-sku-field
* Register woocommerce/product-schedule-sale-fields in server side
* Register woocommerce/product-track-inventory-fields in server side
* Fix invalid reference in tabs tests
* Add initial category block
* Add changelogs
* Add label to font family for block editor and fix template
* Fix rebase conflict and add content role
* Some styling changes for the category field
* Move category block to blocks folder and fix merge conflict.
* Address some styling issues, and update keywords
* Fix css lint error
Internal logic:
- If the featured field is absent from all image objects in the request, set the first image in the array to featured.
- If the featured field is present in all image objects, we respect the value and set the featured image accordingly.
- If the featured field is absent from some image object, we set the featured image based on whether a true value exists; otherwise, we set the first image as featured.
- if multiple images have the featured field set to true, return a new 400 bad request response..
* fix: use correct argument in playwright test
use waitUntil instead of waitForLoadState.
* chore: add log for change
* chore: revert changes in e2e test
* Update analytics-overview.spec.js
Remove waits, failing on CI
---------
Co-authored-by: Jonathan Lane <lanej0@users.noreply.github.com>
* Add initial custom meta box for product categories
* Make use of TreeSelectControl
* Update classnames
* Display selected items and sync with most used tab
* Always show placeholder and remove checklist container
* Reactify category metabox tabs
* Add create new category logic
* Remove unused markup
* Fix saving of empty category list
* Add callback when input is cleared as well
* Some small cleanup and refactoring.
* Add changelog
* Fix tree creation and style enqueue
* Auto fix lint errors
* Fix linting errors
* Fix css lint errors
* Add 100 limit, and address some PR feedback
* Fix some styling and warnings
* Remove unused code
* Address PR feedback
* Fix lint error
* Fix lint errors
* Address PR feedback
* Fix lint error
* Minor fixes and add tracking
* Add debounce
* Fix lint error
* Allow custom min filter amount and fix menu not showing after escaping input
* Allow single item to be cleared out of select control
* Fix bug where typed values did not show up
* Fix some styling issues
* Allow parents to be individually selected
* Address PR feedback and add error message
* Add changelogs
* Fix saving issue
* Add client side sorting and stop clearing field upon selection
* Update changelog
* Create feature flag for async product categories dropdown
* Fix lint errors
* Fix linting
Switches hardcoded notices over to the correct functions and makes it possible to modify the notices via template overrides. Additionally, a small modification to `wp_print_notice` was added so that the notice could be returned as a string instead of rendered. This makes it more flexible.
Since the template path is tokenized, it's possible that in different
testing environments the contents of the cache will be different
than the template file path on the filesystem. We can make sure
they are the same by untokenizing the cached path before the
assertion.