This changelog references changes done in Shopware 5.3 patch versions.
View all changes from v5.3.6...v5.3.7
- Changed input validation to fix non persistent XSS vulnerability in the frontend
- Changed timeout for store API requests
- Deprecated
articleIdcolumn ins_articles_attributestable, it will be removed in Shopware version 5.5 as it isn't used anymore since version 5.2
View all changes from v5.3.5...v5.3.6
- Changed logging of exceptions to not log 404 errors
- Added product sorting by stock facet
View all changes from v5.3.4...v5.3.5
- Added new filter event
Shopware_Modules_Order_SaveOrder_FilterAttributestoengine/Shopware/Core/sOrder.phpto allow modification of the Order's attributes - Added new notify until event
Shopware_Plugins_HttpCache_ShouldNotInvalidateCachetoengine/Shopware/Plugins/Default/Core/HttpCache/Bootstrap.phpto be notified when the cache for a model will be invalidated and be able to prevent it - Added new service
Shopware\Components\HttpCache\CacheRouteInstallerfor creating cache routes - Added smarty block
frontend_index_header_meta_description_twitterfortwitter:descriptionmeta tag - Added smarty block
frontend_index_header_meta_description_ogforog:descriptionmeta tag - Added EventEmitter to StateManager constructor
- Added translation for article
shippingtimefield - Added feed-id parameter to sw:product:feeds:refresh to refresh only a specific product feed
- Added sw:product:feeds:list command to show all product feeds
- Added possibility for the http cache component to ignore certain url parameters for the cache key. A set of default parameters will be provided in version 5.4
- Added new API endpoint /users which allows to manage the backend users. For more information, look here
- Added generatePassword method to engine/Shopware/Components/Random.php which allows to generate cryptographically secure passwords
- Added UserName and UserEmail validator in /engine/Shopware/Components/Auth
- Added hidden
sordernumberform fields to inquiry forms
- Changed the cache ids for the listing back to a instead of
- Changed the captcha validation with double-opt-in
- Changed the
createValueListFacetResultmethod ofProductAttributeFacetHandlerto display translations of attribute values in facet list - Changed the snippet export to specify the fallback language
- The tax id of the invoice address is now also used for deliveries to foreign countries if the invoice country and delivery country are marked to be tax free for companies and if the delivery address does not have a tax id
- Removed ambiguous variant cache ids from the emotion pages (
a<variantId>)
View all changes from v5.3.3...v5.3.4
- Added method
Shopware\Models\Shop\Repository::getById() - Added service
translation - Added smarty function
is_objectto the list of allowed functions - Added grunt task support for child themes so that their tasks are run as well by the Shopware grunt
- Added dispatch attributes to frontend
- Added initialization check for the "disable" and "enable" form field functionality of the TinyMCE component
- Added infinite sliding option to product slider
- Changed article attribute filter in API
- Changed the pagination of the blog by adding the filters to the pagination links
- Changed method
\Shopware\Components\SitemapXMLRepository::readCategoryUrlsto only export public category links - Changed method visibility of
\Shopware_Controllers_Backend_Search::createEntitySearchQueryfromprivatetopublic - Changed the
I amselect option for the registration: If it is deactivated in the backend, it effects only the registration - Changed the update, delete and insert backlog from product number to the main detail product number by variant and price model
- Changed payment type text legacy for
the_payment_has_been_ordered_by_hanseatic_bankto be more generic - Changed the snippet read operation: Snippets with numeric names are now possible
- Changed the creation of Cronjobs to insert active Cronjobs by a
cronjob.xml
- Removed the default option
touchControls: truefrom the instantiation of theswImageSlider
View all changes from v5.3.2...v5.3.3
- Added filtering of model fields with possibly insecure content
- Added new container parameter
active_pluginswhich contains an array of installed and active plugins - Added variables
image_small,image_large,image_original,link_rating_tabto product rating reminder email - Added SVG and WOFF files to the list of compressible mimetypes
- Added functionality to show the backend growl messages in each corner of the screen (configurable in basic settings)
- Added smarty block
backend/base/model/corner_positionfor corner position configuration model - Added smarty block
backend/base/store/corner_positionfor corner position configuration store - Added functionality to open the drop down menus of the main menu in the backend by using either mouse hover or mouse click (configurable in basic settings)
- Updated CustomerStream interface to improve usability
View all changes from v5.3.1...v5.3.2
- Added basic auth support for rest api
- Changed
engine/Library/Smarty/sysplugins/smarty_internal_write_file.phpin order to prevent race condition when creating directories concurrently - Support namespaces for controllers. The event
Enlight_Controller_Dispatcher_ControllerPath_{module}_{controller}now accepts a class name as return value to allow namespaces for controllers in plugins. - Changed representation of empty
conditionsins_customer_streamsto NULL instead of{}
View all changes from v5.2.27...v5.3.0
- Added config element
displayOnlySubShopVotesto display only shop assigned article votes - Added parameter
displayProgressOnSingleDeletetoShopware.grid.Panelto hide progress window on single delete action - Added parameter
expressioninShopware.listing.FilterPanelto allow define own query expressions - Added parameter
splitFieldstoShopware.model.Containerto configure fieldset column layout - Added interface
Shopware\Components\Captcha\CaptchaInterface - Added method
Shopware\Models\Order\Repository::getList() - Added method
Shopware\Models\Order\Repository::search() - Added method
Shopware\Models\Order\Repository::getDocuments() - Added method
Shopware\Models\Order\Repository::getDetails() - Added method
Shopware\Models\Order\Repository::getPayments() - Added responsive helper css/less classes in
_mixins/visibility-helper.less - Added method
Shopware\Bundle\MediaBundle\MediaServiceInterface::getFilesystem()for direct access to the media filesystem - Added config element
liveMigrationto enable or disable the media live migration - Added config element
displayListingBuyButtonto display listing buy button - Added service
shopware_search.batch_product_searchandshopware_search.batch_product_number_searchfor optimized product queries - Added support for callback methods and jQuery promises in
jQuery.overlayandjQuery.loadingIndicators - Added jQuery method
setLoading()to apply a loading indicator to an element$('selector').setLoading() - Added required attribute
data-facet-namefor filter elements - Added type for the filter panels
value-list-single - Added smarty block
frontend_listing_filter_facet_multi_selectionfor unified filter panel - Added smarty block
frontend_listing_filter_facet_multi_selection_flyoutfor unified filter panel - Added smarty block
frontend_listing_filter_facet_multi_selection_titlefor unified filter panel - Added smarty block
frontend_listing_filter_facet_multi_selection_iconfor unified filter panel - Added smarty block
frontend_listing_filter_facet_multi_selection_contentfor unified filter panel - Added smarty block
frontend_listing_filter_facet_multi_selection_listfor unified filter panel - Added smarty block
frontend_listing_filter_facet_multi_selection_optionfor unified filter panel - Added smarty block
frontend_listing_filter_facet_multi_selection_option_containerfor unified filter panel - Added smarty block
frontend_listing_filter_facet_multi_selection_inputfor unified filter panel - Added smarty block
frontend_listing_filter_facet_multi_selection_labelfor unified filter panel - Added service
Shopware\Bundle\StoreFrontBundle\Service\Core\CategoryDepthServiceto select categories by the given depth - Added jQuery event
plugin/swListing/fetchListingwhich allows to load listings, facet data or listing counts - Added config element
listingModeto switch listing reload behavior - Added jQuery event
action/fetchListingwhich allows to load listings, facet data or listing counts - Added property
pathtoShopware\Bundle\StoreFrontBundle\Struct\Mediawhich reflects the virtual path - Added service
Shopware\Bundle\StoreFrontBundle\Service\Core\BlogServiceto fetch blog entries by id - Added template
themes/Frontend/Bare/frontend/detail/content.tpl - Added template
themes/Frontend/Bare/frontend/detail/content/header.tpl - Added template
themes/Frontend/Bare/frontend/detail/content/buy_container.tpl - Added template
themes/Frontend/Bare/frontend/detail/content/tab_navigation.tpl - Added template
themes/Frontend/Bare/frontend/detail/content/tab_container.tpl - Added option to select variants in
Shopware.apps.Emotion.view.components.ArticleandShopware.apps.Emotion.view.components.ArticleSlider - Added local path to
@font-faceintegration of the Open Sans font - Added smarty block
frontend_register_billing_fieldset_company_panelfor registration - Added smarty block
frontend_register_billing_fieldset_company_titlefor registration - Added smarty block
frontend_register_billing_fieldset_company_bodyfor registration - Added smarty block
frontend_register_billing_fieldset_panelfor registration - Added smarty block
frontend_register_billing_fieldset_titlefor registration - Added smarty block
frontend_register_billing_fieldset_bodyfor registration - Added smarty block
frontend_register_index_cgroup_header_titlefor registration - Added smarty block
frontend_register_index_cgroup_header_bodyfor registration - Added smarty block
frontend_register_index_advantages_titlefor registration - Added smarty block
frontend_register_login_customer_titlefor registration - Added smarty block
frontend_register_personal_fieldset_panelfor registration - Added smarty block
frontend_register_personal_fieldset_titlefor registration - Added smarty block
frontend_register_personal_fieldset_bodyfor registration - Added smarty block
frontend_register_shipping_fieldset_panelfor registration - Added smarty block
frontend_register_shipping_fieldset_titlefor registration - Added smarty block
frontend_register_shipping_fieldset_bodyfor registration - Added global date picker component
frontend/_public/src/js/jquery.datepicker.jsto Responsive theme - Added filter facets for date and datetime fields
- Added template
themes/Frontend/Bare/frontend/listing/filter/facet-date.tplfor date and datetime facets - Added template
themes/Frontend/Bare/frontend/listing/filter/facet-date-multi.tplfor date and datetime facets - Added template
themes/Frontend/Bare/frontend/listing/filter/facet-date-range.tplfor date and datetime facets - Added template
themes/Frontend/Bare/frontend/listing/filter/facet-datetime.tplfor date and datetime facets - Added template
themes/Frontend/Bare/frontend/listing/filter/facet-datetime-multi.tplfor date and datetime facets - Added template
themes/Frontend/Bare/frontend/listing/filter/facet-datetime-range.tplfor date and datetime facets - Added JavaScript method
document.asyncReady()to register callbacks which fire after the main script was loaded asynchronously. - Added missing dependency
jquery.event.moveto thepackage.jsonfile. - Added template switch for
listing/index.tpltolisting/customer_stream.tplin case that the category contains a shopping world which is restricted to customer streams - Added database column
s_emarketing_vouchers.customer_stream_idsto restrict vouchers to customer streams. - Added database column
s_emotion.customer_stream_idsto restrict shopping worlds to customer streams. - Added database table
s_customer_streamsfor a list of all existing streams (Shopware\Models\CustomerStream\CustomerStream) - Added database table
s_customer_search_indexfor an fast customer search - Added database table
s_customer_streams_mappingfor mappings between customer and assigned streams - Added bundle
Shopware\Bundle\CustomerSearchBundlewhich defines how customers can be searched - Added bundle
Shopware\Bundle\CustomerSearchBundleDBALwhich allows to search for customers using DBAL - Added console command
sw:customer:search:index:populateto generate customer stream search index - Added console command
sw:customer:stream:index:populateto generate customer stream mapping table - Added flag
$hasCustomerStreamEmotioninfrontend/home/index.tplto switch between emotions restricted to customer streams and those which are unrestricted - Added route
/frontend/listing/layoutwhich loads the category page layout for customer streams. This route is called using{action ...}in case that the category contains an emotion with customer streams - Added route
/frontend/listing/listingwhich loads the category product listing. This route is called using{action ...}in case that the category contains an emotion with customer streams - Added entity
Shopware\Models\CustomerStream\CustomerStreamfor attribute single and multi selection. - Added translations for attribute labels. See below for more information.
- Added database structure for new emotion preset feature:
s_emotion_presets- contains all installed presetss_emotion_preset_translations- contains presets translations
- Added models for presets
Shopware\Models\Emotion\PresetShopware\Models\Emotion\PresetTranslation
- Added classes for handling emotion preset feature
Shopware\Components\Emotion\EmotionImporter- handle emotion importsShopware\Components\Emotion\EmotionExporter- handle emotion exportsShopware\Components\Emotion\Preset\EmotionToPresetDataTransformer- transform emotion to presetShopware\Components\Emotion\Preset\PresetDataSynchronizer- uses component handlers to support import / export of emotionsShopware\Components\Emotion\Preset\PresetInstaller- installer for preset pluginsShopware\Components\Emotion\Preset\PresetLoader- loads presets and refreshes preset data to match current databaseShopware\Components\Emotion\Preset\PresetMetaDataInterface- interface to use for preset plugin development
- Added API Resource for emotion presets
Shopware\Components\Api\Resource\EmotionPreset - Added backend controller for emotion presets
Shopware\Controllers\Backend\EmotionPresets - Added compiler pass to register emotion component handlers
Shopware\Components\DependencyInjection\Compiler\EmotionPresetCompilerPass - Added component handlers for asset import and export of shopping world elements
Shopware\Components\Emotion\Preset\ComponentHandler\BannderComponentHandlerShopware\Components\Emotion\Preset\ComponentHandler\BannerSliderComponentHandlerShopware\Components\Emotion\Preset\ComponentHandler\CategoryTeaserComponentHandlerShopware\Components\Emotion\Preset\ComponentHandler\Html5VideoComponentHandler
- Added new ExtJs views for emotion presets under
themes\backend\emotion\view\preset - Added new service tag for registering emotion preset component handlers
shopware.emotion.preset_component_handler - Added actions to import and export shopping worlds in
Shopware_Controllers_Backend_Emotion - Added condition class
Shopware\Bundle\SearchBundle\Condition\WidthCondition - Added condition class
Shopware\Bundle\SearchBundle\Condition\HeightCondition - Added condition class
Shopware\Bundle\SearchBundle\Condition\LengthCondition - Added condition class
Shopware\Bundle\SearchBundle\Condition\WeightCondition - Added facet class
Shopware\Bundle\SearchBundle\Facet\CombinedConditionFacet - Added facet class
Shopware\Bundle\SearchBundle\Facet\WidthFacet - Added facet class
Shopware\Bundle\SearchBundle\Facet\HeightFacet - Added facet class
Shopware\Bundle\SearchBundle\Facet\LengthFacet - Added facet class
Shopware\Bundle\SearchBundle\Facet\WeightFacet - Added
Shopware\Bundle\SearchBundleDBAL\VariantHelperwhich joins all variants for dbal search - Added smarty blocks
frontend_checkout_shipping_payment_core_button_topandfrontend_checkout_shipping_payment_core_button_topfor shipping - Added new Interface for facet result template switch
Shopware\Bundle\SearchBundle\TemplateSwitchable - Added new service
Shopware\Bundle\MediaBundle\CdnOptimizerServicefor optimizing remote images on CDNs - Added option to control target attribute for external links in categories
- Added database column
s_category.external_target - Added property
externalTargetinShopware\Bundle\StoreFrontBundle\Struct\Category - Added property
externalTargetinShopware\Models\Category\Category - Added property
externalTargetinShopware\themes\Backend\ExtJs\backend\category\model\detail - Added translations for field labels and combo box options
- Added database column
- Added
selecttreeandcombotreeconfig elements for plugins - Added backend configuration option for the newsletter to configure if a captcha is required to subscribe to the newsletter
- Added two new Smarty blocks for menu and menu item overwrite possibility to the account sidebar
- Added LiveReload mode for the default grunt which reloads your browser window automatically after the grunt compilation was successful
- Added
nofollowattribute to all links in the blockfrontend_account_menusince these links are now visible in the frontend if the account dropdown menu is activated - Added
typeparameter toShopware_Controllers_Widgets_Listing::productSliderActionandShopware_Controllers_Widgets_Listing::productsActionwhich allows to load product sliders or product boxes. - Added new search builder class
Shopware\Components\Model\SearchBuilder - Added new search builder as __construct parameter in
Shopware\Bundle\AttributeBundle\Repository\Searcher\GenericSearcher - Added new
FunctionNodefor IF-ELSE statements in ORM query builder - Added
/addressto robots.txt - Added snippet
DetailBuyActionAddNameinsnippets/frontend/detail/buy.ini - Added
Shopware\Components\Template\Securityclass for all requests. - Added whitelist for allowed php functions and php modifiers in smarty
- template_security.php_modifiers
- template_security.php_functions
- Added new option
showPagingToolbartoShopware.DragAndDropSelector.js. Default isfalse. - Added proper expandability to the manual 'SEO URL generation' and the 'HttpCache Warmer' window in
themes/Backend/ExtJs/backend/performance/view/main/multi_request_tasks.js - Added new filter event
Shopware_Controllers_Performance_filterCountstoengine/Shopware/Controllers/Backend/Performance.phpto add custom count of the HttpCache warmer URLs - Added new filter event
Shopware_Controllers_Seo_filterCountstoengine/Shopware/Plugins/Default/Core/RebuildIndex/Controllers/Seo.phpto add a custom SEO URL count - Added new notify event
Shopware_CronJob_RefreshSeoIndex_CreateRewriteTabletoengine/Shopware/Plugins/Default/Core/RebuildIndex/Bootstrap.phpto be notified when the SEO URLs are generated via cronjob - Added new column
do_not_splitto tables_search_fields. Activate to store the values of this field as given into the search index. If not active, the default behaviour is used - Added new service
shopware_storefront.price_calculatorwhich calculates the product price. Was formerly a private method inshopware_storefront.price_calculation_service - Added service
shopware_media.extension_mappingto provide a customizable whitelist for media file extensions and their type mapping
- Updated
FPDFto 1.8.1 - Updated
FPDIto 1.6.1 - Updated
flatpickrto 2.5.7 - Updated
jqueryto 2.2.4 - Updated
gruntto 1.0.1 - Updated
grunt-contrib-cleanto 1.1.0 - Updated
grunt-contrib-copyto 1.0.0 - Updated
Modernizrto 3.5.0 - Changed theme path for new plugins from
/resourcesinto/Resources - Changed sorting of
Shopware.listing.FilterPanelfields - Changed database column
s_articles_vote.answer_dateto allowNULLvalues - Changed
LastArticleplugin config elementsshow,controllerandtimeto be prefixed withlastarticles_ - Changed product listings in shopping worlds to only be loaded if
showListingis true - Changed sql query in
sAdminqueries which uses a sub query for address compatibility, following functions affected:sAdmin::sGetDispatchBasketsAdmin::sGetPremiumDispatchessAdmin::sGetPremiumDispatchSurcharge
- Changed attribute type
stringmapping to mysqlTEXTtype. String and single selection data type supports no longer a sql default value. - Changed
roundPrettyvalue for currency range filter - Changed
CategoryFacetbehavior to generate each time a tree based on the system category with a configured category depth - Changed facet templates
facet-radio,facet-media-listandfacet-value-listinto one template - Renamed parameter
data-count-ctrlon#filterform todata-listing-url - Changed removal version of method
Shopware\Components\Model\ModelManager::addAttributeto 5.4 - Changed removal version of method
Shopware\Components\Model\ModelManager::removeAttributeto 5.4 - Changed template
component_article_slider.tplto show provided products instead of always fetching them via ajax - Changed emotion preview to not save the current state before showing preview
- Changed command
sw:thumbnail:cleanupto search the filesystem to remove orphaned thumbnails - Changed configuration
defaultListingSortingfrom the performance module to basic settings incategories / listings - Changed the jQuery plugin
src/js/jquery.selectbox-replacement.jsto be used only as a polyfill. Use the CSS-only version for select fields instead. - Changed template filename from
frontend/forms/elements.tpltofrontend/forms/form-elements.tpl - Changed smarty block from
frontend_forms_index_elementstofrontend_forms_index_form_elements - Changed smarty blocks from
frontend_forms_elements*tofrontend_forms_form_elements* - Changed template file
themes/Frontend/Bare/frontend/detail/index.tplto split it into separated files - Changed property
linkDetailsof$sArticle - Changed the article url to also contain the order number of the product
- Changed the product selection to variant selection in
Shopware.apps.Emotion.view.components.BannerMapping - Changed the integration of
modernizr.jsand added it to the compressed main JavaScript files - Changed the script tag for the generated JavaScript file for asynchronous loading, can be changed in theme configuration
- Changed the inline script for the statistics update to vanilla JavaScript
- Changed event name from
plugin/swAjaxProductNavigation/onSetProductStatetoplugin/swAjaxProductNavigation/onGetProductState - Changed behavior of the smarty rendering in forms fields comment. See below for more information
- Changed behavior of the tracking url rendering. See below for more information
- Changed database column
s_articles_details.instockto allowNULLvalues and default to0 - Backend customer listing is now loaded in
Shopware_Controllers_Backend_CustomerQuickView - Refactored backend customer module. Please take a look into the different template files to see what has changed.
- Changed parameter order of
Shopware\Bundle\SearchBundle\FacetResult\RangeFacetResult::__construct()and added$suffixand$digits. - Changed selection fields in the voucher module.
shopware-form-field-single-selectionis now used instead of the nativecomboboxxtype andshopware-form-field-product-gridis used for article restriction. - Changed templates to support custom targets for category links
themes/Frontend/Bare/frontend/index/main-navigation.tplthemes/Frontend/Bare/frontend/index/sidebar-categories.tplthemes/Frontend/Bare/frontend/sitemap/index.tplthemes/Frontend/Bare/frontend/sitemap/recurse.tplengine/Shopware/Plugins/Default/Frontend/AdvancedMenu/Views/frontend/advanced_menu/index.tpl
- Changed
engine\Shopware\Bundle\StoreFrontBundle\Gateway\DBAL\Hydrator\CategoryHydratorto support the custom target property - Changed
engine\Shopware\Bundle\StoreFrontBundle\Gateway\DBAL\FieldHelperto support the custom target property - Changed
engine\Shopware\Components\Compatibility\LegacyStructConverterto support the custom target property - Changed return values so the array keys are now the respective country/state IDs in
\Shopware\Bundle\StoreFrontBundle\Service\Core\LocationService::getCountries - Moved the removal of the whole cache folder after the removal of the
.jsand.cssfiles for better handling of huge caches in theclear_cache.shscript - Changed
Shopware_Controllers_Widgets_Listing::streamSliderActiontoShopware_Controllers_Widgets_Listing::streamAction - Changed
Shopware_Controllers_Widgets_Listing::productSliderActiontoShopware_Controllers_Widgets_Listing::productsAction - Changed snippet
DetailBuyActionAddinsnippets/frontend/detail/buy.ini, it now contains tags - Changed snippet
ListingBuyActionAddinsnippets/frontend/listing/box_article.ini, it now contains another tag - Merged
account/sidebar.tplandaccount/sidebar_personal.tpl - Moved snippets from
account/sidebar_personal.initoaccount/sidebar.ini
- Removed unused Zend Framework Components. See below for more information
- Removed support for Internet Explorer < 11
- Removed configuration option
sCOUNTRYSHIPPING - Removed variable
{$sShopname}from forms, use{sShopname}instead - Removed import / export module
- Removed ExtJS template
themes/Backend/ExtJs/backend/vote/view/vote/detail.js - Removed ExtJS template
themes/Backend/ExtJs/backend/vote/view/vote/edit.js - Removed ExtJS template
themes/Backend/ExtJs/backend/vote/view/vote/infopanel.js - Removed ExtJS template
themes/Backend/ExtJs/backend/vote/view/vote/list.js - Removed ExtJS template
themes/Backend/ExtJs/backend/vote/view/vote/toolbar.js - Removed ExtJS template
themes/Backend/ExtJs/backend/vote/view/vote/window.js - Removed ExtJS template
themes/Backend/ExtJs/backend/vote/controller/vote.js - Removed ExtJS template
themes/Backend/ExtJs/backend/vote/controller/vote.js - Removed database column
s_emarketing_lastarticles.articleName - Removed database column
s_emarketing_lastarticles.img - Removed default plugin
LastArticle, useshopware.components.last_articles_subscriberinstead - Removed session key
sLastArticle - Removed view variable
sLastActiveArticlefrom basket - Removed snippet
frontend/checkout/actions/CheckoutActionsLinkLast - Removed meta tag
fragment - Removed view variable
hasEscapedFragment - Removed method
Shopware\Models\Order\Repository::getBackendOrdersQueryBuilder() - Removed method
Shopware\Models\Order\Repository::getBackendOrdersQuery() - Removed method
Shopware\Models\Order\Repository::getBackendAdditionalOrderDataQuery() - Removed jQuery plugin method
showFallbackContentinjquery.emotion.js - Removed jQuery plugin method
hideFallbackContentinjquery.emotion.js - Removed jQuery plugin event
plugin/swEmotionLoader/onShowFallbackContentinjquery.emotion.js - Removed jQuery plugin event
plugin/swEmotionLoader/onHideFallbackContentinjquery.emotion.js - Removed alias support from
Enlight_Controller_Request_Request(getAlias,getAliases,setAlias) - Removed method
Shopware\Components\Model\ModelManager::__call() - Removed class
Enlight_Bootstrap - Removed parameter
$checkProxyfromEnlight_Controller_Request_Request::getClientIp() - Removed smarty block
frontend_search_category_filter - Removed template file
themes/Frontend/Bare/frontend/search/category-filter.tpl - Removed parameter
sCategoryfrom search controllerlisting/ajaxCountrequests - Removed smarty block
frontend_listing_filter_facet_media_list_flyout - Removed smarty block
frontend_listing_filter_facet_media_list_title - Removed smarty block
frontend_listing_filter_facet_media_list_icon - Removed smarty block
frontend_listing_filter_facet_media_list_content - Removed smarty block
frontend_listing_filter_facet_media_list_list - Removed smarty block
frontend_listing_filter_facet_media_list_option - Removed smarty block
frontend_listing_filter_facet_media_list_option_container - Removed smarty block
frontend_listing_filter_facet_media_list_input - Removed smarty block
frontend_listing_filter_facet_media_list_label - Removed smarty block
frontend_listing_filter_facet_radio_flyout - Removed smarty block
frontend_listing_filter_facet_radio_title - Removed smarty block
frontend_listing_filter_facet_radio_icon - Removed smarty block
frontend_listing_filter_facet_radio_content - Removed smarty block
frontend_listing_filter_facet_radio_list - Removed smarty block
frontend_listing_filter_facet_radio_option - Removed smarty block
frontend_listing_filter_facet_radio_option_container - Removed smarty block
frontend_listing_filter_facet_radio_input - Removed smarty block
frontend_listing_filter_facet_radio_label - Removed smarty block
frontend_listing_filter_facet_value_list_flyout - Removed smarty block
frontend_listing_filter_facet_value_list_title - Removed smarty block
frontend_listing_filter_facet_value_list_icon - Removed smarty block
frontend_listing_filter_facet_value_list_content - Removed smarty block
frontend_listing_filter_facet_value_list_list - Removed smarty block
frontend_listing_filter_facet_value_list_option - Removed smarty block
frontend_listing_filter_facet_value_list_option_container - Removed smarty block
frontend_listing_filter_facet_value_list_input - Removed smarty block
frontend_listing_filter_facet_value_list_label - Removed field
attributes.search.cheapest_pricefrom DBAL search query - Removed field
attributes.search.averagefrom DBAL search query - Removed join to
s_core_taxinShopware\Bundle\SearchBundleDBAL\ProductNumberSearch - Removed method
Shopware_Controllers_Widgets_Emotion::getEmotion() - Removed method
Shopware_Controllers_Widgets_Emotion::handleElement(), useShopware\Bundle\EmotionBundle\ComponentHandler\ComponentHandlerInterfaceinstead - Removed method
Shopware_Controllers_Widgets_Emotion::getRandomBlogEntry() - Removed method
Shopware_Controllers_Widgets_Emotion::getBlogEntry(), has been replaced byShopware\Bundle\EmotionBundle\ComponentHandler\BlogComponentHandler - Removed method
Shopware_Controllers_Widgets_Emotion::getCategoryTeaser(), has been replaced byShopware\Bundle\EmotionBundle\ComponentHandler\CategoryTeaserComponentHandler - Removed method
Shopware_Controllers_Widgets_Emotion::getBannerMappingLinks(), has been replaced byShopware\Bundle\EmotionBundle\ComponentHandler\BannerComponentHandler - Removed method
Shopware_Controllers_Widgets_Emotion::getManufacturerSlider(), has been replaced byShopware\Bundle\EmotionBundle\ComponentHandler\ManufacturerSliderComponentHandler - Removed method
Shopware_Controllers_Widgets_Emotion::getBannerSlider(), has been replaced byShopware\Bundle\EmotionBundle\ComponentHandler\BannerSliderComponentHandler - Removed method
Shopware_Controllers_Widgets_Emotion::getArticleSlider(), has been replaced byShopware\Bundle\EmotionBundle\ComponentHandler\ArticleSliderComponentHandler - Removed method
Shopware_Controllers_Widgets_Emotion::getHtml5Video(), has been replaced byShopware\Bundle\EmotionBundle\ComponentHandler\Html5VideoComponentHandler - Removed LESS variable
@zindex-fancy-select - Removed the jQuery plugin
src/js/jquery.selectbox-replacement.jscompletely - Removed LESS variable
@zindex-fancy-select - Removed smarty block
frontend_listing_actions_sort_field_relevance - Removed smarty block
frontend_listing_actions_sort_field_release - Removed smarty block
frontend_listing_actions_sort_field_rating - Removed smarty block
frontend_listing_actions_sort_field_price_asc - Removed smarty block
frontend_listing_actions_sort_field_price_desc - Removed smarty block
frontend_listing_actions_sort_field_name - Removed route
/backend/performance/listingSortings - Removed constants of
\Shopware\Bundle\SearchBundle\CriteriaRequestHandler\CoreCriteriaRequestHandlerandShopware\Bundle\SearchBundle\StoreFrontCriteriaFactory:SORTING_RELEASE_DATESORTING_POPULARITYSORTING_CHEAPEST_PRICESORTING_HIGHEST_PRICESORTING_PRODUCT_NAME_ASCSORTING_PRODUCT_NAME_DESCSORTING_SEARCH_RANKING
- Removed smarty modifier
rewrite - Removed less variable
@font-faceforextra-boldandlightof the Open Sans font type - Removed scrollbar styling on filter-panels (Selector:
.filter-panel--content) - Removed support for
.swffile type in the banner module - Removed smarty template block
frontend_listing_swf_bannerinthemes/Frontend/Bare/frontend/listing/banner.tpl - Removed the jQuery UI date picker integration in favour of a new global component
- Removed unused css class
.panel--list - Removed unused css class
.panel--arrow - Removed unused css class
.panel--tab-nav - Removed unused css class
.panel--filter-btn - Removed unused css class
.panel--filter-select - Removed unused css class
.js--mobile-tab-panel - Removed unused css class
.ribbon - Removed unused css class
.ribbon--content - Removed unused css class
.device--mobile - Removed unused css class
.device--tablet - Removed unused css class
.device--tablet-portrait - Removed unused css class
.device--tablet-landscape - Removed unused css class
.device--desktop - Removed
max-widthrule for.filter--activeinthemes/Frontend/Responsive/frontend/_public/src/less/_components/filter-panel.less - Removed unused field
s_core_countries.shippingfree - Removed
__country_shippingfreefield inShopware\Bundle\StoreFrontBundle\Gateway\DBAL\FieldHelper::getCountryFields - Removed
Shopware\Bundle\StoreFrontBundle\Struct\Country::setShippingFreeandShopware\Bundle\StoreFrontBundle\Struct\Country::isShippingFree - Removed
Shopware\Models\Country\Country::$shippingFree,Shopware\Models\Country\Country::setShippingFreeandShopware\Models\Country\Country::getShippingFree - Removed method
Shopware\Models\Customer\Repository::getListQueryBuilder - Removed method
Shopware\Models\Customer\Repository::getListQuery - Removed method
Shopware\Models\Customer\Repository::getBackendListCountedBuilder - Removed route
/backend/customer/getList - Removed ExtJS model
Shopware.apps.Customer.model.List - Removed ExtJS store
Shopware.apps.Customer.store.List - Removed obsolete ExtJS model
Shopware.apps.CanceledOrder.model.Customer - Removed less file
ie.lessfrom the Responsive Theme - Removed vendor prefixes
-msand-ofrom all mixins in the Bare and Responsive Theme - Removed file
jquery.ie-fixes.jsfrom the Responsive Theme - Removed polyfill
selectivizrfor CSS3 pseudo-classes & attribute selectors - Removed polyfill
placeholder - Removed polyfill
Respond.jsformin / max-widthmedia queries - Removed polyfill
matchMediafromjquery.state-manager.js. UseModernizr.mq()for the same functionality - Removed polyfill
requestAnimationFramefromjquery.state-manager.js - Removed polyfill
cancelAnimationFramefromjquery.state-manager.js - Removed cookie based polyfill
Storagefromjquery.storage-manager.js - Removed method
hasLocalStorageSupportfromjquery.storage-manager.js. Use Modernizr to detect the feature - Removed method
hasSessionStorageSupportfromjquery.storage-manager.js. Use Modernizr to detect the feature - Removed
html5shiv - Removed
modernizroptionInput attributes - Removed
modernizroptionForm input types - Removed
modernizroptionBorder radius - Removed
modernizroptionBox shadow - Removed
modernizroptionCSS gradient - Removed
modernizroptionCSS Transforms - Removed
modernizroptionCSS Transforms 3D - Removed
modernizroptionCSS Transitions - Removed event
Shopware_Plugins_HttpCache_ShouldNotCache - Removed
evalfrom blockfrontend_forms_index_headlineinindex.tplofthemes\Frontend\Bare\frontend\formsfor$sSupport.text - Removed cleanupPlugins from
Shopware\Bundle\PluginInstallerBundle\Service
- Deprecated
Shopware_Components_Convert_Csvwithout replacement, to be removed with 5.4 - Deprecated
Shopware_Components_Convert_Xmlwithout replacement, to be removed with 5.4 - Deprecated
Shopware_Components_Convert_Excelwithout replacement, to be removed with 5.4 - Deprecated
\Shopware_Controllers_Widgets_Listing::ajaxListingAction, use\Shopware_Controllers_Widgets_Listing::listingCountActioninstead - Deprecated method
sArticles::sGetAffectedSuppliers()without replacement, to be removed with 5.5 - Deprecated
Shopware\Models\Article\Element, to be removed with 6.0
A lot of zend framework components or their methods were unused. Here is a list of changes:
Zend_ControllerZend_NavigationZend_ViewZend_FormZend_PaginatorZend_CryptZend_OauthZend_DomZend_ServerZend_RestZend_StdlibZend_TextZend_DebugZend_RegistryZend_XmlRpcZend_SoapZend_ServiceZend_Filter_CompressZend_Filter_DecompressZend_Filter_EncryptZend_Filter_Decrypt
- Removed
Zend_Json_Decoder - Removed
Zend_Json_Encoder - Removed
Zend_Json_Expr - Option
enableJsonExprFinder - Removed property
Zend_Json::$useBuiltinEncoderDecoder - Removed property
Zend_Json::$maxRecursionDepthAllowed - Removed method
Zend_Json::fromXml()
- Removed
Zend_Loader_Autoloader - Removed
Zend_Loader_ClassMapAutoloader - Removed
Zend_Loader_StandardAutoloader - Removed
Zend_Loader_Autoloader_Resource - Removed method
Zend_Loader::autoload() - Removed method
Zend_Loader::registerAutoload()
- Removed unused adapters like Db2, Mysqli, Oracle, Ibm, MsSql, Oci, PgSQL, Sqlsrv
- Removed
Zend_Log_Writer_Mail::setLayout()config optionslayoutandlayoutFormattersetLayoutFormatter()getLayoutFormatter()
- Removed
Zend_Auth_Adapter_InfoCard
- Removed
Zend_Auth_Adapter_OpenId
- Removed TimeSync support from
Zend_Date
- Removed ProgressBar support from
Zend_File_Transfer_Adapter_Http
- Removed
Zend_Auth_Adapter_Ldap - Removed
Zend_Validate_Ldap_Dn
- Removed
Zend_Db_Profiler_Firebug - Removed
Zend_Log_Formatter_Firebug - Removed
Zend_Log_Writer_Firebug
- Removed
Zend_Filter_File_* - Removed
Zend_Validate_File_*
Only variables that were previously assigned to the view are rendered. In addition, smarty function calls are no longer executed.
{sElement.name} // works
{sElement.name|currency} // works, but does not execute the currency function
{sElement.value[$key]|currency} // does not workSmarty rendering has been disable for this section. All variables have been removed with one exception. The variable {$offerPosition.trackingcode} is a placeholder now. To generate tracking urls, use the following pattern:
https://gls-group.eu/DE/de/paketverfolgung?match={$offerPosition.trackingcode}
<a href="https://gls-group.eu/DE/de/paketverfolgung?match={$offerPosition.trackingcode}" onclick="return !window.open(this.href, 'popup', 'width=500,height=600,left=20,top=20');" target="_blank">{$offerPosition.trackingcode}</a>Translations for different fields (help, support, label) can be configured via snippets.
Example: s_articles_attributes.attr1
| Field | Snippet name |
|---|---|
| Snippet namespace | backend/attribute_columns |
| Snippet name label | s_articles_attributes_attr1_label |
| Snippet name support text | s_articles_attributes_attr1_supportText |
| Snippet name help text | s_articles_attributes_attr1_helpText |
You can now define the expression for the comparison in SQL. For example >= like seen below:
Ext.define('Shopware.apps.Vote.view.list.extensions.Filter', {
extend: 'Shopware.listing.FilterPanel',
alias: 'widget.vote-listing-filter-panel',
configure: function() {
return {
controller: 'Vote',
model: 'Shopware.apps.Vote.model.Vote',
fields: {
points: {
expression: '>=',
}
}
};
}
});Captchas are now configurable via backend and can be added using the shopware.captcha dependency injection container tag.
<service id="shopware.captcha.recaptcha" class="SwagReCaptcha\ReCaptcha">
<argument type="service" id="guzzle_http_client_factory"/>
<argument type="service" id="config"/>
<tag name="shopware.captcha"/>
</service>For more information, please refer to our Captcha Documentation.
Redis can now be used as a cache provider for the backend and model caches. Here is an example:
'model' => [
'redisHost' => '127.0.0.1',
'redisPort' => 6379,
'redisDbIndex' => 0,
'cacheProvider' => 'redis',
],
'cache' => [
'backend' => 'redis',
'backendOptions' => [
'servers' => array(
array(
'host' => '127.0.0.1',
'port' => 6379,
'dbindex' => 0,
),
),
],
],The replacement of the select field elements via JavaScript is deprecated and will be removed in a future release. You can create a styled select field with a simple CSS-only solution by adding a wrapper element.
<div class="select-field">
<select>
<option></option>
<option></option>
</select>
</div>The Batch Product Search service works with request and results. You can add multiple criteria's and/or product numbers to a request and resolve them in an optimized way. An optimizer groups multiple equal criteria's into one and performs the search.
$criteria = new Critera();
$criteria->addCondition(new CategoryCondition([3]));
$criteria->limit(3);
$anotherCriteria = new Critera();
$anotherCriteria->addCondition(new CategoryCondition([3]));
$anotherCriteria->limit(5);
$request = new BatchProductNumberSearchRequest();
$request->setProductNumbers('numbers-1', ['SW10004', 'SW10006']);
$request->setCriteria('criteria-1', $criteria);
$request->setCriteria('criteria-2', $anotherCriteria);
$result = $this->container->get('shopware_search.batch_product_search')->search($request, $context);
$result->get('numbers-1'); // ['SW10004' => ListProduct, 'SW10006' => ListProduct]
$result->get('criteria-1'); // ['SW10006' => ListProduct, 'SW10007' => ListProduct, 'SW10008' => ListProduct]
$result->get('criteria-2'); // ['SW10009' => ListProduct, 'SW10010' => ListProduct, 'SW10011' => ListProduct, 'SW10012' => ListProduct, 'SW10013' => ListProduct]\Shopware\Bundle\SearchBundleDBAL\FacetHandlerInterface marked as deprecated and replaced by \Shopware\Bundle\SearchBundleDBAL\PartialFacetHandlerInterface.
Each facet handler had to revert the provided criteria by their own to remove customer conditions. This behaviour is now handled in the \Shopware\Bundle\SearchBundleDBAL\ProductNumberSearch::createFacets
Old implementation:
/**
* @param FacetInterface $facet
* @param Criteria $criteria
* @param ShopContextInterface $context
* @return BooleanFacetResult
*/
public function generateFacet(
FacetInterface $facet,
Criteria $criteria,
ShopContextInterface $context
) {
$reverted = clone $criteria;
$reverted->resetConditions();
$reverted->resetSorting();
$query = $this->queryBuilderFactory->createQuery($reverted, $context);
//...
}New implementation:
public function generatePartialFacet(
FacetInterface $facet,
Criteria $reverted,
Criteria $criteria,
ShopContextInterface $context
) {
$query = $this->queryBuilderFactory->createQuery($reverted, $context);
//...In the elastic search implementation the current filter behavior is controlled by the condition handlers. By adding an query as post filter, facets are not affected by this filter.
This behavior is checked over the Criteria->hasBaseCondition statement:
/**
* @inheritdoc
*/
public function handle(
CriteriaPartInterface $criteriaPart,
Criteria $criteria,
Search $search,
ShopContextInterface $context
) {
if ($criteria->hasBaseCondition($criteriaPart->getName())) {
$search->addFilter(new TermQuery('active', 1));
} else {
$search->addPostFilter(new TermQuery('active', 1));
}
}
This behavior is now controlled in the \Shopware\Bundle\SearchBundleES\ProductNumberSearch. To support the new filter mode, each condition handler has to implement the \Shopware\Bundle\SearchBundleES\PartialConditionHandlerInterface.
It is possible to implement this interface beside the original \Shopware\Bundle\SearchBundleES\HandlerInterface.
namespace Shopware\Bundle\SearchBundleES;
if (!interface_exists('\Shopware\Bundle\SearchBundleES\PartialConditionHandlerInterface')) {
interface PartialConditionHandlerInterface { }
}
namespace Shopware\SwagBonusSystem\Bundle\SearchBundleES;
class BonusConditionHandler implements HandlerInterface, PartialConditionHandlerInterface
{
const ES_FIELD = 'attributes.bonus_system.has_bonus';
public function supports(CriteriaPartInterface $criteriaPart)
{
return ($criteriaPart instanceof BonusCondition);
}
public function handleFilter(
CriteriaPartInterface $criteriaPart,
Criteria $criteria,
Search $search,
ShopContextInterface $context
) {
$search->addFilter(
new TermQuery(self::ES_FIELD, 1)
);
}
public function handlePostFilter(
CriteriaPartInterface $criteriaPart,
Criteria $criteria,
Search $search,
ShopContextInterface $context
) {
$search->addPostFilter(new TermQuery(self::ES_FIELD, 1));
}
public function handle(
CriteriaPartInterface $criteriaPart,
Criteria $criteria,
Search $search,
ShopContextInterface $context
) {
if ($criteria->hasBaseCondition($criteriaPart->getName())) {
$this->handleFilter($criteriaPart, $criteria, $search, $context);
} else {
$this->handlePostFilter($criteriaPart, $criteria, $search, $context);
}
}
}Cookie permissions is now a part of shopware and you can configure it in the shop settings.
We implement a basic cookie permission hint. If you want to change the decision whether the item is displayed or not, overwrite the jQuery plugin in the jquery.cookie-permission.js.
Shopping World have been technically refactored from the ground up to improve the overall performance when adding several elements to a shopping world. It is now possible to export and import shopping worlds via the backend. You can also convert shopping worlds to presets for reusability of configured shopping worlds. Please see Developer Docs article for further information.
The processing of elements has been changed from events to classes of component handler.
Before: Subscribe to an event and process element data in the callback method
public static function getSubscribedEvents()
{
return ['Shopware_Controllers_Widgets_Emotion_AddElement' => 'handleSideviewElement'];
}After: Create new class and tag it as shopware_emotion.component_handler in your services.xml
class SideviewComponentHandler implements ComponentHandlerInterface
{
public function supports(Element $element)
{
return $element->getComponent()->getType() === 'emotion-component-sideview';
}
public function prepare(PrepareDataCollection $collection, Element $element, ShopContextInterface $context)
{
// do some prepare logic
}
public function handle(ResolvedDataCollection $collection, Element $element, ShopContextInterface $context)
{
// do some handle logic and fill data
$element->getData()->set('key', 'value');
}
}To make use of the performance improvement, you have to split your logic into a prepare step and handle step. The prepare step collects product numbers or criteria objects which will be resolved across all elements at once. The handle step provides a collection with resolved products and can be filled into your element.
public function prepare(PrepareDataCollection $collection, Element $element, ShopContextInterface $context)
{
$productNumber = $element->getConfig()->get('selected_product_number');
$collection->getBatchRequest()->setProductNumbers('my-unique-request', [$productNumber]);
}
public function handle(ResolvedDataCollection $collection, Element $element, ShopContextInterface $context)
{
$product = current($collection->getBatchResult()->get('my-unique-request'));
$element->getData()->set('product', $product);
}Keep in mind to use a unique key for requesting and getting products. For best practise, use the element's id in your key ($element->getId()).