Commit Graph

102 Commits

Author SHA1 Message Date
Mike Jolley 76b32c9aa5 WIP - Product CRUD (#12065)
* Created function to get the catalog visibility options

* First methods for WP_Product crud

* Product set methods

* Fixed several erros while setting data

* First methods for WP_Product crud

* Product set methods

* Fixed several erros while setting data

* Hardcode the get_type per product class

* Initial look through getters and setters and abstract data

* Missing var

* Add related product functions and deprecate those in class.

* No need to exclude ID

* Fixed coding standards and improved the docblocks

* Get cached terms from wc_get_related_terms()

* Fixed wrong variable in wc_get_related_terms

* Use count() instead of sizeof()

* Sanitize ids later

* Remove unneeded comments

* wc_get_product_term_ids instead of related wording and use in other places.

get_the_terms is used here and also handles caching, something
wp_get_post_terms does not.

* Clean up the abstract product class a bit, deprecate two functions we have renamed, make update & create work properly, and add some tests for it.

* Bump template version

* Handle PR feedback: Remove duplicate regular_price update, allow changing of post status for products, remove deprecation for get_title since we might still offer it as a function

* Made abstract function useful

* External Product CRUD

* _virtual meta should be 'no', not taxable, in product unit test helper

* Grouped product class

* Tests

* Move children to meta and update test

* Use get_upsell_ids

* Spacing in query

* Moving and refactoring methods

* Availability html

* Tidy/add todos

* Rename method

* Put back review functions (still todo)

* missing $this

* get_price_including_tax/excluding_tax functions

* wc_get_price_to_display

* Price handling

* [Product CRUD] Variable (#12146)

* [Product CRUD] Variable Products

* Handle PR feedback.

* [Product CRUD] Grouped Handling (#12151)

* Handle grouped product saving

* Update routine

* [Product CRUD] Product crud terms (#12149)

* Category and tag id handling

* Replace template functions

* Remove todo

* Handle default name in save function

* Product crud admin save routine (#12174)

* Initial props

* Work on admin saving

* Set/get attributes

* Atom was moaning about this before but no longer.

* Update get_shipping_class

* WC_Product_Attribute

* Use getter in admin panel

* Fix attribute saving

* Spacing

* Fix comment

* wc_implode_text_attributes helper function

* [Product CRUD] Product crud admin use getters (#12196)

* Initial props

* Work on admin saving

* Set/get attributes

* Atom was moaning about this before but no longer.

* Update get_shipping_class

* WC_Product_Attribute

* Use getter in admin panel

* Fix attribute saving

* Move settings into new files

* Refactor panels and use getters

* Use getters for variation panel

* Revert save variation changes for now

* Add todos

* Fix downloads

* REST API CRUD Updates

* Additional API updates/fixes. Added some todos

* Fix final failing tests and implementing setters/getters and attributes functionality.

* Fix comparison for is_on_sale and remove download_type from WC_Product.

* Add a wc_get_products wrapper.

* Remove the download type input from the product data metabox for downloadable products. (#12221)

* [Product CRUD] Variations - setters, getters and admin. (#12228)

* Started on variation changes

* Stock functions

* Variation class

* Bulk change ->id to get_id() to fix variation form display

* Missing status

* Fix add to cart

* Start on stored data save

* save variation

* Save_variations

* Variation edit panel

* Save variations code works.

* Remove stored data code and fix save

* Improve legacy class

* wc_bool_to_string

* prepare_set_attributes

* Use wc_get_products

* More feedback fixes

* Feedback fixes

* Implement CRUD in the legacy REST API

* Handle PR feedback

* [Product CRUD] Getter setter proxy methods (#12236)

* Started on variation changes

* Stock functions

* Variation class

* Bulk change ->id to get_id() to fix variation form display

* Missing status

* Fix add to cart

* Start on stored data save

* save variation

* Save_variations

* Variation edit panel

* Save variations code works.

* Remove stored data code and fix save

* Improve legacy class

* wc_bool_to_string

* prepare_set_attributes

* Use wc_get_products

* More feedback fixes

* get_prop implementation in abstract and data classes

* Implement set_prop

* Change handling

* Array key exists

* set_object_read

* Use get_the_terms() instead of wp_get_post_terms()

wp_get_post_terms() is a wrapper around wp_get_object_terms() which does not
use the object cache, and generates a database query every time it is used.

get_the_terms() however can use data from the object cache if present.

* Allow WP_Query to preload post data, and meta in wc_get_products()

Allow WP_Query to bulk query for post data and meta if more than
just IDs are requested from wc_get_products(). Reduces query count
significantly.

* [Product CRUD] Variable, variation, notices, and stock handling (#12277)

* No longer needed

* Remove old todos

* Use getters in admin list

* Related and upsells update for CRUD

* Fix notice in gallery

* Variable fixes and todos

* Context

* Price sync

* Revert variation attributes change

* Return parent data in view context

* Defer term counting

* wc_find_matching_product_variation

* Stock manage tweaks

* Stock fixes

* Correct id

* correct id

* Better sync

* Data logic setter fix

* feedback

* First methods for WP_Product crud

* Product set methods

* Fixed several erros while setting data

* Hardcode the get_type per product class

* Initial look through getters and setters and abstract data

* Missing var

* Fixed coding standards and improved the docblocks

* Get cached terms from wc_get_related_terms()

* Fixed wrong variable in wc_get_related_terms

* Use count() instead of sizeof()

* Add related product functions and deprecate those in class.

* No need to exclude ID

* Sanitize ids later

* Clean up the abstract product class a bit, deprecate two functions we have renamed, make update & create work properly, and add some tests for it.

* Remove unneeded comments

* wc_get_product_term_ids instead of related wording and use in other places.

get_the_terms is used here and also handles caching, something
wp_get_post_terms does not.

* Handle PR feedback: Remove duplicate regular_price update, allow changing of post status for products, remove deprecation for get_title since we might still offer it as a function

* External Product CRUD

* _virtual meta should be 'no', not taxable, in product unit test helper

* Bump template version

* Made abstract function useful

* Grouped product class

* Tests

* Move children to meta and update test

* Use get_upsell_ids

* Spacing in query

* Moving and refactoring methods

* Availability html

* Tidy/add todos

* Rename method

* Put back review functions (still todo)

* missing $this

* get_price_including_tax/excluding_tax functions

* wc_get_price_to_display

* Price handling

* [Product CRUD] Variable (#12146)

* [Product CRUD] Variable Products

* Handle PR feedback.

* [Product CRUD] Grouped Handling (#12151)

* Handle grouped product saving

* Update routine

* [Product CRUD] Product crud terms (#12149)

* Category and tag id handling

* Replace template functions

* Remove todo

* Handle default name in save function

* Product crud admin save routine (#12174)

* Initial props

* Work on admin saving

* Set/get attributes

* Atom was moaning about this before but no longer.

* Update get_shipping_class

* WC_Product_Attribute

* Use getter in admin panel

* Fix attribute saving

* Spacing

* Fix comment

* wc_implode_text_attributes helper function

* [Product CRUD] Product crud admin use getters (#12196)

* Initial props

* Work on admin saving

* Set/get attributes

* Atom was moaning about this before but no longer.

* Update get_shipping_class

* WC_Product_Attribute

* Use getter in admin panel

* Fix attribute saving

* Move settings into new files

* Refactor panels and use getters

* Use getters for variation panel

* Revert save variation changes for now

* Add todos

* Fix downloads

* REST API CRUD Updates

* Additional API updates/fixes. Added some todos

* Fix final failing tests and implementing setters/getters and attributes functionality.

* Fix comparison for is_on_sale and remove download_type from WC_Product.

* Add a wc_get_products wrapper.

* Remove the download type input from the product data metabox for downloadable products. (#12221)

* [Product CRUD] Variations - setters, getters and admin. (#12228)

* Started on variation changes

* Stock functions

* Variation class

* Bulk change ->id to get_id() to fix variation form display

* Missing status

* Fix add to cart

* Start on stored data save

* save variation

* Save_variations

* Variation edit panel

* Save variations code works.

* Remove stored data code and fix save

* Improve legacy class

* wc_bool_to_string

* prepare_set_attributes

* Use wc_get_products

* More feedback fixes

* Feedback fixes

* Implement CRUD in the legacy REST API

* Handle PR feedback

* [Product CRUD] Getter setter proxy methods (#12236)

* Started on variation changes

* Stock functions

* Variation class

* Bulk change ->id to get_id() to fix variation form display

* Missing status

* Fix add to cart

* Start on stored data save

* save variation

* Save_variations

* Variation edit panel

* Save variations code works.

* Remove stored data code and fix save

* Improve legacy class

* wc_bool_to_string

* prepare_set_attributes

* Use wc_get_products

* More feedback fixes

* get_prop implementation in abstract and data classes

* Implement set_prop

* Change handling

* Array key exists

* set_object_read

* Use get_the_terms() instead of wp_get_post_terms()

wp_get_post_terms() is a wrapper around wp_get_object_terms() which does not
use the object cache, and generates a database query every time it is used.

get_the_terms() however can use data from the object cache if present.

* [Product CRUD] Variable, variation, notices, and stock handling (#12277)

* No longer needed

* Remove old todos

* Use getters in admin list

* Related and upsells update for CRUD

* Fix notice in gallery

* Variable fixes and todos

* Context

* Price sync

* Revert variation attributes change

* Return parent data in view context

* Defer term counting

* wc_find_matching_product_variation

* Stock manage tweaks

* Stock fixes

* Correct id

* correct id

* Better sync

* Data logic setter fix

* feedback

* Prevent notices

* Handle image_id from parent

* Fix error

* Remove _wc_save_product_price

* Remove todo

* Fixed wrong variation URLs

* Fixed undefined $image_id in WC_Product_Variation::get_image_id()

* Allow wc_rest_prepare_date_response() handle timestamps

* Updated get methods on REST API for variations

* Use variations CRUD to save variations metadata

* [Product CRUD] Abstract todos (#12305)

* Get dimensions and weights, with soft deprecation

* Product attributes

* Ratings

* Fix read method

* Downloads

* Feedback

* Revert "[Product CRUD] Abstract todos (#12305)"

This reverts commit 9a6136fcf8.

* Remove deprecated get_variation_id()

* New default attributes method

* [Product CRUD] Product Datastore (#12317)

* Fix up tests in the product/* folder.

* Handle data store updates for grouped, variable, external, simple, and general data store updates for products.

* Variations & variable changes.

* Update -functions.php calls to use data store.

* Add an interface for the public product data store methods.

* Finished product factory tests

* Correctly delete in the api, fix up some comments, and implement an interface for the public variable methods.

* Fix up delete in all versions of the api

* Handle feedback

* Match protected decloration to parent

* Product crud abstract todos (#12316)

* Get dimensions and weights, with soft deprecation

* Product attributes

* Ratings

* Fix read method

* Downloads

* Feedback

* Fix up store

* Fixed method returning in write context

* Fix error in variation admin

* Check for parent value - fixes tax class

* Remove old/complete todos

* Allow set tax class as "parent"

* Removed duplicated sync

* Fixed wrong variation URLs

* Fixed undefined $image_id in WC_Product_Variation::get_image_id()

* Allow wc_rest_prepare_date_response() handle timestamps

* Updated get methods on REST API for variations

* Use variations CRUD to save variations metadata

* Remove deprecated get_variation_id()

* New default attributes method

* Fixed method returning in write context

* Allow set tax class as "parent"

* Removed duplicated sync

* Fixed coding standards

* TODO is not accurate.

* Should pass WC_Product instancies to WC_Comments methods (#12327)

* Use new method in abstract order class to prevent headers sent issue in tests

* Fixed variable description in REST API

* Updated how create initial product variation

* Fixed a few fatal errors and warnings in Products CRUD (#12329)

* Fixed a few fatal errors and warnings in Products CRUD

* Fixed sync functions

* Add variations CRUD to legacy API (#12331)

* Apply crud to variable products in legacy API v1

* New REST API do not need fallback for default attributes

* Apply variations CRUD to legacy API v2

* Legacy v2 - save default attributes

* Variations in legacy API v2 do not have descriptions

* Fixed legacy API v2 variations params

* Applied variations CRUD to legacy API v3

* Sync before save in legacy apis

* Punc

* Removed API todos

* Removed test

* Products endpoint tweaks (#12354)

* Var type already normalized on CRUD

* Let Product CRUD handle with validation, sanitization and conditional checks

* Set downloads using WC_Product_Download

* Stop try catch exceptions more than one time

* Handle WC_Data_Exception in legacy API

* Complete remove products when fails on creating

* On creating I mean!

* Already have a method to complete delete products

* Fixed standards using WP CodeSniffer

* get_the_terms() returns false when empty

* get_manage_stock returns boolean

@claudiosanches

* Merge conflict

* Variations API endpoint fixes

* Product CRUD improvements (#12359)

* args is not used any more - remove todo

* Added test for attributes

* wc_get_price_excluding_tax usage

* parent usage

* Fix rating counts

* Test fixes

* Cleanup after tests

* Make sure status transition code runs even during API calls, not just in admin.

* Default visibility

* Fix attribute setting in API

* Use get name instead of get title

* variation id usage

* Improved cross sell templates

* variation_data

* Grouped product sync

* Notices

* Sync is not needed in API

* Delete

* Rename interfaces

* Update counts in data store
2016-11-16 12:38:24 +00:00
James Koster 3823b78318 Add/product galleries (#11665)
* register prettyPhoto but don't enqueue. #10721

* Remove lightbox option. #10721

Also registers the prettyPhoto styles instead of enqueueing

* Stip all prettyPhoto related stuff from the templates and tidy up some logic. #10721

* Add flexslider assets #10721

* styling and re-adds `woocommerce_single_product_image_thumbnail_html`. #10721.

* Add zoom functionality. #10721

* Move js to single-product.js. #10721

* styling of the gallery thumbnails when using the `product_page` shortcode. #10721

* Only enable the zoom if the image is large enough. #10721

* Use a 4 column layout by default. #10721

* Make the carousel options filterable. #10721

* rtl styles for gallery. #10721

* Don't zoom on handheld devices. #10721

* markup tweaks in prep for photoswipe

* disable zoom for now

* Add and enqueue photoswipe assets

* add the photoswipe template

* initialise photoswipe - it's alive!

* tidy up js. add title. add separate trigger. #10721

* Move photoswipe functions to single-product.js. #10721

* reactivate the zoom! #10721

* style the photoswipe trigger. #10721

* disable flexslider animation loop. #10721

* js tidy up. #10721

* Fix jshint

* Abstract the product gallery scripts

* Minify

* Fixed conflict with the admin bar

* Photoswipe conflict with admin bar

* Index. #10721

* photoswipe button styles. #10721

* Styling. #10721

* No animation on zoom
* Image width on mobile

* No shadows please. #10721

Looking at you, Twenty Twelve.

* code tidy and add class to placeholder figure. #10721

* simplify rtl query

* photoswipe button styles

* Comma should not be here

* zoom icon #10721

* gallery thumb styles. #10721

* trigger icon. #10721

* Image margins. #10721

* icon hover states. #10721

* Variation handling

* Fix zoom and heights

* Resize after timeout
2016-10-13 15:25:42 +01:00
Manos Psychogyiopoulos 75b3042d9c [2.6] Variations script errors when 'empty' option is omitted (#11944)
* fix variation script malfunctioning when show_option_none arg is set to false

* add minified version
2016-10-11 18:26:08 +01:00
Mike Jolley f0bae3e5d7 Dupe comment 2016-08-12 10:39:21 +01:00
Gabor Javorszky 72982ab1e8 Fix jshint errors and minifies the script 2016-08-11 01:22:06 +01:00
Gabor Javorszky ddd34a4460 Fix add to cart variation AJAX mode when cart fragments are dequeued
No issue.

* high traffic site, so wc-cart-fragments are dequeued (#7777)
* variable product with a lot of variations, so stock lookup happens through ajax
* previously the add-to-cart-variation.js used the wc_cart_fragments_params for the ajax URL, which in this case wasn't available, the result was a hung page
* decoupled from cart fragments: added the wc_ajax_url to the params that wc_add_to_cart_variation_params gets, so no more hung pages.
2016-08-11 01:17:43 +01:00
Mike Jolley 06f7222a57 [2.6] Ensure value is not null in variations to support empty show_option_none setting
Fixes #11508
2016-07-22 12:42:21 +01:00
Mike Jolley 317bbc1b8d Merge pull request #11378 from franticpsyx/variations-script-ajax-post-custom-data
[2.6] Post custom data when fetching a variation via ajax
2016-07-19 13:41:27 +02:00
Manos Psychogyiopoulos 982e2011a6 post custom data when fetching a variation via ajax
Sometimes it is needed to add "context" to a variations ajax request, in order modify the returned object content. For instance, in cases where the variation is part of a bundled variable product, we may need to modify the price, stock status or the description of the variation according to the "context".
2016-07-07 11:16:46 +03:00
Manos Psychogyiopoulos 90b4d6090e use existing $form var to block/unblock
Existing code could cause other `variations_form` elements on the same page to block/unblock as well.
2016-07-07 11:07:20 +03:00
Mike Jolley 0cb2f2760c block ui when switching variation with ajax 2016-06-06 14:37:52 +01:00
Mike Jolley 843e540ed5 Add classes to variation button wrapper 2016-05-19 11:17:34 +01:00
Zach Stepek c96cd1e4d3 Merge branch 'master' into variation-sku-fix
# Conflicts:
#	assets/js/frontend/add-to-cart-variation.min.js
2016-05-11 14:41:39 -05:00
Zach Stepek 50a7b07496 Update specificity of jQuery selector used to reset SKU in product-meta 2016-05-11 12:25:56 -05:00
Justin Shreve 328ad226e8 [2.5] Correct the 'unavailable template' call for variations so the message is displayed correctly, fixing a JS error. 2016-02-17 07:50:38 -08:00
Kristofer Norén f1bf89db2b Corrected content in alt-tag
Previously both the alt-tag and the title-tag of the variations main image used content from variation.image_title. The alt-tag should use variation.image_alt.
2016-02-11 13:40:56 +01:00
Mike Jolley 4c29b7607f Show notices on variation button clicks
Closes #10281
2016-02-08 16:21:02 +00:00
Mike Jolley 254c8cf677 Prevent default in variation script
Closes #10223
2016-02-01 12:16:17 +00:00
Mike Jolley 5db85c6ef7 [2.5] Compatibility with w3 total cache inline minification 2016-01-25 20:14:45 +00:00
Mike Jolley 1b5af9e188 Output the wp.template instead of passing in 2015-12-04 14:28:32 +00:00
Mike Jolley 3ae614c5a8 Wrap is Always visible since 2.5.0 2015-12-04 13:45:47 +00:00
Mike Jolley b7d8091a44 pass full variation object into script instead of parts 2015-12-04 13:31:36 +00:00
Mike Jolley 2c023a2847 Pass the wp.template to the script and append so its added to the page once when needed 2015-12-04 13:26:44 +00:00
Tiago Noronha 105105db06 Adds support for srcset and sizes attributes in variation images. 2015-11-23 16:35:11 +00:00
Claudio Sanches 034871a395 Fixed js coding standards 2015-10-28 16:52:31 -02:00
Mike Jolley dddca9b7a6 Avoid animation when no text is present 2015-10-28 15:43:06 +00:00
Mike Jolley edd2e4f2cb wp.template is not required for cart button 2015-10-28 14:59:40 +00:00
Mike Jolley f7a065fb53 Button initial state 2015-10-28 14:27:02 +00:00
Mike Jolley 6f5aaa69da Fix single variable 2015-10-28 13:53:51 +00:00
Mike Jolley a28da6eabc Remove wc_variations_description_update effects 2015-10-28 13:04:45 +00:00
Mike Jolley f050c804e1 Use wp.template for variation and variation button 2015-10-28 13:04:28 +00:00
Claudio Sanches 9b47f3866a Prevented reset to default option when click in any attribute option
Improvement for #9335
2015-10-27 17:59:26 -02:00
Claudio Sanches 2f0f8f5b3e Fixed focus on attributes select fields for variable products
This is an issue on IE 11, since we test for "focusin touchstart", IE 11
can't loses the focus and need to this "snippet" to make IE work like
another browsers.

Closes #9335
2015-10-27 17:24:32 -02:00
roykho 52ec35cab6 tweak to use product class function instead of body class function 2015-10-02 10:26:53 +02:00
roykho 5ba6ff1dac fix variation image flicker issue when default variations are set closes #7904 2015-10-02 03:45:11 +02:00
Mike Jolley b9381d1495 Revert uniform fix - looking into doing it in-theme 2015-08-21 19:24:39 +01:00
Mike Jolley 10c0b92d0d Added BW compatibility for themes using 'uniform'. 2015-08-21 15:37:00 +01:00
Manos Psychogyiopoulos f5691fd82a animate variations script markup changes 2015-07-31 14:04:55 +03:00
Manos Psychogyiopoulos dae10a962c allow product variations data refresh 2015-07-28 15:34:04 +03:00
Mike Jolley d0c2c10c47 Made the linter happy 2015-07-27 17:55:37 +01:00
Mike Jolley 0ab151562a Fix issues with trailing slashes on permalinks
Closes #8658
2015-07-27 11:56:07 +01:00
Mike Jolley 44b91e5b66 Revert triggerHandlers back to trigger() for BW compat
Closes #8569
2015-07-14 10:28:49 +01:00
Mike Jolley 2834eff221 Merge branch 'variations-8477'
Conflicts:
	assets/js/frontend/add-to-cart-variation.js
	assets/js/frontend/add-to-cart-variation.min.js
	assets/js/frontend/add-to-cart.min.js
	assets/js/frontend/checkout.min.js
	assets/js/frontend/geolocation.min.js
2015-07-10 11:37:05 +01:00
Claudio Sanches 62d879e86c Fixed all jshint errors #4680 2015-07-10 02:13:30 -03:00
Mike Jolley 9531258ee6 Treat each form separately. 2015-07-09 16:21:17 +01:00
Mike Jolley 65f19d5ca7 Ajax variation handling
If there are more variations than the threshold allows (set to 20
currently) this loads the matching variation via ajax instead of inline
in the HTML. #8477
2015-07-09 15:56:20 +01:00
roykho 54b0a0ca54 changed dynamic variation description to allow limited HTML and some sanitized tweaks 2015-05-28 14:31:45 -07:00
roykho b812b2fd94 add dynamic variation description feature 2015-05-14 10:56:26 -07:00
James Koster aebef4aece variation img title / caption. closes #8032 2015-04-28 17:19:38 +01:00
Mike Jolley d7144d9ed6 [2.3] Reset sku when no option chosen
Closes #7799
2015-03-23 13:03:53 +00:00