November was marked by the first PrestaShop Developer Conference in Paris.

Core Monthly banner

PrestaShop Developer Conference

On November 30th, PrestaShop organized its first developer conference in Paris. The event was a great success, with around 150 attendees, over 25 speakers, and almost 20 talks. It was a great opportunity to discuss best practices for working with PrestaShop software, exchange experiences between developers and discuss PrestaShop development.

The great turnout proved to everyone we need more events of that type. A key element of the whole event was the great agenda and speakers who shared their knowledge with others. We were able to hear about CI/CD processes in large agencies working with PrestaShop, how to handle development of PrestaShop modules better, we learned more about security, how some processes work inside the PrestaShop open source project and much more.

For those who could not be with us: I have great news! We are working with speakers to develop content based on their talks. We will be posting articles on the blog in the next few weeks and inviting them to speak during the Live Update. We want to make sure that the knowledge shared by the speakers during the conference is made available to others. Stay tuned!

Live Update

Speaking of Live Updade, we didn’t have it last month due to the fact that everyone was focused on the developer conference, but we are back this month! The next Live Update for the PrestaShop Project will happen on Wednesday, December 20th, 2023 at 4 pm (Paris time) on YouTube.

During the Live Update, we will go over the latest project updates and present two topics from the developer conference. We’ll share more details soon.

PrestaShop 8.1.3

The next patch version of PrestaShop 8.1.3 was originally scheduled to be released in December, but due to the fact that we are still working on this version we decided to postpone the release to January.

What can you expect from 8.1.3? There are quite a few bugfixes, including some significant ones. One pull request fixes the bug of missing stock change information for combinations for modules. This could have caused a lot of problems because the Hook informing them of such a fact was not running correctly.

Also a bug was fixed that caused JavaScript problems and thus product management in the back office on the new product page.

There’s more to explore, so for a full list of changes you should definitely take a look here.

PrestaShop 9

Work on the new major version of PrestaShop is not slowing down, as you can see by reviewing the list of code changes that have been merged into the core. As usual, the main release is a great opportunity to clean up some things and improve existing ones. It’s also the big new features you’ve been waiting for.

In the changes that are being made, you can see a great deal related to the back office migration to Symfony. The SymfonyLayout project still requires a few things but the whole project is slowly approaching completion. You can see the details in EPIC available on our GitHub.

The other big project that is part of PrestaShop 9 is, of course, the implementation of ApiPlatform to create a full-fledged API for the back office. It’s a big project, but the whole thing is taking shape. As those who had the opportunity to be at the PrestaShop Developer Conference already know, the feature will be available in PrestaShop 9. Thanks to its modularity, it will be possible for the whole community to work on making a better API coverage, so back office events like adding products, categories, changing configurations or managing discounts, will be implemented as soon as possible. If you want to know more about the API, I invite you to the next Live Update, where we will talk about it in more detail.

Another thing worth mentioning is updated jQuery, but not only in front office or back office, it has been updated everywhere thanks to work from @Hlavtox. You can see all the details in the Upgrade jquery to latest version, drop polyfills PR. This is a big change that definitely can impact your modules, so please check it out and make sure your modules are compatible with the new version of jQuery.

The new major versions also allow us to change, or fix, behaviors that don’t quite work as they should and needed such changes. An example? Today, what happens when a product is added to the shopping cart, and it is only available in quantities of 1 item? We will see a message on the product card that says that the product is no longer available. This could cause confusion for shoppers, sometimes they leave the store thinking someone was faster than them and made an earlier purchase. Starting with PrestaShop 9, the whole thing will work differently. You’ll have an option to Inform customers about quantity in cart.

Thanks to @Hlavtox, we also have some other interesting changes:

As you can see, the new version is not just a cleanup and changes under the hood. It’s also changes that will realistically improve the user experience, whether it’s for customers who buy from stores on PrestaShop software, or for merchants.

Modules

The first module release that should catch your attention is certainly blockreassurance. New 5.1.4 version fixes some security bugs so don’t forget to update.

Another noteworthy module is the official integration with Google Analytics 4. The module has undergone quite a few changes, and version 5 is in the testing phase at the moment.

The comments module has changed as well (although changes not yet published). The JavaScript code responsible for fetching them has been migrataed to vanilla JS, and instead of relying on jQuery it now uses natively available fetch().

