Install
Works with Drupal: 8.xUsing Composer to manage Drupal site dependencies
Alternative installation files
Release notes
This is a big release, pay close attention to the change records!
Commerce Stripe users will need to update to 8.x-1.0-rc2.
Major changes:
- New InlineForm API, which deprecates a number of form elements. Many parts of checkout that were hidden behind a form element are now accessible via hook_form_alter().
- Replaced all usage of the inline_entity_form form element with the newly introduced content_entity inline form.
- Anonymous customers can now register at the end of checkout via a new checkout pane. If you do not intend your site to support customer registration, this checkout pane must be disabled manually.
- Checkout registration forms now show custom user fields.
- New helper for refreshing an entire form via ajax, used to refresh the checkout form after applying a coupon.
- Per-item discounts can now be shown included in the unit price.
- Introduced a new MailHandler service for sending HTML emails. Fixed several multilingual and theming bugs around emails.
- All tests converted from JavascriptTestBase (PhantomJS) to WebTestBase (Chromedriver)
Thanks to Ny Media for sponsoring #3025383: Allow per-item discounts to be included in the unit price and Liip for sponsoring #2857157: Implement registration after guest checkout, #3024878: Rework the customer profile default_country handling and #2710999: Implement ajax pane refreshing.
Contributors (66)
pavlo.dovhan, caseylau, bojanz, TwiiK, nlz, mitrpaka, joachim, a.dmitriiev, kristiaanvandeneynde, thejacer87, simgui8, BramDriesen, AndyD328, FiNeX, vacho, czigor, i-trokhanenko, Maithri Shetty, mglaman, jnrfred, cornifex, rszrama, zengenuity, gmem, steveoliver, Berdir, lisastreeter, jsacksick, chishah92, trebormc, DeaOm, MegaChriz, heddn, drugan, Sophie.SK, Bram Linssen, Aerzas, Sut3kh, bmcclure, johnpicozzi, ChandeepKhosa, josephdpurcell, Lukas von Blarer, vasike, s.messaris, agoradesign, John Pitcairn, abramm, Aston Victor, AaronChristian, harings_rob, sorabh.v6, zviryatko, sergei_semipiadniy, Dubs, stella, GoZ, fall_0ut, EclipseGc, Mirroar, Dom., kesenai, alexpott, zaporylie, Marko B, quietone
Changelog
Issues: 68 issues resolved.
Changes since 8.x-2.11:
Bug
- #3020240 by pavlo.dovhan, caseylau, bojanz: Site crash when create/save a store if leave owner be empty
- #2993049 by TwiiK, nlz: Customer email promotion condition does a case sensitive e-mail comparison
- #2990762 by mitrpaka, bojanz: Payment::getBalance() on unsaved Payment throws an Exception
- #3027863 by joachim, a.dmitriiev: price field with all currencies available fails validation constraint
- #3024786 by kristiaanvandeneynde, bojanz: Product attribute edit form shows incorrect language sometimes
- #3024790 by kristiaanvandeneynde: Product attribute translation form shows incorrect original language sometimes
- #3031195 by simgui8, bojanz, BramDriesen: Order receipt emails are sent in the incorrect language for anonymous customers
- #3020615 by mglaman, bojanz: Emails sent by Commerce Order ignore user language wishes
- #2984098 by lisastreeter, s.messaris, bojanz: Order receipt themed differently for orders entered in admin
- #3024164 by bojanz: Missing update function for the variation status field
- #3021064 by John Pitcairn: Deprecated active() methods are now broken due to use of invalid entity key
- #2991940 by abramm, Aston Victor: Order type configuration does not depend on workflow provider module
- #3015975 by zviryatko, sergei_semipiadniy: commerce_requirements() and commerce_price_requirements() are missing a title
- #3012643 by Dubs: Allow order summary to be updated with promotions when not in the sidebar
- #3017558 by bojanz: Regression in PaymentGatewayForm::submitInlineForm()
- #3018016 by bojanz: The store form shows "URL path settings" even if the fieldset is empty
- #2938760 by GoZ, bojanz, fall_0ut, czigor, EclipseGc, Mirroar: Variation fields can permanently disappear during ajax replacement
- #3015767 by Dom.: ProductVariation->toUrl() overrides passed $options
- #3014972 by kesenai: Wrong UnionPay icon
- #3014939 by mglaman: RedirectTest and RedirectForm should redirect to example.com
- #3011474 by bojanz: The "Variations" operation is shown even for products without multiple variations
Feature
- #2989249 by thejacer87, bojanz: Pass the order to the cart order summary
- #2955932 by AndyD328, FiNeX: Add additional CSS classes to the order total summary for targeting adjustments
- #3017080 by lisastreeter, bojanz: Create a service for sending emails to customers
- #2857157 by MegaChriz, heddn, drugan, mglaman, Sophie.SK, Bram Linssen, Aerzas, Sut3kh, bmcclure, johnpicozzi, ChandeepKhosa, josephdpurcell, Lukas von Blarer, vasike: Implement registration after guest checkout
- #3023318 by bojanz: Pass the parent_entity_type to the customer_profile inline form
- #3000794 by czigor, bojanz: ProductVariation should implement EntityPublishedInterface (deprecate isActive / setActive)
- #3025383 by bojanz: Allow per-item discounts to be included in the unit price
- #3019635 by bojanz: Netherlands VAT rate change on 01/01/2019
- #3016358 by bojanz: Create a "content_entity" inline form to replace usage of the IEF form element
- #3006664 by czigor, stella: Irish VAT rate change on 01/01/2019
- #2921312 by mglaman: Display custom user fields on checkout registration form
Task
- #3031669 by vacho: Add StringTranslationTrait to PaymentGatewayFormBase
- #3031562 by bojanz: Remove #collapsible from details elements
- #3030374 by czigor, i-trokhanenko: Fix deprecated code usage
- #3030095 by bojanz, Maithri Shetty: Improve the MailHandler API
- #3029439 by bojanz: Remove trigger_error() from deprecated plugins
- #3020173 by jnrfred, bojanz, cornifex, mglaman, rszrama: Stop disabling attributes on the add to cart form when they only have 1 value
- #2710999 by zengenuity, bojanz, gmem, steveoliver: Implement ajax pane refreshing
- #2981647 by mitrpaka, bojanz: Split PromotionOfferTest into smaller parts
- Revert "Issue #3005070 by jsacksick: Make the order-order_item relationship more robust"
- #3024878 by bojanz: Rework the customer profile default_country handling
- #2954203 by chishah92, pavlo.dovhan, DeaOm: Replace an instance of drupal_set_message in OffsitePaymentGatewayBase.php
- #3024128 by bojanz: EntitySelectWidgetTest should use its own reference field for testing
- #3023867 by czigor: Tests should use $this->container instead of \Drupal::service()
- #2882530 by AaronChristian, bojanz: The currency "fraction digits" setting should be a dropdown
- #2862439 by bojanz: Payments should act on assignment change
- #2993857: Allow EuropeanUnionVat to use a custom tax_number field
- #2862434 by bojanz, harings_rob: OrderReassignForm should use OrderAssignment
- #2896128 by mitrpaka, bojanz, sorabh.v6: Don't show an error if the coupon is already applied
- #3020704 by czigor: Move test Traits to a Traits folder and namespace
- #2689915 by czigor: Expand ProductVariationTitleGenerationTest with attributes
- #3014686 by bojanz, czigor: Loosen the variation type disabling on the product type form
- #3014927 by lisastreeter: Update promotion usage data when user email address updated
- #3016357 by bojanz: Convert the coupon redemption form to an inline form
- #3003121 by bojanz, alexpott, mglaman: Add an InlineForm API, stop using complex form elements
- #2998745 by zaporylie, mglaman: Take advantage of WebDriverTestBase to deprecated PhantomJS for Chrome
- #2864602 by Marko B, bojanz: Update the credit card validation / detection rules
- #3013685 by bojanz, alexpott: Update phpcs to 3.x
- #3013627 by bojanz: Update for State Machine 8.x-1.0-rc1
- #2928102 by czigor: Stop using protectBundleIdElement() in bundle forms
- #3011852 by quietone: Move installCommerceCart() to setup method