The upgrade instructions are available at Oro documentation website.
The current file describes significant changes in the code that may affect the upgrade of your customizations.
- Added filter badge hint for show how much values have been applied in filter
orofrontend/default/js/app/views/filter-badge-hint-view
- Added
orofrontend/js/datagrid/frontend-action-launcher
- Added
orofrontend/js/datagrid/frontend-actions-panel
- Added
orofrontend/js/datagrid/actions/frontend-reset-collection-action
- Added option for reset action storefront datagrids
grid_render_parameters.themeOptions.actionOptions.resetAction.hiddenIfIsNotResettable
{boolean} - Hide reset action button when grid doesn't have changesgrid_render_parameters.themeOptions.actionOptions.{actionName}.launcherOptions.renderInExternalContainer
{boolean} - Render action launcher in provided external container with default selector[data-group="external-toolbar-${gridName}"]
- Added block type
frontend_datagrid_external_toolbar
, required datagrid name - Added theme
svg_icons_support
option into\Oro\Bundle\FrontendBundle\Resources\views\layouts\default\theme.yml
. Addsvg_icons_support: true
to yourtheme.yml
file to enable SVG icons in your theme if it is extended from Refreshing Teal theme. - Added theme
configuration
options into\Oro\Bundle\FrontendBundle\Resources\views\layouts\default\theme.yml
. - Added
oro_theme.theme_configuration
system configuration option. - Added
\Oro\Bundle\FrontendBundle\Layout\Extension\PageTemplatesThemeConfigurationExtension
that getsproduct_page_template
theme configuration option values and adds for page_templates. - Added
\Oro\Bundle\FrontendBundle\Form\Configuration\AbstractCssConfigBuilder
that should be used for CSS Theme Variables - Added option
show_input_control
to\Oro\Bundle\FormBundle\Form\Type\OroSimpleColorPickerType
that allows to show text input form for manual color value. By default, value for this option is false
- Added
oro_customer.redirect_after_login
andoro_customer.do_not_leave_checkout
system config options that manage the redirection of customer user after login. - Added
Oro\Bundle\CustomerBundle\Provider\RedirectAfterLoginProvider
that provides a redirect target url.
- Replaced all places in code that used old system configuration options on theme configuration options.
- Removed
\Oro\Bundle\FrontendBundle\Request\DynamicSessionHttpKernelDecorator
and\Oro\Bundle\FrontendBundle\DependencyInjection\Compiler\FrontendSessionPass
, added explicit decorator\Oro\Bundle\FrontendBundle\Request\StorefrontSessionHttpKernelDecorator
instead. - Removed
FontAwesome
font, use svg icons instead. More details are available at Oro Frontend Stylebook. - Removed
fa-icon
SCSS mixin.
- Removed
\Oro\Bundle\CustomerBundle\DependencyInjection\Compiler\ConfigureFrontendHelperPass
, made use of decoration instead for\Oro\Bundle\CustomerBundle\Security\TokenAwareFrontendHelper
.
- Added
orofrontend/default/js/app/views/sticky-element-view
andorofrontend/default/js/app/modules/sticky-manager-module
to provide new sticky element functionality based on CSSposition: sticky
property. - Added to the email template inheritance feature an ability to use email templates located in layout themes at paths:
- when in bundle: Resources/views/layouts/%theme%/email-templates/
- when on app level: templates/layouts/%theme%/email-templates/
- Added
base_storefront
email template that could be used as parent email template (via email template inheritance feature) for storefront-related email notifications.
- SCSS
$base-font-minor
and$base-font-icon
variables were removed, use$base-font
and SVG icon instead. - SCSS 'link' mixin was removed, use
@extend a
for applying link styles. - SCSS
get-nested-map-value
function was removed, use native SCSSmap.get
function instead. - Widget
oro/frontend-dialog-widget
was renamed tooro/dialog-widget
, so you have to useoro/dialog-widget
in your customization. This widget no longer usesfullscreen-popup-view
under the hood to render dialog as fullscreen. All logic is done by CSS using an extra classfullscreen
. As a result,fullscreenViewOptions
property was deleted and propertiespopupIcon, popupBadge
and eventsfrontend-dialog:accept, frontend-dialog:cancel, frontend-dialog:close
were renamed todialogTitleIcon, dialogTitleBadge
, andaccept, cancel, close
. - Content Providers feature is separated now between backoffice and storefront. The tag
oro_ui.content_provider
is used for collecting backoffice content providers and the tagoro_frontend.content_provider
- for storefront content providers. - Changed format of options that prepares
RuleEditorOptionsConfigurator
[?], removedentities
field and addedsupportedNames
andentityDataProvider
- Widget
oro/frontend-dialog-widget
was renamed tooro/dialog-widget
, so you have to useoro/dialog-widget
in your customization. This widget no longer usesfullscreen-popup-view
under the hood to render dialog as fullscreen. All logic is done by CSS using an extra classfullscreen
. As a result,fullscreenViewOptions
property was deleted and propertypopupIcon
and eventsfrontend-dialog:accept, frontend-dialog:cancel, frontend-dialog:close
were renamed todialogTitleIcon
, andaccept, cancel, close
. - SCSS
$base-font-minor
and$base-font-icon
variables were removed, use$base-font
and SVG icon instead. - SCSS
get-nested-map-value
function was removed, use native SCSSmap.get
function instead. - Add
scroll
property todata-dom-relocation-options
to handle element relocation on scroll
- Updated
frontend_export_result_error
,frontend_export_result_success
email templates to extend them frombase_storefront
email template.
- Updated
customer_user_confirmation_email
,customer_user_force_reset_password
,customer_user_reset_password
,customer_user_welcome_email
,customer_user_welcome_email_registered_by_admin
email templates to extend them frombase_storefront
email template.
- Removed
orofrontend/default/js/app/views/sticky-panel-view
. - Removed component shortcut
data-page-component-sticky
. - Removed
__sticky_panel__sticky_panel_widget
,__sticky_panel__sticky_panel_content_widget
blocks in layout
- Added
oro_commerce_menu.main_navigation_menu
setting to the system configuration and the ability to change main navigation menu on the storefront as per this setting. - Added the ability to specify target type for root menu items via menu update form like for other menu items.
- Added
synthetic
field to\Oro\Bundle\CommerceMenuBundle\Entity\MenuUpdate
. - Added
maxTraverseLevel
field for\Oro\Bundle\CommerceMenuBundle\Entity\MenuUpdate
to store the max depth for the content node or category menu items tree. - Added
menuTemplate
field for\Oro\Bundle\CommerceMenuBundle\Entity\MenuUpdate
to store the menu template name to use for when rendering a menu item. - Added
maxTraverseLevel
field to the form\Oro\Bundle\NavigationBundle\Form\Type\MenuUpdateType
. - Added
menuTemplate
field to the form\Oro\Bundle\NavigationBundle\Form\Type\MenuUpdateType
. - Added the menu builder
\Oro\Bundle\CommerceMenuBundle\Builder\CategoryTreeBuilder
to add the ability to fill the menu items of "Category" target type with their children as per\Oro\Bundle\CommerceMenuBundle\Entity\MenuUpdate::$maxTraverseLevel
depth. - Added the menu builder
\Oro\Bundle\CommerceMenuBundle\Builder\ContentNodeTreeBuilder
to add the ability to fill the menu items of "Content Node" target type with their children as per\Oro\Bundle\CommerceMenuBundle\Entity\MenuUpdate::$maxTraverseLevel
depth. - Added
menu_templates
theme configuration allowing to specify menu templates available for storefront menu items rendering. - Added
\Oro\Bundle\CommerceMenuBundle\Provider\MenuTemplatesProvider
to collect available menu templates. - Added
\Oro\Bundle\CommerceMenuBundle\Layout\MenuItemRenderer
to render a menu item with the specified menu template using layouts. - Added the following layout block types with options:
menu_list
: Container for rendering menu listlayoutType
: {default: null} - Allows you to set a layout modifier. Requires aclass_prefix
value to be settagName
: {default: 'ul'} - Specifies which html tag to use
menu_item
: Menu item with actions, also allows you to render the next level menu listtagName
: {default: 'li'} - Specifies which html tag to useiconEnable
: {default: true} - Enable/Disable icon of the menu itemlinkEnable
: {default: true} - Enable/Disable link of the menu itemtooltipEnable
: {default: false} - Enable/Disable tooltip for menu itemdividerEnable
: {default: true} - Enable/Disable divider itemsimageViewAs
: {default: 'line'} 'line'|'image'|false - Show item with image as simple text item, item with image or disableattr
: {default: null} - Menu Item Attributesactions_attr
: {default: null} - Action Container AttributestooltipTemplate
: Base HTML to use when creating the tooltip.link_attr
: {default: null} - Item menu link attributesbutton_attr
: {default: null} - Item Menu Button Attributesbutton_text_attr
: {default: null} - Item Menu Text Label Attributes
menu_inner
: Menu item container for rendering next nested contentlayoutType
: {default: null} - Allows you to set a layout modifier. Requires aclass_prefix
value to be set
- Added a
scss
mixinmain-menu-stack-items
that provides a basicscss
structure for a stack of menu items - Added three different menu templates for menu items:
list
: Simple list of menutree
: Multi-column menumega
: Multi-level menu with the ability to transition between levels with a slide effect on mobile devices, also a responsive view for desktop devices
-
The widgets
collapse-widget
,collapse-group-widget
,rows-collapse-widget
were removed, use thebootstrap-collapse
instead. -
As a result, you need to update your
html
:layout.twig
- {% set collapseView = { - storageKey: 'unique storage key', - uid: 'unique storage key id', - animationSpeed: 0, - closeClass: 'overflows', - forcedState: false, - checkOverflow: false, - open: false, - keepState: false - } %} - <div class="collapse-block" data-page-component-collapse="{{ collapseView|json_encode }}"> - <div class="control-label" data-collapse-container> - Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit - </div> - <a href="#" class="control-label toggle-more" data-collapse-trigger>{{ 'Show more'|trans }}</a> - <a href="#" class="control-label toggle-less" data-collapse-trigger>{{ 'Show less'|trans }}</a> - </div> + {% set collapseId = 'collapse-'|uniqid %} + <div class="collapse-block"> + <div id="{{ collapseId }}" class="collapse-overflow collapse no-transition" + data-collapsed-text="{{ 'Show more'|trans }}" + data-expanded-text="{{ 'Show less'|trans }}" + data-check-overflow="true" + data-toggle="false" + data-state-id="{{ 'unique storage key id' }}" + >Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit...</div> + <a href="#" + role="button" + class="collapse-toggle" + data-toggle="collapse" + data-target="{{ '#' ~ collapseId }}" + aria-expanded="false" + aria-controls="{{ collapseId }}"><span data-text>{{ 'Show more'|trans }}</span></a> + </div>
The 'data-dom-relocation' selector to specify options for dom-relocation-view
was removed, use 'data-dom-relocation-options' instead.
The oro grid system was modernized and uses CSS grid under the hood.
-
As a result, you need to update your
html
:layout.twig
- <div class="grid"> - <div class="grid__row"> - <div class="grid__column grid__column--1">grid__column--1</div> - <div class="grid__column grid__column--1">grid__column--1</div> - <div class="grid__column grid__column--1">grid__column--1</div> - <div class="grid__column grid__column--1">grid__column--1</div> - <div class="grid__column grid__column--1">grid__column--1</div> - <div class="grid__column grid__column--1">grid__column--1</div> - <div class="grid__column grid__column--1">grid__column--1</div> - <div class="grid__column grid__column--1">grid__column--1</div> - <div class="grid__column grid__column--1">grid__column--1</div> - <div class="grid__column grid__column--1">grid__column--1</div> - <div class="grid__column grid__column--1">grid__column--1</div> - <div class="grid__column grid__column--1">grid__column--1</div> - </div> - <div class="grid__row"> - <div class="grid__column grid__column--3">grid__column--3</div> - <div class="grid__column grid__column--9">grid__column--9</div> - </div> - <div class="grid__row"> - <div class="grid__column grid__column--4">grid__column--4</div> - <div class="grid__column grid__column--4">grid__column--4</div> - <div class="grid__column grid__column--4">grid__column--4</div> - </div> - <div class="grid__row"> - <div class="grid__column grid__column--12">grid__column--12</div> - </div> - </div> + <div class="grid"> + <div class="grid-col">1/12</div> + <div class="grid-col">1/12</div> + <div class="grid-col">1/12</div> + <div class="grid-col">1/12</div> + <div class="grid-col">1/12</div> + <div class="grid-col">1/12</div> + <div class="grid-col">1/12</div> + <div class="grid-col">1/12</div> + <div class="grid-col">1/12</div> + <div class="grid-col">1/12</div> + <div class="grid-col">1/12</div> + <div class="grid-col">1/12</div> + <div class="grid-col-3">3/12</div> + <div class="grid-col-9">9/12</div> + <div class="grid-col-4">4/12</div> + <div class="grid-col-4">4/12</div> + <div class="grid-col-4">4/12</div> + <div class="grid-col-12">12/12</div> + </div>
More details are available at Oro Frontend Stylebook.
orocommercemenu/js/app/widgets/menu-traveling-widget
was moved toorocommercemenu/js/app/views/menu-traveling-view
; Now extendsBaseView
instead ofAbstractWidget
- Updated block type
menu
:- Parent layout was changed from
oro_layout.block_type.abstract_configurable
tooro_layout.block_type.abstract_configurable_container
- Added new option:
customItemBlock
: {default: null} - Provides the ability to use a custom menu item template.
- Parent layout was changed from
- Removed
\Oro\Bundle\CommerceMenuBundle\Entity\MenuUpdate::getExtras
, its purpose is moved to\Oro\Bundle\CommerceMenuBundle\MenuUpdate\Propagator\ToMenuItem\ExtrasPropagator
.
orofrontend/default/js/app/views/input-widget/checkbox
was removed; use pure CSS checkbox customization instead.orofrontend/default/js/app/views/input-widget/checkbox-radio
was removed; use pure CSS radio button customization instead.
- The configuration parameter
cookie_secure
has been moved tovisitor_session
node. - The configuration parameter
cookie_httponly
has been moved tovisitor_session
node. - The configuration parameter
cookie_samesite
has been moved tovisitor_session
node. - Updated search configuration file
Oro/Bundle/CustomerBundle/Resources/config/oro/search.yml
:- added configuration for next field
oro_customer_id
- added configuration for next field
orofrontend/default/js/widgets/line-clamp-widget
was removed; use CSS-webkit-line-clamp
property instead. Also was added theline-clamp
class to does this out of the box.orofrontend/default/js/app/views/footer-align-view
was removed; use CSS features (Flex Box, Grid) to align the required part of HTML.
- The service
oro_frontend.api.rest.routing_options_resolver.remove_single_item_routes
were removed. Exclude theget
action inResources/config/oro/api_frontend.yml
instead.
- The constant
ACCOUNT
inOro\Bundle\CustomerBundle\Provider\ScopeCustomerCriteriaProvider
was replaced withCUSTOMER
. - The constant
FIELD_NAME
inOro\Bundle\CustomerBundle\Provider\ScopeCustomerGroupCriteriaProvider
was replaced withCUSTOMER_GROUP
.
- A validation of
web_backend_prefix
container parameter was added. The parameter value must not be null and must start with a slash and not end with a slash. - The method
isFrontendRequest(Request $request = null): bool
ofOro\Bundle\FrontendBundle\Request\FrontendHelper
was changed toisFrontendRequest(): bool
. To check whether a request is a storefront request useisFrontendUrl($request->getPathInfo())
. - The class
Oro\Bundle\FrontendBundle\Provider\ActionCurrentApplicationProvider
was renamed toOro\Bundle\FrontendBundle\Provider\FrontendCurrentApplicationProvider
.
*.class
parameters for all entities were removed from the dependency injection container. The entity class names should be used directly, e.g.'Oro\Bundle\EmailBundle\Entity\Email'
instead of'%oro_email.email.entity.class%'
(in service definitions, datagrid config files, placeholders, etc.), and\Oro\Bundle\EmailBundle\Entity\Email::class
instead of$container->getParameter('oro_email.email.entity.class')
(in PHP code).
-
The format of
Resources/views/layouts/{folder}/config/screens.yml
was changed. Thescreens
root node was removed. It was done to make format of this file consistent with other config files, such asResources/views/layouts/{folder}/config/assets.yml
,Resources/views/layouts/{folder}/config/images.yml
andResources/views/layouts/{folder}/config/page_templates.yml
. -
In
Oro\Bundle\FrontendBundle\Controller\Api\Rest\WorkflowController::startAction
(/api/rest/{version}/workflow/start/{workflowName}/{transitionName}
path) action the request method was changed to POST. -
In
Oro\Bundle\FrontendBundle\Controller\Api\Rest\WorkflowController::transitAction
(/api/rest/{version}/workflow/transit/{workflowItemId}/{transitionName}
path) action the request method was changed to POST.
- Service
oro_commerce_menu.namespace_migration_provider
- Services
oro_frontend.namespace_migration_provider
,oro_frontend.namespace_migration_fix_product_provider
and the logic that used them were removed.
- A new email template
customer_user_welcome_email_registered_by_admin
was added. It is sent when the administrator or a customer user manager creates a new customer user with the "Send Welcome Email" option selected or when the administrator confirms a customer user from the management console.
-
The field
username
was removed from/admin/api/customerusers
REST API resource. -
The
frontend_owner_type
entity configuration attribute for Customer entity is set toFRONTEND_CUSTOMER
. TheFull
access level was changed toCorporate (All Levels)
for Customer entity forROLE_FRONTEND_ADMINISTRATOR
customer user role. For all other customer user roles theFull
access level was changed toDepartment (Same Level)
. -
Changes in
/admin/api/customer_user_addresses
REST API resource:- the resource name was changed to
/admin/api/customeruseraddresses
- the attribute
created
was renamed tocreatedAt
- the attribute
updated
was renamed toupdatedAt
- the relationship
frontendOwner
was renamed tocustomerUser
- the resource name was changed to
-
The name for
/admin/api/customer_users
REST API resource was changed to/admin/api/customerusers
. -
The name for
/admin/api/customer_user_roles
REST API resource was changed to/admin/api/customeruserroles
. -
The name for
/admin/api/customer_groups
REST API resource was changed to/admin/api/customergroups
. -
The name for
/admin/api/customer_rating
REST API resource was changed to/admin/api/customerratings
. -
Removed the
oro_customer.send_password_in_welcome_email
config option to prevent issues with security when a plain password is sent by email. -
There is no password provided while rendering the
customer_user_welcome_email
email template. Please update your customization of this email template. It is recommended to use a reset password link in the email template instead of a plain password.
- The
CustomerGroup::customers
relation was removed as well as other related logic.
- Added
frontend
option for datagrids. This option should be set totrue
for all datagrids are used in the store frontend. For details see Frontend Datagrids
- In case when Customer Portal is installed together with CRM, the
Account Manager
role has full permissions for Account and Contact entities. The permissions for theAccount Manager
is not changed if Customer Portal is added to already installed CRM.
- some inline underscore templates were moved to separate .html file for each template.
- removed interface
ConstraintByValidationGroups
[?]. - removed constraint class
OrderAddress
[?]. - removed constraint validator
OrderAddressValidator
[?].
- the DI container parameter
oro_customer.entity.owners
was changed- the option
local_level
was renamed tobusiness_unit
- the option
basic_level
was renamed touser
- the option
- class
RecordOwnerDataListener
[?]- constant
OWNER_TYPE_ACCOUNT
was removed, useOWNER_TYPE_CUSTOMER
instead
- constant