* 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