This is not the end! There’s also a new version of the shopping cart module that brings sizable performance improvements. You can see the details of their implementation here, and they are available in version 3.0 of the module.

Welcome to Dominik Shaim Ulrich, new PrestaShop committer

In November we welcomed a new PrestaShop committer - [@ShaiMagal](Dominik Shaim Ulrich), community member from Czech Republic and founder of OpenServis, company specialized in the PrestaShop hosting and support. Dominik is an experienced developer who works with PrestaShop since 2012, and he’s been contributing to the project for a while now. We’re happy to have him on board, and we’re looking forward to working with him! You can see a list of all committers on the PrestaShop project website.

PrestaShop Flashlight

The PrestaShop Flashlight project that was presented during October’s Live Update welcomed new improvements. There are so many changes that it’s hard to list them all so I invite you to the Flashlight repository, where you can track the changes, see a refreshed user guide, usage examples and much, much more.

Developer Documentation

In the documentation for developers, in addition to some fixes and minor changes, we also presented a brand new section explaining how to work with Symfony forms in PrestaShop. You can see the documentation itself here.

Project releases

A quick update about PrestaShop’s GitHub issues and pull requests:

Code changes in the ‘develop’ branch

Back office

  • #34696: Customer group commands for edition and deletion. Thank you, @jolelievre
  • #34653: Type protected and private methods of legacy admin controllers. Thank you, @Hlavtox
  • #34569: Change module translation domains, make sure it’s discoverable by the…. Thank you, @Hlavtox
  • #34560: Handle backward compatibility for smarty context. Thank you, @M0rgan01
  • #34528: Update 2 old links to PrestaShop site and github on BO login page. Thank you, @Uthanien
  • #34497: Dynamize scopes from DB into access token endpoint, resource resource server no checks only the JWT token content. Thank you, @tleon
  • #34394: Fix on asset links for the symfony layout. Thank you, @M0rgan01
  • #34390: Context refactorisation for controller. Thank you, @M0rgan01
  • #34147: Refactor shop initialization into listeners . Thank you, @matthieu-rolland

Core

FO + BO + CO

  • #34382: Upgrade jquery to latest version, drop polyfills. Thank you, @Hlavtox

Front office

