* Should accept a boolean value for is_visible property with an extension, and only evaluate a set of rules
* Adding changelog
* Moving fix to RuleEvaluator so it applies to other rulesets
* OBW: Move newsletter signup checkbox inside the same Card as the rest of the Store Details form inputs.
* Add changelog entry for 8033/8148.
* Fix changelog format for 8033/8148.
Per the code comment, we were already explicitly assuming draft posts
are "pending". That's fine and shouldn't block us from setting new posts
to auto-draft.
For some operations in the API, like calculating taxes or shipping, it's
helpful to be able to have an order saved in the database. Having an
order object with an ID lets us perform other API actions on that order.
However, we also don't necessarily want these to show up on certain
screens.
Here we adopt the auto-draft status from core WordPress as a way to save
an order as a discrete object while signalling that it's not ready to
action yet.
Suggestions:
* auto-draft might not make sense given that it's used in core. We might
want to use something like `draft` instead.
* We may want to track this separate set of statuses (trash, auto-draft)
in a more official way, so we don't have to copy/paste around the
codebase.
Oops. We can't call $this->prepare_objects_query() unconditionally inside
prepare_objects_query(). This was my fault 🙃b43af2ae16
To explicitly reference the parent implementation, we use `parent::`
* Move WC Pay welcome page from wc-calypso-bridge (https://github.com/woocommerce/woocommerce-admin/pull/8083)
* Add wc-pay-welcome-screen flags
* Add wc pay welcome page from wc calpyso bridge
* Add changelog
* Rename var to pageViewTimestamp to prevent confusion
* Remove unused code
* Make sure hasViewedWelcomePage is a boolean value
* Simplify storeViewWelcome
* Add payments remind me later note (https://github.com/woocommerce/woocommerce-admin/pull/8085)
* Add payments remind me later note
Fix wcpay path
* Add changelogs
* Update src/Notes/PaymentsRemindMeLater.php
Co-authored-by: Joshua T Flowers <joshuatf@gmail.com>
* Fix possibly_add_note syntax error
Update Events.php
Co-authored-by: Joshua T Flowers <joshuatf@gmail.com>
* Replace flag icon with component and svg background to png (https://github.com/woocommerce/woocommerce-admin/pull/8101)
* Activate promo note after WC Pay is activated (https://github.com/woocommerce/woocommerce-admin/pull/8104)
* Activate promo after wcpay is a\ctivated
* Add changelogs
* Add experimental to promo API path and limit the promo names
* Use ExPlat to render the WC Pay menu conditionally (https://github.com/woocommerce/woocommerce-admin/pull/8115)
* Check ExPlat to render the menu conditionally
* Update the experiment name
* Fix letter case to follow feature class naming convention
* Enable wc-pay-welcome-page feature in core config (https://github.com/woocommerce/woocommerce-admin/pull/8124)
* Use wc_calypso_bridge_payments_dismissed option name to respect the previously saved setting from wp.com
* Missed wc_calypso_bridge_payments_dismissed rename
* Use the existing code to prevent duplication
* Fix warning (https://github.com/woocommerce/woocommerce-admin/pull/8141)
* Change experiment to come after checks (https://github.com/woocommerce/woocommerce-admin/pull/8142)
* Change track path to (https://github.com/woocommerce/woocommerce-admin/pull/8143)
Co-authored-by: Chi-Hsuan Huang <chihsuan.tw@gmail.com>
Co-authored-by: Joshua T Flowers <joshuatf@gmail.com>
Co-authored-by: Ilyas Foo <foo.ilyas@gmail.com>
* Replace deprecated wc-admin-settings package
Co-authored-by: Moon <moon.kyong@automattic.com>
Co-authored-by: Chi-Hsuan Huang <chihsuan.tw@gmail.com>
Co-authored-by: Joshua T Flowers <joshuatf@gmail.com>
* 2022 theme stylings for product and shop pages.
* Add support for variable products and gallery.
* Add margin to reset button.
* Add support grouped product.
* Disable breadcrumb and add notice styling child.
* Reduce heading size on title page.
* Reduce font-size for content in tabs.
* Fixes for PR 31536 (#31611)
* Set max width to 1000px for shop and products.
* Display breadcrumbs on product pages.
* Remove admin styles.
* Fix result count and ordering control alignment.
* Fix onsale alignment on single product pages.
Co-authored-by: Jeff Stieler <jeff.m.stieler@gmail.com>
Co-authored-by: Jeff Stieler <jeff.m.stieler@gmail.com>
* Avoid unnecessary customer ID retrieval.
* Ignore order count when validating customers.
WC_Customer::get_order_count causes a full table scan without cache.
* Don't get customer names from their last order.
WC_Customer::get_last_order has to scan all _customer_user meta rows.
* Add changelog entry.
* Fix changelog.
* Cache customer ID in Order override classes.
* Check all user roles.
* Added the status field to the GET Coupon(s) API endpoint
* Updated existing unit test for reading coupons from the db
* Updated tests for version 2&3 when fetching coupons
* Update plugins/woocommerce/includes/data-stores/class-wc-coupon-data-store-cpt.php
Co-authored-by: Josh Betz <j@joshbetz.com>
* Update plugins/woocommerce/includes/rest-api/Controllers/Version2/class-wc-rest-coupons-v2-controller.php
Co-authored-by: Josh Betz <j@joshbetz.com>
* Update plugins/woocommerce/includes/rest-api/Controllers/Version2/class-wc-rest-coupons-v2-controller.php
Co-authored-by: Josh Betz <j@joshbetz.com>
* Updated unit test for getters and setters
* Fix indentation
* Fix indentation.
Co-authored-by: Josh Betz <j@joshbetz.com>
Co-authored-by: Jeff Stieler <jeff.m.stieler@gmail.com>
- Update the link to the announcement post
- Extend the notice text with "Your server is currently running an
older version of PHP, so this change will impact your store".
* Fix misaligned status column on order report
Add labelPositionToLeft prop to order-status component
Set labelPositionToLeft=true for <OrderStatus> on orders report table
Remove style import
* Add changelogs
Add changelogs
* Remove use of wc-admin-settings from packages
* Move getSetting to getAdminSetting and remove wc-admin-settings package
* Add changelog
* Update package.json and remove last use of wc-admin-settings
* Rename variables and remove unnecessary select calls in selective-extensions-bundle
* Invalidate getFreeExtensions resolution whenever country or industry
changed
* Fix grammar
* Add changelogs
* Hide extension list header if no plugins under the category
* Refactor variable naming and add missing hook deps
* Add changelogs
* Add tests for <ExtensionSection />
Gutenberg 12.1.0 has changed the convention for the directory paths from
`block-templates` and `block-template-parts` to `templates` and `parts`
respectively.
Previously, WooCommerce was checking whether block templates were
available, only in the `block-templates` directory.
This commit adds support for both older and newer naming conventions,
as well as parents and child themes.
Fixes#31518
Presumably the original author of this code intended to use true here
instead of '__return_true'; '__return_true' is commonly used with
add_filter() but it does not really make sense to use it here.
This was not really a bug because '__return_true' is a "truthy" value,
so the logic was working as intended; I am changing it to true just to
improve code readability.
* Add e2e tests for PR 7963
* Fix lint
* Verify the next screen is shown
* Simplifying product types step
* Add className to SelectControl
* Fix e2e test
* Removed not used dependency
* Add method `expandRecommendedBusinessFeatures`
* Fixed style selectors
* Add default value to `name`.
Co-authored-by: Fernando Marichal <contacto@fernandomarichal.com>
* Add style links to storybook preview head based on the env
Use *style.css or *style-rtl.css based on a env flag so we don't need to modify
the preview-head.html manully.
* Add npm run storybook-rtl
* Update the storybook-rtl command description
* Fix(select-control): fix label value alignment
Add padding to input value to have same algin space with input label.
fixed issue 7786
* Add changelogs
Fix changelog entry
Add changelogs
* Add SlotFill area to header
* Add activity panel fill
* Move activity panel to root client folder
* Move activity panel registration to its own folder
* Add navigation fill
* Add page title slotfill
* Slot fill the back button
* Move mobile banner to slot fill
* Fix navigation fill on embed pages
* Add changelog entry
* Allow order prop to header item fill
* Split header into before and after
* Fix header title gaps
* Fix nav and mobile app banner placement
* Fix display options import
* Only use last item for page header title fill
* Use function to pass fill props instead of bind
* Rename header slots
* Fix mobile banner dismissal check
* Fix up inbox panel rename
* Update task title in tests
* Fix up task status retrieval
add field key to 'woocommerce_checkout_required_field_notice' filter. Currently if we want to hook any field we can only hooked on field's label. This is not good because field can have duplicate label. And field label can hae many variation because of translations. We need to add field key to the filter so we can hook on it instead.
This is the behaviour that normally happens when a user updates version by version, but if the user skips several versions, db version and WC version could diverge.
* Add loading icon and disable continue until free extensions are loaded.
* Add changelog
* Only show dropdown when we have installable extensions listed
* Revert spinner addition and add loading to Continue button
* Add wait for dropdown to be enabled
The "Advanced" section in the product settings page exists only
if the product attributes lookup table exists. The table will
eventually exist for everybody, so a temporary check has been added.
When a filter by attribute widget was configured as OR, the query
to return the product counts was overfiltering and returning
less results than it should. It now works as in the case of not
using the lookup table.
* Query both actioned and unactioned notes
* Fix note title style issue when the component is rendered in the sidebar
* Add changelog
* Update changelog
* Adjust styling
* Fix lint error
* Simplify title style by using title class selector
* Add ellipsis menu and styling
* Add dismissed option to pseudo payment gateway
* Check if the suggested gateway has been dismissed
* Add visibility and transition rules
* Remove CSSTransition wrapper due to invalid tags
* Fix padding on ellipsis menu
* Add dismiss tracks event
* Add changelog entry
* Check dismissal of promotion server-side
* Make note title clickable
* Note title is clickable
* Updated styles to make title link look like H3
* Clicking title does not trigger busy state
* Add changelog
* Added a new update callback for 3.0 version to migrate is_read col from last_read user pref value
* Remove unnecessary comments
* Remove add column logic -- not needed as tables are updates during the bootstrap
* Remove column existence check
* Use the latest woocommerce_admin_activity_panel_inbox_last_read value
* Clean up woocommerce_admin_activity_panel_inbox_last_read after updating is_read
* Remove unnecessary var
* Update includes/wc-admin-update-functions.php
Co-authored-by: Joshua T Flowers <joshuatf@gmail.com>
* Update test to use ms
* Use get_users() to get the latest meta value
Co-authored-by: Joshua T Flowers <joshuatf@gmail.com>
PHP 7.x and 8.1 will throw a fatal error, thus causing the unit tests
suite to abruptly end, if a method from an implemented interface doesn't
fully match the signature as defined in the interface. In WooCommerce
that's the case for the classes that implement ArrayAccess: in
PHP 8.0+ these signatures have type hints and return types (as in
"offsetUnset( mixed $offset ):void" ) but the code in WooCommerce
doesn't. We can't just add the missing types to the signatures because
then the same error appears in PHP 7.x, in which there aren't
types in the method signatures of ArrayAccess.
The fix consists of adding the ReturnTypeWillChange attribute,
introduced in PHP 8.1, which instructs the runtime to not throw the
error. PHP 7.x doesn't support attributes, but in this case the
attribute declaration is seen as a comment.
See https://php.watch/versions/8.1/ReturnTypeWillChange
* Introduce a 320 char limit for inbox notes
* Extract truncateRenderableHTML to utils and use truncate from lodash to support word break
* Replace omission with blank so that lodash does not add ... at the end
* Add test cases for truncateRenderableHTML
* Add a test case with unicode string
* Add changelog
* Add a test case for preserving whole words
* add colombia states
* update label for state (colombia)
* change to english string
* fixes CLDR names, sorting
* sorting
Co-authored-by: Jeff Stieler <jeff.m.stieler@gmail.com>
Until now the product attributes lookup table had to be created
and its usage had to be activated manually, via the tools page.
This commit does the following:
1. Remove the tools to create and delete the table
(but keeps the tool to regenerate the table data for one or for
all the products)
2. Creates a data migration that triggers the table creation and
filling (unless the table already existed) for Woo 6.1
3. After the migration finishes, activates the table usage for
product filtering (site admin can still disable it via
Settings - Products - Advanced)
As far as I can see, this count param is not really needed, but it will still be good to keep it updated in case its getting used in an edge case that I have not considered.
* Preserve stock metadata for refunded items.
Prevents fully restocked items on partially refunded orders from having stock reduced on subsequent order updates.
* Add E2E test covering errant restocking fix.
- Replaced `intval` calls with faster type casting.
- Showing more informative error messages.
- Using ternary for better legibility in `WC_Admin_Addons::output`.
- Added `is_wp_error` check to avoid warning from `count` call in `html-admin-page-addons.php`.
- Always showing error message as detail in error output.
- Showing error detail message above "To start growing your business, head over to WooCommerce.com" text, instead of below.
* Wrap notes with Card component -- Added header, badge, and cllipsis menu
* Add hover state
* Dismiss note immediately without prompting a confirmation (https://github.com/woocommerce/woocommerce-admin/pull/7868)
* use woocommerce-admin-dismiss-notification class to target the dissmiss btn
* Add changelog
* Specify CSS styles so tha they dont get overridden by other plugins
* Update changelog
* Add is_read column
* Do not update activity_panel_inbox_last_read upon viewing the homepage
* Remove use of last_read variable
* Return is_read field from the note api
* Use is_read field and remove last_read from the test
* Set is_read to true when an action is triggered
* CSS changes for the read state
* Apply padding and border if there are multiple actions
* Remove unread indicator
* Add changelog
* Update changelog
* Revert package-lock.json
* Fix onDismiss not being called after rebasing
* Check is_read before setting it to the obj -- this prevents uninteded error messages piling up in case is_read col is missing for some reason
* Revert changs added by mistake during rebasing
* Revert changes to package-lock.json
* Remove incorrect changelog
* Commit to triger Github workflows
Improve (by a lot) the performance of the queries for the
product attributes lookup table by doing the following:
1. Fallback the query for the "AND" case to thequery for the "OR" case
when there's only one term being filtered for the category
(the subquery for the "OR" case is much simpler)
2. Collapse all of the "AND" queries (for all the categories)
into a simple one (this is possible since term ids are unique
even across categories)
3. The most important change: introduce an extra derived query,
so
...AND posts.ID in ( SELECT product_id FROM lookup_table WHERE...
becomes
...AND posts.ID in ( SELECT product_id FROM (
SELECT product_id FROM lookup_table WHERE...
This causes the filtering subquery to be executed only once.
This was needed to activate the feature for filtering products
by attribute using the new lookup table. The lookup table still
needs to be created and filled via the tools page.
* Wrap notes with Card component -- Added header, badge, and cllipsis menu
* CSS changes to adjust padding and margin
* Update text and classname
* Add dismiss all modal
* Render dismiss all modal
* Dismiss all notes
* Update client/inbox-panel/index.scss
Co-authored-by: Joshua T Flowers <joshuatf@gmail.com>
* Update client/inbox-panel/index.scss
Co-authored-by: Joshua T Flowers <joshuatf@gmail.com>
* Move text to inline
* Pass onClose callback instead
* Move dismissAllNotes into the modal component
* Rename dismissNote to onDismiss
* Alias setShowDismissAllModal as onDismissAll
* Reset margin-bottom to prevent the latest GB to add unwanted margin-bottom
* Commit to triger Github workflows
* Add changelog
Co-authored-by: Joshua T Flowers <joshuatf@gmail.com>
Previously we were increasing coupon usage count on every apply_coupon method. This was causing double usages because, we would also increase on order save callback.
We instead now call `wc_update_coupon_usage_counts` in apply_method itself, which would increase the usage and also set the `_recorded_coupon_usage_counts` order meta.
Additional, we also manually call $couon->increase_usage_count if `_recorded_coupon_usage_counts` is because in this case, we are likely applying more than one coupon to the order. And `_recorded_coupon_usage_counts` meta would have already been set by the first coupon. This is not a good solution, ideally we should revamp how we store the coupon recorded information to support multiple coupon information from the get-go.
* Create more sample orders data.
* Code formatting.
* Add tests for pagination.
* Formatting.
* Add test case for inclusion and exclusion parameters.
* Add test for parent and parent_exclude parameters.
* Add test case for status parameter.
* Add test case for customer parameter.
* Add test case for product parameter.
* Create a test order with all numerical properties populated.
* Add test case for precision parameter.
* Add test case for search parameter.
* Add test case for orderby parameter.
* Move missed api-core-tests files.
* Force tests to run in band (sequentially).
* Allow empty arrays to be cached
* Fix second check
* Add tests for attribute function changes
* Use InvokedRecorder to explicitly assert invocation count.
Provides more friendly failure messages and self documenting code.
* Code format fixes
* Add class check to added tasks
* Make Task class asbtract
* Update tasks to use abstraction
* Update task property calls to methods and add extended class
* Fix up task tests
* Reorder script enqueing to check less expensive operations first
* Fix up dismissable and snoozeable checks
* Fix up typos
* Load default task classes on init
* Handle PR feedback
* Fix extended tasks not showing
* Update is_visible to can_view in deprecated tasks
* Use TestTask class for unit tests
* Add changelog entry
* Fix up API tests
* Update ExtendedClass name to DeprecatedExtendedClass
* Fix up rebase
* Initial refactor
* Update payment recommendations to use new endpoint data
* Make sure to run specs
* Fix test
* Delete old PaymentPlugins class
* Update url to point to woocommerce.com
* Remove unused displayable prop
* Move option name
* Fix js tests
* Add changelog
* Reverting changes in https://github.com/woocommerce/woocommerce/pull/30380, preparatory to merging the My Subscriptions and Marketplace pages back into one Extensions page.
* Moved category nav to a separate file.
* Added main nav tabs.
* Added category nav, styled the mobile version.
* Experiments with doing category tabs as a list.
* Styling category menu as a list of links in rectangular pills on desktop.
* Adjusting margins of product list in in-app marketplace.
* Removed `submenu_file` filter which called deleted `update_menu_highlight` method.
* Restored styling for update count bubble on My Subscriptions tab.
* Styling update bubble on My Subscriptions tab.
* Addressing design feedback. Restyled category pills to make them more obvious. Added `Browse categories` title before category menu on desktop. Changed `.addon-product-group-title` to an h2.
* Addressing feedback from https://github.com/woocommerce/woocommerce/pull/31085#pullrequestreview-806319880.
- Removing addition of `admin_title` filter calling deleted `update_my_subscriptions_title` method.
- Prepending `__DIR__` constant before path in `require` call.
* If the navigation feature does not exist, have the NavigationNudge note self-action.
* Create delete_if_not_supported method on NavigationNudge note.
If we encounter this situation again we might consider adding a version of this method to NoteTraits.
* Add possibly_delete_notes() to do_wc_admin_daily().
* Add changelog entry for Issue 7807.
* Add should_note_exist() method to NavigationNudge note.
* Add should_note_exist() and delete_if_not_supported() to NavigationFeedback.
* Add NavigationFeedback::delete_if_not_supported() to possibly_delete_notes() in daily cron.
* Fix changelog missing PR number.
* Update changelog to include navigation feedback note.
* Rename should_note_exist and delete_if_not_supported to is_applicable and delete_if_not_applicable, add to NoteTraits.
* Removed Changlogger Autoload
* Changed Jetpack Changelogger Formatter Loading
Rather than using the Composer autoload, we should use the
changelogger's "filename" option to point directly at the file.
This keeps the file out of the autoloads, since it's possible that
plugins or packages may be symlinked and break the relative
path to the plugin.
* Add endpoint to unhide task list
* Rename show method to unhide
* Replace requests for hidden task list options
* Replace unhide task list requests
* Replace task list complete checks
* Replace dismiss option requests
* Remove complete task option check
* Fix up panel buttons
* Update finished setup to wait for task list resolution
* Create selector for getting a single task list
* Add selector for single task
* Fix task list panel visibility
* Add changelog entry
* Fix empty product types in profiler data
* Revert to checking for hidden task list
Autocomplete is default to on in most browsers, this is usually fine, but FireFox will overwrite actual value with whatever user entered last. This means if we change the quanity in some other page, and then refresh the cart page, the last entered value in cart page will be displayed, overwriting the actual value passed by server.
So autcomplete is disabled by default for quanity input field, further a filter is added like other fields in case this needs to be modified.
The symbol for the Swaziland (now Eswatini) Lilangeni is not L (for Lilangeni),
but E (for Emalangeni, plural). Even if it is just one Lilangeni, it is written as
E1.00.
* Add promoted card to in-App marketplace page
* Change name of transient
Changed name of transient for v2.0 of in-app marketplace featured page
content, so sites upgrading to WooCommerce 5.9 will get the correct
data for the new version of the page.
* Add extra status properties to tasks
* Convert extra properties to camelcase
* Replace task status usage in client
* Remove task status data store
* Remove task status endpoint
* Remove remaining task status references
* Add has products to appearance task data
* Handle PR feedback
* Fix up additional data for Avalara task
* Add changelog entry
* Move woocommerce tax flow to subdirectory
* Add partner cards
* Use png for logo files
* Add partner card other actions
* Add partner card styling
* Add in mobile styles
* Interpolate links and html elements
* Redirect to tax configuration if Avalara not supported
* Mark task complete if Alavara is installed
* Record events when task partners are shown or selected
* Add changelog entry
* Update task card flow based on visible partners
* Skip plugin step if all plugins installed
* Move reusable components into subdirectory
* Record available partner options
* Fix type reference
* Wrap callback functions in useCallback to avoid rerenders
* Handle PR feedback
* Add key to partner card container
* Add testing instructions
Modify wc_get_price_excluding_tax so that when there's no user
available from a passed order and the
'woocommerce_adjust_non_base_location_prices' filter returns false,
the shop base location is used for the tax calculation instead of
the location of the currently logged in user.
PR #30692 modified 'wc_get_price_excluding_tax' so that if an order
is passed its customer will be passed to WC_Tax::get_rates in order
to use the proper location for the taxes to be discounted. The problem
is that when the order has no customer (it's "Guest") an invalid
customer (id=0) is passed, which has no location, and thus no taxes
are deducted whatsoever.
The fix consists of checking if the customer id from the order is 0,
and in that case no customer is passed to WC_Tax::get_rates, thus
the shop location is used for the taxes.
* - Increased `per_page` parameter of API request in `getRecommendedPlugins` from 6 to 9, to accommodate additional MailPoet item.
- Added new `mailpoet.js` with SVG icon for MailPoet, and corresponding entry to list of product icons.
* Changelog for this change.
* Renamed changelog.
* Added PR number to changelog content.
* Fix formatting
Co-authored-by: Adrian Duffell <9312929+adrianduffell@users.noreply.github.com>
* Wrap notes with Card component -- Added header, badge, and cllipsis menu
* CSS changes to adjust padding and margin
* Change buttons to link style
* Render image only when the layout is thumbnail
* Add hover state
* Update text and classname
* Dismiss note immediately without prompting a confirmation (https://github.com/woocommerce/woocommerce-admin/pull/7868)
* use woocommerce-admin-dismiss-notification class to target the dissmiss btn
* Add changelog
* Specify CSS styles so tha they dont get overridden by other plugins
* Update changelog
* Remove message gap
* Remove unwanted changes from package-lock.json
* Update changelog
Moving this to `admin_init` also ensures that WC_Notes_Run_Db_Update has been instantiated before it can hook into the `woocommerce_hide_update_notice` action. See:
- WC_Install:init()
- WC_Notes_Run_Db_Update::construct()
closes#30781