Welcome to the May 2019 release of Saleor! Read on to learn about the newest changes!
Storefront's navigation management
This month we're bringing you last missing section of Dashboard 2.0. Storefront navigation management allows you to configure which information and links are visible in the menu bars of your storefront. You can add new items and easily link them to existing categories, collections, and pages on your site, or add a link to any external site you choose. Once items are created, their structure can be arranged by dragging and dropping to reorder or nest them.
Dashboard 2.0 already provides management views for all data models in Saleor, but we wanted to make it even better by adding filtering capabilities to two dashboard sections. Products can now be filtered by price (exact value or price range), stock availability, or storefront visibility. Orders can be filtered by creation date and fulfillment status. We've also added search capabilities that let you find products by name or orders by customer's email, and many more. Lastly, each filtering can be saved as a new tab so it can be easily reused later!
New order creation flow
Having to deal with unpaid orders may be problematic for store owners for several reasons. Unpaid orders unnecessarily allocate stock quantity, which may be abused by malicious users. Staff members have to manually resolve each order and either contact the customer or close it after some time. It means more work and less revenue. We've now changed the flow of creating orders in our GraphQL API so that an order is only created if a successful payment was made. If a payment fails, customers will stay with an open checkout that they can either pay later or share with someone else who can pay for them.
- Create order only when payment is successful - #4154 by @NyanKiyoshi
- Order Events containing order lines or fulfillment lines now return the line object in the GraphQL API - #4114 by @NyanKiyoshi
- GraphQL now prints exceptions to stderr as well as returning them or not - #4148 by @NyanKiyoshi
- Refactored API resolvers to static methods with root typing - #4155 by @NyanKiyoshi
- Add phone validation in the GraphQL API to handle the library upgrade - #4156 by @NyanKiyoshi
- Add basic Gift Cards support in the backend - #4025 by @fowczarek
- Add the ability to sort products within a collection - #4123 by @NyanKiyoshi
- Implement customer events - #4094 by @NyanKiyoshi
- Merge "authorize" and "capture" operations - #4098 by @korycins, @NyanKiyoshi
- Separate the Django middlewares from the GraphQL API middlewares - #4102 by @NyanKiyoshi, #4186 by @cmiacz
- Add navigation section - #4012 by @dominik-zeglen
- Add filtering on product list - #4193 by @dominik-zeglen
- Add filtering on orders list - #4237 by @dominik-zeglen
- Change input style and improve Storybook stories - #4115 by @dominik-zeglen
- Migrate deprecated fields in Dashboard 2.0 - #4121 by @benekex2
- Add multiple select checkbox - #4133, #4146 by @benekex2
- Rename menu items in Dashboard 2.0 - #4172 by @benekex2
- Category delete modal improvements - #4171 by @benekex2
- Close modals on click outside - #4236 - by @benekex2
- Use date localize hook in translations - #4202 by @dominik-zeglen
- Unify search API - #4200 by @dominik-zeglen
- Default default PAGINATE_BY - #4238 by @dominik-zeglen
- Create generic filtering interface - #4221 by @dominik-zeglen
- Add default state to rich text editor = #4281 by @dominik-zeglen
- Fix translation discard button - #4109 by @benekex2
- Fix draftail options and icons - #4132 by @benekex2
- Fix typos and messages in Dashboard 2.0 - #4168 by @benekex2
- Fix view all orders button - #4173 by @benekex2
- Fix visibility card view - #4198 by @benekex2
- Fix query refetch after selecting an object in list - #4272 by @dominik-zeglen
- Fix image selection in variants - #4270 by @benekex2
- Fix collection search - #4267 by @dominik-zeglen
- Fix quantity height in draft order edit - #4273 by @benekex2
- Fix checkbox clickable area size - #4280 by @dominik-zeglen
- Fix breaking object selection in menu section - #4282 by @dominik-zeglen
- Reset selected items when tab switch - #4268 by @benekex2
Other notable changes
- Add support for Google Cloud Storage - #4127 by @chetabahana
- Adding a nonexistent variant to checkout no longer crashes - #4166 by @NyanKiyoshi
- Disable storage of Celery results - #4169 by @NyanKiyoshi
- Disable polling in Playground - #4188 by @maarcingebala
- Cleanup code for updated function names and unused argument - #4090 by @jxltom
- Users can now add multiple "Add to Cart" forms in a single page - #4165 by @NyanKiyoshi
- Fix incorrect argument in
get_client_tokenin Braintree integration - #4182 by @maarcingebala
- Fix resolving attribute values when transforming them to HStore - #4161 by @maarcingebala
- Fix wrong calculation of subtotal in cart page - #4145 by @korycins
- Fix margin calculations when product/variant price is set to zero - #4170 by @MahmoudRizk
- Fix applying discounts in checkout's subtotal calculation in API - #4192 by @maarcingebala
- Fix GATEWAYS_ENUM to always contain all implemented payment gateways - #4108 by @koradon
There are a bunch of exciting things that we're now working on right now to improve Saleor.
Saleor is highly customizable, but one trade-off that comes with it is the difficulty of upgrading to new versions after any customizations were made. We're investigating better approaches to customization with the use of plugin architecture which would allow integrating the Saleor flow with custom logic.
A proper attribute structure is a crucial factor for many businesses when presenting their products in the system. We want to make attributes in Saleor more flexible and allow them to be created independently from product types, as well as giving extra control over their visibility in the storefront's faceted search or product detail pages.
Advanced product list capabilities
Dashboard's product list will also become a lot more flexible. We're currently designing a new version in which users will be able to customize the visible columns, reorder them, and edit products with in-line forms.
Lastly, we're getting a lot of questions regarding multi-vendor support in Saleor on our social channels. Right now we're focused on developing the default, single-vendor version and our cloud solution, but we want to assure everyone that it is a feature we want just as much as you do, and we'll keep it on our radar.
A big thank you
For those of you who are interested in contributing to the project, we prepared a bunch of issues labeled as help wanted. Don't worry if you don't fully understand the problem - our team will try to guide you and answer all your questions. Remember to check our channels on Gitter and Spectrum; they serve best if you have quick questions that don't require opening an issue on GitHub.
Make sure to check out the article about this release on our blog!