Quantcast
Channel: PrestaShop Developers' blog
Viewing all 939 articles
Browse latest View live

PrestaShop Core Weekly - Week 40

$
0
0

This edition of the Core Weekly report highlights changes in PrestaShop core codebase during last week, from Monday 28th of September to Sunday 4th of October.

Milestones

We released version 1.6.1.2 RC3 this week, and we need you to test it! Install it on a server, use it as if it was a real store, and give us your feedback!

We also published a new article about PrestaShop $1M Fund for module developers. Check it out!

Finally, our very own @AlexEven published the September edition of her translation report: Do you speak PrestaShop?

Code changes in 1.6.1.x

Here are the merged pull-requests on the 1.6.1.x branch since the last Core Weekly Report!

Front office

  • 4110: Avoid Email validation Error on ajax request. Thank you @Eolia!
  • 4105: no localstorage with Safari private browsing, by @gRoussac.
  • 4096: Too much calls of findCombination, by @gRoussac.
  • 4072: could not see available vouchers when changing quantities, by @gRoussac.
  • 4094: Fix issues into ps_delivery table, by @gRoussac.
  • 4119: could not add to cart in quickview, by @gRoussac.
  • 4128: Fix bad redirect when PS_CART_REDIRECT, by @gRoussac.
  • 4125: Fix products links without correct anchor for attributes in shopping-cart, by @gRoussac.
  • 4153: Fix bad validation when empty zipcode validation pattern, by @gRoussac.
  • 4167: Fix performances issue with smarty custom, by @jocel1.

Back office

  • 4133: Property CustomerMessage->message is empty, by @gRoussac.
  • 4122: Fix bad utm_campaign, notice: Undefined index: lang_iso, by @gRoussac.
  • 4115: Fix wrong redirect after editing customer, by @gRoussac.
  • 4074: Remove back button message of expired POST data, by @gRoussac.
  • 4082: Fixed checking if module is trusted. Thank you @brouillon!

Core

  • 4111: Missing category param when update positions + duplicate call, by @gRoussac.
  • 4129: Could not disable third party modules, by @gRoussac.

Installer

Code changes in 1.7.0.0-develop

Now let’s review the merged pull-requests on the ‘develop’ branch since the last Core Weekly Report!

Note that the Start Theme repo (see next section) is entirely part of the PrestaShop 1.7.0.0 project.

Back office

  • 4147: Fix price display error (cldr currency) on product form, by @kelu95.
  • 4139: fix template currency sign, by @kelu95.
  • 4101: fix CLDR retro compatibility with legacy currency, by @kelu95.

Core

Code changes in Starter Theme

Finally, these are the merged pull-requests on the ‘feat/starter-theme’ branch since the last Core Weekly Report!

See all the PRs merged into the codebase since September 21st here.

Thank you to our contributors whose Pull Requests were merged since the last Core Weekly Report: brouillon and @Eolia. Also, 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 tickets on the Forge!

If you want to contribute to PrestaShop with code, read those:

…and if you do not know how to fix an issue but wish to report it, read this: How to use the Forge to contribute to PrestaShop. Thank you!

Happy contributin’ everyone!


PrestaShop Core Weekly - Week 41

$
0
0

This edition of the Core Weekly report highlights changes in PrestaShop core codebase during last week, from Monday 5th to Sunday 11th of October.

Notable happenings

  • In 4113, Core developer @gRoussac made it so that there is no confusion anymore between internal-team messages and messages sent to the customer.
  • In 6837, @gRoussac corrected a wrong behavior with product image thumbnail during import.
  • In 4164, Core contributor @prestamodule to multiple exclusion filter values in the web service (eg. filter[id]=![10|14|15]).
  • In 4176, Starter Theme developer @djfm made it so that Smarty automatically escapes HTML. Bye bye {$var|escape:'html':'UTF-8'}!
  • In 4181, @djfm added app-level events to keep the UI in sync.

Code changes in 1.6.1.x

Here are the merged pull-requests on the 1.6.1.x branch since the last Core Weekly Report!

Front office

  • 4079: Content hooked to ‘productListReviews’ is removed on dynamic list/grid update, by @gRoussac.
  • 4131: Fix notice Undefined index: nb_products, by @gRoussac.
  • 4137: Metas in maintenance mode, by @gRoussac.
  • 4236: Fix bad redirection on cart when minimum amount for order, by @gRoussac.

Back office

  • 4163: Remove old warning icon if no customer found when search one in create order. Thank you @prestamodule!
  • 4113: Fix confusion about private messages in AdminCustomerThreads, by @gRoussac.
  • 4117: Customer groups - remove enable status on customers, by @gRoussac.
  • 4127: Delete thumb on product import, by @gRoussac.
  • 4138: Fix exception on specific price amount import, by @gRoussac.
  • 4141: Fix bad redirect when deleting shopping cart rule in customer details view, by @gRoussac.
  • 4178: AdminCustomerController, one more string is now translatable, by @AlexEven.
  • 4223: Show stock warning on products less than 0. Thank you @PhpMadman!

Core

Web service

Translation

  • 4247: Translate install xml files to Swedish. Thank you @macroy!

Code changes in 1.7.0.0-develop

Now let’s review the merged pull-requests on the ‘develop’ branch since the last Core Weekly Report!

Note that the Start Theme repo (see next section) is entirely part of the PrestaShop 1.7.0.0 project.

Core

Code changes in Starter Theme

Finally, these are the merged pull-requests on the ‘feat/starter-theme’ branch since the last Core Weekly Report!

  • 4173: Checkout feature, by @djfm.
  • 4174: Multiple and default carrier(s) in cart, by @maximebiloe.
  • 4184: Improved Tests Documentation, by @djfm.
  • 4176: Core : Smarty now automatically escapes HTML, by @djfm.
  • 4181: Core : Added app level events to keep UI in sync, by @djfm.
  • 4191: Move sub-cats up into the main <section> to keep semantic relationship. Thank you @inetbiz!
  • 4198: Fixed JS Escaping, by @djfm.
  • 4216: Add some nofilter for addresses, by @julienbourdeau.
  • 4229: blockcontact replaces blockcontactinfos, by @djfm.

See all the PRs merged into the codebase since the last Core Weekly here.

Thank you to our contributors whose Pull Requests were merged since the last Core Weekly Report: @inetbiz, @macroy, @PhpMadman, @PrestanceDesign, @prestamodule, and @vAugagneur. Also, 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 tickets on the Forge!

If you want to contribute to PrestaShop with code, read those:

…and if you do not know how to fix an issue but wish to report it, read this: How to use the Forge to contribute to PrestaShop. Thank you!

Happy contributin’ everyone!

Test PrestaShop 1.6.1.2 RC4

$
0
0

Today we are releasing the fourth Release Candidate version of version 1.6.1.2.

Let’s be honest here: the RC2/RC3 was quite a mess, with last-minute issues which forced us to repackage the whole thing – twice! Turns out several pull-requests were merged at the last minute in order to fix more issues in this version, and these PR were not as thoroughly tested as they should have been.

So this RC4 took a bit more time than usual, all the while featuring much less changes than the previous RCs: we took the time to revise our workflow, have more eyes look at the code before it was merged, and merged fewer PRs in order to keep the RC focused.
This is actually a workflow which we intend to put in place for all our patch release: have less PR per patch release, while allowing us to make more regular patch releases altogether – remember that patch releases are just easy/small fixes, so an update to a patch release will always be easy, and won’t break anything in your current version.
Continuing on that thought, having more focused patch version should allow us to skip the RC period altogether, keeping it only for minor and major versions.

Of note: this RC4 features PR 4330, which is an attempt to fix the slowness issue that’s been plaguing PrestaShop 1.6 for several months now (the issue where the Save buttons would spin and be available for a larger-than-necessary amount of time). PLEASE PLEASE PLEASE give us your feedback on this fix!

This is the fourth release candidate for 1.6.1.2, and NOT the final, production-ready code! This is still a test version, and is therefore not yet deemed suitable for production use. Hence, do not upgrade your store just yet! Install the RC4 on your server (on as many server configurations as possible, please!), or upgrade from a clone of your real store.

Download and test PrestaShop 1.6.1.2 RC4 now!

Remember: if you have any feedback to give or issue to raise, create a ticket on the Forge!

Here is the list of pull-requests that the team has merged into 1.6.1.2 since the RC3 so far:

  • 4150: [-] FO : Fix performances issue with SpecificPrice (PSCSX-6942)
  • 4183: [-] IN: Wrong id_guest in cart.xml
  • 4196: [-] CORE : Undefined var
  • 4223: [-] BO: Show stock warning on products less then 0
  • 4225: [-] CORE : fix typo in getCMSContent
  • 4236: [-] FO : Fix bad redirection on cart when minimum amount for order
  • 4241: [-] CORE : Fix bad length for compagny field (address) for upgrade from < 1.5.2.0
  • 4144: [-] CORE : Could not edit a carrier
  • 4147: [*] TR : Translate install xml files to Swedish
  • 4260: [*] BO - wording
  • 4262: [-] BO : Fix bad escapes on products and carrier wizard
  • 4263: [-] BO : Fix pagination
  • 4267: [-] BO : Fix wrong pictures shown in AdminProducts
  • 4268: [-] BO : Notice in AdminCustomers
  • 4270: [-] FO : Added missing hook for AdvancedEU on accessories
  • 4275: [*] TR: update Swedish installer
  • 4277: [-] FO : Fix undefined var when no combinations
  • 4279: [-] CORE : cleanCompareProducts interval
  • 4281: [*] FO: theme.sql new demo address
  • 4324: // HELPER: Add brackets to multiple select name field
  • 4325: // Category must be an object, not an array
  • 4330: [*] BO : product tab async loading
  • 4331: // CORE: Only clean compare_product table if entry older than 1 week