Tests

  • #34730: Bump @typescript-eslint/parser from 6.10.0 to 6.13.1 in /tests/UI. Thank you, @dependabot
  • #34729: Bump @typescript-eslint/eslint-plugin from 6.11.0 to 6.13.1 in /tests/UI. Thank you, @dependabot
  • #34712: Cron Update Modules : Update tests/UI/data/demo/modules.ts. Thank you, @Progi1984
  • #34697: Functional tests - Fix random error in ‘BO:catalog:07-08’ and ‘BO:shop-parameters:01-02’. Thank you, @nesrineabdmouleh
  • #34690: Functional tests - Fix nightly ‘BO > Advanced parameters > Administration> Update quota’. Thank you, @nesrineabdmouleh
  • #34688: Bump typescript from 5.2.2 to 5.3.2 in /tests/UI. Thank you, @dependabot
  • #34687: Bump mysql2 from 3.6.3 to 3.6.5 in /tests/UI. Thank you, @dependabot
  • #34686: Bump @types/mocha from 10.0.4 to 10.0.6 in /tests/UI. Thank you, @dependabot
  • #34684: Bump @types/chai from 4.3.10 to 4.3.11 in /tests/UI. Thank you, @dependabot
  • #34663: Functional Tests : Theme Customization module - Reset module. Thank you, @Progi1984
  • #34662: Functional tests - Add new test ‘Administration > Check quota’. Thank you, @nesrineabdmouleh
  • #34661: Functional Tests : Theme Customization module - Advanced Customization tab. Thank you, @Progi1984
  • #34650: Functional Tests : Cash on delivery (COD) module - Place an order with it. Thank you, @Progi1984
  • #34635: Nightly : Fixed campaigns/functional/WS/02*. Thank you, @Progi1984
  • #34626: Functional tests - Add new test ‘Administration > Notifications’. Thank you, @nesrineabdmouleh
  • #34619: Bump @faker-js/faker from 8.2.0 to 8.3.1 in /tests/UI. Thank you, @dependabot
  • #34618: Bump @typescript-eslint/eslint-plugin from 6.10.0 to 6.11.0 in /tests/UI. Thank you, @dependabot
  • #34616: Bump playwright from 1.39.0 to 1.40.0 in /tests/UI. Thank you, @dependabot
  • #34615: Bump eslint from 8.53.0 to 8.54.0 in /tests/UI. Thank you, @dependabot
  • #34608: Functional tests - Add new test ‘Multistore > Multistore options’. Thank you, @nesrineabdmouleh
  • #34590: Functional tests - Fix random error in ‘Nightly tests (develop, functional:BO:catalog:01-02)’. Thank you, @nesrineabdmouleh
  • #34584: Functional tests - Add new test ‘Shop parameters > Round mode’. Thank you, @nesrineabdmouleh
  • #34577: Functional Tests : WS - Orders : CRUD. Thank you, @Progi1984
  • #34573: Functional tests - Add new test ‘Shop parameters > Enable/Disable iframes’. Thank you, @nesrineabdmouleh
  • #34565: Functional tests - Add new test ‘Shop Parameters > Enable/disable display best sellers page’. Thank you, @nesrineabdmouleh
  • #34561: Functional tests - Add new test ‘Shop parameters > Filter, sort, pagination and bulk actions search’. Thank you, @nesrineabdmouleh
  • #34553: Functional Tests : API : GET /api/hooks/{id}. Thank you, @Progi1984
  • #34549: Functional tests - Fix random errors in the nightly (Modules and Catalog campaigns). Thank you, @nesrineabdmouleh
  • #34546: Functional Tests : API : GET /api/api-access/{apiAccessId}. Thank you, @Progi1984
  • #34545: Bump @types/mochawesome from 6.2.3 to 6.2.4 in /tests/UI. Thank you, @dependabot
  • #34544: Bump @typescript-eslint/parser from 6.9.1 to 6.10.0 in /tests/UI. Thank you, @dependabot
  • #34543: Bump @types/mocha from 10.0.3 to 10.0.4 in /tests/UI. Thank you, @dependabot
  • #34542: Bump @types/chai-string from 1.4.4 to 1.4.5 in /tests/UI. Thank you, @dependabot
  • #34541: Bump @types/libsodium-wrappers from 0.7.12 to 0.7.13 in /tests/UI. Thank you, @dependabot
  • #34540: Bump @typescript-eslint/eslint-plugin from 6.9.1 to 6.10.0 in /tests/UI. Thank you, @dependabot
  • #34539: Bump @types/chai from 4.3.9 to 4.3.10 in /tests/UI. Thank you, @dependabot
  • #34520: Functional tests - Add new test and refacto “BO > Shop parameters > Product settings”. Thank you, @nesrineabdmouleh
  • #34515: Documentation to help run UI tests locally (Linux distribution). Thank you, @M0rgan01
  • #34514: Functional Tests : API : GET /api/hook-status/{id}. Thank you, @Progi1984
  • #34511: Functional tests - Refacto tests in ‘BO > Shop parameters > Customer settings’. Thank you, @nesrineabdmouleh
  • #34502: Functional tests - Refacto ‘BO > International > Translations’ tests. Thank you, @nesrineabdmouleh
  • #34501: Nightly : Fixed campaigns/modules/blockwishlist/02*/02* & campaigns/functional/BO/14*/12*/02*. Thank you, @Progi1984
  • #34494: Functional Tests : functional/BO/14*/12*/* : Changes for Scopes. Thank you, @Progi1984
  • #34478: Nightly : Fixed functional/BO/04*/02*/02*. Thank you, @Progi1984
  • #34476: Bump @typescript-eslint/eslint-plugin from 6.9.0 to 6.9.1 in /tests/UI. Thank you, @dependabot
  • #34475: Bump mysql2 from 3.6.2 to 3.6.3 in /tests/UI. Thank you, @dependabot
  • #34474: Bump eslint from 8.52.0 to 8.53.0 in /tests/UI. Thank you, @dependabot
  • #34473: Bump @typescript-eslint/parser from 6.9.0 to 6.9.1 in /tests/UI. Thank you, @dependabot
  • #34467: Functional Tests : FO - Menu and Navigation : Side block categories. Thank you, @Progi1984
  • #34466: Functional tests - Add new test ‘FO > Menu and navigation > Check breadcrumb links’. Thank you, @nesrineabdmouleh
  • #34465: Functional Tests : FO - Checkout - Payment - Choose a payment method. Thank you, @Progi1984
  • #34463: Functional tests - Add new test ‘FO > Cart > Display of modal when adding a product to cart’. Thank you, @nesrineabdmouleh
  • #34461: Nightly : Fixed campaigns/functional/BO/05*/01*/06*. Thank you, @Progi1984
  • #34459: Functional Tests : functional/BO/14*/12*/03* : Changes for Token Lifetime. Thank you, @Progi1984
  • #34456: Functional tests - Add new test ‘FO > Personal information > Order as a guest’. Thank you, @nesrineabdmouleh
  • #34449: Functional tests - Add new test ‘FO> Menu and navigation > Clear one filter’. Thank you, @nesrineabdmouleh
  • #34446: Functional tests - Fix product v2 multistore test after the fix of #34197. Thank you, @nesrineabdmouleh
  • #34422: Functional Tests : functional/BO/14*/12*/02* : Changes for Client Secret. Thank you, @Progi1984

