Adds methods to determine the names of the database tables currently
being used for orders and order meta, without needing to make a separate
check first to see if HPOS is enabled and in use.
* Move product block editor to new feature name
* Register all blocks and block assets server-side
* Add changelog entry
* Disable phpcs rule for file_get_contents
Some order can have order key set to empty string. This commit disallows fetching those orders via key at DB level (its already disallowed from interface).
* Modify tipTip to allow showing dynamic content
* Show tooltip when button is disabled
* Add tipTip and disabled logic to create variations button
* Add header comment in tipTip plugin
* Add product radio block
* Wrap tax class radio in collapsible block
* Add link to description and sanitize HTML
* Add changelog entry
* Fix up php lint errors
* Add changelog entry
* Fix linting errors
* Remove unused import
* Add preview button to the product editor header
* Publish the product on add or on save
* Add save draft button
* Save product changes before previewing it
* Add notice messages
* Fix linter errors
* Force the store page to be openned in a new tab after publishing the product
* Enable publish button when the status is not publish
* Add changelog files
* Fix some comment typos
* Address comment suggestions
* Move preview logic to its own component
* Move save draft logic to its own component
* Move publish logic to its own component
* Add editorStyle properties to blocks
* Rename style.scss files to editor.scss
* Get block entry points for block related assets
* Copy block assets to core assets build folder
* Remove unusable dependency
* Add changelog entries
* Fix up RTL style builds for block assets
* Update copy-webpack-plugin dependency and lock file
* Fix up lock file after rebase
* Fix order of webpack rtl stylesheet builds to prevent additional stylsheets
* Fix up lock file after rebase
* Fix tsconfig
* Add images block to the product editor
* Allow html in section block descriptions
* Add changelog entry
* Add client changelog entry
* Remove SVG related changes
* Fix up lock file after rebase
* Remove unused import
* Fix up php lint errors
* Move sanitize function to utils folder
* Remove the MCM feature flag on update to WooCommerce 7.7
This feature flag is no longer needed because the new marketing page will be the default on version 7.7 (pe2C5g-Ft-p2#comment-582).
* Remove the marketing overview welcome option
* fixed bug where adjust_download_permissions was being scheduled on variable products without downloadable variations
* check if is null per code review comment and issue 35918 on GitHub
* clean up changelog file
* Trigger checks
* Fix DownloadPermissionsAdjuster tests
---------
Co-authored-by: smallfishes <mike@smallfishanalytics.com>
Co-authored-by: Jorge A. Torres <jorge.torres@automattic.com>
Elsewhere, in relation to payment gateway titles, we use the HtmlSanitizer utility to remove dangerous HTML but allow a safe subset. We should also apply that here, for consistency.
* Show variable product tour
* Only show tour when product type is changed to variable
* Only show tour if it hasn't been shown before
* Add variable_product_tour_shown to UserPreferences type
* Store whether tour has been shown in user preferences
* Record Tracks events
* Add docblock for woocommerce_admin_get_user_data_fields filter
* Add test for tour
* Update package.json and lock file
* Move ProductMVPFeedbackModal to @woocommerce/product-editor
* Move ProductMVPFeedbackModalContainer to @woocommerce/product-editor
* Move ProductMVPCESFooter and useProductMVPCESFooter to @woocommerce/product-editor
* FIx mock of __experimentalUseProductMVPCESFooter in test
* HTML for new empty state
* Go to attributes tab when clicking on link in message
* Handle case where local attributes exist but are not used for variations
* Make sure the click handler is re-hooked up when attributes are added
* Add block icon component
* Use the block icon component within the section block
* Add changelog file
* Fix rebase conflicts
* Remove icon configuration from the client side
* Change the BlockIcon component to get the icon from the attributes first and then from the metadata
* Expose the BlockIcon to be used outside of the package
* Add the BlockIcon documentation
* Configure the block to support the new icon via attributes
* Set the icon to the block section in the server template definition
* Revert back index.tsx -> index.ts in the section block
* Fix php linter errors
* Add changelog file
* Fix php linter error
* Return null instead of a Fragment
Also:
- toggle_cot renamed to toggle_cot_feature_and_usage includes
HPOSToggleTrais for clarity.
- DataSynchronizerTests and OrdersTableDataStoreTests now inherit
from a common HposTestCase class.
More specifically, the type of "version" in the "order" object in REST API is now declared as "string" instead of "int".
Co-authored-by: Néstor Soriano <konamiman@konamiman.com>
These fixes include:
- Replace assertRegExp with assertMatchesRegularExpression
- Replace assertObjectHasAttribute and assertClassHasStaticAttribute
with assertTrue(property_exists)
- Replace assertFileNotExists with assertFileDoesNotExist
- Replace expects(at()) with withConsecutive
These errors are due to deprecations in PHPUnit 9, mostly due to the
fact that comparions are now string on assertions:
- Use assertArraySubset instead of arrayContains for checking
subsets of associative arrays.
- Use assertEqualsWithDelta for comparing floats (thorugh a new
method in the base tests class, assertFloatEquals)
- Convert ints to strings and viceversa before comparing.
- Use assertArrayHasKey instead of assertContains for checking
key existence in associative arrays.
- Use assertStringContainsString instead of assertContains for
checking substrings.
* Refactored, adding slot fill, basic working via common components
* Pinning plugins dep
* More menu style tweaks
* Fixing merge issues
* Adding product header item slotfill to support more menu modal
* Fixing moved imports
* Adding changelogs
* Adding hover state for more menu toggle btn
* Fixing typo
* Refactoring to use WooHeaderItem instead of adding new slot-fill
* Removing unneeded fragment
* Adding admin layout changelog
* PR feedback
* Fix up lock file after rebase
---------
Co-authored-by: Joshua Flowers <joshuatf@gmail.com>
* Replacing multiple componments on the product page with a single hook.
* Adding changelog
* Removed the conditional hook logic, because of React rule - Don’t call Hooks inside loops, conditions, or nested functions.
* Use promise for receiving entity, and reload template on product change
* Add changelog
---------
Co-authored-by: Lourens Schep <lourensschep@gmail.com>
* Add unit test to simulate duplicate meta insert.
* Overwrite clone method to prevent duplicate datq when saving a clone.
* Add changelog.
* Coding standard fixes.
* Fix phpcs
---------
Co-authored-by: Jorge A. Torres <jorge.torres@automattic.com>
* Set default quantity value
* Rename `Stock quantity` to `Quantity`
* Add changelog
* Fix original stock
---------
Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com>
* Improve filling out attribute input fields
* Improve waiting for attributes to be saved
* Improve waiting for Analytics overview settings to be saved
* Add @woocommerce/tracks to dev dependencies
* Move remaining CES-related components to @woocommerce/customer-effort-score
* Update imports in woocommerce/client/admin
This includes:
- Changing "Requires PHP" in woocommerce.php
- Changing "require-php" and "config-platform-php" in composer.json
- Changing "testVersion" in phpcs.xml
- Updating the composer.lock file with more modern versions
of some of the dependencies
* Update playwright api-core-tests to associate orders with real products to prevent extension issues for those that validate product ids
* add newline at end of file
* add comment
* Allow for passing context into the get_image for product variation.
Since get_image behaves differently in edit and view contexts, it is important to pass the context down. In view context, if there is no image set for variation, it returns parent's image. However, this is wrong for WP admin or mobile app running from pov of admin user.
* Added changelog.
* Address PHPCS issue
---------
Co-authored-by: Jorge A. Torres <jorge.torres@automattic.com>
* Add check to show `Allow backorders as radio buttons
* Add changelog
* Rename hook
* Fix lint
* Fix hook default value
* Add tip to radio buttons
---------
Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com>
* Add check to show Stock status as radiobuttons
* Add changelog
* Fix lint
* Fix typo
* Fix flaky e2e tests
* Rename hook
* Fix validation to show radio
---------
Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com>
These are:
- Posts of type "shop_order_placeholder" with no matching order
in the orders table.
- Records of type "shop_order_refund" with a zero parent order id
in both tables.
* Visual tweaks for 2 partners layout
* Add spacing between banner image and list
* Add changelog
* Add spacing between banner image and list
* Align buttons at the bottom
* Lint fix
* FIx Variations report
* Fix Orders report
* Remove ability to pass table into get_attribute_subqueries since it should always be the same table we join on
* Adding initial pricing block
* Have price block render in form
* Make sure price is loaded correctly and fix template rendering
* Make pricing block abstract and add list and sale price to template
* Add changelogs
* Revert changes in wc/data package
* Fix lint issues
* Fix type error
* Add styling
* Fix styling lint issues
* Revert config change missed in rebase
* Make use of base control help text for field info
* Allow additional callbacks for onFocus and onKeyUp
* Add button and saving logic
* Add comment suggestions
* Add changelog files
* Add comment suggestions
* Set header title to product name if the name field is dirty otherwise the default title value
* Navigate to EditProductPage after creating the product succesfully
* Add get-header-title util and expose edited product name from useSelect
* Bypass scheduler for customer update
* Handle case when wc_last_active user meta doesn't exist at all
* Bypass scheduler for wc_last_active customer update
* Bypass scheduler for delete_user and remove_user_from_blog
* Bypass scheduler for woocommerce_privacy_remove_order_personal_data
* Bypass scheduler for woocommerce_new_customer
* Remove obsolete test for last_active_update sync
* Remove assertions for pending wc-admin_import_customers
This includes the following:
- Fix the "upshifting" that was implemented in 36218 so that it only
applies when the post type of the order being deleted is hierarchical
(this conforms to the WordPress behavior when deleting a post).
- Now when an order is deleted while sync is off a record will be
created in wp_wc_orders_meta (regardless of which table is the
authoritative one) with 'deleted_from' as the key and the
authoritative table name (from where the order has been deleted)
as the value...
- ...then DataSynchronizer will detect the presence of these
'deleted_from' records and delete them from the backup table
as part of the batch processing procedure.
- Exception to the above: when an order is deleted from the orders
table and the corresponding records in the posts table are
placeholders, these are deleted immediately too, even if sync is off.
- Add an "order_exists" method in both order data stores
(Abstract_WC_Order_Data_Store_CPT and OrdersTableDataStore).
- Add a pair of get/set_verify_parent_id methods in WC_Abstract_Order
(turning off the check in set_parent_id is necessary when deleting
an order using the backup data store during synchronization).
- Placeholder records are now created with the appropriate parent id
for child orders (e.g. refund), this is necessary in order to
properly find which records need to be deleted.
* Add new countries to WCPay
* changelog
* add new countries code to woocommerce admin
* Add the new countries to onboarding wizard fallback config file
---------
Co-authored-by: Anurag Bhandari <anurag@automattic.com>
* Add @pmmmwh/react-refresh-webpack-plugin, react-refresh, webpack-dev-server and add start:hot command
* Set up react fast fresh
* Add changelog
* Run prestart in hot command
* Update pnpm-lock.yaml
* Update pnpm-lock.yaml
* Update product post rest configs
* Update block usage
* Add changelogs
* Fix lint
* Make use of setupEditorState instead of setupEditor as we do not have a content block
* Simplify product condition
* Make use of core store only
* log admin coupon code actions
* added documentation, fixed return value
* formatting
* included user to note logs
* Add changelog
* Address PHPCS issues
* Make WC_Abstract_Order::remove_coupon() return a bool
* Move addition of coupon-related order notes from WC_Order to AJAX callbacks
* Address PHPCS problems
* Pass coupon order notes through `esc_html()`
* Add AJAX update of notes when adding/removing coupons via admin
* Fix tests (maybe?)
---------
Co-authored-by: Jorge A. Torres <jorge.torres@automattic.com>
* Adding test name block with support for entity data store
* Adding changelog
* Changing block.ts to block.json and amending TS config to support
* Experiment in loading blocks from settings template
* Enable the use of templates with the block editor
* Fix dependency
* Add changelog
* Fix lint error and remove unused utils
* Fix tests by fixing mocks
---------
Co-authored-by: Lourens Schep <lourensschep@gmail.com>
* Update stock management enabled checkbox label
* Add link to store settings when stock management is disabled
* Refactor to create woocommerce_wp_note function
* Add the new feature to enable the new product editor blocks experience
* Add the type definition of the feature flag
* Add the feature to the beta_featues in Features.php file
* Keep the page routes when the feature is anabled
* Add the feature php class to manage page assets
* Add changelog file
* Make WC_Order::get_tax_location public
* Reverted access modifier change for get_tax_location() and implemented public wrapper get_taxable_location()for it.
---------
Co-authored-by: Paulo Arromba <17236129+wavvves@users.noreply.github.com>
* Fix the ArrayUtil::get_value_or_default method
The method was supposed to return null if the key exists in the array
and has a null value, but instead it was returning the supplied
default value, as the "??" operator.
Also the few existing usages of the method that supplied a default value
have been converted to instances of the "??" operator for compatibility.
* Add changelog file
The code is copied from the Channels component, but in CreateNewCampaignModal, we don't need to display the divider, so we can just remove the divider code.
* Added woocommerce_reduce_order_item_stock action hook to let other plugins do somthing without looping again the order line items
* changed "product data" to "change details" and updated docblock as instructed
* maintained WP coding standards and change @since docblock tag
* Add required dependencies
* Create the block editor component
* Create the header component
* Create the sidebar component
* Create the editor component
* Remove comments
* Export the block editor from its package
* Enqueue wp-edit-site
* Create the new block mode product page
* Register the new ProductPage component in /add-product route
* Add temporal layout styles
* Fix rebasing conflicts
* Fix linter errors
* Redirect to the new product-editor page when edit
* Add changelog files
* Fixing dependencies conflicts and ignoring some non running test
* Add comment suggestions
* Fix conflicts after rebasing
* Add comment suggestions
* Conditionally use authorization token when getting WC Zip download URL.
* Exponse error message
* Handle undefined authorization token more gracefully
* Specify GH token in workflow
* Add changelog
* Use E2E_GH_TOKEN instead of default github.token
* Provide GitHub token to other jobs
* Fix getting of tag name from triggered event
* Use "inputs" context instead
* Add release version to workflow name
* Correct concurrency group
* Fix workflow name
* Add --archive option
* Fix output setting
* Fix script for verifying asset
* Remove unnecessary 'uses' line
* Remove node 12 deprecation messages
* Re-add "published" release type
* Fix: variations exported as draft were imported as draft
* Add changelog file
* Fix "ArrayUtil::get_value_or_default" for existing keys with null values
Now ArrayUtil::get_value_or_default($array, $key, $default) will return
null, instead of $default, when $array[$key] exists and is null.
* Undo the change to ArrayUtil (will get its own PR)
Turns out the value used here doesn't matter, because it will always
update to the current time. It just needs to have a changed prop in
order for the save to execute.
Ensures that when a refund is processed successfully for an order,
the date_modified field for the order is updated to match the creation
date of the refund.
Refs #28969
* Show add attribute in Variations tab
* Create new ajax function to create attributes and variations at the same time
* Partial commit for review
* Rename action and reload attributes and variations screen after submitting action
* block/unblock UI when loading
* Change labels
* Remove unneeded output_variations function
* Changelog
* Extract duplicated code to html-product-attribute-inner
* Handle sniff issues
* Fix PHPCS issues
* Refactor class-wc-ajax to reuse code
* Fix phpcs issues
* Fix more sniff issues
* Handle code review suggestions
* Switch back to var
* Switch to snake case
* Use var instead of const
* Create tree-control component
* Remove items from treeItemProps
* Add tree-control expand/collapse on click the expander button or by a custom logic
* Add stories
* Add the type definitions
* Add use selection hook
* Upgrade WP components dependency to v19.8.5 to support indeterminate checkbox control
* Add selection logic to the tree control
* Create stories
* Add changelog file
* Fix linter error
* Add styles to fit the disign
* Highlight selected item when it's a single selection tree
* Rebasing from trunk
* Add comment suggestions
* Fix unit test errors due to a new version of @wordpress/compose related to the ResizeObserve feat
Fixes a bug that allowed to create a coupon with code "0" but prevented if from being actually used. With the fix a coupon with code "0" can be used as any other coupon.
Also adds two new methods to the StringUtil class: `is_null_or_empty` and `is_null_or_whitespace`.
Closes#35210.
* First pass at updating release test workflow
* Add changelog
* Set dir env variables
* Update to workflow
* Fix indent
* Fix indent
* Clean up indent
* Re-order steps
* Change order of jobs
* Added common php versions
* Update pipeline
* Update some labels
* Simplify for testing
* Update paths
* Create tmp folder
* Fix path
* Paths
* Try outputting some debugging
* Add step ID back
* Remove working directory
* Another path tweak
* Add API release tests
* Add k6 tests
* Add PHP tests
* Launch wp-env during PHP tests
* Try default values
* Tweak some settings, add WP testing
* Tweak some settings
* Re-order e2e steps
* Update step descriptions
* Reorganize tests, add plugin tests
* Enable only e2e job
* Initial set up to run against release smoke test site
* Fix syntax
* Temporarily disable update wc spec
* Temporarily disable downloading woocommerce zip
* Download release zip using tag name
* Fix wrong job name
* Fix wrong job name
* Fix dir
* Delete fetch-asset-id.js
* REfactor update-woocommerce spec
* Add error handling
* Download release zip by tag
* Refactor update woo spec to download zip by tag
* Correct job name
* fail test on invalid tag
* Enable all e2e tests
* Run api tests before e2e tests
* Fix job dependency
* Add customer credentials to api job
* Separate job for WC Update
* Combine e2e allure-results, then report
* Enable report job
* Fix context
* Change job and artifact names
* Use test s3 path
* Minor job name change
* Upload artifacts to bucket
* Correct s3 path
* Add quiet option
* Retain video on failures
* Finalize s3 path
* Try WP latest-1
* Revert to wp latest
* Refine search for woocommerce zip asset
* Get created-at
* Specify repo in gh command
* Slugify env description
* Trim space
* Sync with bucket instead of copy
* Remove invalid --recursive flag
* Re-add missing step to combine e2e results from update wc test
* Ensure artifact upload on test failure
* Enable all e2e tests on WP latest
* Retain existing data before updating WC
* Make test compatible with 'Canceled' and 'Cancelled'
* Set env_desc as env var
* Re-add deleted file
* Fix UPDATE_WC in daily smoke test workflow
* Add tracing in global setup
* Remove tracing
* Temporarily run only basic spec
* Job for WP Latest-1 & 2
* Fix "Required input 'created_at' not provided"
* Minor rename
* Remove install filter
* Install deps in get-wp-matrix
* Delete get-wp-versions.js
* Add get-wp-versions.js to e2e-pw folder
* REname file
* REfactor
* Refactor script for getting WP prev versions
* Update job dependencies
* Temporarily remove disabled jobs
* Allow e2e-wp-latest after api test failure
* Update L-1 & L-2 job deps
* Fix report-wp-latest
* Fix failing api test
* Make get-wp-versions quicker
* Publish report immediately after test
* Test reporting in e2e-update-wc
* Fix missing parameter
* Fix env_desc, re-enable other jobs
* Enable all e2e tests
* Minor job name change
* Fix flaky test
* Add php version testing
* stringify php versions
* Re-enable all e2e tests
* Up timeout to 2min
* Remove PHP 8.0
* Add missing conditionals
* Fix php version verification script
* Fix starting dir
* Fix flakiness
* Skip e2e if api failed
* Verify woocommerce.zip early
* Add token
* Delete test summary on github for the meantime
* Use default playwright config
* More meaningful variable names
* Update step titles based on review
* Use expect.poll()
* Minor spacing corrections
* Use `stable-check` endpoint, delete unnecessary loop
* Update locators to be JN-compatible
* Fix erroneous getting of release tag
* Fix conflict of "No thanks" button locator with that of WP Mail Logging's
* Update github-script action to v6
* Revert to 'Cancelled'
* Remove unnecessary step
* Provide missing env variables
---------
Co-authored-by: Jon Lane <jon.lane@automattic.com>
Co-authored-by: Jonathan Lane <lanej0@users.noreply.github.com>
* Add missing dev packages to product-editor package
* Create components folder for organization
* Move product field, section and tab slots over to product-editor package
* Move use of product slot fills to product-editor package
* Sync dependencies
* Add changelogs
* Update README's and add constant for default values
* Update README's in product-editor package
PHPUnit will evaluate all data providers before starting anyh test (to count the number of tests to be executed). Which means that any data provider inserting data into DB is going to interfere with other tests. Using closure instead helps PHP in counting the data, yet not having to actual DB calls.
* Add `RevenueReportDateTour` component
* Add changelog
* Fix styles
* Rename RevenueReportDateTour to ReportDateTour to use it in two different reports: Orders and Revenue
* Change default sort date to date_paid
# Conflicts:
# plugins/woocommerce/src/Admin/API/Reports/Orders/Stats/DataStore.php
* Update changelog
* Assign date_column_name before calling parent constructor
* Remove date_type default value from configuration and show tour only if user didn't assign a value
---------
Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com>
Co-authored-by: Nathan Schneider <nsschneider1@gmail.com>
In our case for the Cart & Checkout feature, we don't want to show the
UI in the "Features" tab in Woo Settings. Creating a flag for this
purpose will make it easier for future features to unsubscribe from
showing a UI if required
Fixes bug introduced in PR #36087 that changes jQuery selectors for quantity input in variable products.
The previous logic is reinstated so that $qty points to the div wrapper, and $qty_input points to the input element inside.
Otherwise, as is in the current version, $qty_input is undefined and the min/max attributes are not updated.
This PR also addresses the original issue #36086 by restricting the selector of the div wrapper to only be the one containing input[name=quantity] (the .qty class filter is also kept to avoid any potential malfunctions of existing code).
* Site Health: Add WC-specific criteria for persistent object cache
WP 6.1 introduces a new test in the Site Health module for whether the
site has an external object cache, and if not, whether it would benefit
from having one. However, the criteria it uses are based largely on
posts and comments. This introduces WooCommerce-specific criteria based
on orders and products. It uses much lower numbers for the
thresholds (100 instead of 1000). These thresholds are somewhat
arbitrary, but reflect that the data objects in a WooCommerce store are
larger and more complex than in a simple blog.
* Add changelog file
* Add additional global attributes and local attributes information when saving product attributes
* Log only local attributes
Add attribute name
Fix issue with attribute_value and names selectors
* Save name and slug for global attributes and global terms
* Product editor: disable the feature in advanced Settings
until we implement the new designs.
* Maintain feature enabled for internal testing.
* Remove obsolete new lines.
* Re-enable the feature flag.
* Disable the new product experience if currently enabled.
* Add changelog
* Remove commented lines, obsolete brackets. Fix conflicts.
* Styling.
* Fix lint
---------
Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com>
* Remove Klarna payments from North America and remove Amazon pay from CA
* Update payment gateway list ordering priority
* Add changelog
* Sort gateways by recommendation_priority
* Fix DefaultPaymentGateways.php
Fix lint
Fix paypal
Fix comment
* Remove unneed comment
* Change eway priority to show after square
* Include fields date_paid and date_completed to wp_wc_order_stats
TODO: add script to create new columns in the database
* Add update script and new columns in get_schema
* Add new configuration in Analytics > Settings to configure type of date used in Revenue report
* Change date_column_name to date_paid
TODO: This will be configurable in future
* Add date type config field
* Use customizable date field in DataStore
* Change label
* Fix linter errors
* Remove blank line
* Put default column name back to date_created
* Make date_paid and date_completed nullable to help with unit tests
* Remove new table creation in update function and use query method instead of get_var
* Extend stats constructor
* Improve date type configuration description
* Set date column name default to date_created to test if build passes
* Fix phpcs issue on constructor
* Remove cache bypass added by mistake
* Improve changelog
* Fill date_paid and date_completed for refunds to avoid problems whem they are being used to sort
Fix unit tests when date_paid or date_completed are being used as sort date
* Change default to date_created
* Bump update script to 7.5.0
* Add prefix and postmeta variables for script
* Add attribute creation form
* Add changelog
* Check `Used for variations` by default
* Fix lint
* Fix lint
* Fix `create-variable-product.spec` e2e tests
* Fix do not show form with local attributes
* Fix lint
* Fix tests
* Refactor e2e test fix
* Replaced `wp_kses_post` with `esc_html_e`
* Fix lint
---------
Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com>
Rather than returning an empty string as the label for an unknown
unit of measure, this allows a merchant to use a custom unit of measure
for something and still have it appear in the UI.
While the extra context would be beneficial for translators, these
particular strings have already been translated for many lanugages
and adding the context would invalidate the translations, which could
cause a visual regression for merchants if the new strings don't get
reapproved before the next version is released.
* Update `config@3.3.7` (from `3.3.3`)
Add it to syncpack, to avoid `ReferenceError: node_env_var_name is not defined` when external extension imports and transforms the `admin-e2e-tests` directly from `node_modules`.
Include https://github.com/node-config/node-config/pull/642
* Make state optional for BG and HU.
* Add changelog.
* PHPCS spacing fix
* Hide State field for Hungary.
* Unhide the State in Hungary.
Some extensions might still use it e.g. for shipping purposes.
* Merge branch 'trunk' into fix/hu-and-bg-state-optional
This PR removes several CSS lines that were enforcing specific styles (mostly padding) to buttons. This is in order to better inherit the styles provided by the theme.
I've noticed on line 339 has an empty array ($attributes) which might be intended to use as a fallback variable for line 345. The array ($attributes) is then extended on line 342, but the variable name at this point is $attribute instead $attributes
* Move attribute data changes out of attribute control
* Move dynamic text to props
* Add onModalOpen callback
* Add onModal close prop
* Add changelog entry
* Use closeModal for edit attribute modal
* Add onEdit callback
* Extract util to get unique attribute id
* Rename editingAttribute to currentAttribute
* Rename showAttributeModal to isNewModalVisible
* Rename AddAttributeModal to NewAttributeModal
* Fix up handle add attributes
* Add onRemove callback for attibutes
* Fix up modal styling classes
* Fix up closing edit modal
* Fix up modal title for options
* Handle PR feedback
* Separate handlers for edit and new modal callbacks
* Update event names to be option/attribute specific
* Use default callback functions
* Handle PR feedback
* pin eslint in .syncpackrc
run `pnpm run sync-dependencies` to ensure pinned version is used across projects, then run `pnpm install` to update `pnpm-lock.yaml`
* add changelog files
ran `pnpm run --no-bail --filter='[HEAD^1]' changelog add --significance=patch --type=dev --entry='Update eslint to 8.32.0 across the monorepo.'`
* re-run `pnpm install` to fix what broke while merging
100 is the maximum limit allowed by the API.
We do this because the API does not return total number of rows, so we use 100 to get "all" rows, to support pagination in the UI.
There's no need to show the two products cells in Status Widget table when stock management is disabled, otherwise you'll get 2 links pointing nowhere (specific report pages are disabled and you'll get an "unauthorized" error)
* Adding contants, renaming files, wiring up shipping section with discrete slots for variants and non-variants
* Refactoring pricing section to give discrete slots for variant and non-variant forms
* Refactoring inventory fills to give discrete slots for variant and non-variant products
* Adding additional slot to pricing -> taxes -> advanced
* Renaming api fields component file
* Refactoring images, details and attributes to match others
* Ensure variant field IDs are distinct, organize all product field fill IDs
* Adding changelog
* Simplifying IDs used for slots
* Minor refactor of pricing taxes class field
* Give api fill exports their own registerPlugin scope
* Refactoring WooProductFieldItem to generate unique IDs
* Adding components changelog
* Add unique sku option to error data when setting product sku
* Add changelog entry
* Add permalink template to the sku error data
* Revert "Add permalink template to the sku error data"
This reverts commit a49ee1d878.
* Fix inappropriate deletion of order from posts with sync off
When the orders table is authoritative and sync is off, deleting
and order should not delete the order record from the posts table,
this commit fixes that.
Additionally, OrdersTableDataStore::delete will now trigger the
woocommerce_delete_order action in all cases, even when the
method is called while the posts table is authoritative.
* Add changelog file
* Fix: order items were not deleted
* Improve comment in the 'delete' method
* Use delete_items instead of a dedicated method for deleting order items
* Move clearQueue call to inside an useEffect
That call was causing a React error (Cannot update a component while rendering a different component)
* Move queueForPage declaration to before it's use
- Use `@include font-size ( 20 )` to generate relative size in rem.
- Use unitless number value for line-height; this is the preferred way according to MDN.
- `font-weight` and `letter-spacing` are not needed.
The UI looks the same before and after this change.
Declares $api as a public property to the WooCommerce class in order to avoid a deprecation warning that will eventually be an error in upcoming PHP versions.
* Update documentation on how to add a new field through FormFactory
* Add method to add_tab through FormFactory
* Update ProductForm definition and add Tabs
* Add changelog
* Add test to add_tab and get_tabs methods
* Add changelog for @woocommerce/data
* Add tabs to reducer actions and initial state
* Remove unused function
* Fix unit test
* Increment Tabs TypeScript definition
* Add required fields to Tab class and refactor to reduce lines of code
* Change from filter to action in doc example
* Update method documentation
* Add required fields to test
* Change productform_field test
* Fix form-factory unit test
* Update wrong comment
We intend to use the same namespacing algorithm for HPOS orders cache like we have been using before for posts. Moving this structure to a common trait allow us to use the same logic for both posts and HPOS.
* Disable the new navigation.
* Add changelog
* Fix linter errors.
* Disable the new_navigation option.'
* Navigation: disable the opt-out modal.
* Disable navigation for sites that have it turned off. Revert obsolete changes.
* Navigation: Add warning before disabling the navigation
in the Feature Settings.
* Linter errors.
* Correct the logic.
* Edit the notice text.
* Fixing linting errors."
* Tests: fix the copy.
* Always show comments for product feedback form
* Add changelog entry
* Add CES changelog entry
* Fix up lint errors
* Add default for shouldShowComments in CustomerFeedbackModal
* Enable new experience for simple products
* Add changelog
* Fix `updateOptions`
* Fix redirect when new-exp is enabled
* Redirect when new-exp is enabled
Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com>
* Migrate shipping shipping in product editor to slot fill
* Adding changelog
* Removing obsolete shipping section files, adding support to variations form
* Multichannel Marketing - Core Library (#35099)
* Create channel interface and campaign value class
* Create MarketingChannels class
* Register MarketingChannels class in DI container
* Use the new MarketingChannels class to get the installed marketing extensions' data
* Use DI container to access InstalledExtensions class
* Add InstalledExtensions to the $provides array
* Hint that campaign cost should also indicate the currency
* Initialize the channels array
* Add unit tests for MarketingCampaign
* Add unit tests for MarketingChannels
* Add Price class to represent a price with currency
* Use Price class for marketing campaign's cost
* Define a constant to indicate the MCM classes exist
This constant will be checked by third-party extensions before utilizing any of the classes/interfaces defined for this feature.
* Create MarketingSpecs class to include WC.com API calls
* Remove WC.com API calls from Marketing class
And replace them with calls from MarketingSpecs class.
* Use the const from MarketingSpecs
* Fix MarketingChannels unit tests
* Add missing settings URL to the channel data
Co-authored-by: Nima <nima.karimi@automattic.com>
* Multichannel Marketing - Changes to the marketing classes (#36012)
* Rename `get_errors_no` to `get_errors_count`
* Remove the validation for marketing channel slugs
Do not check if the marketing channel's slug exists in the list returned by WooCommerce.com Recommendation API. This allows any third-party extension to register as a marketing channel.
* Revert InstalledExtensions
The InstalledExtensions class will be used by the previous generation of the Marketing dashboard (if the user has not enabled the new "Marketing" feature); therefore, it's best to restore it to the original code.
* Fix code style
* Translate Exception message
* Remove doc references to a predetermined list of marketing channels
Co-authored-by: Nima <nima.karimi@automattic.com>
* Multichannel Marketing - API (#36222)
* Rename `get_errors_no` to `get_errors_count`
* Remove the validation for marketing channel slugs
Do not check if the marketing channel's slug exists in the list returned by WooCommerce.com Recommendation API. This essentially allows any third-party extension to register as a marketing channel.
* Revert InstalledExtensions
The InstalledExtensions class will be used by the previous generation of Marketing dashboard (if the user has not enabled the new "Marketing" feature); therefore, it's best to restore it to the original code.
* Fix code style
* Add channel property to MarketingCampaign
* Add methods to filter the recommended marketing channels and extensions
* Add `marketing/recommendations` API
* Add unit tests for `marketing/recommendations` API
* Add `marketing/channels` API
* Add unit tests for `marketing/channels` API
* Add `marketing/campaigns` API
* Add unit tests for `marketing/campaigns` API
* Translate Exception message
* Remove doc references to predetermined list of marketing channels
* Add `unregister_all` method
To allow unregistering all marketing channels.
* Unregister all channels on test tear down
* Change API access denied authorization code
* Change API access permission
* Add MarketingCampaignType class
This allows defining campaign types for each marketing channel.
* Add campaign type property to campaign class
* Add `marketing/campaign-types` API
This API returns the aggregated list of supported marketing campaign types for all registered marketing channels.
* Add unit tests for `marketing/campaign-types` API
* Remove unused jsonSerialize method
* Fix unit tests
Co-authored-by: Nima <nima.karimi@automattic.com>
* Add changelog
* Add product listing status sync failed
Co-authored-by: Nima <nima.karimi@automattic.com>
* Add permalink_template and generated_slug to posts REST API
* Changelog
* Add missing domain for translations
* Use strict comparison for in_array
* Fix code style (alignment) issue
* Update number of expected properties in products schema
* Add an admin notice about the upcoming change in PHP requirements
The minimum required PHP version will be 7.3 as of WooCommerce 7.7.
This adds a dismissable admin notice to PHP 7.2 users.
* Add changelog file
* Disable PHPCS warnings for TODO items (required by GitHub CI)
* Reformat the PHP 7.3 requirement notice to be more translators-friendly
* Add a translators note to pass linting
Co-authored-by: Corey McKrill <916023+coreymckrill@users.noreply.github.com>
* Apply filter to get additional sql to include variations with no orders
* Add join only when correct option is selected
* Some more desperate tests
* Analytics: use a sepoarate query for data without orders.
* Change 'experimental_woocommerce_analytics_variations_additional_clause' filter to apply sql clauses directly
* Cleanup
* Add changelog
* Fix PHPCS issues
* Add docblock and update the filter name
* Improve docblock of new filter
* Add Since 7.4.0 on filter
* Move union statement before order by statement
* Apply filters before running the db count statement and add sql select clause before
* Remove with sql clause since it's not compatible with MySQL 5.7
* Remove additional spaces
* Fix bug caught by unit test in which $variations_query is overwritten because the assignment was outside the 'else' statement
Co-authored-by: AnnaMag <anna.mag.kedzierska@gmail.com>
* Add initial component to auto load fills from API config
* Add changelog
* Update logic to make use of new store and re-usable components
* Add changelog
* Add loading state for product form data to add/edit product pages
use the WooCommerce error log, change the quotation style, and fix a small linting issue (whitespace)
Co-authored-by: Barry Hughes <3594411+barryhughes@users.noreply.github.com>
* Replace add new product link with new experience
* Replace add new button on Products page
* Update all edit product links to point to new experience
* Update default add_product value to null
* Add changelog entry
* Fix additional space around equals sign
* Add product tour container and modal
* Fix modal open class name
* Add product tour
* Add changelog entry
* Move product tour state logic into hook
* Fix tour selectors for pricing and actions
* Add tests around product tour container
* Add tests around useProductTour hook
* Make tour responsive
* Use tabs instead of spaces
* Fix more scss lint errors
* Remove extra whitespace
We are calling `post_updated_messages` filter when displaying order edit screen in HPOS. However, this is a post based filter, which means that functions hooked to it might be expecting the global $post object to already be set. This unfortunately may cause warnings or fatals, so we remove this filter call from HPOS page.
Prior to 7.2.0 the quantity input was hidden if input min and max were identical (either because the product was sold individually, or because of min/max products config). This change restores that behavior, but makes it possible to render the input in readonly mode if desired (via filters).
* Working prototype of product details via slotfill
* Raising default order for product slot-fills
* Move logic to details field name component
* Adding order prop to all fills.
* Adding components changelog
* Adding changelog
* Deleting obsolete product details section files
* Reducing spacing between slot filled fields
* Move attribution fetching to separate hook
* Add changelog entry
* Set all attributes on update of subset of attributes
* Move filtering logic to hook
* Remove tests that filter attribute by type inside the component
* Rename AttributeField to AttributeControl and props from attributes to value
* issue-35763/fix-php-8.2-deprecation-warnings
* Declare $mockable_functions property
* Declare $mockable_classes property
* Fix deprecated usage of ${var} in strings
* Add changelog file
* Avoid using interpolation to create SQL statement
We could ignore the PHPCS error. However, ignoring the error leaves
PHPCS unable to detect future changes that may introduce unsafe
interpolation.
I think the more verbose approach is the safest approach in this
case.
* Ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared
There doesn't seem to be a way to use a variable name for the name of the table without
triggering a PHPCS error.
* Avoid interpolated passing interpolated variables to __()
* End inline comments with a full-stop
* Fixed#31760 issue
* additional space removal after &&
* Make sure tracking shortcode only tracks orders of type `WC_Order`
* Add changelog
Co-authored-by: Jorge A. Torres <jorge.torres@automattic.com>
* Upgrade PHPUnit to v8, and remove usage of PHPUnit7 fork in CI
Once the minimum WordPress version supported by WooCommerce is 5.9
and the minimum PHP version supported is 7.2, we can switch to
PHPUnit 7 and the patched PHPUnit 7 with support for PHP 8 is
no longer needed.
* Resolve PHPUnit 8 deprecations in tests
* Add changelog file
* Fix code formatting
* Tweak email layout/styling. This should improve responsive properties for RTL emails particularly.
* Further improve layout consistency across a range of mobile email clients.
* Update existing code to match current coding standards.
* Further PHPCS fix.
* Update sample email to match recent changes in our default email CSS.
* Rename `get_errors_no` to `get_errors_count`
* Remove the validation for marketing channel slugs
Do not check if the marketing channel's slug exists in the list returned by WooCommerce.com Recommendation API. This essentially allows any third-party extension to register as a marketing channel.
* Revert InstalledExtensions
The InstalledExtensions class will be used by the previous generation of Marketing dashboard (if the user has not enabled the new "Marketing" feature); therefore, it's best to restore it to the original code.
* Fix code style
* Add channel property to MarketingCampaign
* Add methods to filter the recommended marketing channels and extensions
* Add `marketing/recommendations` API
* Add unit tests for `marketing/recommendations` API
* Add `marketing/channels` API
* Add unit tests for `marketing/channels` API
* Add `marketing/campaigns` API
* Add unit tests for `marketing/campaigns` API
* Translate Exception message
* Remove doc references to predetermined list of marketing channels
* Add `unregister_all` method
To allow unregistering all marketing channels.
* Unregister all channels on test tear down
* Change API access denied authorization code
* Change API access permission
* Add MarketingCampaignType class
This allows defining campaign types for each marketing channel.
* Add campaign type property to campaign class
* Add `marketing/campaign-types` API
This API returns the aggregated list of supported marketing campaign types for all registered marketing channels.
* Add unit tests for `marketing/campaign-types` API
* Remove unused jsonSerialize method
* Fix unit tests
Co-authored-by: Nima <nima.karimi@automattic.com>
Currently, we don't desire displaying the C&C Blocks feature's settings.
We may choose otherwise in the future, but for the time being adding
the C&C Block to the list of features does the work!
* Customers REST API: return user metadata only when requester has an administrator role
* Add changelog file
Co-authored-by: Nestor Soriano <konamiman@konamiman.com>
There is a typo in `COALESCE (` which is causing an error when this function is called. The error is present on the checkout page when clicking on payment.
* Add initial PHP classes for field registry with tests
* Add README
* Add changelog
* Add sorting to get fields and add test for this
* Update location to section
* Fix lint errors
* Address PR feedback and add Card and Section classes
* Fix php unit test
* Some more cleanup and consolidation of product form component logic
* Fix tests and linting
* Rename Card to Subsection and move some logic around
* Rename Form to FormFactory
* Fix lint errors
* Update spelling of Cancelled to Canceled for US English.
This only updates output display text that uses US English. All code that uses
the form Cancelled is unchanged and is perfectly fine to stay as Cancelled.
(since it is behind the scenes and would require changes in other plugins)
For languages where Cancelled is preferred such as UK English the approprate
form can be applied in the translation files.
Fixes https://github.com/woocommerce/woocommerce/issues/25847
* add changelog file
* Update plugins/woocommerce/tests/api-core-tests/tests/settings/settings-crud.test.js
Co-authored-by: Chi-Hsuan Huang <chihsuan.tw@gmail.com>
Co-authored-by: Chi-Hsuan Huang <chihsuan.tw@gmail.com>
* Update TaskLists::add_task() to reflect changes in TaskList::add_task()
In
8ff08ea0c9 (diff-061f664bd417ad78d47c53ad5e6cc7e2eb1243af4e55b6fbf68750225acb06a3R173)
`TaskList::add_task()` was refactored to receive an instance of `Task`
instead of an `array` as its first parameter.
This commit updates `TaskLists::add_task()` (easy to miss that it is a
different method as the only difference is the plural in the class
name) to reflect the changes from the commit mentioned above. It
updates the type of the second parameter from `array` to `Task` and
renames the parameter from `$args` to `$task`.
I found this while using `TaskLists::add_task()` to add a MailPoet task
as our PHPStan checks complained that I was passing the wrong parameter
to this WooCommerce method.
* Add missing changelog file
Move HPOS-aware orders retrieval code from REST API v3 to v2.
This has two effects:
1. Make the /orders endpoint compatible with REST API v2 when HPOS
is active, additionally to v3 (v1 would require additional work).
2. Fix the /orders/<id>/refunds endpoints for v2 and v3, which was
retrieving data from the posts table even when HPOS active
The class hierarchy is: RefundsV3 extends RefundsV2 extends OrdersV2
and OrdersV3 extends OrdersV2.
Co-authored-by: barryhughes <3594411+barryhughes@users.noreply.github.com>
* Add Charge sales tax on sub section to pricing section when enable taxes is set to yes
* Add tax classes datastore
* Load tax classes in pricing section
* Set empty value when tax class is standard rate
* Add changelog files
* Add custom resolver to use slug as id for tax classes
* Add helper text and learn more link to tax class radio group
* Add callback to confirm whether or not the prevent leaving page prompt should trigger
* Move prevent leaving logic to util and add tests
* Add changelog entry
* Add navigation changelog entry
* Fix WooCommerce data mock
* Revert desctructuring of nav properties
* Skip custom search for HPOS API queries as it's handled already.
For HPOS, we don't need a seperate step of passing the args through wc_order_search since we take care of search params in the final query itself. This duplication was actually causing for some results to not be displayed since we were ending up not honouring pagination arguments and would search only in first 10 matches.
* Add changelog.
* Spped up the search query by using GROUP_BY.
Search query peforms much faster when using group by, MySQL does not like it when we use DISTINCT and join different tables.
* Add changelog.
* Fixup for calculating found orders seperately.
* Code standard fix.
* Auto generate variations on option changes
* Add changelog entry
* Move product variation generation to hook
* Create product auto draft if not yet created
* Allow auto-draft and trash statuses for products
* Update form context with product ID to allow fetching variations
* Fix product ID usage in variations
* Reset form after initial product creation
* Use form value name for display instead of persisted name for auto drafts
* Add additional test around auto draft title
* Rename `get_errors_no` to `get_errors_count`
* Remove the validation for marketing channel slugs
Do not check if the marketing channel's slug exists in the list returned by WooCommerce.com Recommendation API. This allows any third-party extension to register as a marketing channel.
* Revert InstalledExtensions
The InstalledExtensions class will be used by the previous generation of the Marketing dashboard (if the user has not enabled the new "Marketing" feature); therefore, it's best to restore it to the original code.
* Fix code style
* Translate Exception message
* Remove doc references to a predetermined list of marketing channels
Co-authored-by: Nima <nima.karimi@automattic.com>
In post storage, just before deleting an order, we will change all child order's parent to be parent of current order. This commit adds the same behavior for HPOS for consistency.
For HPOS, we don't need a seperate step of passing the args through wc_order_search since we take care of search params in the final query itself. This duplication was actually causing for some results to not be displayed since we were ending up not honouring pagination arguments and would search only in first 10 matches.
* Fix up updateItem query in CRUD data store
* Add product variation form header
* Fix gaps for variation and parent product actions
* Hide preview button on mobile for product variations
* Add changelog entry
* Add data package changelog entry
* Fix lint errors
* Support passing in filter and new attribute properties to AttributeField
* Changelog
* Pass addButtonLabel as prop
* Add OptionsSection to options tab
* Refactor more to create Attributes and Options fields
* Refactor a couple of things
* Refactor globalAttributeHelperMessage
* Remove `Used for filters` checkbox
* Remove `hydrationComplete`
* Add subtitle to empty state component
* Fix 'Add option' button
* Fix tests
Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com>
* Truncate attribute option name to a max of 32 chars in variations list
* Use PRODUCT_VARIATION_TITLE_LIMIT to truncate attribute option names
* Fix up lint error
Co-authored-by: Joshua Flowers <joshuatf@gmail.com>
* Convert getCheckboxTracks into generic function because of a type mismatch
* Add image to product variation and export types
* Add single image field
* Integrate SingleImageField in variation details section
* Add changelog file
* Add comment suggestions
* Fix set image onFileUploadChange
* Persist product variation order on product save
* Add batchUpdate to product variations datastore
* Add useVariationOrders hook to manage the ordering logic
* Add local ordering logic to variations field
* Persist variation orders on product save
* Add changelog file
* Add comments suggestions
* Add more comment seggestions
* Add method to get product variation title from data
* Conditionally add variation to page header
* Fix CRUD data store id query on selector
* Make getProductVariation calls and data types consistent to prevent multiple calls
* Add changelog entries
* Update product link type to avoid page refresh
* Expose function to truncate title to 32 character limit
* Add className prop to Sortable
* Add styles
* Add `rows` class
* Add changelogs
* Remove `row-#` class
* Fix min-height
* Set task list item min height
Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com>
Co-authored-by: Joshua T Flowers <joshuatf@gmail.com>
The wc_update_721_* functions were not guaranteed to succeed, because of a hardcoded prefix. We also could not depend on the async migration tasks persisting through to the 7.2.2 update.
* Add changelog
* Use the input name when selecting the quantity field.
* Changelog tweak.
Co-authored-by: Barry Hughes <3594411+barryhughes@users.noreply.github.com>
* Update abstract-wc-order.php
My attempt to make the documentation clearer for these two methods. It's almost impossible to remember all nuances here, so I constantly find myself testing this. Better to have it in the documentation.
* Changelog.
Co-authored-by: barryhughes <3594411+barryhughes@users.noreply.github.com>
* Add an `required` argument to function `wc_dropdown_variation_attribute_options`
* Whitespace, changelog.
Co-authored-by: barryhughes <3594411+barryhughes@users.noreply.github.com>
* Add aria-label for simple select dropdown
* Add changelog
* Use placeholder value
* Allow aria label prop and use label as a fallback
* Update test snapshot
* Add changelog
* Use Imagick to set threads instead of putenv() (#31942)
* Adapt code to the coding styles
* Changelog and PHPCS fix.
Co-authored-by: Vedanshu Jain <vedanshu.jain.2012@gmail.com>
* Add svg icons and show them in variations list
* The visibility icon should reflect the current visibility status
* Clicking the visibility icon should toggle on or off the variation visibility and persist these settings on refresh
* Price and quantity should be fade when the variant is not visible
* Add changelog
* Hovering the visibility icon should display a tooltip indicating what clicking this button will do
* Fix linter error
* Fix spinner opacity if button is disabled
* Add className support to ListItem
* Refactor to extract AttributeListItem component
* Use AttributeListItem component in AttributeField
* Extract AttributeEmptyState from AttributeField
* Use AttributeEmptyState in AttributeField
* Add default value for label prop on AddAttributeListItem
* Add props for labels in AddAttributeModal
* Add props for labels in EditAttributeModal
* Change the default currency for Croatia to Euros, beginning 2023-01-01.
We do not completely remove the Kuna (HKR) even after the grace period ends (2022-01-15), since an automatic switch to Euros in the storefront, without any sort of conversion, could be challenging for merchants.
* Simplify: we don't need the date-conditional because we are shipping in 7.3 (post-transition).
* Whitespace.
* Update continents test to account for Croatia currency change.
* Further change to API test for continents/currencies.
* Move `*_extra_tablenav` hook, introduce equivalent to `restrict_manage_posts` for parity with CPT order list.
* Changelog.
* Add `since` tag to filter docblocks
Co-authored-by: Jorge A. Torres <jorge.torres@automattic.com>
* Add changelog
* Add pagination to variations list
* Apply styles for pagination paddings and to keep it at the bottom of the section card
* Returning back per page option from 2 to 25
* Fix pagination label text from uppercase to normal and font styles
* Update variation footer gap
Co-authored-by: Joshua T Flowers <joshuatf@gmail.com>
* Add pinterest to OBW
# Conflicts:
# plugins/woocommerce/src/Internal/Admin/RemoteFreeExtensions/DefaultFreeExtensions.php
* Switch the alt data
* Add changelog
* Update copy
The InstalledExtensions class will be used by the previous generation of Marketing dashboard (if the user has not enabled the new "Marketing" feature); therefore, it's best to restore it to the original code.
* Allow `wc_get_order_types()` to return list of order types that have UI
* Make `PageController` register menu items for all order types required
* Make `PageController` URL generation aware of order types
* Make `ListTable` order type aware
* Make `Edit` order type aware
* Add support to `wc_get_page_screen_id()` for order types
* Make `PageController` order type aware
* Include custom order type screens as WC screens
* Make `get_base_page_url()` in `PageController` public
* Make sure Trash links use the correct URL
* Gather request vars in `$request` in list table
* Add some order type specific filters to ListTable
* Fix wrong reference to orders per page in ListTable
* Make ListTable columns work in all screens
* Make PHPCS happy
* Minor PHPCS fix
* Add changelog
* Set page hidden form field based on the order_type (#35751)
* Add ‘woocommerce_order_list_table_extra_tablenav’ hook
* Fix PHPCS warnings
* Make `wc_get_page_screen_id()` datastore aware
* Make `WC_Admin_Assets::is_order_meta_box_screen()` aware of HPOS screen IDs
* Remove unnecessary `$context` arg from `wc_get_page_screen_id()`
* Add support for custom order types to `PostsRedirectionController`
* Make PHPCS happy
* Only connect COT admin page when COT is enabled
* Properly filter out empty status in ListTable
* Fix warning due to uninitialized var
* Do not rely on `wc_orders_count()` for counting orders in `ListTable`
`wc_orders_count()` assumes that order types correspond to a datastore’s object type, which isn’t necessarily the case, producing incorrect results.
Until this is addressed, it’d be best not to rely on it for types other than orders.
* Improve performance for status counts in ListTable
* Fire both order-type specific and generic hook for default column in ListTable
Co-authored-by: bruce aldridge <bruce.aldridge@automattic.com>
* Add exit settings page tracker
* Add exception for when user hits the save button
* Update settings and add icon support
* Add changelog
* Add dismiss track for when user dismisses CES modal
* Add changelog
* Add tests for staticFormDataToObject function
* Fix imports of test file
Do not check if the marketing channel's slug exists in the list returned by WooCommerce.com Recommendation API. This essentially allows any third-party extension to register as a marketing channel.
* Remove CSS that hides the 'Remove' button for product attributes
* Add default placeholder title 'Custom attribute' when user adds a new attribute
* Add changelog
* Add missing esc_html_e
* Try to fix PHPCS
* Add placeholder value for Attribute name input
* Add css and logic to make placeholder title have opacity and remove opacity class after user types the attribute name at the input
* Update placeholder value
* Fix wrong labels
I added e.g. Fabric or Brand to the wrong place.
* Add product variations section
* Add variations list
* Add util to get product stock status
* Add variation specific attribute type
* Add currency code to header column
* Fix up variations header width
* Add variations loading state
* Add changelog entries
* Convert spaces to tabs
* Fix status typo
* Fix up return type for stock status
* Add product form tabs to layout
* Move product sections to respective tabs
* Add tab styling
* Add changelog entry
* Scroll to top on tab change
* Update font weight on active or inactive tabs
* Add blank EOL
* Product import: Remove line breaks in keys
Remove line breaks in keys, to avoid mismatch mapping of keys.
* Fix syntax
* PHPCS
* Changelog.
Co-authored-by: barryhughes <3594411+barryhughes@users.noreply.github.com>
* Add exit page tracker logic and implement it for product pages
* Add changelog
* Fix lint errors and add comments
* Add ces_location prop
* Add mock to fix broken test
* Add CES exit page survey tests
* Fix a bug with React pages redirects and update actions
* Fix test
* Fix lint
* Add default inside location prop
* Remove exit prefix within action
* Address PR feedback and make sure its not triggered on save
* Update copy of exit feedback notice
* Add changelog
* Update name of param
* Fix lint error
* Use hasFinishedResolution vs isResolved in customerEffortScoreTracks
* Make set_order_props_from_data() protected
This enables 3rd parties that extend the order datastore and need to set their own data. For example, Subscriptions
* Add changelog entry
* return set_order_props_from_data to private visibility
* Make init_order_record and get_order_data_for_ids protected
Following feedback here: https://github.com/woocommerce/woocommerce/pull/35829#issuecomment-1340528244
* Update changelog entry
Co-authored-by: mattallan <matt.allan@automattic.com>
* Fix payment instruction location in on-hold email
* Update template version tags.
* Changelog.
* Update version tag to 7.3.0.
* Update version tag to 7.3.0.
Co-authored-by: barryhughes <3594411+barryhughes@users.noreply.github.com>
* Make linter happy by (very painfully) introducing Yoda conditions.
* Change how the COT related tools work combined with the COT feature.
- Enabling the feature will now automatically create the tables
if they don't exist already.
- In fact, enabling the feature is now the only way to create the tables.
- The "Delete tables" tool will be shown as disabled in the feature
is enabled.
* Add changelog file
* Fix code sniffer issues
Do not try to query for orders by type, if no order types are registered.
If DataSynchronizer::get_current_orders_pending_sync_count() is called very early in the request then order types may not yet have been registered. This can for example happen during plugin activation/installation.
* Add help tip to Product galery meta box
* Changelog
* Remove admin_post_thumbnail_html filter from product screen
* Add jQuery to append a tooltip after 'Set product image'
* Add dynamic upload size
* Add guard in case setPostThumbnail doesn't exist
Refactor jQuery code for simplicity
* Run phpcbf
* Fix php linting
* Run lint again
* Make both tooltips with jQuery
Refactor DOM manipulation code
Remove PHP implementation
* Change span tabIndex to 0 to allow focus on screen readers
* Move code to meta-boxes-product
* Add descriptive comment on jQuery code that adds tooltips
* Add @babel/plugin-proposal-class-properties to run storybook
* Add @babel/plugin-proposal-class-properties to webpack config and remove storybook env from babel config
* Add changelog
* Update plugin activation check
This is refactored to test the plugin state instead of checking the API call result.
This is because WordPress can return an error despite the plugin activating correctly. The `unexpected_output` error, in one such case, when WordPress detects stray output upon activation. To workaround this, the plugin is checked for its active status directly.
* Add tests
* Add changelog
* Fix lint issues
* Extract new component 'ProductForm', to reduce duplicated code between add-product-page and edit-product-page
* Add changelog
* Try to merge add-product-page and edit-product-page into a single product-page: running into some issues probably with the controller
* Revert "Try to merge add-product-page and edit-product-page into a single product-page: running into some issues probably with the controller"
This reverts commit bc30b67ef2.
* Fix REST API orders query when HPOS is used
The query wasn't working properly when 'search' or 'parent'
query string arguments were used and HPOS was enabled.
* Add changelog file
* PHPCS fixes.
Co-authored-by: barryhughes <3594411+barryhughes@users.noreply.github.com>
* Add ability to show CES modal through share Feedback button
* Make use of showCesModal in footer
* Update CES action for share feedback
* Update changes to support second CES question
* Add changelog
* Address some PR feedback
* Add product mvp ces footer
* Add changelog
* Reset action option name after CES action
* Make sure we make use of cesAction
* Add close button
* Fix formatting
* Fix css styling issues
* Add icon to success notice
* Add product mvp CES hook and modify logic a little bit
* Update the CES product action name
* Address PR feedback and fix styling for smaller screens
* Add second question to CES product footer and update options
* Add changelog
* Fix lint error
* Fix tests
Even if these are set to the same value (and so the quantity cannot be changed--which results in a readonly quantity selector) we must output them for compatibility with code (example: Composite Products) that expects them to always be present.
* Update wc-account-functions.php
Correct order of single/plural translation strings to prevent confusion with translations and translators.
* Changelog.
Co-authored-by: barryhughes <3594411+barryhughes@users.noreply.github.com>
* Fix Protected Directory Admin Notice
- make notice actually close when clicking "Dismiss"
- make unprotected directory detection smarter: not every /woocommerce_uploads/ page with content is a directory listing
* Unwind the change made to method `is_uploads_directory_protected()`.
Discussion here https://github.com/woocommerce/woocommerce/pull/33544/files#r910253861 relates. In essence, we felt it better to have more warnings prompting the user to evaluate if the directory is protected, than fewer warnings with an increased change of not flagging actual problems.
* Add changelog.
Co-authored-by: barryhughes <3594411+barryhughes@users.noreply.github.com>
* Add updated versions of sr-only and not-sr-only mixins
* Improve element stacking in modals on tablet and mobile
* Add comment suggestion
* Change sr-only for screen-reader-only which is more descriptive
* Record an event 'product_view_product_click' when the 'View Product' link is clicked after creating or updating a product
* Add product_view_product_dismiss tracks events (WIP, not currently working)
* Add changelog
* Fix whitespace in addEventListener and remove console.logs
* Change link tag id to be more specific and comply with CSS guidelines
Move HTML code out of translation function
* Run phpcs in class-wc-admin-post-types
* Add tinyMCE types to add global tinymce variable in typescript code
* Add additional data in getProductData
TODO: I'm not sure if it's possible, or if it makes sense, to include stock_quantity_update in the object
* Add code review suggestions, including:
* Create isElementVisible function to backfill jQuery implementation
* Fix wrong value for is_downloadable, is_virtual, manage_stock
* Fix wrong radix
* Update menu_order implementation
* Add missing ? to weight
* Add stock_quantity_update implementation which is not working as intended
Since the page reloads after product update, the initialStockValue is updated as well
* Remove stock_quantity_update property and adjust is_downloadable, is_virtual, and manage_stock for consistency
* Currency symbol is fixed on the left side of the price input field
* Currency symbol has a different color from the input field value (Gutenberg-700)
* Input value is aligned right
* On focus, we highlight the field's content so the user can quickly clear or overwrite the placeholder text
* On focus, the user can press the up and down arrow keys to increase or decrease the value by 1
* Add changelog
* Remove unnecesary stepUp function
* Add a blank space between the emoji and the message within a notice popup
* Apply comment suggestions
* Remove duplicated text in the snackbar message after publishing a product
* Add support for product attribute taxonomy template
* Add tests
* Add changelog
* Fix format
* Improve changelog
* Add current version to the template
* Add tests for product attribute
* Fix template version
* Fix linting errors
* Refactor tests
* Fix linting errors
* Improve test
* Add comments and fix test
* Fix linting errors
* Fix tests by creating product attribute
* Improve formatting and add return type
* Bump template version to the correct release
* Update product title in smaller viewports
* Move secondary product actions to menu group on mobile
* Hide settings menu on smaller viewports
* Add changelog entry
* Make sure the WooCommerce page hook is untranslated
This works around a WP core bug, and addresses compatibility issues where WC core or 3rd party code expect the pagename or screen ID for one of our submenu pages to remain fixed despite translations.
* Add changelog
* Make PHPCS happy
Fix attribute taxonomy sort order meta key for improved consistency.
* whoops - close array for order meta key update
* Changelog.
* Update phpcs annotation.
Co-authored-by: barryhughes <3594411+barryhughes@users.noreply.github.com>
Add $formatted_destination as an argument to the woocommerce_cart_no_shipping_available_html filter.
Developers should be able to access the $formatted_destination variable directly in order to return a new string to the filter including that address.
* Add docblock and changelog for woocommerce_cart_no_shipping_available_html tweak.
* Bump version tag for cart-shipping template.
Co-authored-by: barryhughes <3594411+barryhughes@users.noreply.github.com>
* Mark note as read when viewing
* Show unread note count
* Add ability to fetch read or unread notes
* Count unread notes on server side to avoid pagination limits
* Add changelog entry
* Add data changelog entry
* Add check for note actions before checking length
* Add changelog entry
* Mark note as read after 3s delay
* Consolidate country data
* update test data
* remove upper case files
* remove upper case files
* remove upper case files
* update country data tests
* countries states updates for local
* revert settings-crud.test
* Set initial values prop from reset form function as optional
* Fix unsaved modal propmt to not be shown during form submission
* Reset form on save draft and before navigation starts
* Add comments ssuggestions
* Add pre build script to delete assets
* Chain the script instead
* Add the cleanup dependency to turbo config
* Add assets cleanup for build zip command
* Add initial add new option
* Hook in create attribute modal to add attribute field
* Add unit tests for the create attribute modal
* Add extra test to attribute input field
* Add changelog
* Add custom attribute term input field and support for custom attributes
* Fix tets
* Add track for custom attribute creation
* Fix changes after merge conflict
* Revert one change
* Fix lint error
* Seperate out some logic and make use of null as empty object versus id: undefined
* Add isNewAttributeListItem helper function
* Make use of helper function for create new markup
* Add css class to change the input width based on the screen's width
* Changelog
* Move class from pricing-section.scss to product-page.scss and use breakpoint 960px mixin
* Move className from currencyInputProps to InputControl
* Improve changelog
* Move 'half-width-field' class to currencyInputProps instead of adding it manually for the two currency fields
* Add 'half-width-field' class to SKU and Shipping Class
Sent as a parameter to getInputProps and getSelectControlProps to avoid overwriting any additional className
* Update changelog
* Add experimental open menu when user click the select control input element
* Open categories menu list when the user click the category field
* Fix linter error
* Move open menu from click to focus event
* Fix linter errors
* Add icons
* Add classic editor url
* Remove welcome guide link and icon
* Add initial settings menu
* Fix up button styling
* Move product settings to its own folder
* Remove unnecessary registerPlugin call
* Use number type control for menu order field
* Add tests around product settings component
* Allow reviews by default on all new products
* Alphabetize product properties
* Add changelog entry
* Add data changelog entry
* Convert indentation to tabs
* Fix up scss linting errors
* Remove whitespace
Avoid direct use of $_POST from within the validate_checkout() method.
* Changelog.
* Address some of the undocumented hook errors flagged by our linting check.
This does not address all of the undocumented hooks (there are many in this file), just the ones flagged by the GitHub Actions code sniff check. This is an effort to unblock the PR, which we otherwise cannot merge at present.
* Add missing `@since` tags (satisfy linter).
Co-authored-by: barryhughes <3594411+barryhughes@users.noreply.github.com>
Make it easier to support many payment methods (within My Account > Payment Methods page).
* Update includes/class-wc-payment-tokens.php
Better backward-compatible by @jonathansadowski
Co-authored-by: jonathansadowski <jonathansadowski@users.noreply.github.com>
* Add docblock for new filter `woocommerce_get_customer_payment_tokens_limit`.
* Add changelog.
Co-authored-by: Yehuda Hassine <yehuda@myinbox.in>
Co-authored-by: jonathansadowski <jonathansadowski@users.noreply.github.com>
Co-authored-by: barryhughes <3594411+barryhughes@users.noreply.github.com>
Update the Azerbaijani manat symbol AZN
* Rebase, update currecy symbol (from mathematical pitchfork to manat).
* Add changelog.
* Use Azerbaijani manat symbol instead of similar mathematical character.
* Update data crud test for the AZN currency symbol.
* Update currency settings for API tests.
Co-authored-by: barryhughes <3594411+barryhughes@users.noreply.github.com>
* Add initial category field component with new typeahead
Move search logic to useCategorySearch hook
Add initial add new category logic
Add parent category field to add new category modal
Adding some debug changes
Update category control to make use of internal selectItem function of select control
Add changelogs
Update pagesize back to 100
Add placeholder
Empty placeholder
Fix input and icon sizes
Fix input underline
Add max height and scroll to category dropdown
Add sorting of category items
Auto open parents when traversing up the tree using arrow keys
Add several comments
Add some initial unit tests for the category field component
Add tests for useCategorySearch hook and fixed minor bug
Update styling and autoselect parent if child is selected
Fix styling issues for the select control dropdown inside a modal
Fix issue with creating new category with parent
Add function comment and fixed border styling
* Fix up some issues after the rebase
* Some small fixes for the Category creation
* Fix up some styling issues around the add-new-item
* Add changelogs
* Remove unneeded export of toggle button props
* Fix create category error and tests in attribute field
* Fix some minor bugs and styling changes that came up during PR feedback
* Fix tests
* Make use of $gap variable for css
* Add product status badge
* Update status method to return keys
* Add tests around product status
* Add styling to badge
* Add changelog entry
* Change product status keys to enum
* Add enum return type to product status function
* Fix up lint errors
* Convert indentation to tabs
* Move shared product header components to separate file
* Fill header title with product name
* Create method to get product title
* Add tests around title
* Add changelog entry
* Remove unnecessary plugin registration
* Site Editor: Fix WooCommerce icons in the Site Editor
* Site Editor: Fix WooCommerce icons not loading in the site editor.
* Add additional FSE theme check
* Add scheduled sale fields to product form
* Close DateTimePickerControl's dropdown when blurring from input.
* Log when onChange is called for Controlled stories
* Handle when input changes occur but the end date is the same
* Fix DateTimePickerControl usage when uncontrolled
* Fix handling when blur happens before debounced onChange
* Add source param for subscription endpoint calls
- Adds an optional $source argument to the WC_Helper_API::url() method
- Get URL of page making WC_Helper::get-subscripitonts() request and add a
source arg to the WC_Helper_API::get() request made by that method
- Pass that source arg to the WC_Helper_API::url() methd from
WC_Helper_API::get()
* Add changelog file
* Use sripos instead of preg_match in WC_Helper::get_subscriptions()
- Update "source" argument name across methods to "query_string" to be
more generic
- Use separate variables to make it clear the URI of the requesting
page, and the value passed as the source query string are different
* Add @param declaration to function comment
* Address PHPCS issues
Co-authored-by: Jorge A. Torres <jorge.torres@automattic.com>
* updates to allow tests to run against both CI test env and JN
* update customer data file
* comment uddates
* baseURL update
* update settings data
* Update plugins/woocommerce/tests/api-core-tests/playwright.config.js
Co-authored-by: Greg <71906536+zhongruige@users.noreply.github.com>
* Update plugins/woocommerce/tests/api-core-tests/tests/customers/customers-crud.test.js
Co-authored-by: Greg <71906536+zhongruige@users.noreply.github.com>
* Update plugins/woocommerce/tests/api-core-tests/playwright.config.js
Co-authored-by: Greg <71906536+zhongruige@users.noreply.github.com>
* updates from code review
* remove erroneous space
* remove comments
* updates for Localhost, LocalWP and JN
Co-authored-by: Greg <71906536+zhongruige@users.noreply.github.com>
* Update class-woocommerce.php for 7.2
* Update stable tag in readme.txt
* Update version in woocommerce.php
* Update version in composer.json
* Update version in package.json
* Create channel interface and campaign value class
* Create MarketingChannels class
* Register MarketingChannels class in DI container
* Use the new MarketingChannels class to get the installed marketing extensions' data
* Use DI container to access InstalledExtensions class
* Add InstalledExtensions to the $provides array
* Hint that campaign cost should also indicate the currency
* Initialize the channels array
* Add unit tests for MarketingCampaign
* Add unit tests for MarketingChannels
* Add Price class to represent a price with currency
* Use Price class for marketing campaign's cost
* Define a constant to indicate the MCM classes exist
This constant will be checked by third-party extensions before utilizing any of the classes/interfaces defined for this feature.
* Create MarketingSpecs class to include WC.com API calls
* Remove WC.com API calls from Marketing class
And replace them with calls from MarketingSpecs class.
* Use the const from MarketingSpecs
* Fix MarketingChannels unit tests
* Add missing settings URL to the channel data
Co-authored-by: Nima <nima.karimi@automattic.com>
Add info on order datastore (and sync) to SSR
* Add changelog
* Make PHPCS happy
* Update plugins/woocommerce/includes/admin/views/html-admin-page-status-report.php
Co-authored-by: Barry Hughes <3594411+barryhughes@users.noreply.github.com>
* Remove unnecessary import
Co-authored-by: Barry Hughes <3594411+barryhughes@users.noreply.github.com>
Update and correct the symbol for Libyan Dinars.
* Update wc-core-functions.php
* Update settings.js
* Add changelog.
* Update API test `can view all currencies` re Libyan Dinar.
Co-authored-by: barryhughes <3594411+barryhughes@users.noreply.github.com>
* Fix business details tabs when Gutenberg is active
Fix business details tabs when Gutenberg is active
Fix business details tabs when Gutenberg is active
* Add changelog
* add use WP_Error
phpdoc was not using FQCN for WP_Error, however use is preferred to FQCN anyway
Fix: https://github.com/woocommerce/woocommerce/issues/35304
* Revert "add use WP_Error"
This reverts commit ff62deb10020689f96722e10c5c86669a1454125.
* use FQCN in PHPDoc when using FQCN in code
* add changelog
Add filter hook `handle_bulk_actions-woocommerce_page_wc-orders` to the HPOS admin list table.
This is a duplicate of core WP hook `handle_bulk_actions-<SCREEN_ID>` and allows for custom bulk actions to be handled in the context of the admin list table for HPOS orders.
* Add create attribute term modal
* Add back filter missed during rebase
* Add changelog
* Fix lint error
* Address some feedback from PR review
* Prevent first modal from closing if closing the second modal when clicking outside
* Fix double click toolbar behavior
* Fix initial block selection on editor load
* Add placeholder option to RichTextEditor
* Add image and video blocks
* Set toolbar height
* Allow inserter to be shown
* Allow media uploads in rich text editor
* Add changelog entries
* Fix media upload
* Check for existence of selected blocks before checking length
* Pass blocks to avoid race in detecting initially empty blocks
* Add sold individually inventory option
* Add backorder purchase options
* Add margin around collapsible content areas
* Add changelog entry
* Add tests around inventory section
* Fix up checkbox props after rebase
* Check for disabled track quantity toggle
* Update manage stock test
* Fix nested radio control label margin
Ensure the HPOS/COT order status correctly tracks the CPT order status (during manual order creation).
* Linting.
* Address coding standards (no need to prepare the query when there are no placeholders).
* Woops! Restore use of `$wpdb->prepare()`, add phpcs:ignore rule.
* Changes in the plugin-feature compatibility warnings:
- Show only active plugins in the "Incompatible with..." plugins view
- Show an empty page when the view is loaded and no Incompatible
plugins are active (instead of listing all the existing plugins)
* Add changelog file
* Also support syncing for HPOS with stats table.
* Add changelog.
* Fixup.
* More fixup.
* test commit by disabling importing admin test orders.
* Update get_items to work with HPOS.
* Modify tests to assert against invalid result.
* test commit for ci.
* Remove seperate test as its quite slow.
* Applied coding standards.
* Coding standards, part 2.
* Check order type is set before returning to prevent notice.
* Applied code standards.
* Remove type declaration since its not consistent with CPT datastore.
* Switch to a yoda condition (satisfy required linting check).
Co-authored-by: barryhughes <3594411+barryhughes@users.noreply.github.com>
* Add product description title to classic product editor
* Remove bottom margin as its already added by the parent element
* Add changelog
* Update css and name, also fix some lint errors
* Fix spacing
* Override filter_meta_data method, since it should be a no-op anyway.
* Add changelog.
* Not include address indexes from filtered data.
* Applied coding standards.
* Updated COT plugin used to set up the local environment with COT enabled.
* Enable HPOS in the e2e environment using env var (#35057)
* Updated COT plugin used to set up the local environment with COT enabled.
* Used env var to enable HPOS
* Disable HPOS for performance tests
* Updated permissions
* Set ENABLE_HPOS to 1
Co-authored-by: Alex López <alex.lopez@automattic.com>
Co-authored-by: Jamel Noel Reid <MrJnrman@users.noreply.github.com>
* Set paths to e2e-pw
* Delete and untrack storage state files
* Add changelog
* Checkout updated version of smoke test daily workflow
* Allow setting allure output paths to e2e-pw folder using environment variables
* Set allure output paths to be inside api-core-tests/api-test-report folder
* Remove unnecessary TODO comment
* Disable product inventory toggle when inventory management is disabled
* Export conditional wrapper as experimental component
* Conditionally show the tooltip
* Add comment explaining the tooltip overlay
* Add components changelog entry
* Display tooltip on hover any portion of toggle or label
* Add changelog entry
* Fix scss lint error
* Center tooltip over label and toggle
* Fix up input props after rebase
* Add wrapper around field to maintain block item formatting
* Show a dismissible snackbar if the server responds an error
* Removed the default value New shipping class from the Name field and replaced it with a placeholder: e.g. Fragile products
* Only used the category's name when the user creates a new shipping class for the first time
* Fix linter errors
* Update grammar error
Co-authored-by: Joshua T Flowers <joshuatf@gmail.com>
* Add empty initial values to form field to prevent controlled/uncontrolled react error
* Tune error handling
Co-authored-by: Joshua T Flowers <joshuatf@gmail.com>
* add api-core-tests for system status
* add api-core-tests for system status
* add system status api-core-tests
* add system status api-core-tests formatting updates
* Allow additional props to be passed to the Form getInputProps method
* Remove getTextControlProps
* Pass additional shared props through getInputProps in shipping
* Simplify checkbox props
* Unwrap currency props
* Use onBlur event to sanitize prices
* Add changelog entry
* Add option to get checkbox props to form context helpers
* Update checkbox tracks handler naming and typing
* Fix up usage of getInputProps
* Add helper sanitize method
* Use sanitize helper method for product input fields
* Fix inventory input props after rebase
* Fix shipping typo
* Fix up form types after rebase
* Align all checkboxes on product page
* Rename new checkbox helper to getCheckboxControlProps
* Add helper method to get select control props
* Add data changelog entry
* Check for product name length on blur
* Add initial value for name to prevent uncontrolled value
* Add initial value for sku
* Fix trashing/untrashing orders when using COT:
- Trashing wasn't changing the update date on the orders table record.
- Trashing wasn't applying trash on the corresponding post.
- Untrashing wasn't actually deleting _wp_trash_meta_status in metadata.
* Fix: maybe_sync_order was syncing even with identical update dates.
* PHPCS is happy now.
* WP_DIE when attempting to load a trashed order in Admin
(same behavior as when using the posts table)
* Add changelog file
* Revert change in order records date comparison
Data comparison is needed too when the dates are equal, since data in the metadata table could have been modified as well.
Co-authored-by: Barry Hughes <3594411+barryhughes@users.noreply.github.com>
* Fix handling of order status and trash meta when untrashing.
Untrashing an order was setting it to the default status of "pending"
instead of the previous status. This is what was happening:
1. Order is trashed, order meta table gets the value (e.g.) "on-hold"
for the _wp_trash_meta_status key
2. Post is trashed, post meta table gets "wc-on-hold"
3. Order is re-read, but then so is posts, and the order meta value is
updated to "wc-on-hold"
4. On untrash the previous order status from order meta table is
prefixed with "wc-", thus it becomes "wc-wc-on-hold", which is not
a valid status
5. Not having a valid status, the order is restored as the default
status of "pending payment"
To fix this, the previous status is stored in order meta table
with "wc-", and it doesn't get prefixed on untrash.
Also, wp_untrash_post is called on order untrash, otherwise the
trash metadata keeps dangling and being synced back and forth.
* Add unit tetst for the trash-untrash cycle
Co-authored-by: Barry Hughes <3594411+barryhughes@users.noreply.github.com>
* Fix 'Invalid payment method' error upon double click 'Delete' #30862
An 'Invalid payment method' error shows when a user double clicks the
'Delete' button in the 'Add Payment method screen'. Every time the user clicks
the button, there is a GET request to delete the payment method. First request is
handled correctly, but subsequent requests throw an error, because the payment
method cannot be found since it was already deleted.
This adds an event handler to disable the button on the first
click.
* Add changelog entry
* Use AccessiblePrivateMethods in DataSynchronizer.
Also fix some code styling stuff.
* Introduce the woocommerce_feature_description_tip filter.
...and use it to display a warning for the COT feature
if there are orders pending sync.
* Display the plugin-feature incompatibility warning in all admin pages.
...except in the plugins list when we are already showing the
"You are viewing plugins with incompatibilities" page.
Also change the styling from warning to error.
* Add changelog file
* Revert accidental change.
Co-authored-by: Vedanshu Jain <vedanshu.jain.2012@gmail.com>
* Add initial add attribute modal
* Add async select control component and add attribute terms
* Make use of AsyncSelectControl for attributes
* Rearranged the add attribute form to make removing easier
* Make sure add button is disabled if fields are empty
* Remove the use of AsyncSelectControl for now
* Add disabled option and fix merge conflict
* Add attribute modal tests
* Remove unused trigger drag
* Add popover slot
* Small update to select control and fix multi selection in term field
* Add tests for attribute and attribute term fields
* Add changelogs
* Small fix after merge conflict
* Fix some styling and issue with select control when clearing item
* Fix lint error
* Fix up some styling issues after rebase
* Fix formatting, some styling issues, and address some PR feedback
* And confirmation dialog for closing the modal.
* Select the current new added shipping class
* Extracting constants into the right file
* Add unit tests
* Use setValue instead onChange to select the shipping class of the product
* Add label prop to rich text editor
* Create feature class and enqueue styles
* Add description editor and parsing
* Fix up incorrect context for product data
* Add styling to rich text editors in product form
* Fix editor initialization on new product
* Add changelog entries
* Use trunk lock file
* Add component changelog entry
* Update lock file
* Register block store provider in tests
* Fix up phpcs errors in product feature file
* Optimize is_complete() method
* Replaed WC_Product_Query with wp_count_posts, which has more optimized query
* Optimize TaskList::is_complete -- return early when false instead of running through all the tasks
* Cache is_complete() method for the tasks with db query
* Add changelog
The tooltip for the Header Image field currently reads: "URL to an image you want to show in the email header. Upload images using the media uploader (Admin > Media)."
I believe my small edit to the description text makes it more clearer for how the user should do this.
* Add initial category field component with new typeahead
Move search logic to useCategorySearch hook
Add initial add new category logic
Add parent category field to add new category modal
Adding some debug changes
Update category control to make use of internal selectItem function of select control
Add changelogs
Update pagesize back to 100
Add placeholder
Empty placeholder
Fix input and icon sizes
Fix input underline
Add max height and scroll to category dropdown
Add sorting of category items
Auto open parents when traversing up the tree using arrow keys
Add several comments
Add some initial unit tests for the category field component
Add tests for useCategorySearch hook and fixed minor bug
Update styling and autoselect parent if child is selected
Fix styling issues for the select control dropdown inside a modal
Fix issue with creating new category with parent
Add function comment and fixed border styling
Prune out create new category logic
Fix minor css issue with border
Revert some of the select control changes and make use of the custom type
Fix up some styling changes
* Fix type conflict
* Revert change in state reducer
* Add cursor pointer
* Fix styling errors
* Fix broken category tests
* Fix merge conflict
Make the quantity input visible, even if the min and max allowed values are identical.
* Add changelog
* Update plugins/woocommerce/changelog/fix-GH-34280
Co-authored-by: Barry Hughes <3594411+barryhughes@users.noreply.github.com>
* Update plugins/woocommerce/templates/global/quantity-input.php
Co-authored-by: Barry Hughes <3594411+barryhughes@users.noreply.github.com>
* Fix `@since` tag
* Use a single readonly input (when quanity cannot be changed) instead of two inputs (hidden and disabled).
* Introduce consistent formatting when a product is sold individually and when the min/max is identical.
* Update `@version` tags to 7.1.0.
Co-authored-by: Barry Hughes <3594411+barryhughes@users.noreply.github.com>
* Set correct timezone when backfilling data.
* Add changelog.
* Apply code standards.
* Address further flakiness and more comprehensive test.
* More fixes for timezone backfil.
* Remove unnecessary comments.
* Revert test change since we are not changing systems timezone.
* Minor alignment fix.
* Minor language fix.
Co-authored-by: Peter Fabian <peter.fabian.github@gmail.com>
Co-authored-by: Peter Fabian <peter.fabian.github@gmail.com>
* Add and use ON_DUPLICATE_KEY update function to perform update/insert without additional query.
* Fix typo
* Add more tests for save related functions.
* Update post directly to update correct post_modified value.
If we use wp's update_post function, then it will set the post-modified date to current time(). This is not desirable when backfilling order data where we want post data to be exactly the same as orders.
* Add changelog.
* Add support to sync from posts table when reading order table.
When sync is enabled, we also read from posts table when an order is read from COT. Mismatch in this case implies a direct write and therefore we update the COT record with data from posts. This provides an additional layer of backwards compatibility.
* Add more tests for different tables.
* Modify sync logic to account for metadata that has been changed.
* Fetch post only when data sync is enabled.
* Made test case comparison more strict to prevent flakiness.
* WIP
* WIP
* Added protections and code standard fixes.
* WIP
* Change order data store internal key to props for better representation.
* Add changelog
* Add legacy datastore prop for WC_Data object to support COT.
* Also support passing in `get_stock_reduced` method.
* Add internal meta keys to order table data store.
* Add tests for CPT datastore for orders.
* Change return type to prevent implicit type conversion.
* Use correct conversion.
* Revert "Use correct conversion."
This reverts commit 97ead11f71.
* Add conversions to test as needed.
* Add internal keys for order table data store for consistency.
* Apply code standards.
* Merge conflict fixes.
* Add more tests.
* Add more fixes and unit test for sync logic.
* Remove $save param for consistency with parent class.
Earlier, we added the $save parameter for performance reason, but now that we are storing the props in the WC_Order object, this isn't needed anymore (as the object can hold the updated props).
* Return bool instead of string as described.
* Fix test by transforming bool values before confirming.
* Fix test by not needing to converting to string, since we now bool value.
* Store internal props as bool instead of string.
* Remove unused method.
* Only select props for refunds that are actually needed.
* Store bool as yes/no to maintain compatibility with how were storing prev.
* Fix unit test to extpect yes.
* Add tests and set special metadata migrated from data store correctly.
* Add tests for legacy prop get/set in ordertabledatastore.
* Update email class to use data store method instead of get_meta.
* Update exisiting tests to account for changes in legacy prop setting.
* Read from CPT store directly, and cache the pending value.
* Fixup in unit test.
* Add test for refund creation.
* Add test for refund creation.
* Remove strict WC_Order typecasting.
* Address code standard voilation.
* Call correct parent method for updating meta.
* Use WC_Absract instead of WC_Order to provide more compatibility.
* Record order ids we are syncing for to prevent any infinite loop.
* Add test for fixing infinite loop with read on sync.
* Address PR feedback.
* Fix formatting.
Co-authored-by: Barry Hughes <3594411+barryhughes@users.noreply.github.com>
* Fix formatting.
Co-authored-by: Barry Hughes <3594411+barryhughes@users.noreply.github.com>
* Use correct type hints.
Co-authored-by: Barry Hughes <3594411+barryhughes@users.noreply.github.com>
* Fix formatting.
Co-authored-by: Barry Hughes <3594411+barryhughes@users.noreply.github.com>
* Yoda, use.
Co-authored-by: Barry Hughes <3594411+barryhughes@users.noreply.github.com>
* Remove space between minus and numeral for readability.
* Fix ut, and use assertTrue instead of native for consistency.
* Port a fix for edit date save.
Co-authored-by: Barry Hughes <3594411+barryhughes@users.noreply.github.com>
* Ensure Payments menu is dismissed after choosing no
Now it gets also dismissed on modal close
* Add a new requirement
Check if the store has another payment gateway installed to be eligible for the promotion.
* Add changelog entry
* Fix not using strict comparison for in_array
* Update is_another_payment_gateway_installed
To use a static list instead of PaymentGatewaySuggestions
* Add manage stock section to product inventory section
* Fix up h4 styles in form sections
* Check if stock management is enabled in store settings
* Fix up more styles in form
* Extract inventory validation and add new validation rules
* Add changelog entry
* Add changelog entry
* Remove sku related validation
* Add product inventory section and sku control
* Add validation and errors
* Add changelog entry
* Add dependencies comment block
* Call input props onBlur for product name field
* Remove slug validation
* Watch product name value change in inventory section
* Fix up usePrevious hook TS
* Revert watching changes by previous touched status
* (HPOS/COT) Ensure date_creation_gmt is correctly populated with a datetime in GMT timezone.
* Update the way we test the value of the persisted order creation date.
* Extend FeaturesController to handle WooCommerce-aware plugins
The methods that return compatibility info now have an extra
'uncertain' part with information regarding plugins that are
WooCommerce-aware but haven't declared compatibility.
* Add a warning about incompatible plugins in the features page.
Includes a link to the list of incompatible plugins.
* Add handling of incompatible plugins in the plugins page.
Plugins that are incompatible with at least one enabled feature
will show a warning in the WooCommerce plugins page, and will
have their "Activate" link disabled.
* - Hook on 'views_plugins' to display two views in plugins page,
"All" and "Incompatible with feature X"
- Exclude the legacy Analytics features from the feature and plugins
activation restrictions
- Allow disabling a feature from the settings pages if it's enabled
and is incompatible with at least one plugin (it won't be possible
to re-enable it once the settings page reloads)
* Fix FeaturesController::declare_compatibility not working in Windows
(which uses \ instead of / as directory separator)
* - Add two methods to bypass the feature/plugin activation protection.
- Fix: the incompatible plugins count in the feature settings page
now only counts active plugins.
* Add changelog file
* Fix unit tests
* - Rename "custom orders table" feature to "high performance order tables"
- Add an extra parameter to FeaturesController::get_compatible_plugins_for_feature
to retrieve all matching plugins or only active plugins.
* Minor wording fixes
* Address PR feedback.
* Allow enabling plugins when WP_DEBUG is true.
* Return if plugin_status is not set.
* Dont change the Activate button.
Co-authored-by: Vedanshu Jain <vedanshu.jain.2012@gmail.com>
Adds a check to the mobile messaging callback to ensure it only gets inserted into the email footer for the New Order notification for merchants, and not for emails sent to customers.
Fixes#35016
* Bring Yoda back.
* Add method to OrdersTableQuery to obtain table info for a given order field
* First pass at field_query
* Add tests
* Add changelog
* Use backticks for table names and aliases
* Improve validation in field_query
* Add some more tests
* Added JS data file
* Moved onboarding logic into utils folder
* Used new onboarding methods and data file
* Added changelog
* Moved utils directory
* Added api utils
* Added customer details data
* Used new api utils and data
* Updated path
* Added comment and removed log
* Removed log
* Added changelog
* Update Playwright 1.22.1 -> 1.26.0
* Update page title locator
* Wait for View cart link after adding to cart
* Add a wait when applying second coupon
* Fix flakey coupon test
* Ensure Store is in US
* Add changelog
* Revert lock file commit
This reverts commit b75192f53c.
* Updated lock file
* Added command for Playwright test execution
* Resolve merge conflict
* Resolve merge conflict
* Fixed pnpm-lock.json
* Update PW Selectors (#34959)
* Updated PW selectors
* Updated selector
* Removed extra command
* Ensure Billing country is set
* Fix failing payment setup test
* Old test is still running in actions
* Adds colour output for Playwright in GH Actions
* Fix payment test
* Lock file update
* Skipping a test for now
Co-authored-by: Jon Lane <jon.lane@automattic.com>
Co-authored-by: jamelreid <jnoelreid@gmail.com>
Co-authored-by: Jamel Noel Reid <MrJnrman@users.noreply.github.com>
* Add documentation as to where to find the settings/features
* Fix version picker not working
* Bump versions and normalize changelog section
* Remove old changelog files
* Ensure WR can bump the version
* Add minified version of version-picker
Co-authored-by: Jonathan Sadowski <sadowski@automattic.com>
* Expanded k6 merchant order tests
* Adding additional k6 merchant and api order requests
* Added changelog
* Added Changelog
* Update k6 search filter test to use customer ID
* Update k6 README for update to config
* Removed Order Filters from k6 daily external tests until the workflow can be updated
* Updated k6 requests for HPOS
* Add k6 completed orders merchant request
* Reverse the order of "$id" and "$object" in ObjectCache::set
* Add the ObjectCache::update_if_cached method
* Modify ObjectCache:set to validate object before invoking get_id
* Add a temporary TransientsEngine class.
This is temporary! Must be removed before merging to trunk.
* Add the OrderCache class.
This class uses a TransientsEngine instance as the caching engine.
This is temporary and must be undone (get_cache_engine_instance method
must be removed) before merging to trunk!
* Use the new OrdersCache class
- When an order is retrieved, cache it
- When an order is saved, update it if it was cached already
- When an order is trashed or deleted, remove it from cache
- When the authoritative table for orders changes, flush the cache
* Remove the hardcoded usage of TransientEngine in OrderCache
It will make things easier later before merging. The transients engine
can still be used via the wc_object_cache_get_engine hook.
* Add changelog file
* Fix failing unit test
The test was failing because the order is cached by reference when
being saved in the test, and then when being deleted by the REST API
code it gets its id set to 0.
* Add a setting to enable/disable the orders cache
Also added a mechanism to temporarily disable the orders cache while
syncrhonization is in progress.
* Adjustments in the mechanism to temporarily disable the orders cache usage
* OrderCacheController: backup enable option is now stored in memory.
* Convert conditions to Yoda :-(
* Add missing $
* Use the new features engine to declare the cache as an experimental feature
Also decouple the orders cache mechanism from the COT feature,
it can be now used indepently of the COT feature and independently
of whether the new orders table is in use or not.
* Removed unused import and transient class.
Co-authored-by: Vedanshu Jain <vedanshu.jain.2012@gmail.com>
* Added JS data file
* Moved onboarding logic into utils folder
* Used new onboarding methods and data file
* Added changelog
* Moved utils directory
* Fixed import
* Replace preloaded attribute and term dropdowns with async typeahead dropdowns
* Revert accidenatal change.
* Add condition to show the old dropdown in certain situations
* Add changelog
* Use ternary condition
* Move mininumInputLength down to follow the same format as the other filters
* Fix the minimum input length
* Update the select all to work with the async terms field
* Make sure empty attributes are shown and suppress query filter
* Fix code sniff error
REST API: Ensure meta_data prop contains an array
When filtering the meta_data array of a response with include_meta or
exclude_meta, the array indexes were getting preserved so that it was
possible for the array to not contain a 0 index, but still have some
subsequent numbers. When such an array was converted to JSON, it was
interpreted as an object rather than an array.
This ensures the meta_data array indexes are reset after filtering, and
adds unit tests to check that meta_data always contains an array, and
not an object.
* Add `maxFailures`
* Intentionally fail a test for testing the failure limit
* Add changelog
* Add step to get total number of E2E tests
* Increase max failures
* Add warnings to the test summary.
Also moved some stuff around.
* Update changelog
* Use env var to set `maxFailures` value instead of hard-coding it
* Make sure env var is converted to a number
* Allow maxFailures even if not on CI
* Show incomplete e2e run warning only when E2E_MAX_FAILURES is set
* Safely escape new lines in comment body
* Fix returned stringified summary
* Remove unnecessary newline escaping
* Fix incorrect reference to E2E_MAX_FAILURES
* Minor formatting change
* Shorten warning messages
* Minor change in warning message
* Intentionally fail only 1 test
* Remove intentional failures
* Removed duplicate env declaration
* Correct pnpm command and playwright config file location
* Simplify reference to CI variable
* Remove unnecessary if condition
* Remove references to the old E2E_PLAYWRIGHT flag
* Remove references to the old E2E_PPTR_SUMMARY_PATH variable
* Test for 2 warnings
* Revert to correct locator
* Test for only 1 warning
* Pass all tests
* Add initial attribute list with dragging and removing functionality
* Fix sortable styling and remove the default selected logic
* Fix css formatting
* Add changelogs
* Add missing question mark
* Add tests
* Some minor CSS updates and move some logic to a util function
* Fix lint issues and add extra test
* Remove custom styles from FormSection component and use Card and CardBody instead
* Add dimension fields formating using the woo number global settings
* Load size units to show it as a suffix of shipping dimensions fields
* Fix card styles according the disign and pass props manually to BaseControl
* Add shipping dimensions image
* Apply comment suggestions
* playwright api-core-tests
* playwright api-core-tests
* playwright api-core-tests
* Workflow updates
* Workflow test updates
* workflow test update
* Workflow testing
* Workflow testing
* workflow test updates
* workflow test updates
* Workflow update test
* Workflow update test restore
* add gitignore for api core tests output dir
* Workflow test with playwright api tests
* Workflow restore to original
* update readme and playwright config
* Add dimensions to shipping section
Change the FormComponent to support input name with dot notation like dimensions.width
Add the dimension controls to the product form
* Remove custom styles from FormSection component and use Card and CardBody instead
* Add dimension fields formating using the woo number global settings
* Add dimension fields validations
* Solve conflics from rebase
* Add changelogs
* Fix resetForm function to consider the passed params and the initialValues
* Load size units to show it as a suffix of shipping dimensions fields
* Fix card styles according the disign and pass props manually to BaseControl
Allow features to have a default state via `enabled_by_default`.
* Remove unnecessary import
* Allow features to have a default state via `enabled_by_default`
* Add changelog
* Change order data store internal key to props for better representation.
* Add changelog
* Add legacy datastore prop for WC_Data object to support COT.
* Also support passing in `get_stock_reduced` method.
* Add internal meta keys to order table data store.
* Add tests for CPT datastore for orders.
* Change return type to prevent implicit type conversion.
* Use correct conversion.
* Revert "Use correct conversion."
This reverts commit 97ead11f71.
* Add conversions to test as needed.
* Add internal keys for order table data store for consistency.
* Apply code standards.
* Remove $save param for consistency with parent class.
Earlier, we added the $save parameter for performance reason, but now that we are storing the props in the WC_Order object, this isn't needed anymore (as the object can hold the updated props).
* Return bool instead of string as described.
* Fix test by transforming bool values before confirming.
* Fix test by not needing to converting to string, since we now bool value.
* Store internal props as bool instead of string.
* Remove unused method.
* Only select props for refunds that are actually needed.
* Store bool as yes/no to maintain compatibility with how were storing prev.
* Fix unit test to extpect yes.
* Add tests and set special metadata migrated from data store correctly.
* Add tests for legacy prop get/set in ordertabledatastore.
* Update email class to use data store method instead of get_meta.
* Update exisiting tests to account for changes in legacy prop setting.
* Add support for order IDs to prop getters in `OrdersTableDatastore`
* `OrdersTableDatastore::get_download_permissions_granted()` should no longer rely on metadata
Co-authored-by: Jorge A. Torres <jorge.torres@automattic.com>
* Exclude debug module from webpack transpile to load tour kit stories
We originally added debug module in https://github.com/woocommerce/woocommerce-admin/pull/5987 to fix a IE11 issue.
Since we've drop IE11 support, it should be fine to remove it.
* Add changelog
* Add new attributes section and attributes field with just an empty state
* ADd changelogs
* Add check to not render the blank section when attributes exist
* Fix misspelling
* Add store-details task header and ensure the aid is disabled when task is completed
* Add an illustration
* Update the texts
* Add changelog
* Revisit progress header styles
* Bring back ellipsis menu
* Align the ellipsis menu on the baseline
* Give some room to the badge in the sidebar
* Update progress bar color with variable
* Initial commit
* Implement APMs toggle button
- Add valid links to each APM
- Add valid link to the marketplace
* Implement APMs toggle button
- Add valid links to each APM
- Add valid link to the marketplace
* Refactor the code to be more explicit
* Delete the apm on toggle off if it's local state
* Implement FAQ simple block
- Style a notice about APM is enabled
- Add noreferrer and target=_blank to external links
* Add todo comments
* FAQ simple styling fix (improve padding)
* Fixes after inner review
* Add changelog item
* Address PR review comments
* Remove Affirm as it's not in the store
* Style fixes, proper internationalization and put valid link
* Styling fixes, translators comment, rename ApmsProps component to ApmListProps
* Two more styling fixes
* Styling fix
* Styling fix
* Remove text-decoration: none to match the design
Provide a useful feedback message when CSV export fails due to wrong permissions on wp-content/upload/ folder (or any other folder set by WC CSV Exporter module).
This helps understand why CSV export fails under some conditions, by providing a hint on the error cause, instead of silently failing.
* Fix failing by initializing properties.
1. wc_core_dir was earlier being initialized in by WC_Admin bootstrap file, after the monorepo merge, this is no longer needed and can be replaced by WC_ABSPATH directly. (Since WooCommerce core is not being mounted in a different folder).
2. $user was usually unintialized, but it still worked since when passing null it will autoset to 1. This is modified to either not handle this explicitly, and/or not pass any value when default is fine.
* Add changelog.
* Disable action buttons when product form is invalid
* Move to trash action should be enabled when editing a product even when the form is invalid
* Hide Move to trash action button in the Add new product page
* Hide product link when the name field has any error
* Disable Publish options menu button when all menu items are disabled
* Test menu items by text instead of index
Enable support for the Preview Modal within the COT/HPOS admin list table.
* Add `@since` to dobclock
* Update wc-orders JS script to work with COT
* Move order preview template to `Internal\Admin\Orders\ListTable`
* Add changelog
* Fix: init_theorder_object throwing an error
The error was thrown due to the return type of the method being
WC_Order (but can also be "false" or other type of object)
* Add changelog file
* Skip Store owner can go through setup Task List test
* Added changelog
* Explicitly change currency in before hooks to resolve dependency
* Update assertion for product import test
* Set currency on product import test
Co-authored-by: Jon Lane <jon.lane@automattic.com>
* Change the e2e selector for unchecking all business features
* Update e2e uncheck business features in test setup
* Add theme selection to before hook for shipping task
* Remove marketing transient on upgrade to 7.0
The recommended marketing extensions are stored in a transient (`wc_marketing_recommended_plugins`). When WooCommerce is upgraded, we need to remove that cached data from the transient so it can be repopulated using the new API.
Co-authored-by: Nima <nima.karimi@automattic.com>
* Remove -- -- from scripts that fixed issue in pnpm 6, fix a couple TS issues in sep packages
* Minor fixes to analyzer scripts and doco based on pnpm 7
* Add dompurify types to data package to avoid TS errors
* Remove pnpx in favor of pnpm exec
* Modify the code analyzer to respect pnpm version if present.
* Update instructions for running recursive lint, add comments to explain
* Add filter woocommerce_cart_item_is_purchasable when getting cart item in session
* Add changelog.
* Do not migrate orders in auto-draft.
* Add $product to filters for convinience.
* Add changelog.
* Revert "Do not migrate orders in auto-draft."
This reverts commit 614586d0c4.
* Also add product param in new filter.
* fix docblocks.
* more docblock fixes
Co-authored-by: Vedanshu Jain <vedanshu.jain.2012@gmail.com>
This trait allows to mark private and protected methods as externally
accessible. There are also utility add_action and add_filter methods
that mark the method as accessible and use it as callback in one
single step.
Additionally, all the classes that were hooking to private methods using an
anonymous function in the 'src' directory are changed to use the new
AccessiblePrivateMethods trait instead, thus they can be unhooked now.
Introduces two new collection params for v2 and v3 orders and products REST API endpoints. These params allow for limiting which meta keys are included in the meta_data property of the API responses.
Fixes#34243
For email notifications to store owners about new orders, adds messaging with deep links to open the orders directly from the Woo mobile app when the new order meets certain criteria. If the store owner has not yet used the Woo mobile app, instead provides a link to download the app.
Fixes#34544
Co-authored-by: Corey McKrill <916023+coreymckrill@users.noreply.github.com>
* Only run remote inbox notification once onboarding has been skipped or completed
* Add callback for add_option for profiler as well
* Add changelog
* Add extra condition to check if store address or country has actually been set
* Update rule to check if default location is set, if so return false
* Revert initial changes and update changelog description
* Added tests and updated logic a bit
* Add comment for long condition
Redirect legacy/CPT admin order URLs when Custom Order Tables are enabled.
* Add utility method to generate a link to the orders screen
* Add `PostsRedirectionController` to handle redirection from CPT-based URLs to new ones
* Use the redirections controller inside the orders screen PageController
* Add changelog
* Add check for COT enabled before enabling redirection controller
* Add support for trashing orders
* Update changelog
* Take into account ‘shop_orderplacehold’ when redirecting
* Correctly handle bulk actions
* Update k6 tests to remove linting errors, replace custom metrics with tags, and add ability to run against COT
* Added changelog
* Updated readme for new k6 perf config variables & removal of custom metrics
* Updated k6 tag names
* Collapse the short description module by default
* Add a descriptive tooltip to description and short description editors
Product description editor shows a tip text that clarify the purpose of the editor
Product short description meta box title shows a tip text that clarify the purpose of the editor
* Add changelog file
* Add translatable text to short and description of the product
* Remove the FK from the download log table.
It's unnecessary and forces InnoDB engine.
* Delete also related download logs.
To replicate the FK behaviour.
* ON DELETE CASCADE in PHP
* Changelog.
* Bump the version when this will be included.
* Fixed missing select in subquery.
* Fix copypasta error.
* Remove accidentally added file.
* DRYing.
* Bracketing.
* Slight refactor to make it easier to read.
* Remove the FK from the download log table.
It's unnecessary and forces InnoDB engine.
* Delete also related download logs.
To replicate the FK behaviour.
* ON DELETE CASCADE in PHP
* Changelog.
* Bump the version when this will be included.
* Fixed missing select in subquery.
* Fix copypasta error.
* Remove accidentally added file.
* DRYing.
* Bracketing.
* Slight refactor to make it easier to read.
Co-authored-by: Nestor Soriano <konamiman@konamiman.com>
Update post directly to update correct post_modified value.
If we use wp's update_post function, then it will set the post-modified date to current time(). This is not desirable when backfilling order data where we want post data to be exactly the same as orders.
* Add changelog.
* Added protections and code standard fixes.
* Use wp_update_post so that hooks fire as usual.
* Add and use ON_DUPLICATE_KEY update function to perform update/insert without additional query.
* Fix typo
* Add more tests for save related functions.
This updates Turborepo and adjusts the output caching for `woocommerce/client/legacy` and `woocommerce/client/admin`. The result is that build outputs in `plugins/woocommerce/assets` should be stored correctly.
* Update get_product_data to send request with a locale query param for translation
* Add changelog
* Fix lint
* Update PRODUCT_DATA_TRANSIENT format for translations
* Validate that tinymce exists before using it.
If wp is not configured to use blocks and the tinymce was changed by a different editor then the error happends because tinymce is required. Applaying a validation that makes sure tinymce exists before using it solves the problem. But this introduces a new problem, the description property will be send with value 'No' when event 'product_update' will be fired.
* Add changelog file
* Check if tinymce.get( 'content' ) is not falsy before calling getContent()
* Update `jest-puppeteer@5.0.4` (from `4.4.0`)
to be albe to run with jest 28.
* Update `jest` and `ts-jest@^27` (from `25`),
to match `e2e-environment` needs.
* Update api-core-tests' `jest@^27` (from `25`),
to unify the used version across the stack.
* Update e2e-env's `jest@^27` & co. (from `25`),
to unify the used version across the stack.
* Update e2e-env's `@jest/test-sequencer@^27` (from `25`),
to unify the used version across the stack.
* Update admin-e2e-tests' `@jest/globals@^27` (from `26`),
to unify the used version across the stack.
* Update woocommerce's `jest@^27.5.1` (from `25`),
to unify the used version across the stack.
* Replace `mocked` from `ts-jest` to the one from `jest`,
Update `@types/jest@27.4.1` from `27.0.2`.
Try to fix broken tsc build.
* Update `e2e-core-tests`' `@jest/globals@^27.5.1`
from `^26.4.2`.
* Remove changelog entry for bumpin jest in `api-core-tests`
It was already covered in `trunk`.
Addresses https://github.com/woocommerce/woocommerce/pull/34322#discussion_r956019567
* Updated package-lock.yaml
* Updated timeout
* Added changelogs
Co-authored-by: jamelreid <jnoelreid@gmail.com>
* Update Guernsey state field to non-required
Resolves woocommerce#32876 by making GG state field entry non-required.
* Update Guernsey state field with correct label
Based on https://en.wikipedia.org/wiki/Guernsey#:~:text=Guernsey%20(%2Fˈ%C9%A1ɜ%CB%90rn,Guernsey%2C%20a%20British%20Crown%20Dependency.&text=It%20is%20the%20second%20largest,west%20of%20the%20Cotentin%20Peninsula it looks like the state equivalent for GG is to "Parish" so rather than hiding the field entirely, it makes more sense to make it optional, and add the correct label.
* Added changelog.
Co-authored-by: Rynaldo <89896100+rynaldos@users.noreply.github.com>
* implement coupon held methods.
* Add changelog file.
* Used `delete_meta_data` of WC_Coupon and cleared meta cache after adding coupon held meta.
Co-authored-by: Vedanshu Jain <vedanshu.jain.2012@gmail.com>
* Add styles for the progress header
* Add changelog
* Fix invalid header error from the changelog -- this file is not related to this repo, but I am still fixing it since it is not passing the gitflow job
* Refactor NewSalesRecord to have get_note method
* Refactor OrderMilestones to have get_note method
* Add unit tests for notes
* Fix wrong content data return type
* Add changelog
* Update Google logo icon.
* Update Google logo icon to use img element with svg file.
* Simplify ProductIcon CSS with size prop.
This applies to svg and image icons, not just svg.
* Add changelog.
* Set style for Google logo icon.
We set white background to override the gray backgroun in ProductIcon.
Padding is used to make it look visually similar size with other icons.
* Update style for Google logo.
Add inline file delivery to WC_Download_Handler
Create a new setting option for inline file delivery for downloadable
products. In the Download Handler create a new method for the new
setting as well as a method for returning the proper headers to deliver
files inline.
Resolves: #28410
* Update Content Type of inline delivered files
* Update Downloaded file name
* Change content-disposition to be a checkbox
Since inline-delivery works with multiple download methods
* Document function
* Add new setting for test, see #31145.
* Better setting wording and remove typo comment.
* Address pr feedback.
* Add changelog.
* Rephrase the settings to make it more clear.
* More rephrasing.
Co-authored-by: Matthew Caldwell <caldwellysr@gmail.com>
Order-again item meta should store term slug instead of term value.
* Cleanup f26e62502c
* Remove extra tab
* Changelog.
Co-authored-by: Alexandre Froger <alex@froger.me>
Implement `get_order_id_by_order_key()` and related methods in the COT datastore.
* Implement `get_order_count()` in the COT datastore
* Implement `get_unpaid_orders()` in the COT datastore
* Implement `get_orders()` in the COT datastore
* Add unit tests for misc. COT datastore methods
* Add changelog
* Apply suggestions from code review
Co-authored-by: Barry Hughes <3594411+barryhughes@users.noreply.github.com>
* Rename var
* Update docblock
Co-authored-by: Barry Hughes <3594411+barryhughes@users.noreply.github.com>
* Add suppport for types and refund in migrations.
* Add changelog.
* Make CI happy.
* Add support for refunds save and read.
* Remove placeholder from order types eligible for migration.
* Link backfilling to migration process.
* Add changelog.
* Reduce batch size for backfilling since it is slower.
* Correct grammer.
* Link backfilling with data synchronizer and adopt with pending migration on both sides.
We already have backfilling implemented, however it was not linked. This would make switching data stores back to posts table not possible. This commit links datasynchronizer so that it can both migrate as well as backfill.
* Remove _recorded_sales from skipped check keys since its implemented.
* Share concrete instance of cot controller to share feature value.
* Revert adding concrete controller, object instance is already shared.
* remove yoda condition.
* Remove unintended change.
* Add types in unit test since we added it in schema.
* Remove unsetting type, its supported now.
* Add support for backfilling order types with different datastores.
* Use correct datastore while migrating.
* Support -1 for limit queries
* Order factory to support reading multiple order types.
* Add read_multiple to refunds data store.
* Return negative total for consistency with posts table implementation.
In custom tables, we can directly sum the value for total_amount since they are being stored in flat tables, instead of relying on _refund_amount meta.
* Remove type definations for back compat.
* Add test for get_orders
* Use persist_udpates method for consistency and DRY.
* Resolve conflict correctly.
* Removed duplicated methods.
* Use correct order in doc comment.
* Fix typo
Co-authored-by: Jorge A. Torres <jorge.torres@automattic.com>
* Rename parameter for better clarity.
Co-authored-by: Jorge A. Torres <jorge.torres@automattic.com>
* Rudimentary functional version of datetimepicker
* Adding changelog
* Adding package changelog
* Making component more than barely functional
* Removing unnecessary export
* Rename directory to date-time-picker
* Add initial story
* Pass datetime to onChange callback
* Localize error string
* Remove initial error prop
* Rename currentDate to initialDate
* Simplify state for selected date
* Add extra stories around component
* Trigger onChange whenever date is changed
* Add readme
* Allow currentDate to be changed via props
* Update readme
* Update name to DateTimePickerControl
Co-authored-by: Joshua Flowers <joshuatf@gmail.com>
* Support searches as a direct feature of (COT) order queries.
* Always add `DISTINCT` to order queries.
* Add test (+fix order search logic for matching order IDs).
* Changelog.
* Clean-up search_orders() method, remove original roughed-out search code borrowed from CPT data-store.
* Tidy.
Handle invalid `meta_query` similarly to `WP_Query`
`meta_query` needs to be an array of arrays. Elements in `meta_query` that do not conform to the expected format will be ignored.
* Expose the SQL query in OrdersTableQuery for debugging purposes (similar to WP_Query)
* Add changelog
* Drop unnecessary `is_array()` check
* Add additional class to no-products-found banner.
By adding an additional class of `woocommerce-no-products-found`, we can
target the info banner contextually without running the risk of
impacting notifictaions in other areas of the active theme.
See https://github.com/woocommerce/storefront/pull/2027#issuecomment-1218083764
* Add changelog for update.
* Add initial product field and modal for editing product link
* Create a product link modal for editing product link
* Only show permalink when product is published
* Add changelogs
* Add changelog for data package
* Change save button to primary
* Fix merge conflcts
* Add getPermalinkParts selector to products store
* Made use of getPermalinkParts to support draft products
* Link backfilling to migration process.
* Add changelog.
* Reduce batch size for backfilling since it is slower.
* Correct grammer.
* Link backfilling with data synchronizer and adopt with pending migration on both sides.
We already have backfilling implemented, however it was not linked. This would make switching data stores back to posts table not possible. This commit links datasynchronizer so that it can both migrate as well as backfill.
* Remove _recorded_sales from skipped check keys since its implemented.
* Share concrete instance of cot controller to share feature value.
* Revert adding concrete controller, object instance is already shared.
* remove yoda condition.
* Remove unintended change.
* Revert from using gmdate.
* Remove hardcoding.
* Remove doc block for fake option support.
* Comment out option check for better testability.
* Add initial SearchControl component
* Add async example
* Reorganize getItemPropsType type
* Create separate MenuItem component
* Update items to use value/label pairs
* Add fuzzy matching example
* Use MenuItem component in example
* Add callback method example and onSelect prop
* Add custom render example
* Add styling
* Simplify Menu component
* Add changelog entry
* Update SelectControl to DeprecatedSelectControl
* Rename SearchControl to SelectControl
* Add readme
* Add placeholder prop
* Add icon to combox box
* Rename deprecated SelectControl classes
* Add changelog entries
* Pass menu props to menu to fix ref issues
* Update lock file
* Rebase and update lock file
* Fix up IDs in e2e tests
* Make list structure more semantic
* Fix update conflict with pnpm-lock
* Move new SelectControl to experimental
* Change experimental class name to avoid style conflicts
* Fix up latest lock file from rebase
* Remove onboarding e2e changes
* Update changelogs
* Update lock file again
* Update pnpm-lock and fix lint error
Co-authored-by: Lourens Schep <lourensschep@gmail.com>
* Added new command to set up the local environment with COT enabled.
* Removed new file added to e2e-environment, which we will no longer be using.
Co-authored-by: jamelreid <jnoelreid@gmail.com>
* Add a filter woocommerce_get_note to modify note before it is returned
* Make ChoosingTheme.get_note public so we can call it outside
* Implement the get_note filter to return localized strings
* Create get_actions method to reuse it in RemoteInboxNotificationsEngine
* Implement get_note filter in RemoteInboxNotificationsEngine to return localized note
* Add changelog
* Make GivingFeedbackNotes.get_note public so we can call it outside
* Check if note class has NOTE_NAME constant
* Update WooSubscriptionsNotes to show localized content
* Rename filter hook name
* Remove todo to pass php lint
* Update filter description
* Move locale check into individual filter functions
* Fix get_note_from_db logic
* Fix php lint errors
* Update the filter doc
* Add test for spec-runner.php
* Add tests for RemoteInboxNotificationsEngine
* Remove unneeded check
* Check if $note_from_class is instance of Note class
* Fix unit test
* fix: tax calculation and coupon sequence
* add phpunit skeleton
* Refactor calc_line_taxes and add_coupon_discount
The methods are moved to separate classes in src/Internal,
and two new "core" methods that exclude HTTP processing are added.
* The test partially passes now
* Final fix to unit tests, and fix remaining formatting issues
* Add changelog file
* Fix path to html-order-items.php
Co-authored-by: Siddharth Thevaril <siddharth.thevaril@gmail.com>
* Show WCPay welcome page to all eligible merchants.
Remove the experiment and also check for marketplace suggestions.
* Update banner design and copy
Replace background `wcpay-banner.png` with `wcpay-offer.svg`, `flag.j` svg component with `gift.js`. Adjust styles and ensure it's responsive.
* Add more requirements.
Don't register it when there is an existing WCPay account or the site is on a WPCOM starter plan.
* Update promotion and FAQ copy
* Add the new experiment.
And remove the supported country check to use Explat instead.
* Add changelog entry
* Remove WPCOM starter plan check
* Remove Yoda comparisons
* Update `wcpay_exit_survey` event.
Record it also when the user chooses `Just remove` and use snake_case to avoid Track errors.
* Country and time conditions.
Only for US based businesses with a live store of at least 90 days.
* Update design and copy to match new requirements
* Update promo ID
* Fix country condition
* Load SVG as image instead of background
To prevent wrong asset generation due to Webpack configuration
* Fix WCPay installed condition
* Update promo ID
* Update promo ID in allowed notes
* Update FAQ copy
* Add `apply_filters` docblock
* Add missing `@since` to docblock comment
* Do not create default shipping zones when a shipping zone already exists
* Add changelog
* Use woocommerce_admin_skipped_creating_default_shipping_zones to avoid triggering spotlight tour
* Set woocommerce_admin_reviewed_default_shipping_zones to yes to prevent spotlight tour for the existing shipping zones
* Remove WCPay Subscriptions offer page experiment
This removes all code added in PR#32957 as experiment has ended.
(WooCommerce > Subscriptions admin menu item and empty state offer screen)
* Add changelog entry
* Make the php file valid
* Remove code that's no longer in PHP.
mysql_* functions were removed in PHP 7.0
* Remove deprecated setting.
This only helps detecting \r as end of line and that should only be used in old MacOS 9 which is 20 years old by now.
* Changelog
* Added compulsory file comment.
* Removed forgotten phpcs flag
* ...and more cleanup.
* Implement filtering by status in list table
* Respect ‘show_in_admin_status_list’ in list table
* Display correct status name for ‘draft’ and ‘trash’ post statuses
* Renamed e2e to e2e-legacy
* Moved e2e folder to tests/e2e
* Updated gitignore
* Updted init script to work with wp-env
* Updated readme
* Updated commands to match new test structure
* Updated workflow to work with new test structure
* Added changelog
* turned off alternate wp cron in test
* Fixed path to playwright config
* Renamed e2e to e2e-pw
* Renamed e2e-legacy to e2e
* Updated e2e-pw path
* Fixed workflow
* Fixed csv test
* Updated .gitignore
* Removed puppeteer specific step
* dev: moved shipping tour into guided tours folder
* dev: moved store address tour to guided-tour folder
* dev: updated imports for store address tour code move
* dev: move add-product-tour to guided-tours
* dev: update imports for add-product-tour code move
* Column sorting for the COT admin list table.
* Add filter for easier extensibility.
* Implement date based filtering within the admin order list table.
* Implement customer-based filtering within admin order list table.
* Allow filtering down to no results, better management of http_referer state.
* Changelog.
* Bring up-to-date, fix some conflict resolution mis-steps.
* Address coding standards.
* Remove unused import.
* Add initial product form action buttons to form
* Add new edit page and allow for updating and creating products
* Move crud functions to helper hook to keep things seperated better
* Add changelog
* ADd package changelogs
* Add isPending selector to products store
* Fix trash screen showing up when deleting product and add loading indicators
* Add extra types to Product type
* Update track names and add product data to tracks
* Update track logic when product is published
* Remove the Image section for now, to prevent confusion as it is not ready yet
* Add tests for the product form actions
* Update copy for publish & duplicate
* Remove unused code
* Set window.location correctly with href
* Reset changes in pnpm lock
* Moved pending action variables to product helper and updated buttons to reflect new suggestions
* Fix backwards compabitibility issue with Form changes
* Add switch to draft button
* Use WC_Order_Query for REST API v3 requests when COT is enabled
* Remove pre-COT internal meta keys from metadata in REST order responses
* Add changelog
* Add unit tests
* Fix test in `ProductAttributesLookup\FiltererTest`
Some tests in this class relied on a particular ordering of an array of IDs returned by a query with an `ORDER BY` that doesn’t really disambiguate sorting (all rows have the same values for the fields). As such, `assertEquals()` can’t be used to make sure arrays had the same values.
* Use `get_internal_meta_keys()` from a CPT instance to hide certain meta on COT REST response
* Move COT REST test outside of the COT datastore tests
* Fix typo
* Remove unnecessary imports
* Make ProfileItems properties optional
* Remove skip button codes and replace them with SkipButton component
* Add SkipButton component
* Add changelog
* Add back continue button callback
* Apply popover styles globally
* Add skip button on the industry step
* Add skip button on the product types step
* Add skip button on the Business Details step
* Support onSkipped callback
* Record skip event
* Add skip event track for industry, product types, and business details
* Add SkipButton to the theme step
* Update snapshot
* Change track name to separate business details and free features
* Add changelog
* Remove unused code
* Update product types test snapshot
* Add back UsageModal on Continue click
* Update e2e tests to use Skip
* Use button selector for skip btn
* Fix duplicate event dispatch
* Do not call onClose and onContinue during the rendering -- it causes cannot update a component while rendering a different warning. Instead, call them when the button is clicked
* Skip the profiler without rendering usage modal when woocommerce_allow_tracking is set
* Skip the profiler without rendering usage modal when woocommerce_allow_tracking is set
* Go to the next step when allowTracking is yes
Add screen reader labels to improve accessibility in various locations.
* Adding missing table header labels
* Adding missing form field labels
* Adding missing form field label
* Adding missing form field labels — Ideally we would add these with `<labe>` tag (may be hidden with `screen-reader-text` class), but playing safe here to prevent CSS style issues.
* Adding missing form field label
* Changing `aria-label` attribute to actual `<label>` tag
* Rebase; add changelog.
Co-authored-by: barryhughes <3594411+barryhughes@users.noreply.github.com>
Add method in utils to check whether posts and order tables are in sync.
* Add changelog.
* Fix Yoda condition
Co-authored-by: Nestor Soriano <konamiman@konamiman.com>
* Add e2e test to check ability to add and remove regions from shipping zone
* Add changelog file
* skip test in order to check CI
* add skipped test back in
* group shipping zone tests to avoid concurrency issues
* update assertions relevant to added zone region
* update test file
* update test to select appropriate delete based on other tests
* Ensure the correct Shipping Zone has been removed
* remove attempt to delte zone via front end as API call will handle this
* Update store details task complete logic
Mark as completed if the store address, city and postcode are set.
* Add changelog
* Update store details test
* Stop resetting all definations in DI to not initialize hooks again.
* Adjust setting test to account for COT feature.
* Support temporary tables.
* Add changelog
Co-authored-by: Vedanshu Jain <vedanshu.jain.2012@gmail.com>
- Use the built-in phpcs sniff for "includes" (as warnings)
- Use the slevomat coding standards package for the rest of the code
(as errors, with the ability to auto-correct)
* Change package json commands and turbo repo config to allow for greatly simplifying running turbo
* Remove require-turbo script which was causing caching issues
* Colorize CI output from scripts
* Add missing changelog script to extend-cart-checkout-block
* Add product page layout components
* Add a quick sample page to test the product form layout
* Add changelog
* Add option 2
* Refactor the product field layout structure
* Update page component structure of product form
* Add simple SlotFill support
* Update product page chunk name
* Add order to slot fill and move product field layout wrapper into product category layout
* Remove unused import
* Consolidate the slot fill ordering logic
* Rename category component to section component to prevent confusion
* Remove edit product page and use the new add product page instead
* Add tests
Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com>
* Update store details unit tests
* Update store details subheading and field order
* Update obw store details e2e tests
* Add changelog
* Add changelog
* Update Store owner can go through setup Task List test
* Add feature falg
* Modify href to menu item
* Modify page title href button
* Add product files on Client
* Change button's URL for new Nav
* Add changelog
* Moved changelog
* Fix URL for new nav
* Change URL for add product task
* Add Tracks event
* Change const name
* Renamed tracks event name
* Undo Add New Product redirect
* Undo use Products addition
* Undo lint fix to woocommerce_admin.js
* Rename component and file (AddProductPage)
* Set flag in core.json to false
* Fix typo
Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com>
Update miscellanous WC bits to support custom tables.
* Add changelog.
* Add test for order_meta call.
* Make CI happy.
* Add tests for before_delete_order.
* Add test for is_valid_resource
* Add tests for PayPal API.
* Add test for save paypal meta data.
* Minor fixup.
Remove the explicit dependency from the psr/container package
* Prepend the psr/container package classes with a namespace using Mozart. This is done to prevent conflicts with other versions of the package used by other packages or plugins.
* Add changelog file
* Minor documentation/indentation updates
* Column sorting for the COT admin list table.
* Add filter for easier extensibility.
* Changelog.
* Add support for orderby order’s total and creation/modification dates
* Remove unnecessary import
* Use ‘any’ instead of ‘all’ as status so that all valid statuses are used instead
* Use ‘order_total’ as orderby GET arg for backwards compat
* Rework sorting logic after support in `OrdersTableQuery`
* Update `@since` tag
* Make PHPCS happy
Co-authored-by: Jorge A. Torres <jorge.torres@automattic.com>
* Remove setup_experiment_1 and setup_experiment_2 tests and css
* Remove setup_experiment_1 and 2 from the client code
* Copy over setup_experiment_1 options to the setup tasklist and remove setup_experiment_1 and 2
* Add changelog
* Determine the default component to use by task id
* Update plugins/woocommerce-admin/client/tasks/hooks/useActiveSetupList.ts
Co-authored-by: Chi-Hsuan Huang <chihsuan.tw@gmail.com>
Co-authored-by: Chi-Hsuan Huang <chihsuan.tw@gmail.com>
* Introduce the ObjectCache class.
It's an abstract class intended to be used to implement caching for
any kind of object (arrays or PHP objects) using the underlying
WordPress caching or any alternative custom cache engine.
* Add changelog file
* Change the order of parameters in ObjectCache::get
Also change the max expiration value from one day to one month
* Implement order edit screen rendering.
* Add changelog.
* Use global function instead of harcoded string.
* Use pagecontroller to display order edit form.
* Move HTML out from the translatable string.
Co-authored-by: Barry Hughes <3594411+barryhughes@users.noreply.github.com>
* Capitalize `Order` for consistency.
Co-authored-by: Barry Hughes <3594411+barryhughes@users.noreply.github.com>
* Minor realignment.
* phpcs fix .
* Decouple meta boxes from global $post object to support custom order tables.
* Bug fixes - improperly set $order object, and allow passing null.
* Make order item meta work with order object.
* Use `$order` object to minimize diff.
* Refactor $theorder object initialization to a common method.
* Remove check for WC_Order object.
* Move common methods to inside `src` in a dedicated class.
* Fix spacing for code style.
* Renamed method to be more accurate.
* Add proxies for static so they can be mocked.
* Remove PageController import.
* Move helper methods to an internal util class.
Co-authored-by: Barry Hughes <3594411+barryhughes@users.noreply.github.com>
* Support force_default_suggestions argument
* Use force_default_suggestions
* Support force_default_suggestions argument -- returns the default payment suggestions when both woocommerce_show_marketplace_suggestions and woocommerce_setting_payments_recommendations_hidden options are set to no
* Add changelog
* Add methods to get and clear queued pixel events
* Add utils for getting and asserting events in unit tests
* Add in some assertions around task list completion tracks
* Add changelog entry
* Add comment for test task fixture
* Stop re-enabling product attributes lookup table usage after each install.
Now the option will be enabled after a WooCommerce install/update
only if the user hadn't explicitly disabled it before.
* Add changelog file
* Make sure orders are saved with a default status
* Add support for ‘customer’ query var in COT
* Make PHPCS happy in COT datastore tests
* Add tests for ‘customer’ query var
* Add changelog
* Add OrdersTableQuery for querying the COT tables
* First stab at `OrdersTableDataStore::query()` method
* Silence possible PHP warning
* Add docblocks & phpcs fixes
* Introduce OrdersTableMetaQuery
* Add support for meta_query
* Add changelog
* ‘status’ should have the ‘wc-‘ prefix
* PHPCS fixes
* Minor improvements
* Add tests for OrdersTableQuery
* Remove ‘paginate’ query var
* Add support for reading multiple objects at once
* Address feedback
* Prevent `get_order_data_for_ids()` from producing an incorrect query when no IDs are passed
* Make CI happy
* Add WooCommerce default styles for block themes
* Ensure sale badge remains as is in Twenty Twenty-Two
* Style the mark element in theme colors
* Update product variations dropdowns
* address feedback
* address feedback
* fix store notice position
Co-authored-by: Luigi <gigitux@gmail.com>
The attributes page displays all the terms for all the existing
product attributes, which causes a performance problem in sites
with a lot of attributes and terms.
This commit limits the number of attributes shown to 100 by default,
but it also introduces a woocommerce_max_terms_displayed_in_attributes_page
filter to customize it.
* Use method_exists instead of throwing in reflect_class_or_callable
In AbstractServiceProvider::reflect_class_or_callable we were
detecting whether a 'init' method exists in the class or not via
doing 'new ReflectionMethod' and catching the exception.
This caused problems with XDebug, which is bad enough, but additionally,
throwing an exception when it's not abosultely necessary
is a bad practice in general.
* Add changelog file
* Fix code standards errors in class-wc-meta-box-orrder-data.php
- Sanitize all input
- Escape all output
- Verify nonce on save
- Verify that all required POST parameters are present on save
- Minor fixes (periods at end of comments, function docs, Yodas...)
* Check payment method name, not title, on add_order_item_totals_payment_method_row
* Remove unnecessary nonce verification in "save" for orders.
Also move comment to new line for readability.
* Remove unnecessary nonce check in WC_Meta_Box_Order_Data::save
The check is already performed in the code that invokes "save".
* Add transaction id to payment method string if URL doesn't exist
* Minor fix
Co-authored-by: Jorge A. Torres <jorge.torres@automattic.com>
* Update woocommerce admin scripts to align more with monorepo
* Add changelog
* Add dev script back in
* Add install-if-deps-outdated back into build script
* Remove --force from dev script and add WC_ADMIN_PHASE to turbo cache key
* Remove install-if-deps-outdated from build
* Add composer install step to pr unit tests workflow
* Remove old install scripts, that are not needed anymore
* Make sure client changes are part of the cache hit
* Add composer install to code coverage and code sniff as well
* Add composer_no_dev input to install-build workflow
* Add sass dependency to woocommerce/admin/client turbo cache
* Add validations to `recordEvent`
* Add changelog
* Use always class constant
* Changed trow exception by console.error
* Add tests to `validate_and_sanitize`
* Created 2 different methods to test `event_validation_and_sanitization`
* Fix tests
Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com>
* Fix free features is still rendered when there is no recommendation
* Add changelog
* Update BusinessDetails tab to go to next step if no installable extensions
* Update spinner
* Set retries to 4 on CI
* Use variable for authentication path storage
* Handle test cleanup in after hook
* Improve conditional
* Clean up global attributes
* Update customer email address
* Changelog file
Co-authored-by: Jon Lane <jon.lane@automattic.com>
* Updated wp-env test port
* Added script to init test env
* Added env helper scripts
* Updated admin email to match wp-env
* Fixed flaky tests
* Updated test readme
* Updated workflow to use wp-env
* Added changelog
* Stored admin email in variable
* Added check for flaky test
* Updated workflow to work with both envs
* Updated README.md
* Updated condition
* Updated changelog
* Fixed workflow
* Fixed workflow
* Fixed workflow
* Restored workflow
* Updated check to be a string
* API: System Status: Cache plugins data
This is a follow up to https://github.com/woocommerce/woocommerce/pull/32823
where we introduced caching for retrieving theme data. Here we're
cachcing plugin data. Since we have to read from the filesystem and
parse the plugin headers, this can be kind of slow.
We should see an improvement on sites with more than a few plugins and
the improvement could be significant on sites that have many plugins
installed (even if they're not active).
* add CLI com command class and hook it
* Update php docs and change registered command names for wc com.
* Fix lint issues.
* Retrieve and display extension list and for the connected site.
* Adding the changelog for wc com extension list
* Remove the install command which not implemented in current branch.
* Update example usages for wp wc com extension list command.
* Update changelog.
* Fix the changelog file formatting
Co-authored-by: Rommel Castro <rommelxcastro@gmail.com>
Co-authored-by: Néstor Soriano <konamiman@konamiman.com>
* Update github action to equire valid changelog file
* Update github action for changelogger to install depedencies and composer
* Make valid changelog files that were invalid
* `add_meta()` should be more flexible
* Add `delete_order_data_from_custom_order_tables()`
* Add private method `trash_order()` to COT datastore for handling order trashing
* First stab at COT datastore `delete()`
* Delete COT data for orders when deleting its associated post
* Add changelog
* Simplify delete logic
* Minor fixes
* Rework `create()` tests
* Add tests for `delete()`
* Remove unnecessary var
* Set allowedTextDomain to only allow woocommmerce text domain
* Set allowedTextDomain to only allow woocommerce text domain
* Fix wrong or missing i18n text domain
* Add changelog
* Add changelog
* Updates to simple product test to reduce flakiness
* Remove focus
* Fix to improve flakiness of order refund test
* Added a wait to help page loads test
* Add a couple more waits to refund tests
* Changelog
* Retry key generation during global setup
* Setup checklist has changed, update
* Update to setup task list
* Add wait for setup checklist
* Update locator for install checklist
* Changelogger: Fix PHPCS violations (#33664)
* Deploy header task variant from task list experiment (#33750)
* Deploy task list experiment 1
* Add changelog
* Fix wrong copy in the payment task (#33749)
* Add headingDescription prop to PaymentGatewaySuggestions list
* Fix payment suggestions heading text
* Add changelog
* Fix missing manage button for TikTok (#33731)
* Fix missing manage button for TikTok
* Add changelog
* Packages: Fix postinstall errors on install (#33724)
* Fix additional payment task name (#33727)
* Rename "Set up additional payment providers" task -> "Set up additional payment options"
* Add changelog
* Remove change files for #33704 (#33734)
* Add shipping class data store (#33765)
* Add initial shipping classes data store
* Add types for the product shipping class store
* Filter out undefined items in list for when an item is deleted
* Add changelog
* Add data store README
* Fix onboarding test
* Skipping flaky test
Co-authored-by: Jon Lane <jon.lane@automattic.com>
Co-authored-by: Paul Sealock <psealock@gmail.com>
Co-authored-by: Chi-Hsuan Huang <chihsuan.tw@gmail.com>
Co-authored-by: jonathansadowski <jonathansadowski@users.noreply.github.com>
Co-authored-by: louwie17 <lourensschep@gmail.com>
* Final updates for Playwright
* Update config
* Add uuid dependency
* Increase retries to 2
* Update selectors on shipping page
* Use baseURL instead of hard-coded URL for API
* Clarify comment
* Use baseURL instead of hard-coded URL
* Check to see if an order was created before attempting to delete it
* Add changelog
* Turn on Playwright tests in GitHub
* Increase timeout for CI execution
* Update configuration options (minor edit)
* Fix for checkout flaky test
* Parse orderId from URL
* Check for substring
* Streamline email tests
* Remove .only
* Only clear email logs of messages for test
* Get orderId from page element
* Fix for test not waiting for reset
* Add in second wait for Performance section
* Change significance from minor to patch
Co-authored-by: Jon Lane <jon.lane@automattic.com>
* Make sure the default form value tooltip is initialiazed when adding the first variation
* Update copy of default form value tooltip in variations
* Add changelog
* Fix auto formatting
* Add pointer events: none to tooltip to prevent flickering
* Change review shipping task id to 'review-shipping'
* Add click track for shipping-recommendation task from the settings page
* Changelog
* Add test
* Add more specific test param
* Add pyament icons
* Add changelog
* Text and logo changes when wc pay is installed and setup
* Use PaymentSuggestions to query plugins
* Make sure image_72x72 exists
* Remove unused namespaces
* Remove stripe2 image -- no longer needed
* Make sure recommended payment is not already active
* Check plugins field to filter out active plugins
add: intro tooltips for shipping smart defaults
- removed php code for setting 'reviewed' option as it was being set on page load and thus always evaluated to true before the user sees it
- added intro tooltips
Update wp-background-process.php to use wp_convert_hr_to_bytes()
Currently the code is typecasting the memory limit to an int. This assumes that the memory limit is in MB, so if you set your memory limit to 4G this will return 4194304 bytes (4.19304 MB.) Instead, we should use the native WordPress function `wp_convert_hr_to_bytes` to handle the conversion into bytes correctly.
* Update StoreDetails task action url to navigate to the setting page
* Add changelog
* Update complete logic of StoreDetails task
* Update store details unit tests for new task completion logic
Added `triggerHandler` before each ajax request.
* Added namespace to event name
* Linting.
Co-authored-by: Luigi Pulcini <luigi@barn2.com>
Co-authored-by: Barry Hughes <3594411+barryhughes@users.noreply.github.com>
This reverts commit bccc80366d.
When we merged this PR, we thought the Woo mobile apps would have enough time to implement some corresponding changes on their side. That turned out not to be the case. Without the ability to force a refresh of the analytics cache, this PR causes the apps to have a greater risk of showing users stale analytics data that they can’t immediately update.
* Include Tracks property indicating block editor on product update.
* Add changelog
* In a block editor the Update button does not have the selector.
* Remove - from Tracks even property.
* Refine a condition of a non-empty object.
* Incorporate feedback: add callback for rendering the Update button.
* Add recent feedback- jQuery way of handling post render execution.
* Remove `console.log
* Fix `product_update` event recording
* Removed `hasRecordedEvent` and fixed `description validation
Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com>
* Update shipping task fields when shipping smart default feature is enabled.
* Always display the shipping task regardless of having a physical product
* Updated text copy for the fields
* Do not display the step description if it is not the current step
* Added a banner for the shipping printing step
Remove description if the it is not the current step
* Add changelog
* Fix namespace conflict after the rebase
* Re-use wcs banner from the experimental shipping recommendation
* Delete ShippingLabelPrinting -- replaced by wcs banner from experimental-shipping-recommendation
* Add TOS link
* Remove ShippingPrintLabel styles -- no longer needed
* Minor refactor
* Move description set logic to getSteps()
* Use map to override step fields
* Remove unnecessary feature check
* Remove description in the map func
* Render ShipStation banner if plugins includes woocommerce-shipstation-integration
* Plugins component skip button is now optional
* Add link from payment settings page
* Add new experimental shipping task flow
* Changelog
* Update plugins/woocommerce/src/Admin/Features/OnboardingTasks/Tasks/ExperimentalShippingRecommendation.php
Co-authored-by: Chi-Hsuan Huang <chihsuan.tw@gmail.com>
* Rename all tracks to shipping_recommendation
* Add back skip installer bind
* Pass plugins list to pluginSlugs to be more predictable
Co-authored-by: Chi-Hsuan Huang <chihsuan.tw@gmail.com>
* Add logic to set the default shipping options
* Set the flat rate cost to 15 (temp cost)
* Add changelog
* Update plugins/woocommerce/src/Internal/Admin/Homescreen.php
Co-authored-by: Chi-Hsuan Huang <chihsuan.tw@gmail.com>
* Run the changes only if shipping-smart-defaults is enabled
* Assume user is going to sell physical products if obw is skipped or the store details has not been completed
* Make sure store country is set by an actual user by checking the value of woocommerce_store_addres
* Remove flat late logic
* Use woocommerce_store_address. store_address is always empty
Co-authored-by: Chi-Hsuan Huang <chihsuan.tw@gmail.com>
* Add phpcs-changed
* Put report flag value in quotes
* Use phpcs action workflow instead
* Remove no longer used phpcs script
* Remove phpcs ignore rule
* Use proper name for code sniffer step
* Fixes issue #33335
Check for an empty string instead of an empty variable.
* Update wc-product-functions.php
* Update wc-product-functions.php
* Changelog
* Fix cases when $term is false or empty array
Co-authored-by: Peter Fabian <peter.fabian.github@gmail.com>
* Fix broken design of Single Product template in block themes and on sale badge being partially hidden
* Update changelog to mention Twenty Twenty-Two explicitly.
Co-authored-by: Albert Juhé Lluveras <contact@albertjuhe.com>
Co-authored-by: Albert Juhé Lluveras <contact@albertjuhe.com>
* Fix phpcs errors and warnings
* Fix code that throw deprecation notices in PHP 8.1
The deprecation notices are about:
- Various "passing null to parameter (...) is deprecated"
- Usage of strftime
- Using "false" as if it was an empty array
- Mismatching return type of implemented interfaces,
that's fixed by adding #[\ReturnTypeWillChange]
* Fix some more code that throw deprecation notices in PHP 8.1
* Small commenting/formatting fixes.
* Add changelog file
* Formatting.
Co-authored-by: Peter Fabian <peter.fabian.github@gmail.com>
During migration $wpdb->prepare would force null and empty values to be zero for %f placeholder. This was causing verification logic to fail, which is being addressed in this commit.
The alternative was to insert null values without running them via $wpdb->prepare, but that seemed less safer than converting to zero because it would have to done manually since $wpdb->prepare wouldn't support it.
This commit adds documentation for WooCommerce's client component commands. This should make it easier to know what commands to run to work in these components.
This commit changes it to woocommerce/client/admin. This is an invalid NPM package name and an invalid Composer package name. This will prevent conflicts but also identify it as a component of Core.
In line with the fact that it's a component of WooCommerce rather than a standalone package, `woocommerce-legacy-assets` has been renamed `woocommerce/client/legacy`.
* Trigger the hook that record the track events
once the option settings are updated:navigation and analytics. Tracks do not include yes/no properties, so we record the latter as _disabled.
* Changelog
* Prevent reloading of page immediately after feature updates
* Remove feature specific code in tracks class
Co-authored-by: Joshua Flowers <joshuatf@gmail.com>
* Changes the frequency at which the Reports API cache can be invalidated via the cache version number to be at most once every 10 minutes, instead of with every change to the store.
* Changes the TTL of Reports API cache entries so that they expire after an hour instead of after a week.
The goal of these changes is to increase the chance that a request to the Reports API for store stats will result in a cache hit, thus avoiding expensive, slow queries. The reason for lowering the TTL is so that if multiple store changes are made within the new 10-minute frequency window, the cache data will only be stale for up to an hour. With #33325 users will be able to refresh entries in the cache manually if they think something is stale.
Closes#33315
Make sure payment gateway title is a string before sanitizing.
* Add changelog
* Drop type-hint in `validate_safe_text_field()`
* Update plugins/woocommerce/includes/abstracts/abstract-wc-settings-api.php
Co-authored-by: Barry Hughes <3594411+barryhughes@users.noreply.github.com>
* Add `OrdersTableDataStoreMeta` to handle metadata for orders
* Add `OrdersTableDataStoreHelper` with various helper functions used in the COT datastore
* Pass some helper classes as args to the COT datastore
* Use `OrdersTableDataStoreMeta` for meta in COT datastore
* Minor fixes to columns definition in COT datastore
* First pass at update() in the COT datastore
* PHPCS fixes
* Remove duplicate `read_meta` calls.
* Register `OrdersTableDataStore` earlier to make container happy
* Do not hardcode table metadata in `OrdersTableDataStoreMeta`
* Correctly format decimals for storing in the db
* read() shouldn’t success on non-existing orders
* Rework persisting to db in OrdersTableDataStore
* Correctly handle some props in OrdersTableDataStore
* Add changelog
* Add missing TODOs
* Remove unused variables
* No need to query db before deleting meta in `OrdersTableDataStoreMeta`
* Simplify OrdersTableDataStoreMeta::update_meta()
* Explicitly enumerate columns in OrdersTableDataStoreMeta::get_metadata_by_id()
* Make COT metadata implementation more generic
* Do not use property_exists() to determine existence of meta value
* Move some methods over to DatabaseUtil and get rid of COT datastore helper
* Rename `CustomDataStoreMeta` to `CustomMetaDataStore`
* Make PHPCS happy
* Add unit test.
* Correct arg passed to persist_order_to_db()
* Remove comment
* Split conditional on multiple lines
Co-authored-by: vedanshujain <vedanshu.jain.2012@gmail.com>
Adds a new collection parameter to all Reports API endpoints that utilize caching, `force_cache_refresh`, which will cause the current request to bypass the cache, re-run the queries for the requested data, and overwrite the previous cache entry with the new results.
Note that this doesn't invalidate the entire cache, only the entry for the particular set of collection parameters and values specified in the request.
This also adds a way to include debugging information related to the cache in the API response. Modeled after the way the Query Monitor plugin adds such information, you can get this by including an `_envelope` parameter in your API request. The debugging info includes whether the cache has been disabled via filter (`should_use_cache`), whether the `force_cache_refresh` parameter was used, whether the returned data was a `cache_hit` or not, and an array of the query parameters that were actually used to create the cache key.
Closes#33221
* Introduce a 'safe_text' field that allows a reduced subset of HTML tags.
* Escape on input as well as output; generalize sanitization function.
* Set reasonable default rules.
* Guard against invalid callbacks (escaping/sanitizing) functions.
* Update plugins/woocommerce/src/Internal/Utilities/HtmlSanitizer.php
Co-authored-by: Peter Fabian <peter.fabian.github@gmail.com>
* Allow alt (accessibility) for img tags; allow class attributes for img and span tags.
* Allow class attr for p tags.
* Use safe_text for payment gateway titles.
* Make HtmlSanitizer available through Utils service provider.
* Update settings code to pull HtmlSanitizer as a service and to use the new sanitize() method.
* Remove `style` from list of allowed attributes.
Allowing arbitrary CSS rules through style could undo the intent of this change, since that would allow a range of positioning and sizing changes to be effected.
* Remove unusued import.
* If no (KSES) rules are specifed, then strip all tags (this is a safer default strategy).
* For better safety, only apply pre-processor callbacks; remove responsibility for trimming of strings.
Applying callbacks to a string after it ahs passed through wp_kses() could (potentially) undo the work done by that function, and result in unexpected tags in the sanitizer's output.
Co-authored-by: barryhughes <3594411+barryhughes@users.noreply.github.com>
Co-authored-by: Peter Fabian <peter.fabian.github@gmail.com>
* Update WooStep to have name in meta
* Add useProductStepChange hook and use it to detect form value changes in product tourkit, added tracking for tour view, tour dismiss, tour complete, and step complete
* Add tour view, tour dismiss, tour completion track to old product walkthrough
* Changelog
* Fix test
* Add listener to publish button for product spotlight tour
* Add track for old walkthrough publish button
This replaces all `nx` commands with `turbo` commands and removes Nx from the repository. All of the `project.json` files have been removed and any commands that broke with Turborepo have been adjusted.
This new method is syntactic sugar for array_map. It scans an array
of arrays and/or objects and selects one value from each using
an array key name, an object method, or an object property.
* Add optional usage of database transactions for orders sync.
Includes a new setting in Advanced - Custom data stores to enable
or disable transactions usage and to select the transaction
isolation level.
* Improve the selection of data to be updated when syncing orders.
The SQL query that chooses records to be migrated to core tables
now explicitly excludes unchanged records based on the column mappings.
Also when syncing meta tables with single meta values, records for
which the value hasn't changed are now excluded from the update.
* Fix MetaToCustomTableMigrator to work with order addresses table.
* Add unit tests for db transactions on PostsToOrdersMigrationController
Also add the DynamicDecorator::call_original_method method
* Add product-tour admin script
* Update class-wc-admin-pointers.php to show experimental product tour
* Remove unnecessary window.onload
* Replace add new button with Enable guided mode button for product editing
* Show tour when tutorial query = true
* Add logic to show new tour only when a user select the physical product template
* Update product tour last step button text
* Add auto-scroll effect
* Fix i18n text
* Use bottom-start placement and align the arrow to the left
* Update pnpm-lock.yaml
* Update product tour effects
* Add changelog
* Add doc comments & check for tour-kit
* Add focus elements to product tour and wait initial element for tour showup
* Use spotlight query param to toggle new product tour feature
* Update wait seconds
* Update border style for product description & short description when editor is focused
* Add experimental-product-tour feature flag
* Refactor product-tour and support html editor focus style
Co-authored-by: moon <moon.kyong@automattic.com>
* Fix root namespace indicator in parameter
For LookupDataStore::on_product_created_or_updated_via_rest_api.
This was preventing the v1 REST API endpoint for batch insert of
products from working.
Co-authored-by: barryhughes <3594411+barryhughes@users.noreply.github.com>
Add individual analytics leaderboard endpoints
Register routes for each of the individual leaderboards.
These leaderboards can be pretty expensive to generate. If you only need
to data from one of them, it can be a pretty significant performance
boost to avoid generating all the leaderboards.
* Add e2e tests to check consistency in shipping costs for cart and checkout pages
Goal of these tests it to check if the cart and checkout pages are
consistent in calculuating shipping costs. Three tests added:
- shipping available to country with states
- shipping available to country without states
- no shipping available (fails, see issue #33205)
Reason to add these tests is PR #25916, which reverted PR #25128,
because the original PR worked for the cart page, but not for the
checkout page.
* Update e2e-core-tests changelog
* Skip failing e2e-core-test
* Fix incorrect URL for the wcAdminAssetUrl and deprecate both wcAdminAssetUrl and WC_ADMIN_IMAGES_FOLDER_URL
* Remove unused wcAdminAssetUrl var
* Remove use of wcAdminAssetUrl
* Add changelog
* Ignore hook PHPCS error -- they are pre-existing
* Add method to get total sales for a timeframe
* Add total payments volume rule processor
* Use start and end dates for total sales method
* Add method to get start and end dates from timeframe
* Update processor rule to use timeframes
* Fix up method calls
* Add tests for timeframes
* Add tests around getting total sales by date
* Add changelog entry
* Use revenue query instead of custom query for total sales
* Update since tag on hook
* Remove orderCount and publishedProductCount setting and make use of data stores
* Add test
* Add changelog
* Make use of orders data store instead of items data store
* Add users param to reports customers API params to allow filtering by user_id
* Fix invalidateResolution call that was misspelled
In order to ease the identification of private packages within the monorepo, this adds an `internal-` prefix to all of the current private packages. This makes it immediately clear when reviewing `packages/js` what is and isn't a private package.
* Add initial tracking for categories, tracks, and attribute product pages
* Update list action tracks that add new items without page refresh
* Add changelog
* Add extra category tracks
* Rename constant for add a new tag button
* Remove unneeded props from track
* Add logs for the attributes and tags on the product page
* Only trigger attributes_add on product screen when user hits save
* Add extra props to attribute add track
* Add tags delete track and fix count of tags add track
* Update use of wp_localize_script
* Fix completed card button
* Update sectioned task list to use onboarding data store
Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com>
Co-authored-by: Joshua Flowers <joshuatf@gmail.com>
* Add infrastructure for mocking globals in unit tests.
- 'get_global' method in LegacyProxy, MockableLegacyProxy and WC().
- 'register_global_mocks' method in MockableLegacyProxy.
- 'register_legacy_proxy_global_mocks' method in WC_Unit_Test_Case.
* Add the DynamicDecorator class, and unit tests for it.
* Add the StringUtil::contains method
* Add unit tests for error logging on PostsToOrdersMigrationController
* Update README file to mention improvements in unit testing infrastructure
- Mention the mechanism to mock globals using the LegacyProxy
- Mention the code hacker and the DynamicDecorator
* Add changelog file
* Set timezone before calling get_weekstartend and after to preserve original timezone
* Add test for timezone check
* Update calculation to be timezone agnostic and add tests
* Changelog
Allow filtering of cookie flags, which enables setting of `samesite`.
* Break out filter so the same filter can be used for any version of PHP.
* Add docblocks and other linting fixes; add changelog.
Props: David Anderson <DavidAnderson684@users.noreply.github.com>
Cleanup twentytwenty notice notices. Closes#29529.
* Increase width of border for notices
* Make notice buttons black to provide sufficient contrast
* Add changelog.
These classes are generic and don't depend on the custom orders table
functionality, so they are moved from src/Database/Migrations/CustomOrderTable
to just src/Database/Migrations.
The class is in the Automattic\WooCommerce\Internal\Utilities namespace,
but it was wrongly placed in the src/Utilities directory. It has been
moved to usr/Internal/Utilities without changing the namespace, thus
no code changes are required.
Using these two order properties instead of the paid_date field is more performance friendly
as both fields are in the wp-posts table - not in the post_meta table.
ref: 71e9657e52 (r875545984)
* Add tracks to products list page
* Remove duplicate tracks
* Add changelog entry
* Check for fields before getting values
* Add bulk actions cancel button
* Check for element before binding event listener
* Check for search input before getting value
In 029257b I inadvertently changed the visibility of the get_objects
method to public. There is no need for its visibility to differ from
the parent class, and it ended up causing fatal errors for other classes
that are extending WC_REST_Products_Controller. This simply changes
the visibility back to protected.
To achieve this:
- A new class is added, TableMigrator, containing basic in-memory
error storage methods, and auxiliary db_query and db_get_result
methods.
- MetaToCustomTableMigrator and MetaToMetaTableMigrator classes
now extend TableMigrator and use these db_* methods.
- process_migration_batch_for_ids is now a method in TableMigrator,
it just calls the abstract process_migration_batch_for_ids_core,
catches exceptions, and returns an array of errors.
- PostsToOrdersMigrationController now logs all the errors returned
by process_migration_batch_for_ids in all the migrator classes.
- New utility method: ArrayUtil::to_ranges_string
There were some inconsistencies, such as trying to treat an error
array as a string, or accessing to a non-existing column from a
dataset retrieved from the db on error.
Many methods were public/protected when they could be protected/private
instead. All methods are adjusted to the minimum visibility required
for the current implementation to work.
Also minor adjustments for phpcs, such as "ignore" comments.
- The woocommerce_custom_orders_table_enabled option can now be manually
altered even if there are orders out of sync
- Saving settings will always restart the sync process, even if one
is already in progress
- Add the woocommerce_orders_cot_and_posts_sync_step_size filter
The cached theme data has some properties that depend on WooCommerce.
This could also extend to extensions. Since we don't have a reliable way
to know if a given plugin is a WooCommerce extension, any plugin update
should flush the cache.
If someone updates their theme outside of the WordPress update process
(by manipulating files directly) the cache won't be invalidated. To deal
with that, we're setting the TTL here to 1hr.
Using _fields, we can specify a sub-property like environment.version.
In that case, we need to extract the top-level property so we known
which function to run.
Generating theme info involves reading the theme files from disk and
parsing them.
In testing, caching this data in a transient improves performance by
600ms. Since themes changes relatively infrequently, the cache hit rate
should be quite high.
We're registering the cache clean function in Server.php because
rest_api_init is too late.
The system status endpoint supports the global `_fields` query parameter
for limiting which fields are returned. That is, if you send a request
with a query string of `?_fields=environment`, only the environment
property will be returned. However, we still calculate every property.
This change ensure that we only gather the data that is necessary for
the response. Since some of this data can be somewhat slow (like reading
from the disk in the case of get_theme_info), this could have a pretty
nice performance benefit in some cases.
PNPM does not run "pre" and "post" scripts
for user-defined scripts. This commit
removed the "preuglify" script from the
beta tester plugin so that it builds correctly.
Adds the following fields to the order response object for both v2 and v3 of the WC REST API:
* is_editable
* needs_payment
* needs_processing
Some order states (different than statuses) are determined by complex logic involving other order properties, and/or they are filterable by extensions. These states are difficult to calculate in a client app whose only data source is the REST API, and thus they are best calculated on the server and added as separate properties to the API response object.
When the "products/batch" endpoint is used to create or update products,
the product attributes lookup table wasn't being updated as it's the
case of the single product endpoints.
When WooCommerce was updated from an version older than 6.2,
and before the user hit the "Update database" button, the product
attributes lookup table usage was activated but it was still empty.
This caused the search to not work, and the product filtering widget
to not appear.
This commit adds a `postinstall` script for
the WooCommerce and WooCommerce Beta
Tester plugins. This makes it easier to get
started since `pnpm install` will ensure all
dependencies in every project are ready.
- Rename to PostsToOrdersMigrationController (same for tests class)
- Rename process_next_migration_batch method to migrate_orders
- Rename process_single to migrate_order
- Remove batch and checkpoint related methods
(batch management is performed by DataSynchronizer class)
- Adjust unit tests
This commit connects the logic of the DataSyncrhonizer class with
the actual posts to COT synchronization implemented in the
WPPostToCOTMigrator class, so orders are actually syncrhonized
using scheduled actions.
Additionally, a synchronization process is triggered whenever an order
is created or modified, using the woocommerce_after_order_object_save
hook.
It's now maybe_start_synchronizing_pending_orders. Also, the method
now contains all the logic needed to decide if a synchronization
needs to actually be started.
This constant contains the name of the setting that is used to
determine if the roles of the custom orders table and the posts table
(authoritative and backup) are reversed once synchronization of
orders between both tables finishes. The logic was mistakenly
implemented backwards.
Also, as part of the fix the constant is moved to the
CustomOrdersTableController class.
We decided the performance hit was too great. So with this, you can
still use both the search and search_sku parameters at the same time
if you want, but the query will use `AND` so that there must be a
partial match from both fields rather than either field. To just search
SKUs, all that you need is the search_sku parameter.
Instead of overloading the default search parameter.
This actually added a bit of complexity because it introduced the
possibility that a request could have both search and search_sku
parameters, and they might not be the same value.
I decided to handle the two cases differently: if both search strings
match, the assumption is that we're looking for a string in either the
content *or* the SKU field. However, if the the search strings are
different, the assumption is that we're looking for products with a
particular string in the content *and* a separate particular string
in the SKU.
New unit tests for this are still pending.