The PrestaShop 1.6.1.2 RC4 changelog is also available.

This RC4 was made possible by the hard work of the PrestaShop Core Team, with additional commits by the following contributors: @macroy, @Mehdib92 and @PhpMadman.

If you too want to be part of the PrestaShop contributors, please read this!

And now, let’s test this thing!

PrestaShop Core Weekly - Week 42

$
0
0

This edition of the Core Weekly report highlights changes in PrestaShop core codebase during last week, from Monday 12th of October to Sunday 18th of October.

Milestones

Progress is being made on the develop branch (for 1.7) and the Starter Theme.

Code changes in 1.6.1.x

Here are the merged pull-requests on the 1.6.1.x branch since the last Core Weekly Report!

Front office

  • 4150: Fix performances issue with SpecificPrice, by @jocel1.

Back office

  • 4324: Add brackets to multiple select name field in Helper, by @tchauviere.
  • 4322: add product shipping fileds & carriers selector, by @kelu95.
  • 4248: Add versioning to addJS to renew admin.js, by @gRoussac.

Core

  • 4325: category must be an object, not an array, by @maximebiloe.
  • 4171: SpecificPriceRule without conditions to id_product 0 instead of full products list, by @gRoussac.

Code changes in 1.7.0.0-develop

Now let’s review the merged pull-requests on the ‘develop’ branch since the last Core Weekly Report!

Note that the Start Theme repo (see next section) is entirely part of the PrestaShop 1.7.0.0 project.

Back office

  • 4306: product form, move all price infos to price tab, by @kelu95.
  • 4311: Catalog page, sorting of products, by @xGouley.
  • 4316: manage features on new product form, by @kelu95.
  • 4317: better display for new product form, by @kelu95.

Core

  • 4327: Add HookDispatcher, Hook to legacy bridge in service declaration, by @xGouley.

Installer

Unit Tests

  • 4321: Unit/Integration testing on ProductController, by @xGouley.

Translation

Code changes in Starter Theme

Finally, these are the merged pull-requests on the ‘feat/starter-theme’ branch since the last Core Weekly Report!

See all the PRs merged into the codebase since the last Core Weekly here.

Thank you to the contributor whose pull requests was merged since the last Core Weekly Report: @firstred. Also, 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 tickets on the Forge!

If you want to contribute to PrestaShop with code, read those:

…and if you do not know how to fix an issue but wish to report it, read this: How to use the Forge to contribute to PrestaShop. Thank you!

Happy contributin’ everyone!

Starter Theme: fresh news from the front #2

$
0
0

We already have more exciting news about the StarterTheme.

Last week, @djfm came up with a photo to summarize what we aim to do with the StarterTheme:

PrestaShop StarterTheme Test Suite

The StarterTheme is now part of PrestaShop/PrestaShop

When we started this project, we wanted to start from scratch so bad that we even wanted to have a standalone Git repository. After few days, we realized it wasn’t so easy, because we constantly needed to have the Core repository in sync with the StarterTheme repo.

So we merged the StarterTheme repo into the PrestaShop-develop (1.7) repo. The best part is that @djfm worked out a way to keep the whole commit history.

Basically, we had to move the StarterTheme repo into a subdirectory, then we merged it into the PrestaShop repo. For those looking to do the same in their own project, enjoy the command we used:

{% highlight bash %} git filter-branch –tree-filter ‘mkdir -p themes/StarterTheme; for f in *; do if ! [ $f = themes ]; then mv $f themes/StarterTheme; fi; done;’ HEAD {% endhighlight %}

Minimal CSS for developers

We decided from that the StarterTheme will ship with no CSS at all.

As we were developing various section of the theme, we needed some styles, at least to understand what we were looking at when testing. It also helps us improve the markup.

Those styles are only here to help developers get a better view of their work-in-progress. They are are inside the _dev folder, which will be removed from the “release package”.

The product page

The product page has been fully reworked. It’s now split into multiple partials (bits of code that can be reused), and all the logic in the templates has been removed!

We introduced a ProductPresenter object that prepares a $product array for the template. The product will be consistent through all the pages (product page, home page, category page, etc.).

Do you remember all the issues with the product page we used to have, such as this or this? It’s all over.

Here is a nice example for you.

Before

{% highlight smarty %} {if $product->show_price && !isset($restricted_country_mode) && !$PS_CATALOG_MODE} <div> <p class="our_price_display" itemprop="offers" itemscope itemtype="https://schema.org/Offer">{strip} {if $product->quantity > 0}{/if} {if $priceDisplay >= 0 && $priceDisplay <= 2} {convertPrice price=$productPrice|floatval} {if $tax_enabled && ((isset($display_tax_label) && $display_tax_label == 1) || !isset($display_tax_label))} {if $priceDisplay == 1} {l s=’tax excl.’}{else} {l s=’tax incl.’}{/if} {/if} {hook h=”displayProductPriceBlock” product=$product type=”price”} {/if} {/strip}</p> <p id=”reduction_percent” {if $productPriceWithoutReduction <= 0 || !$product->specificPrice || $product->specificPrice.reduction_type != ‘percentage’} style=”display:none;”{/if}>{strip} {if $product->specificPrice && $product->specificPrice.reduction_type == ‘percentage’}-{$product->specificPrice.reduction*100}%{/if} {/strip}</p> <p id=”reduction_amount” {if $productPriceWithoutReduction <= 0 || !$product->specificPrice || $product->specificPrice.reduction_type != ‘amount’ || $product->specificPrice.reduction|floatval ==0} style=”display:none”{/if}>{strip} {if $product->specificPrice && $product->specificPrice.reduction_type == ‘amount’ && $product->specificPrice.reduction|floatval !=0} -{convertPrice price=$productPriceWithoutReduction|floatval-$productPrice|floatval} {/if} {/strip}</p> <p id=”old_price”{if (!$product->specificPrice || !$product->specificPrice.reduction)} class=”hidden”{/if}>{strip} {if $priceDisplay >= 0 && $priceDisplay <= 2} {hook h=”displayProductPriceBlock” product=$product type=”old_price”} {if $productPriceWithoutReduction > $productPrice}{convertPrice price=$productPriceWithoutReduction|floatval}{/if}{if $productPriceWithoutReduction > $productPrice && $tax_enabled && $display_tax_label == 1} {if $priceDisplay == 1}{l s=’tax excl.’}{else}{l s=’tax incl.’}{/if}{/if} {/if} {/strip}</p> {if $priceDisplay == 2}
{strip} {convertPrice price=$product->getPrice(false, $smarty.const.NULL)} {l s=’tax excl.’} {/strip} {/if} </div>

{if $packItems|<a href='https://github.com/count' class='user-mention'>@count</a> && $productPrice < $product->getNoPackPrice()}
    <p class="pack_price">{l s='Instead of'} <span style="text-decoration: line-through;">{convertPrice price=$product->getNoPackPrice()}</span></p>
{/if}
{if $product->ecotax != 0}
    <p class="price-ecotax">{l s='Including'} <span id="ecotax_price_display">{if $priceDisplay == 2}{$ecotax_tax_exc|convertAndFormatPrice}{else}{$ecotax_tax_inc|convertAndFormatPrice}{/if}</span> {l s='for ecotax'}
        {if $product->specificPrice && $product->specificPrice.reduction}
        <br />{l s='(not impacted by the discount)'}
        {/if}
    </p>
{/if}
{if !empty($product->unity) && $product->unit_price_ratio > 0.000000}
    {math equation="pprice / punit_price" pprice=$productPrice  punit_price=$product->unit_price_ratio assign=unit_price}
    <p class="unit-price"><span id="unit_price_display">{convertPrice price=$unit_price}</span> {l s='per'} {$product->unity|escape:'html':'UTF-8'}</p>
    {hook h="displayProductPriceBlock" product=$product type="unit_price"}
{/if} {/if} {% endhighlight %}

After