Code changes in the ‘8.1.x’ branch

Back office

  • #34647: Add empty string check for price in Catalog price rules. Thank you, @M0rgan01
  • #34625: Add hook “actionUpdateQuantity” in product v2. Thank you, @M0rgan01
  • #34600: Remove unnecessary Jquery selector in SerpApp.. Thank you, @M0rgan01
  • #34563: Update wording of add to cart from list setting. Thank you, @Hlavtox
  • #34537: Minimal quantity should be 1 at least, not 0!. Thank you, @ShaiMagal
  • #34491: Improve error message on login page. Thank you, @Hlavtox
  • #34441: Fixed SQL apostrophe (’) incompatibility. Thank you, @Lunyyx
  • #34438: Fix BO CSV import - broken functionality. Thank you, @ShaiMagal

Core

FO / BO / CO

Front office

Code changes in modules, themes and tools

Auto Upgrade module

  • #656: Normalize NULL data in database. Thank you, @M0rgan01
  • #655: Fill sessions with data after adding the column. Thank you, @Hlavtox
  • #654: Remove usage of unused code. Thank you, @Hlavtox
  • #653: Remove tab link. Thank you, @Hlavtox
  • #652: Fix some files not being deleted. Thank you, @Hlavtox
  • #651: Fix missing files from folders containing install. Thank you, @Hlavtox
  • #649: Upgrade github actions to v3. Thank you, @leemyongpakvn
  • #646: Minimal_quantity should be 1 at least, not 0!. Thank you, @ShaiMagal
  • #644: Bump axios from 0.21.2 to 1.6.0 in /tests/e2e. Thank you, @dependabot
  • #643: Show which file was trying to be closed when error on close. Thank you, @tswfi
  • #639: Change the APE field validation to match all formats. Thank you, @alexandrebak42
  • #616: Remove 1.6 related code. Thank you, @Hlavtox

Automated tests on Pull Requests

Bootstrap-compatibility-layer

  • #12: Remove JQuery methods because also implemented into Bootstrap 5. Thank you, @ga-devfront
  • #11: chore(deps-dev): bump @babel/traverse from 7.22.8 to 7.23.3. Thank you, @dependabot
  • #10: chore(deps-dev): bump postcss from 8.4.25 to 8.4.31. Thank you, @dependabot
  • #9: feat: improve example section. Thank you, @tblivet
  • #8: Fix data attributes on dom update. Thank you, @ga-devfront

Catalog evaluation statistics module

Catalog statistics module

Changes in developer documentation sources

Check payment module

  • #65: Release 2.1.0. Thank you, @Hlavtox
  • #64: Bump to 2.1.0 and remove payment.php. Thank you, @matks

Circuit Breaker

  • #47: Add 8.1 & 8.2 PHP versions for CI. Thank you, @boherm
  • #46: Fix cs-fixer for CI. Thank you, @boherm
  • #45: Migrate Guzzle to Symfony Http Client. Thank you, @boherm

Customer reassurance block module

Dashboard Products module

Distribution API Client

  • #31: Migrate deprecated DoctrineProvider to new one. Thank you, @boherm