{% highlight smarty %} {block name=”product_prices”} {if $product.show_price} <div class="product-prices"> {block name=”product_price”} <p class="product-price" itemprop="offers" itemscope itemtype="https://schema.org/Offer"> {$product.price} {if $display_taxes_label} {if $priceDisplay} {l s=’tax excl.’}{else} {l s=’tax incl.’}{/if} {/if} {hook h=”displayProductPriceBlock” product=$product type=”price”} </p> {/block}

  {block name="product_discount"}
    {if $product.has_discount}
      <p class="product-discount">
        <span class="regular-price">{$product.regular_price}</span>
        {if $product.discount_type === 'percentage'}
          <span class="discount-percentage">{$product.discount_percentage}</span>
        {/if}
        {hook h="displayProductPriceBlock" product=$product type="old_price"}
      </p>
    {/if}
  {/block}

  {block name="product_without_taxes"}
    {if $priceDisplay == 2}
      <p calss="product-without-taxes">{$product.price_tax_exc}</span> {l s='tax excl.'}</p>
    {/if}
  {/block}

  {block name="product_pack_price"}
    {if $displayPackPrice}
      <p class="product-pack-price">{l s='Instead of %s' sprintf=$noPackPrice}</span></p>
    {/if}
  {/block}

  {block name="product_ecotax"}
    {if $displayEcotax}
      <p class="price-ecotax">{l s='Including %s for ecotax' sprintf=$ecotax}
        {if $product.has_discount}
          {l s='(not impacted by the discount)'}
        {/if}
      </p>
    {/if}
  {/block}

  {block name="product_unit_price"}
    {if $displayUnitPrice}
      <p class="product-unit-price">{convertPrice price=$unit_price} {l s='per %s' sprintf=$product.unity}</p>
      {hook h="displayProductPriceBlock" product=$product type="unit_price"}
    {/if}
  {/block}

  {hook h="displayProductPriceBlock" product=$product type="weight" hook_origin='product_sheet'}
  {hook h="displayProductPriceBlock" product=$product type="after_price"}
</div>   {/if} {/block} {% endhighlight %}

Soon we’ll start using Ajax and Rivets.js to improve this page.

Notifications

If you ever worked with PrestaShop, surely you know $this->errors, the array where we store all error messages across the whole software. We now have introduced the same thing for success, info, warning. This may look like a small improvement but it’s actually a big step forward.

If you look at many templates in default-bootstrap, you’ll find a lot of pieces of code like this:

{% highlight smarty %} {if $category->id AND $category->active} // Do something {elseif $category->id} <p class="alert alert-warning">{l s=’This category is currently unavailable.’}</p> {/if} {% endhighlight %}

Hence the new notification arrays will help remove A LOT of logic from the templates.

Plus, now that messages are set in the controllers, they won’t change, which means that they can be translated easily.

Smarty

You may have noticed that Twig appeared in the back office. @xgouley and @kelu95 worked out a way to have both Twig and Smarty working side by side.

As of today, we don’t plan on using Twig for the front office, which means that all 1.7 frontend templates will be written in Smarty. No worries, your 1.6 theme will be adaptable to 1.7.

Secure by default

We told you from the begining that we wanted to escape all Smarty variables in PrestaShop 1.7.0.0. It’s done! If you want NOT to escape your Smarty vars, you’ll have to use nofilter.

{% highlight smarty %} <section id="content" class="page-content page-cms page-cms-{$cms.id}"> {$cms.content nofilter} </section> {% endhighlight %}

New functions and modifiers

We recently introduced a few Smarty helpers. They will be described in the upcoming theme documentation (yeah I swear there will be one!).

In the meantime, here is a little preview.

{url} function

{url} will help you generate any URL you need.

{% highlight smarty %} {url entity=cms id=2} {url entity=category id=3} {url entity=address id=1 params=[‘delete’ => true]}

…will generate, respectively:

http://prestashop.ps/en/content/2-legal-notice http://prestashop.ps/en/3-women http://prestashop.ps/en/address?id_address=1&delete=1

{% endhighlight %}

classname and classnames modifiers

The classname modifier will sanitize any string into a nice CSS class or id.

The classnames modifier will transform an array into class names (see example below).

{% highlight php %} // PHP $classes = [ ‘class1’ => true, ‘nice_layout’ => true, ‘another-class’ => false, ]

// Smarty class=”{$classes|classnames}”

…will generate:

class=”class1 nice-layout”

{% endhighlight %}

Integration tests

We are writing tests for the StarterTheme! You’ll be able to use them for your theme to ensure full-compatibilty.

Tests are written in JavaScript on top of Selenium, WebdriverIO and Chai.

If you want to launch the test suite or even write some new ones, you should read the existing documentation.

PrestaShop StarterTheme Test Suite

See you soon for more on the growth of the StarterTheme!

Release of PrestaShop 1.6.1.2

$
0
0

PrestaShop 1.6.1.2 is now available. This maintenance release closes 247 issues since version 1.6.1.1 (released on August 20th). As the version number indicates (as per our SemVer-like versioning), this is the second patch release for PrestaShop 1.6.1.0.

As readers of the Build devblog know quite well, this patch release has benefited from 4 RC versions before it was deemed stable enough to release.

More importantly to many merchants, we do believe this release fixes the long-standing issue of the slowness of the Product page.

About the slow Product page

A bit of history is necessary in order to understand where that slowness came from.

For the last few months, we have received feedback about the Product page’s “Save & Stay” button, which would keep spinning and remain unavailable for overly long, depending on the server configuration.

The reason why that button got slow a few months ago was a mix of several concomitant items:

  • The Product page has several tabs.
  • Clicking the “Save” button saves the whole product, therefore all the tabs.
  • If not all tabs are loaded at the moment the button is clicked (typically: load product page, quickly change one detail, save), there is an error. See PSCSX-1257.
  • The solution? Prevent form submission until all tabs are loaded, and thus, disable the button while the tabs are loading. Here goes: PSCFV-12359.
  • The consequence? On some server configurations (the entry-level ones, mostly), clicking on the “Save” button triggers several synchronous Ajax calls to the server, effectively preventing the button from releasing as soon as it is clicked.

In short, to solve an issue (write error when clicking on “Save”), we had to slow the availability of the Save button, thus creating frustration, and also creating issues for slow servers (HTTP 500 errors, etc.).

This got somehow worse in 1.6.1.0, with users reporting waiting time from 30s to several minutes. And we think the (seemingly simple) fact of switching from synchronous to asynchronous tab loading fixed the issues – at least, all the feedback we are receiving point in this direction.

The other changes

For a full list of changes, see the list of pull requests merged into the 1.6.1.x branch. Even more issues were fixed in 1.6.1.2 than in 1.6.1.1, the first maintenance release. We are pretty confident you will enjoy this release more than any other of recent times :)

Here are a few highlights for 1.6.1.2:

Front office

  • A new demo address is now in place. Sorry to our friends at Citroën!
  • Product comparison now takes the chosen interval into account.
  • Fixed a situation where customer could not see available vouchers.
  • Products are now sortied by name in the invoice. Easier picking!
  • The top menu was not always active on mobile, now it is!
  • Updates to the Swedish translation for the installer.
  • Czech translation added for the installer.
  • …and many more!

Back office

  • Product page tabs now load asynchronously (see section above). Wow, that feels better!
  • Several performance improvements.
  • Several fixes in multishop, warehouses and import tools.
  • Pagination is fixed in POST requests.
  • Carrier were not editable in certain situations, now they are again.
  • Fixed a case where third-party modules could not be disabled.
  • No more confusion between private and public messages in Customer Service.
  • Meta title and description now use textarea.
  • Fixed repetitive queries in specific prices.
  • You can now reset your invoice numbers (“Reset Invoice progressive number at beginning of the year” option), and add the year to it.
  • The invoice template function computeLayout() can now be overriden.
  • …and many more!

The PrestaShop 1.6.1.2 changelog is available, as well as its release notes (based on the 1.6.1.0 ones).

Since version 1.6.1.2 is a “patch” update to version 1.6.1.0, upgrading from that version will be as smooth as silk for everyone: features will work better, and modules & themes which worked fine on 1.6.1.0 will work just as well with 1.6.1.2.

This release had 36 contributors, both from PrestaShop and from the Community at large. A huge “thank you!” to each of them!

{% highlight text %} (adapted from the following Git command: git shortlog –summary –since=”2015-08-20” –until=”2015-10-30”) 9 Alexandra Even 1 Alfonso Jiménez 1 Amazzing 1 BMS-fenaille 4 brouillon 1 cgordenne 1 David Eschmeyer 1 David Gasperoni 1 David-Julian BUCH 2 DogSports 4 Eolia 4 Eric Rouvier 3 firstred 1 Francois Gaillard 168 Gregory Roussac 4 Gytis 1 hiousi 9 joce 18 Julien Bourdeau 4 Julien Martin 95 Jérôme Nadaud 4 Krystian Podemski 2 Luc Vandesype 1 MacRoy 2 Marius 29 Maxime Biloé 1 Mehdi BOUZIDI 4 Michael Dekker 1 PhpMadman 10 Presta Module 9 PrestaEdit 2 quadrateam 1 Rémi Gaillard 33 Thibaud Chauviere 2 Thomas N 5 Xavier Gouley {% endhighlight %}

…and let’s not forget the whole Product/Tech team here at PrestaShop, who double-checked the code before it was merged, and applied our QA tests!

Let’s go, upgrade your store(s)! Upgrading from 1.6.1.0 and 1.6.1.1 is completely safe, upgrades from a standard 1.6.0.x version should work just as well, and those upgrading from version 1.5, 1.4 or even 1.3 should take their time and pay attention to their modules, their theme and their custom modifications!

Download 1.6.1.2 now!

PrestaShop Core Weekly - Week 43

$
0
0

This edition of the Core Weekly report highlights changes in PrestaShop core codebase during last week, from Monday 19th of October to Sunday 25th of October.

Milestones

After four RCs version, we released PrestaShop 1.6.1.2! It’s most notable is to solve the Product page slowness issue: let us know how that works for you!
Incidentally, that explains the lack of activity on this version that week :)

More news about the Starter Theme! Read the whole series:

  • http://build.prestashop.com/news/starter-theme-kickoff/
  • http://build.prestashop.com/news/starter-theme-news/
  • http://build.prestashop.com/news/starter-theme-news-2/

Stay tuned, next week should see a flood of articles on Build :)

Code changes in 1.6.1.x

Here are the merged pull-requests on the 1.6.1.x branch since the last Core Weekly Report!

Front office

  • 4150: Fix performances issue with SpecificPrice, by @jocel1.

Code changes in 1.7.0.0-develop

Now let’s review the merged pull-requests on the ‘develop’ branch since the last Core Weekly Report!

Note that the Start Theme repo (see next section) is entirely part of the PrestaShop 1.7.0.0 project.

Back office

Core

  • 4311: Catalog page, sorting of products, by @xGouley.
  • 4171: SpecificPriceRule without conditions to id_product 0 instead of full products list, by @gRoussac.
  • 4327: Add HookDispatcher, Hook to legacy bridge in service declaration, by @xGouley.
  • 4331: Only clean compare_product table if entry older than 1 week, by @julienbourdeau.

Installer

Unit Tests

  • 4321: Unit/Integration testing on ProductController, by @xGouley.

Code changes in Starter Theme

Finally, these are the merged pull-requests on the ‘feat/starter-theme’ branch since the last Core Weekly Report!

See all the PRs merged into the codebase since the last Core Weekly here.

Thank you to the contributor whose pull requests was merged since the last Core Weekly Report: @gskema. Also, 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 tickets on the Forge!

If you want to contribute to PrestaShop with code, read those:

…and if you do not know how to fix an issue but wish to report it, read this: How to use the Forge to contribute to PrestaShop. Thank you!

Happy contributin’ everyone!

Let’s review pull requests!

$
0
0

Have you submitted code to PrestaShop’s Core codebase or any of its native module through a pull request on GitHub? Then read on!

The PrestaShop team has four main ways to get feedback from the Community:

  • The Support Forums, where we try to answer the most pressing matters (and there’s never enough hours in the day).
  • The Forge, our bugtracker, where users (both developers and merchants) report issues or suggest improvements, and the team handles them one by one, according to their complexity and impact.
  • The GitHub repository, where developers can submit code changes to the team through pull requests (hereafter “PR”). The repo contains the code for the Core of PrestaShop, as well as individual projects for each module.
  • The comments on the Build devblog. Hey, that’s here!

As anyone lurking on our GitHub repository knows, PRs have gotten from a trickle to a more steady flow of code suggestions, currently reaching more than 360 PRs just for the main project. Modules also have their share of PRs waiting.

While we are more than happy to see the Community involved, the current plans for version 1.7 of PrestaShop made it that until now, the devteam had little time to dive into all these PRs and separate the wheat from the chaff. I write “until now”, because we want to dedicate more time to our Community.

That’s where you, dear reader who contributed one or more PRs, can easily help us! If one of your past PR is still open, we want to help you either merge it into Core, or close it. Now’s the time to speak up – and comment :) Please read on!

How to proceed

Look at the pull requests that you have created in the past and ask yourself:

  • Is this still relevant?
  • Does this still need to be fixed?
  • Is the suggestion still valid?

If you answer “no” to any of the above questions, please leave a comment on GitHub explaining the situation, and close the pull request.

If you have answered “yes” to all the above questions, then let’s continue!

Now, please look at your code, and ask yourself:

  • Do the code changes you suggested at the time still apply?
  • Is there any conflict risk with the current code?
    GitHub should indicate this at the bottom of the PR’s page.
  • Can the solution be improved?
  • Does your patch follow the PSR-2 coding style?
    We adopted PSR-2 back in June 2015.
  • Is the PR made on the correct branch?
    It should be:
    • develop for an improvement or a bug fix targeted at the forthcoming 1.7.
    • 1.6.1.x for a bug fix for version 1.6.1.x (currently 1.6.1.2). PrestaShop 1.6 will not receive any new feature.
    • dev for a PR made on a module.

Here is a link to all the currently open pull requests in all of PrestaShop’s branches: https://github.com/PrestaShop/PrestaShop/pulls Remember that each module also has its own set of PRs!

Here’s how you can display all your pull requests submitted to the PrestaShop project:

  1. Display all your currently open pull requests: https://github.com/pulls.
  2. Open the “Organization” filter and choose “PrestaShop”.

A few tips

If a rewrite of your patch is needed, either because you can think of a better solution, or because PrestaShop’s codebase has changed since your proposal and thus your patch cannot be applied as-is, please take the time to upgrade your code! It would be of tremendous help to provide an updated patch, one that we can possibly apply more quickly.

If you aim at fixing version 1.5 or below, please port your code to the 1.6.1.x or develop branch. PrestaShop’s versions below 1.6 will not receive updates anymore, except for security issues.

By following these simple suggestions, you can help us go through the open PRs quicker, spot the real gems faster, and thus make PrestaShop a better e-commerce solution!

In any case, please leave a comment acknowledging that you aware of the PR’s situation, and willing to start working with us to have it possibly merged!

Thank you for giving us an update on every one of your open pull requests!


Our plan for more regular & focused patch versions

$
0
0

With the adoption of SemVer-like versioning, we know that patch version will only feature non-breaking changes, making it far safer to update to PrestaShop than ever before… and thus safer for us to release patch version more regularly.

We plan on adopting a new release process in order to give merchants and developers more predictable releases, with a higher level of transparency.

The goals

The goals of this new release process are thus:

  • Shorten the release cycle – have more patch versions, with a more focused scope (10-15 issues each), making them easier to apply.
  • Give more visibility to the contributing developers, and show that they are an essential part of PrestaShop.
  • Improve the experience for PrestaShop contributors, both on GitHub and on the Forge – without forgetting Crowdin or the forum.
  • Give time to the PrestaShop ecosystem to catch up with the upcoming major/minor versions.

The release process

In short: more regular and more focused patch versions.

Ever since we chose to follow a SemVer-like versioning, PrestaShop’s developers have wanted to manage the releases through a time-based model – meaning that we want to make regular releases rather than trying to find a balance between “let’s fix all the things!” and “merchants need a bug fix release as soon as possible!”

Now that we are ensuring that patch releases (which essentially retrocompatible bugfixes versions) are well-tested and more focused, we think we can provide our users with a more regular schedule.

This allows us to perfect the maintenance phase of PrestaShop 1.6 for the coming months. More on that very soon!

So, does that mean more updates are coming?

Yes!

All this means that we want to stop waiting to have 200 code changes before we release a patch version. We know that both merchants and developers need bug fixed NOW.

Since patch versions are built to be a safe upgrade for the current major or minor version, we think we owe it to you to release fixes more often – probably every 2-3 weeks, with 10-15 issues.

Note that this plan is only for patch versions (1.6.1.3, 1.6.1.4, etc.), NOT for minor versions (1.6.2.0, 1.6.3.0, etc.) nor for major versions (1.7.0.0, 1.8.0.0, etc.).

We are confident this system of safe patch versions will increase your trust in upgrading PrestaShop.

PrestaShop Core Weekly - Week 44

$
0
0

This edition of the Core Weekly report highlights changes in PrestaShop core codebase during last week, from Monday 26th of October to Sunday 1st of November.

Milestones

After pondering for a long time about old tickets and PRs, we chose to contact the author of all currently open submissions on the Forge and on GitHub in order to get their feedback and help us complete the required actions, and make it so that these tickets are not forgotten. We published an article about reviewing pull request this week on Build.

If you are the author of an old Forge ticket or of a waiting PR on GitHub, you must have received an e-mail about it this week.

This big call for feedback made it possible to restart the conversation with the Community on numerous topics, to get updated information which will help our team make a decision about what was submitted, and to close a good deal of submissions which were outdated (most notably 1.4 and 1.5 tickets, both versions which are not supported anymore apart from security updates).

The goal for us is to dive back into the submissions that are left in order to make sure that the Community has its say in the evolution of PrestaShop.

So if you receive such a call-for-update e-mail, please answer it! You don’t have to work on it right away, you don’t have to spend the whole weekend updating your commits against the latest version of the code: just do what you can on your own time, and we’ll see you on the finish line!

Thank you!

Code changes in 1.6.1.x

Here are the merged pull-requests on the 1.6.1.x branch since the last Core Weekly Report!

Front office

  • 4350: Fix wrong date check in specific price, by @jocel1.

Code changes in 1.7.0.0-develop

Now let’s review the merged pull-requests on the ‘develop’ branch since the last Core Weekly Report!

Note that the Start Theme repo (see next section) is entirely part of the PrestaShop 1.7.0.0 project.