Example modules

  • #168: Update README.md about demoformdataproviders hook. Thank you, @thomasnares
  • #167: Display product extra content hook example. Thank you, @thomasnares
  • #164: Bump browserify-sign from 4.0.4 to 4.2.2 in /example_module_mailtheme. Thank you, @dependabot

Faceted search module

Google Analytics module

  • #150: Fix remaining issues in order tracking. Thank you, @Hlavtox

Google Sitemap module

Issues Bot

  • #117: build(deps-dev): bump @babel/traverse from 7.8.4 to 7.23.2. Thank you, @dependabot

Kanbanbot

  • #32: Bump symfony/webhook from 6.3.0 to 6.3.8. Thank you, @dependabot

Keycloak_connector_demo

  • #40: Renamed used interface in KeyCloakResourceServer. Thank you, @nicosomb
  • #39: Bump phpstan/phpstan from 1.10.44 to 1.10.46. Thank you, @dependabot
  • #37: Bump phpstan/phpstan from 1.10.43 to 1.10.44. Thank you, @dependabot
  • #36: Bump phpstan/phpstan from 1.10.41 to 1.10.43. Thank you, @dependabot
  • #35: Bump phpstan/phpstan from 1.10.40 to 1.10.41. Thank you, @dependabot

LocalizationFiles

  • #47: Update czech localization pack to reflect changes in the core. Thank you, @Hlavtox

Module Releases Monitor

PHP Developer Tools

Payment example module

  • #19: Update README to link to recent documentation. Thank you, @thomasnares

PrestaShop test scenarios

Prestashop-flashlight

  • #28: chore(packaging): publish a php-x.y tag. Thank you, @jokesterfr
  • #27: feat(toolbox): add make support. Thank you, @jokesterfr
  • #26: feat(tooling): add php-cs-fixer. Thank you, @jokesterfr
  • #25: feat(build): Some improvements. Thank you, @Venatum
  • #24: chore(build): PS_VERSION as a tag if the recommended PHP version is used. Thank you, @jokesterfr
  • #23: feat(php-tools): add phpstan and phpunit. Thank you, @jokesterfr
  • #21: feat(run): add post-install scripts support. Thank you, @jokesterfr
  • #20: chore(documentation): Add auto-install-modules example. Thank you, @jokesterfr

Presthubot

PrestonBot

Product Comments module

  • #190: If user mistakenly attempts to delete a comment, fail gracefully. Thank you, @matks
  • #189: Replace jQueryAJAX by FetchAPI. Thank you, @leemyongpakvn

Product details statistics module

PsFixturesCreator

  • #5: Generate features, associate them on product generation. Thank you, @jolelievre
  • #4: Improve attribute and combinations generation. Thank you, @jolelievre
  • #3: Add product combinations + refactor. Thank you, @matthieu-rolland

Ps_apiresources

  • #6: Add create and update endpoints for ApiAccess API. Thank you, @jolelievre

QA nightly results

Shopping cart module

  • #95: Release version 3.0.0. Thank you, @Hlavtox
  • #94: Remove deprecated class, bump version, use already presented cart. Thank you, @Hlavtox
  • #93: Update README.md. Thank you, @djoelleuch

The PrestaShop open source project

Wishlist block module


Thank you to the contributors whose pull requests were merged since the last Core Monthly Report: @Amazzing, @AureRita, @Hlavtox, @Kaikina, @LameuleFR, @Lunyyx, @M0rgan01, @Progi1984, @ShaiMagal, @Shoprunners, @Uthanien, @Venatum, @Zudjo, @alexandrebak42, @boherm, @buggyzap, @camlafit, @clotairer, @danilocarta, @dependabot, @djoelleuch, @ga-devfront, @github-actions, @hugofintecture, @idnovate, @jf-viguier, @jokesterfr, @jolelievre, @leemyongpakvn, @matks, @matthieu-rolland, @maxime-profileo, @mrkalchemy, @nesrineabdmouleh, @nicosomb, @tblivet, @the-ge, @thomasnares, @tleon, @tswfi!

Thank you to the contributors whose PRs haven’t been merged yet! And of course, a big thank you to all those who contribute with issues and comments on GitHub!

Coding is only just one of the ways you can contribute. Here are some ideas on how you can get involved in the project.

If you need help with contributing or have questions about it, feel free to contact me, @kpodemski, on the project’s Slack.

Happy contributin’ everyone!