Back office

  • 4337: add tracking for product without photo, price and description, by @kelu95.
  • 4345: fix Address creation blank page & onboarding crashing at login, by @xGouley.
  • 4320: add seo/sharing social field to new product form, by @kelu95.
  • 4347: Remove open graph title/description, by @kelu95.
  • 4355: Admin Catalog product page: responsive, +KPI, +category-tree jquery, by @xGouley.
  • 4358: removes intermediate Carrier page, by @xGouley.
  • 4365: Product page: JS for category tree, & thumbnails manager, by @xGouley.
  • 4366: manage combinations and combinations generator on new product form, by @kelu95.

Core

  • 4336: Convert “Eth” character to D in Tools::replaceAccentedChars. Thank you @gskema!
  • 4334: Hooks on new sfArchi for ProductController and twig, by @xGouley.
  • 4348: fix error when symfony clear the cache, by @kelu95.
  • 4343: Doctrine setting & first use of it (admin product filters), by @xGouley.
  • 4320: add seo/sharing social field to new product form, by @kelu95.
  • 4363: fix PHP error with the loaded prestashop swift class and the symfony one, by @kelu95.

Code changes in Starter Theme

Finally, these are the merged pull-requests on the ‘feat/starter-theme’ branch since the last Core Weekly Report!

See all the PRs merged into the codebase since the last Core Weekly here.

Thank you to the contributor whose pull requests was merged since the last Core Weekly Report: @gskema!. Also, 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 tickets on the Forge!

If you want to contribute to PrestaShop with code, read those:

…and if you do not know how to fix an issue but wish to report it, read this: How to use the Forge to contribute to PrestaShop. Thank you!

Happy contributin’ everyone!

PrestaShop Core Weekly - Week 45

$
0
0

This edition of the Core Weekly report highlights changes in PrestaShop core codebase during last week, from Monday 2nd of November to Sunday 8th of November.

Milestones

We’re working on patch version 1.6.1.3, and you can download the RC1 right now! The stable version should be released early next week.

Code changes in 1.7.0.0-develop

Now let’s review the merged pull-requests on the ‘develop’ branch since the last Core Weekly Report!

Note that the Starter Theme repo (see next section) is entirely part of the PrestaShop 1.7.0.0 project.

Back office

  • 4399: manage specific prices on new form product, by @kelu95.
  • 4403: fix img path on category tree js, by @kelu95.
  • 4406: fix ajax loading specific prices on new product, by @kelu95.
  • 4409: refacto form specific price, by @kelu95.
  • 4423: product form javascript refactorization, by @kelu95.

Core

  • 4390: Quantities support on new Admin product form, by @xGouley.
  • 4396: Add many hooks on productController, by @xGouley.
  • 4404: Refacto Form Types + move URLs generation from Controller action to Twig tpl, by @xGouley.
  • 4408: fix display price/number CLDR, by @kelu95.
  • 4410: Fix sorting product action SQL bug, by @xGouley.

Installer

  • 4361: SF2 parameters and production env creation, by @kelu95.

Code changes in Starter Theme

Finally, these are the merged pull-requests on the ‘feat/starter-theme’ branch since the last Core Weekly Report!

See all the PRs merged into the codebase since the last Core Weekly here.

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 tickets on the Forge!

If you want to contribute to PrestaShop with code, read those:

…and if you do not know how to fix an issue but wish to report it, read this: How to use the Forge to contribute to PrestaShop. Thank you!

Happy contributin’ everyone!

Do you speak PrestaShop? – October 2015 edition

$
0
0

Here is the new (and late) report to inform you of what has been going on PrestaShop translation project on Crowdin this October 2015.

But first, a quick reminder on what we call dependent languages, and how it works in Crowdin!

Dialects and dependent Languages

Some languages like German or Spanish are used in several countries (or regions) and each of these countries can have its own variations from the primary language. For this reason, these countries have a dedicated project like Austria or Mexico.

When you look at the translation progress, you’ll often see some lower completion (far from 100% completed) for such languages. It doesn’t mean the project won’t be fully translated in these languages in the end!

Indeed, when depending on another language, these local projects inherit from the existing translation of the main project. If you look at the “German, Austria” project, currently 1% translated, it means 1% of the strings have been adapted to the Austrian market. If you install the Austrian language in your shop, the remaining 99% will be translated in German: it is automatically fetched from the primary German project. Convenient!

Today, the following languages work this way:

  • English, Zimbabwe`
  • French, Quebec
  • German, Austria
  • German, Luxembourg
  • Portuguese, Brazilian
  • Spanish, Argentina
  • Spanish, Colombia
  • Spanish, Mexico
  • Spanish, Peru

So, if you’re working on one of these languages, you should focus on the translations specific to your region. No need to translate everything, it’s probably already been done!

If you have any question regarding about this, leave us a comment. And if you want to help adapting PrestaShop to these countries, join the translation project!

Now, let’s review what happened last month for PrestaShop translations.

All the figures and statistics are based on the 1.6.1.0 project.

Top contributors

A lot of you are working everyday on Crowdin to have PrestaShop available in many languages, and we can’t thank you enough for your dedication! Here are the most active translators and proofreaders for the month of October.

Top 10 translators in October:

 TranslatorLanguage# Words
1.alabasta79Malay5,890
2.Roy (rstvMacRoy)Swedish3,027
3.lolypop000Slovenian2,175
4.eleazarGerman1,660
5.Michael Dekker (mdekker)Dutch1,533
6.Cha (cafetango)Chinese (Trad.)1,524s
7.Ilyasov Ivan (tRACE)Russian1,019
8.Patrik Lindblom (extendus)Swedish810
9.KoralPolish752
10.Filip Filipović (filipfilipovic)Croatian670

Top 10 proofreaders in October:

 ProofreaderLanguage# Words
1.lolypop000Slovenian2,175
2.Patrik Lindblom (extendus)Swedish2,059
3.Morten Borg (mortenborg)Danish1,634
4.Michael Dekker (mdekker)Dutch1,568
5.Cha (cafetango)Chinese (Trad.)1,511
6.eleazarGerman1,438
7.KoralPolish856
8.Mic50Croatian782
9.Stamatis (breeze)Greek762
10.Filip Filipović (filipfilipovic)Croatian677

A big applause to them! And welcome to our new top contributors!

Complete translations

Fully translated languages

At the end of October, PrestaShop 1.6.1.0 was fully available (= 100% translated and validated) in 6 languages:

  • Bulgarian
  • Dutch
  • English
  • German
  • Slovenian
  • Swedish

98-99% translated languages

…and almost fully translated (and validated) in these 11 languages:

  • French
  • Indonesian
  • Italian
  • Lithuanian
  • Norwegian
  • Persian
  • Polish
  • Portuguese, Brazilian
  • Russian
  • Spanish
  • Swedish

The translators being very reactive (yes, thanks again!), these languages should be soon 100% translated (if not already by the time you read this).

Languages with the best evolution

In comparison with the previous month, the following languages had the best progress in October:

  • Khmer (+25% to reach 5% translated!)
  • Malay (+15% to reach 45% translated)
  • Spanish, Argentina (+8% to reach 26% translated)

October 2015 best translation progress

Congratulations to all our contributors for the hard work!

New languages

At the request of community members, we’ve recently added some new languages to the project. You can now translate PrestaShop in:

So don’t hesitate to join these!

Languages that need (more) proofreaders

A translated string will not be available in PrestaShop as long as it is not validated. For this reason, it’s important we should keep a good level of validated strings vs. translated strings, to make sure everyone benefits from the latest translations!

These languages (still) need you as proofreaders:

  • Turkish (92% translated vs 0% validated)
  • Slovak (77% vs 24%)
  • Ukrainian (97% vs 53%)
  • Galician (45% vs 11%)
  • Finnish (75% vs 58%)

October 2015 best translation progress

If you wish to help proofreading what has been translated, please contact me on Crowdin with the language you’d like to proofread. We need your help!

A word from the community

Here is an update on the latest initiatives from members of the translation community.

Spanish

Translator Jesús Ruiz García (jruiz - who’s also helping us with the Spanish documentation of PrestaShop, thank you Jesús!) has started a Spanish glossary, to make sure everybody uses the same terms for translation. It’s gathered under an online document here: Spanish glossary.

More information about it on Crowdin, with this discussion. If you want to help, get in touch with Jesús on Crowdin!

Turkish

Remember, Turkish translator ftugrul still wants to gather the Turkish community. Join the discussion on Crowdin forum to harmonize the translation and go forward with more proofreading.

Miscellaneous

  • 90 contributors joined the project this month, for a total of 2,329 members at the end of October. Welcome to them!
  • 61 members were active on the project this month.
  • A total of 26,374 words have been translated and 16,122 validated, in 34 different languages.

Again, we can’t thank you enough! <3

If you haven’t joined us on Crowdin yet, it’s never too late!

If you want to gather your fellow translators to work towards a better harmonization, start a glossary, or anything else, do let us know: we’ll include a word about it in the next monthly report.

Do you have a question, a remark? Don’t hesitate to leave a comment.

See you soon for the November report!

Release of PrestaShop 1.6.1.3

$
0
0

PrestaShop 1.6.1.3 is now available. This maintenance release closes 6 issues since version 1.6.1.2 (released on October 29th).

As the version number indicates (as per our SemVer-like versioning), this is the third patch release for PrestaShop 1.6.1.0.

It is also the first of our new release process for patch versions, which changes the way we plan and build patch releases so that they can be more focused and more regular.
This means that you can expect another small/focused patch release in a few weeks: 1.6.1.4 is already planned, and you can see it evolve right on GitHub. Version 1.6.1.3 benefitted from a RC period, which explains why it took so much time to be released. The next patch versions will be directly released, in order to fix bugs for you in a faster way.

Of note: MySQL 5.7 does not play well with PrestaShop 1.6 at the moment. A fix is planned for PrestaShop 1.7: see pull-request #4507, and once it is in place, it will be also fixed in version 1.6.1.4 so that PrestaShop 1.6 and MySQL 5.7 may finally work well together.

As usual, we do not recommend doing any upgrade and technical change to your store when you are running promotions leading to high traffic on your website. This counts double for our American merchants: you might want to until Black Friday and Cyber Monday are over before upgrading :)

We hope you enjoy this patch release!

The changes

For a full list of changes, see the list of pull requests merged into the 1.6.1.x branch.

Here are the changes that 1.6.1.3 brings:

  • Fix an issue where existing products couldn’t be changed if they had an overly long meta description.
  • Add id_order to order_details link to work without JavaScript.
  • Fix flush of local cache when adding a specific price.
  • Replace Swiss German with Germany German.
  • Fix fatal error in Product::getPublicPrice().
  • Fix for intra-EU VAT.

As you can see, there are very few changes, to ensure that the update path is easy.

The PrestaShop 1.6.1.3 changelog is available, as well as its release notes (based on the 1.6.1.0 ones).

Since version 1.6.1.3 is a “patch” update to version 1.6.1.0, upgrading from that version will be as smooth as silk for everyone: features will work better, and modules & themes which worked fine on 1.6.1.0 will work just as well with 1.6.1.3.

This release had 6 contributors, both from PrestaShop and from the Community at large. A huge “thank you!” to each of them!

Let’s go, upgrade your store(s)! Upgrading from 1.6.1.0-1.6.1.2 is completely safe, upgrades from a standard 1.6.0.x version should work just as well, and those upgrading from version 1.5, 1.4 or even 1.3 should take their time and pay attention to their modules, their theme and their custom modifications!

Download 1.6.1.3 now!

PrestaShop Core Weekly - Week 46-47

$
0
0

This edition of the Core Weekly report highlights changes in PrestaShop core codebase during last two weeks, from Monday 9th to Sunday 22nd of November.

Milestones

We released PrestaShop 1.6.1.3! You can download it now. It’s the first of our more regular and focused patch versions for PrestaShop 1.6. Expect 1.6.1.4 soon!

Want to help improve PrestaShop? Tell us what you think about the currently open pull-requests, or review your own! Thank you!

Code changes in 1.6.1.x

Here are the merged pull-requests on the 1.6.1.x branch since the last Core Weekly Report!

Front office

Back office

Core

Localization

*4302: Fix Intra-EU VAT. Thank you @firstred! *4385: Replaced Swiss German with Germany German, by @djfm.

Mails

*4369: Fixed bug in download_product.txt. Thank you @Nobodaddy!

Code changes in 1.7.0.0-develop

Now let’s review the merged pull-requests on the ‘develop’ branch since the last Core Weekly Report!

Note that the Starter Theme repo (see next section) is entirely part of the PrestaShop 1.7.0.0 project.

Text

  • 4387: Updated README.md to reflect current 1.7 knowledge, by @xBorderie.

Back office

  • 4431: Improve combination list display, by @kelu95.
  • 4466: manage product quantities parameters, by @kelu95.
  • 4493: manage product suppliers combinations configuration, by @kelu95.
  • 4498: manage product redirection strategy, by @kelu95.

Core

Code changes in Starter Theme

Finally, these are the merged pull-requests on the ‘feat/starter-theme’ branch since the last Core Weekly Report!

See all the PRs merged into the codebase since the last Core Weekly here.

Thank you to the contributors whose pull requests were merged since the last Core Weekly Report: @christianverardi, @Nobodaddy, @PrestaEdit, and @prestamodule! Also, 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 tickets on the Forge!

If you want to contribute to PrestaShop with code, read those:

…and if you do not know how to fix an issue but wish to report it, read this: How to use the Forge to contribute to PrestaShop. Thank you!

Happy contributin’ everyone!

The PrestaCrew is hiring more sailors

$
0
0

The team at PrestaShop is busy preparing what’s ahead for our e-commerce boat and community. There’s a lot coming and we’re looking for some extra hands to come aboard. So, what’s this all about?

Core team and Addons team hiring!

Developers at PrestaShop can thrive in two departments: the Core team and the Addons team.

The Core developers work on the future of the PrestaShop software.
Addons developers focus on building additional modules sold on our marketplace, and improving the Addons platform.

Mostly. The Core and Addons teams are way more than that!

What’s in there for you

  • An awesome team spirit
  • Some real technical challenges (if you’re here, you’ve probably read what we’re technically up to)
  • The tools of your choice: PhpStorm? Great! vim? Awesome! Atom? Sublime? Go ahead! Windows/Linux? We got ya covered!
  • Great offices at the heart of Paris’ tech scene
  • A fluffy mascot named Puff
  • Frequent team buildings and informal activities (music, sports, meetups)
  • A tasty welcome each morning (fruits, pastries)

Sometimes an image is worth thousands words. Joining PrestaShop, it’s this:

Yep, the PrestaCrew likes to have some fun

Let’s get serious

If this all sounds good to you, you can check out our current job offers here:

Core developer

Addons developer

And you can directly contact Claire, our amazing Recruitment Manager, to let her know you want to join the fun!

Claire Meuriot
claire.meuriot@prestashop.com


An update on the 1.7 architecture

$
0
0

Remember, back in May 2015, when we announced that we were building a new architecture for PrestaShop, with the first bits of code landing in version 1.6.1.0 (released in early July 2015)? Yeah, that was fun. But now that 1.7 is steaming ahead, it’s time to let you know about our updated plans about the new architecture…

A lot of things have changed since the release of 1.6.1.0. Let’s try to address the different aspects of it.

Summary

  • PrestaShop 1.7 will introduce a brand new architecture, based on the Symfony Framework, along with its Twig templating engine.
  • The new architecture will only be used in the back office for now, and at first (1.7) only for two pages of the back office: the Product page and the Modules page.
  • The rest of the back office will still use the legacy architecture from 1.5-1.6 – but they will be switched to the new architecture in later versions of PrestaShop
  • The two architectures will coexist while we switch more back office pages to the new architecture, in a transition phase that will take a few versions of PrestaShop.
  • Only modules that target the Product and Modules pages will need to see their templating code adapted.

Read on for more details!

Why does PrestaShop need a new architecture?

To put it bluntly: because the one currently in use is not getting any younger, and its age is really starting to show.

PrestaShop 1.5, released in mid-2012, was a huge overhaul of the codebase, introducing the multistore feature, the advanced stock management feature, a revised module API, and in general a Core rewritten in order to better follow MVC patterns. It was one heck of a ride, and while it took a few months to polish the features, the Community adopted it without hesitation.

PrestaShop 1.6, released in March 2014, kept most of the 1.5 architecture intact. Sure, it did introduce redesigned back- and front-office (both responsive, thanks to Bootstrap), as well as several great features such as the Dashboard with its KPIs, but the codebase behind it all remained by and large the same as the one introduced in version 1.5. It was nice to be able to tell the Community that their modules and themes should work as-is (or at least, with minimal adaptation).

All was fine and dandy, but even with the 1.5 rewrite, many parts of the code showed that they could use a more modern approach. Sure, it still did work as expected in 1.6, but already showed weaknesses here and there.

In 2015, while working on improving version 1.6 (which led us to v1.6.1.0), we took the decision to improve the situation: PrestaShop’s code needs to be more robust, more modular, and fully testable. As it was, this wasn’t easily possible in the 1.5-1.6 codebase. This led to a new architecture in v1.6.1.0, then once the 1.7 development was fully started, we made a few more tests and proofs-of-concepts.

We made our choice: PrestaShop 1.7 will introduce Symfony2 in its Core codebase. This major release will also be a great turn on the technical side of the application, but this change will be negotiated smoothly and over the long term: not everything will change with 1.7.

Since SymfonyCon Paris opens today, and the project is both celebrating its tenth anniversary and the release of Symfony 3.0, this is a good time to finally publish this article :)

Why did we choose to use a framework rather than upgrading our code?

Introducing a framework was decided in order to eventually get rid of the “home-made framework” part of the application, and most notably of its maintenance workload, which consumes too much time and is not our core business features (managing a cart, handling orders, calculating prices and taxes, generating invoices, etc.).

Using a proven and popular open-source framework will allow us to focus on our core business code with greater efficiency, while enjoying the stability of a globally recognized framework.

Why did we choose to use Symfony2?

Because it’s Symfony2, the new standard of PHP! It’s really leading the way in terms of code quality and project popularity.

But we also took a look at other options:

  • Lumen/Laravel:
    • It uses Symfony components, so it’s one more layer over Symfony;
    • It brings a lot of services that are not really useful to us for now.
  • Silex:
    • This is a minimalist framework, and then not really adapted to our needs.
    • No efficient route descriptor.
    • Based on an old version of Symfony components, so one more layer over Symfony.
  • Slim framework:
  • Zend framework:
    • This framework is a big competitor to Symfony, but its popularity is really waning.
    • Moreover, the Zend framework comes as a huge monolith. It could be a choice for a full rewrite of the code, but that’s bit an option right now.
  • Yii framework:
    • It’s also a monolith.
    • The community is quite small. Finding qualified developers to maintain the code will be very hard, both for ourselves and for PrestaShop agencies.

Which part of PrestaShop will be rewritten using Symfony?

PrestaShop 1.7 will not be 100% written in Symfony – in fact, only a fraction of the codebase will use Symfony for this version. We chose to follow a smoother transition patch: only the back office will be affected for now, and even then, we chose to focus the 1.7 effort on two pages – but two important ones: the Product page and the Modules page. Over the following versions of PrestaShop, each new Admin page will be switching to the new Symfony-based architecture.

The rewrite is not just behind-the-scene: along with the new architecture, we’re also revamping the design of the whole back office, and of these two pages in particular in order to improve the key user journeys within the interface. Our aim is to rework the navigation menu in order to make it clearer, ease the creation of products, and facilitate the discovery of modules. We are also planning a new onboarding, to help beginners set up their first store. More on that later!

There is no deeper integration of the framework for now: the object model and tools (notably those used by the modules) are still here. Only hooks called for the pages that have been switched (Products and Modules in 1.7, some others in later versions) will have to be adapted, because the interface will have changed, and the hooks’ parameters will have evolved a bit.

Will we switch from Smarty to Twig?

Twig is Symfony’s templating language. In version 1.7, it will be used for all pages that are rewritten to use Symfony (Product page and Modules page), but NOT for the global interface (menu, header, etc.) nor the non-rewritten pages, which will still use Smarty. The two templating engines will be available, side by side, during the transition phase.

Later versions of PrestaShop will have more back office pages rewritten to use Symfony, and thus using Twig. Eventually, the whole back office is expected to be using Twig.

Will the 1.6 modules still work?

In PrestaShop 1.7, Symfony will only be used for back office-specific features. Consequently, the only impacts on the 1.7, for contributors and developers, will be limited to an adaptation of hooks on the Products and Modules page. Modules targeting the other pages should not need to be adapted.

Module developers won’t need to develop in Symfony for now: the module API remains mostly the same, and Smarty is still used in non-rewritten pages. It will be necessary to use Symfony’s Twig templating engine for modules that target the rewritten pages, but the core code of the module should remain the same.

For the Product page in particular, we intend to have a switch button that will allow merchants to switch between the Legacy/Smarty version and the Symfony/Twig version. This is still being worked out, but it would allow the 1.6 modules which target that page to still work in 1.7, Smarty and all. That would give more time to developers to adapt their 1.6 modules.

Will the 1.6 themes still work?

PrestaShop 1.7 introduces a rethinking of the way themes work. This is not tied to new architecture nor to Symfony, but to the new Starter Theme and the best practices it follows.

Consequently, 1.6 themes will not work on 1.7: logic code is taken out of templates, controllers are now passing arrays instead of objects, the theme is secure by default, CSS classes are only for styling, no use of Bootstrap anymore, etc. The new way to build themes in 1.7, with a sturdy Starter Theme from which all theme developers will be able to build solid themes from the get-go, will allow the Community to create modern and durable themes.

What about…?

Have more questions about the new architecture or anything related to PrestaShop 1.7? We have created a dedicated forum for that. See you there!

PrestaShop Core Weekly - Week 48-49

$
0
0

This edition of the Core Weekly report highlights changes in PrestaShop core codebase during last two weeks, from Monday 23rd of November to Sunday 6th of December.

Milestones

We released PrestaShop 1.6.1.3! You can download it now. It’s the first of our more regular and focused patch versions for PrestaShop 1.6. Expect 1.6.1.4 soon!

You can follow the advancement of v1.6.1.4 by following its GitHub milestone.

Want to help improve PrestaShop? Tell us what you think about the currently open pull-requests (you can focus on the develop branch or the 1.6.1.x branch), or review your own! Thank you!

Code changes in 1.6.1.x

Here are the merged pull-requests on the 1.6.1.x branch since the last Core Weekly Report!

Core

Localization

  • 4256: Swedish, translate country.xml. Thank you @MacRoy!
  • 4258: Swedish - Update meta.xml. Thank you @MacRoy!
  • 4278: Update Dutch tabs. Fix spelling errors. Thank you @MacRoy!
  • 4299: Swedish - Update cms.xml. Thank you @MacRoy!

Code changes in 1.7.0.0-develop

Now let’s review the merged pull-requests on the ‘develop’ branch since the last Core Weekly Report!

Note that the Starter Theme repo (see next section) is entirely part of the PrestaShop 1.7.0.0 project.

Text

Back office

  • 4509: manage product pack items, by @kelu95.
  • 4514: Add php sf2 trans/transchoice parser for admin translation, by @kelu95.
  • 4522: manage multishop fields on product form, by @kelu95.
  • 4525: Advanced product management - product quantities support on new Product page, by @xGouley.
  • 4532: better display for displayAdminProductsExtra hook, by @xGouley.
  • 4533: Admin Product page: empty catalog page with new design, by @xGouley.
  • 4535: refacto product form DI, add some form fix, by @kelu95.
  • 4536: Fix Quty field disabled when ASM is disabled, by @xGouley.
  • 4538: refresh sf2 cache on clear cache from performance page, by @kelu95.

Core

  • 4511: refacto product core class call to avoid overrides, by @kelu95.
  • 4521: fix twig error with trans method, by @kelu95.

See all the PRs merged into the codebase since the last Core Weekly here.

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 tickets on the Forge!

If you want to contribute to PrestaShop with code, read those pages:

…and if you do not know how to fix an issue but wish to report it, read this: How to use the Forge to contribute to PrestaShop. Thank you!

Happy contributin’ everyone!

Do you speak PrestaShop? – November 2015 edition

$
0
0

Here is the new report to inform you of what has been going on PrestaShop translation project on Crowdin this November 2015.

Thanks to our most active contributors!

We’re reaching the end of the year and it’s time to look back on what happened in 2015. If you read these reports you’re probably starting to know the names of our most active contributors. It’s a small team of dedicated people who spend a lot of their time translating PrestaShop. We want to say a big thank you to them!

If you’re part of the translators and validators who made it to our top contributions in 2015: THANK YOU! You should have received a message from us via your Crowdin inbox, check it out, we have something for you :)

And if you haven’t made it to this list of top contributors yet, thanks anyway! We see what you do and every little translation counts. Merci !We Speak PrestaShop

Now, back to business, here are the figures for our translation project in November 2015, based on the 1.6.1.0 project.

Top contributors

A lot of you are working everyday on Crowdin to have PrestaShop available in many languages, and we can’t thank you enough for your dedication! Here are the most active translators and proofreaders for the month of October.

Top 10 translators in November:

 TranslatorLanguage# Words
1.Janne Wikman (vetoveljet)Finnish7,466
2.Ronny (rbuelund)Danish5,157
3.AndoniPomboBasque2,857
4.Mahdi Shad (ramtin2025)Persian2,460
5.Stanislav Yordanov (StanProg)Bulgarian2,067
6.DaoKakaoRussian2,003
7.KoralPolish1,744
8.Filip Filipović (filipfilipovic)Croatian1,624
9.Дмитрий Жашкевич (SupportPS)Ukrainian1,309
10.Enzo Ferrara (ferribbotte)Italian1,216

Top 10 proofreaders in November:

 ProofreaderLanguage# Words
1.Janne Wikman (vetoveljet)Finnish11,068
2.Morten Borg (mortenborg)Danish5,182
3.Mahdi Shad (ramtin2025)Persian4,430
4.DaoKakaoRussian2,184
5.Stanislav Yordanov (StanProg)Bulgarian2,067
6.KoralPolish1,744
7.Filip Filipović (filipfilipovic)1,717 
8.Patrik Lindblom (extendus)Swedish782
9.Enzo Ferrara (ferribbotte)Italian1,308
10.Vahur Suvi (spottraining)Estonian1,287

A big applause to them! And welcome to our new top contributors!

Complete translations

Fully translated languages

At the end of November, PrestaShop 1.6.1.0 was fully available (= 100% translated and validated) in 9 languages:

  • Croatian
  • Dutch
  • English
  • French
  • German
  • Italian
  • Polish
  • Slovenian
  • Swedish

98-99% translated languages

…and almost fully translated (and/or validated) in these 11 languages:

  • Bulgarian
  • Indonesian
  • Lithuanian
  • Norwegian
  • Persian
  • Portuguese, Brazilian
  • Russian
  • Spanish

The translators being very reactive (yes, thanks again!), these languages should be soon 100% translated (if not already by the time you read this).

Languages with the best evolution

In comparison with the previous month, the following languages had the best progress in November:

  • Basque (+19% to reach 25% translated)
  • Danish (+9% to reach 74% translated)
  • Finnish (+3% to reach 77% translated)

November 2015 best translation progress

Congratulations to all our contributors for the hard work!

Languages that need (more) proofreaders

A translated string will not be available in PrestaShop as long as it is not validated. For this reason, it’s important we should keep a good level of validated strings vs. translated strings, to make sure everyone benefits from the latest translations!

These languages (still) need you as proofreaders:

  • Turkish (92% translated vs 0% validated)
  • Slovak (77% vs 24%)
  • Ukrainian (97% vs 53%)
  • Galician (45% vs 11%)
  • Finnish (77% vs 57%)

November 2015 best translation progress

If you wish to help proofreading what has been translated, please contact me on Crowdin with the language you’d like to proofread. We need your help!

Miscellaneous

  • 71 contributors joined the project this month, for a total of 2,400 members at the end of November. Welcome to them!
  • 66 members were active on the project this month.
  • A total of 44,114 words (+67%) have been translated and 39,575 validated (+146%, wow!), in 36 different languages.

Again, we can’t thank you enough!

If you haven’t joined us on Crowdin yet, it’s never too late!

If you want to gather your fellow translators to work towards a better harmonization, start a glossary, or anything else, do let us know: we’ll include a word about it in the next monthly report.

Do you have a question, a remark? Don’t hesitate to leave a comment.

See you soon for the November report!

Starter Theme: fresh news from the front #3

$
0
0

It’s been a while since we gave you any news about the StarterTheme. So, let’s sum up what happened since Starter Theme: Fresh News From The Front #2.

Page layout

We don’t want to impose a 3 columns layout for template developers anymore. We want to make something more flexible. As a theme developer, you will be able to ship your theme with as many layouts as you want. For example you can have a full width layout, 2 columns split in 2 halves or one third/two third. Better yet, you can add hooks inside template so you can have specific sidebars. PrestaShop users will be able to select the wanted layout directly in the back office, among those supported by the theme.

Checkout process

We have removed the 5-steps checkout process. From now on, there will be the One-Page-Checkout only. Template designers will be able to easily transform it in other types of checkout by playing with JavaScript and CSS.

Another big change regarding the checkout process is that it will be displayed with a simplified and minimalistic layout, without any website decoration, in order to prevent the customers from being distracted during the checkout process.

By default, guest checkout will be enabled, so the password will be facultative. Customers will be re-invited to register at the end of the process. This way, we expect the purchase process to be much quicker and more effective.

The Starter Theme also displays a cart summary, without any actions possible, on the right. It allows the customer to always know what he is buying, how much it will cost him, etc.

PrestaShop New Checkout Process

Payment API

To provide the best user experience possible for customers, and to guarantee that PrestaShop orders respect the law in all countries, we implemented a new payment API. To do that, we chose to respect the strictest requirements we know about : the German ones.

The German requirements being strict doesn’t mean that the checkout process will be tedious. To the contrary, the way we need to structure the page to abide by German best practices results in a user experience that is very reassuring to customers and helps increase conversion rate.

For example, the Terms & Conditions checkbox is now displayed with the payment options, and there is only one button to pay.

That way, we have more control of the layout of payment options.

To help you to create or adapt your payment modules, we have reworked bankwire and developed paymentexample. This module is an example of what you can do. It implements 4 types of payment modules, working:

  • offline: call a simple URL, like bankwire or cheque

  • externally: call a simple URL but a third-party webserver processes the payment, like PayPal

  • embedded: write the credit card details on the website directly in a form, like Stripe

  • in iframe: payment form displayed inside an iframe, like Paypal Integral Evolution

{% highlight php %} // PHP public function hookPaymentOptions($params) { if (!$this->active) { return; }

if (!$this->checkCurrency($params[‘cart’])) { return; }

$this->getTemplateVarInfos();

$newOption = new PaymentOption(); $newOption->setCallToActionText($this->l(‘Pay by Bank Wire’)) ->setAction($this->context->link->getModuleLink($this->name, ‘validation’, array(), true)) ->setAdditionalInformation($this->context->smarty->fetch(implode(DIRECTORY_SEPARATOR, [DIR, ‘views’, ‘templates’, ‘front’, ‘payment_execution.tpl’]))) ->setLogo(Media::getMediaPath(PS_MODULE_DIR.$this->name.’/bankwire.jpg’));

$payment_options = [ $newOption, ];

return $payment_options; }

{% endhighlight %}

In order to simplify the .tpl and .js files for all the faceted navigation, pagination and search, and to remove all the calculation from the front office (which is one of the main purpose of the StarterTheme) we have fully rewritten the whole thing. @djfm was responsible for that part. It would be too complicated to easily explain or transcript the work here, so don’t hesitate to look at it on GitHub.

Accordind to standards, we have chosen to call “Filter” a value which helps us to find the corresponding products (like red, XL or a price range) and to call “Facet” a collection of filters (like color, size or price). From now on we’ll also refer to “Faceted navigation” when in previous version we were mentioning layered navigation.

One of the main innovations in this part of the theme is that now all product listing controllers (Manufacturer, Supplier, Search…) share the same behavior and can all delegate the search to modules in a nice, standard fashion. From now on, modules only need to do the search, no rendering.

Contact Form

We have transformed the contact form system into a widgetized module: Contact Form. You can now put your contact form anywhere easily. You can look at it on GitHub.

Cleaning

Some features will no longer be supported in PrestaShop 1.7:

  • We will ship 1.7 without the Live Edit. We will write a newer and better Theme Builder (its new name) later. That’s why we introduced the widget system.

  • We also removed the ThemeConfigurator which couldn’t be supported by another template than default-bootstrap. We would like to provide a module to configure all the template settings in one place. It will be reusable by every other template developers.


Next step: we need to merge the feat/starter-theme branch into the develop branch, and start using the StarterTheme to build the new default theme for 1.7.

We’re still listening to what you have to say about this project, so don’t hesitate to get involved and contribute. Join the party on the Trello board and Gitter!

PrestaShop Core Weekly - Week 50

$
0
0

This edition of the Core Weekly report highlights changes in PrestaShop core codebase during last two weeks, from Monday 7th to Sunday 13th of December.

Milestones

A couple of major articles recently landed on the Build devblog. They contain fresh information about 1.7.0.0, so if you missed them, here they are:

Additionnally, we are hiring more developers!

Want to help improve PrestaShop? Tell us what you think about the currently open pull-requests (you can focus on the develop branch or the 1.6.1.x branch), or review your own! Thank you!

Code changes in 1.6.1.x

Here are the merged pull-requests on the 1.6.1.x branch since the last Core Weekly Report!

Front office

  • 4170: update price from discount when changing quantity, by @kelu95.
  • 4243: Fix robots.txt rules for default language URLs. Thank you @gskema!
  • 4261: Fix bad impact price / currency + bad specific base price for combinations, by @gRoussac.

Back office

  • 4109: Fixed upgrade index specific_price table. Thank you @brouillon!
  • 4340: On product order, add unit product price without tax, by @kelu95.
  • 4374: Hide div results if #free_gift_off checked. Thank you @Eolia!
  • 4433: fixed translation bug in prestashop addons modal, by @kelu95.

Core

  • 4126: Update Cart.php with correct the shipping cost calculation method. Thank you @daresh!
  • 4227: Fix bad upload error check, by @gRoussac.
  • 4238: Fix notice in Cron search, by @gRoussac.
  • 3673: Avoid error if an address was deleted but id still exists in cart table, by @gRoussac. Thank you @Eolia!
  • 4242: Uploader setAcceptFiles case sensitivity, by @gRoussac.
  • 4570: Fix bad dependency injection on module upgrade, by @tchauviere.

Code changes in 1.7.0.0-develop

Now let’s review the merged pull-requests on the ‘develop’ branch since the last Core Weekly Report!

Note that the Starter Theme repo (see next section) is entirely part of the PrestaShop 1.7.0.0 project.

Back office

  • 4483: Double slider fix in catalog product page, by @xGouley.
  • 4554: Manage product customization, by @kelu95.
  • 4558: Product form: Extract name/type from tabs, multilanguage form field type system, by @xGouley.
  • 4561: Fix hook Twig function and remove switch back to old page button in prod, by @xGouley.

Core

  • 4549: PrestashopAutoload need alias.php - also generate bug when activation profiling, by @kelu95.
  • 4550: MySQL 5.7 Compatibility. Thank you @ianfunghk!
  • 4556: fix product model adapter when no customization defined, by @kelu95.
  • 4569: Add limit/orderBy/sortOrder in persistence, by @xGouley.

Code changes in Starter Theme

Finally, these are the merged pull-requests on the ‘feat/starter-theme’ branch since the last Core Weekly Report!

See all the PRs merged into the codebase since the last Core Weekly here.

Thank you to the contributors whose pull requests were merged since the last Core Weekly Report: @brouillon, @Eolia, @daresh, and @gskema! Also, 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 tickets on the Forge!

If you want to contribute to PrestaShop with code, read those pages:

…and if you do not know how to fix an issue but wish to report it, read this: How to use the Forge to contribute to PrestaShop. Thank you!

Happy contributin’ everyone!

Viewing all 939 articles
Browse latest View live