####TestFrameworkBundle
- All tests run with debug true, hence in case of exception you will see a detailed information about it. Previously it was like on prod.
- All connections, tests internally share one pdo connection to database.
- Oro\Bundle\TestFrameworkBundle\Test\WebTestCase::cleanUpConnections method was removed.
- Oro\Bundle\TestFrameworkBundle\Test\Client::startTransaction method was removed, use one from Oro\Bundle\TestFrameworkBundle\Test\WebTestCase class.
- Oro\Bundle\TestFrameworkBundle\Test\Client::rollbackTransaction method was removed, use one from Oro\Bundle\TestFrameworkBundle\Test\WebTestCase class.
\Oro\Bundle\TestFrameworkBundle\Fixtures\LoadUserData
is deprecated, use\Oro\Bundle\TestFrameworkBundle\Migrations\Data\ORM\LoadUserData
instead- No need to load fixtures after test environment setup using
doctrine:fixture:load
####EntityBundle
- The implementation of
Oro\Bundle\EntityBundle\ORM\EntityAliasResolver
was changed. Now the loaded entity aliases is saved into a cache that gives significant performance gain. Also, from now, you can implementOro\Bundle\EntityBundle\Provider\EntityClassProviderInterface
to create aliases for any entities not only for ORM entities. - The
Oro\Bundle\EntityBundle\Controller\Api\Rest\EntityDataController::patchAction
was fixed to return correct HTTP status code. Previous implementation was always returning 204 (No Content), now it returns HTTP 200 (OK) if the response contains content.
####EntityConfigBundle
- Entity config class metadata now allows any
route*
options, that can be used for CRUD routes configuration - as well as already existingrouteName
,routeView
androuteCreate
options. - Added
Oro\Bundle\EntityConfigBundle\Migration\RemoveManyToOneRelationQuery
as an automated way to remove ManyToOne relation
####DashboardBundle
- Class
Oro\Bundle\DashboardBundle\Provider\Converters\FilterDateTimeRangeConverter
was renamed toOro\Bundle\DashboardBundle\Provider\Converters\FilterDateRangeConverter
. Service was not renamed. - Added new class
Oro\Bundle\DashboardBundle\Provider\Converters\FilterDateTimeRangeConverter
. oro_type_widget_user_multiselect
form type was renamed tooro_type_widget_user_select
and moved to UserBundle.- Class
Oro\Bundle\DashboardBundle\Twig\FilterDateRangeExtension
was renamed toOro\Bundle\DashboardBundle\Twig\DashboardExtension
. Service was renamed tooro_dashboard.twig.extension
. Added parametersOro\Bundle\QueryDesignerBundle\QueryDesigner\Manager $manager
andOro\Bundle\EntityBundle\Provider\EntityProvider $entityProvider
to the constructor.
####DataAuditBundle
- The constructor of the
Oro/Bundle/DataAuditBundle/EventListener/SegmentWidgetOptionsListener
class was changed. Before:__construct(HttpKernelInterface $httpKernel)
. After:__construct(HttpKernelInterface $httpKernel, SecurityFacade $securityFacade, ContextChecker $contextChecker)
.
####DataGridBundle
- Events
Oro\Bundle\DataGridBundle\Event\OrmResultBefore
second constructor argument$query
type changed fromDoctrine\ORM\Query
toDoctrine\ORM\AbstractQuery
. - Event
Oro\Bundle\DataGridBundle\Event\OrmResultAfter
third constructor argument$query
type changed fromDoctrine\ORM\Query
toDoctrine\ORM\AbstractQuery
.
####EntityBundle
- The constructor of the
Oro\Bundle\EntityBundle\ORM\EntityAliasResolver
class was changed. Before:__construct(ManagerRegistry $doctrine, $debug)
. After:__construct(DoctrineHelper $doctrineHelper, ManagerBagInterface $managerBag, $debug)
. - The constructor of the
Oro\Bundle\EntityBundle\Provider\AllEntityHierarchyProvider
class was changed. Before:__construct(DoctrineHelper $doctrineHelper, ConfigProvider $extendConfigProvider, EntityManagerBag $entityManagerBag)
. After:__construct(DoctrineHelper $doctrineHelper, ConfigProvider $extendConfigProvider, ManagerBagInterface $managerBag)
. - Method
getAllShortMetadata
was added toOro\Bundle\EntityBundle\ORM\DoctrineHelper
. Using of this method instead of thegetAllMetadata
method can give significant performance gain.
####ImportExportBundle
- ACL resource (capability)
oro_importexport
was removed. Please, useoro_importexport_import
ororo_importexport_export
instead. - Added
NewEntitiesHelper $newEntitiesHelper
andDoctrineHelper $doctrineHelper
parameters to constructor ofOro\Bundle\ImportExportBundle\Strategy\Import\ConfigurableAddOrReplaceStrategy
####SecurityBundle
- IMPORTANT: The behaviour of the Access Decision Manager was changed. Now the
allowIfAllAbstainDecisions
flag is set totrue
by default. It means that an access to a resource is denied as soon as there is one voter denying access. The goal of this change is to grant access when all voters abstain. Oro\Bundle\SecurityBundle\Acl\Extension\EntityMaskBuilder
- removed all constants for masks and their groups.Oro\Bundle\SecurityBundle\Acl\Extension\EntityMaskBuilder
- now allow custom Permissions (see permissions.mdOro\Bundle\SecurityBundle\Acl\Extension\EntityAclExtension
- now allow custom Permissions (see permissions.mdOro\Bundle\SecurityBundle\Acl\Extension\MaskBuilder
- added new public methods:hasMask(string $name)
,getMask(string $name)
.Oro\Bundle\SecurityBundle\Acl\Voter\AclVoter
- added new public method -setPermissionManager(PermissionManager $permissionManager)
.- Constructor for
Oro\Bundle\SecurityBundle\Acl\Extension\EntityAclExtension
changed. New arguments:PermissionManager $permissionManager, AclGroupProviderInterface $groupProvider
- Constructor for
Oro\Bundle\SecurityBundle\Acl\Extension\EntityMaskBuilder
changed. New arguments:int $identity, array $permissions
- Added command for loading permissions configuration
Oro\Bundle\SecurityBundle\Command\LoadPermissionConfigurationCommand
(security:permission:configuration:load
) - this command added to install and update platform scripts. - Added migration
Oro\Bundle\SecurityBundle\Migrations\Schema\LoadBasePermissionsQuery
for loading to DB base permissions ('VIEW', 'CREATE', 'EDIT', 'DELETE', 'ASSIGN', 'SHARE'). - Added migration
Oro\Bundle\SecurityBundle\Migrations\Schema\v1_1\UpdateAclEntriesMigrationQuery
for updating ACL Entries to use custom Permissions. - Added
acl_permission
twig extension - allows getPermission
byAclPermission
. - Added third parameter
$byCurrentGroup
toOro\Bundle\SecurityBundle\Acl\Extension\AclExtensionInterface::getPermissions
for getting permissions only for current application group name. Updated same method inOro\Bundle\SecurityBundle\Acl\Extension\ActionAclExtension
andOro\Bundle\SecurityBundle\Acl\Extension\EntityAclExtension
. - Added second parameter
$permissionName
togetAccessLevelNames
method ofOro\Bundle\SecurityBundle\Acl\Extension\AclExtensionInterface
. - Added
getFieldExtension
method ofOro\Bundle\SecurityBundle\Acl\Extension\AclExtensionInterface
. - For php version from 7.0.0 to 7.0.5 we replaced
Symfony\Component\Security\Acl\Domain\Entry
onOro\Bundle\SecurityBundle\Acl\Domain\Entry
to avoid bug with unserialization of an object reference - Method
Oro\Bundle\SecurityBundle\Owner\AbstractOwnerTreeProvider::getTreeData
marked as deprecated. UseOro\Bundle\SecurityBundle\Owner\AbstractOwnerTreeProvider::createTreeObject
instead. - Method
Oro\Bundle\SecurityBundle\Owner\OwnerTree::getUsersAssignedToBU
marked as deprecated. UseOro\Bundle\SecurityBundle\Owner\OwnerTree::getUsersAssignedToBusinessUnit
instead. - Method
Oro\Bundle\SecurityBundle\Owner\OwnerTree::getBusinessUnitUserIds
marked as deprecated as it is not used anywhere. - Method
Oro\Bundle\SecurityBundle\Owner\OwnerTree::getOrganizationUserIds
marked as deprecated as it is not used anywhere. - Method
Oro\Bundle\SecurityBundle\ORM\Walker\OwnershipConditionDataBuilder::fillOrganizationBusinessUnitIds
marked as deprecated as it is not used anywhere. - Method
Oro\Bundle\SecurityBundle\ORM\Walker\OwnershipConditionDataBuilder::fillOrganizationUserIds
marked as deprecated as it is not used anywhere.
####WorkflowBundle
- Class
Oro\Bundle\WorkflowBundle\Exception\ActionException
marked as deprecated. UseOro\Component\Action\Exception\ActionException
instead. - Class
Oro\Bundle\WorkflowBundle\Exception\AssemblerException
marked as deprecated. UseOro\Component\Action\Exception\AssemblerException
instead. - Class
Oro\Bundle\WorkflowBundle\Exception\InvalidParameterException
marked as deprecated. UseOro\Component\Action\Exception\InvalidParameterException
instead. - Class
Oro\Bundle\WorkflowBundle\Model\AbstractAssembler
marked as deprecated. UseOro\Component\Action\Model\AbstractAssembler
instead. - Class
Oro\Bundle\WorkflowBundle\Model\AbstractStorage
marked as deprecated. UseOro\Component\Action\Model\AbstractStorage
instead. - Class
Oro\Bundle\WorkflowBundle\Model\Action\AbstractAction
marked as deprecated. UseOro\Component\Action\Action\AbstractAction
instead. - Class
Oro\Bundle\WorkflowBundle\Model\Action\AbstractDateAction
marked as deprecated. UseOro\Component\Action\Action\AbstractDateAction
instead. - Class
Oro\Bundle\WorkflowBundle\Model\Action\ActionAssembler
marked as deprecated. UseOro\Component\Action\Action\ActionAssembler
instead. - Class
Oro\Bundle\WorkflowBundle\Model\Action\ActionFactory
marked as deprecated. UseOro\Component\Action\Action\ActionFactory
instead. - Class
Oro\Bundle\WorkflowBundle\Model\Action\ActionInterface
marked as deprecated. UseOro\Component\Action\Action\ActionInterface
instead. - Class
Oro\Bundle\WorkflowBundle\Model\Action\AssignActiveUser
marked as deprecated. UseOro\Component\Action\Action\AssignActiveUser
instead. - Class
Oro\Bundle\WorkflowBundle\Model\Action\AssignConstantValue
marked as deprecated. UseOro\Component\Action\Action\AssignConstantValue
instead. - Class
Oro\Bundle\WorkflowBundle\Model\Action\AssignValue
marked as deprecated. UseOro\Component\Action\Action\AssignValue
instead. - Class
Oro\Bundle\WorkflowBundle\Model\Action\CallMethod
marked as deprecated. UseOro\Component\Action\Action\CallMethod
instead. - Class
Oro\Bundle\WorkflowBundle\Model\Action\Configurable
marked as deprecated. UseOro\Component\Action\Action\Configurable
instead. - Class
Oro\Bundle\WorkflowBundle\Model\Action\CopyTagging
marked as deprecated. UseOro\Bundle\TagBundle\Workflow\Action\CopyTagging
instead. - Class
Oro\Bundle\WorkflowBundle\Model\Action\CreateDate
marked as deprecated. UseOro\Component\Action\Action\CreateDate
instead. - Class
Oro\Bundle\WorkflowBundle\Model\Action\CreateDateTime
marked as deprecated. UseOro\Component\Action\Action\CreateDateTime
instead. - Class
Oro\Bundle\WorkflowBundle\Model\Action\CreateEntity
marked as deprecated. UseOro\Component\Action\Action\CreateEntity
instead. - Class
Oro\Bundle\WorkflowBundle\Model\Action\CreateObject
marked as deprecated. UseOro\Component\Action\Action\CreateObject
instead. - Class
Oro\Bundle\WorkflowBundle\Model\Action\EventDispatcherAwareActionInterface
marked as deprecated. UseOro\Component\Action\Action\EventDispatcherAwareActionInterface
instead. - Class
Oro\Bundle\WorkflowBundle\Model\Action\FlashMessage
marked as deprecated. UseOro\Component\Action\Action\FlashMessage
instead. - Class
Oro\Bundle\WorkflowBundle\Model\Action\FormatName
marked as deprecated. UseOro\Bundle\ActionBundle\Action\FormatName
instead. - Class
Oro\Bundle\WorkflowBundle\Model\Action\FormatString
marked as deprecated. UseOro\Component\Action\Action\FormatString
instead. - Class
Oro\Bundle\WorkflowBundle\Model\Action\Redirect
marked as deprecated. UseOro\Component\Action\Action\Redirect
instead. - Class
Oro\Bundle\WorkflowBundle\Model\Action\RemoveEntity
marked as deprecated. UseOro\Component\Action\Action\RemoveEntity
instead. - Class
Oro\Bundle\WorkflowBundle\Model\Action\RequestEntity
marked as deprecated. UseOro\Component\Action\Action\RequestEntity
instead. - Class
Oro\Bundle\WorkflowBundle\Model\Action\TranslateAction
marked as deprecated. UseOro\Component\Action\Action\TranslateAction
instead. - Class
Oro\Bundle\WorkflowBundle\Model\Action\Traverse
marked as deprecated. UseOro\Component\Action\Action\Traverse
instead. - Class
Oro\Bundle\WorkflowBundle\Model\Action\TreeExecutor
marked as deprecated. UseOro\Component\Action\Action\TreeExecutor
instead. - Class
Oro\Bundle\WorkflowBundle\Model\Action\UnsetValue
marked as deprecated. UseOro\Component\Action\Action\UnsetValue
instead. - Class
Oro\Bundle\WorkflowBundle\Model\Attribute
marked as deprecated. UseOro\Component\Action\Model\Attribute
instead. - Class
Oro\Bundle\WorkflowBundle\Model\AttributeGuesser
marked as deprecated. UseOro\Component\Action\Model\AttributeGuesser
instead. - Class
Oro\Bundle\WorkflowBundle\Model\AttributeManager
marked as deprecated. UseOro\Component\Action\Model\AttributeManager
instead. - Class
Oro\Bundle\WorkflowBundle\Model\Condition\AbstractCondition
marked as deprecated. UseOro\Component\Action\Condition\AbstractCondition
instead. - Class
Oro\Bundle\WorkflowBundle\Model\Condition\Configurable
marked as deprecated. UseOro\Component\Action\Condition\Configurable
instead. - Class
Oro\Bundle\WorkflowBundle\Model\ConfigurationPass\ReplacePropertyPath
marked as deprecated. UseOro\Bundle\ActionBundle\Model\ConfigurationPass\ReplacePropertyPath
instead. - Class
Oro\Bundle\WorkflowBundle\Model\ContextAccessor
marked as deprecated. UseOro\Component\Action\Model\ContextAccessor
instead. - Class
Oro\Bundle\WorkflowBundle\Model\Event\ExecuteActionEvent
marked as deprecated. UseOro\Component\Action\Event\ExecuteActionEvent
instead. - Class
Oro\Bundle\WorkflowBundle\Model\Event\ExecuteActionEvents
marked as deprecated. UseOro\Component\Action\Event\ExecuteActionEvents
instead. - Constant
Oro\Bundle\WorkflowBundle\Event\ExecuteActionEvents::HANDLE_BEFORE
is deprecated. UseOro\Component\Action\Event\ExecuteActionEvents::HANDLE_BEFORE
instead. - Constant
Oro\Bundle\WorkflowBundle\Event\ExecuteActionEvents::HANDLE_AFTER
is deprecated. UseOro\Component\Action\Event\ExecuteActionEvents::HANDLE_AFTER
instead. - Service
oro_workflow.action_assembler
is deprecated. Useoro_action.action_assembler
instead. - Service
oro_workflow.attribute_guesser
is deprecated. Useoro_action.attribute_guesser
instead. - Service
oro_workflow.context_accessor
is deprecated. Useoro_action.context_accessor
instead. - Service
oro_workflow.action_factory
is deprecated. Useoro_action.action_factory
instead. - Service
oro_workflow.configuration_pass.replace_property_path
is deprecated. Useoro_action.configuration_pass.replace_property_path
instead. - The constructor of the
Oro\Bundle\WorkflowBundle\Handler\TransitionHandler
class was changed. Third argumentLoggerInterface
(@logger service) was added. - Added error logging in
Oro\Bundle\WorkflowBundle\Handler\TransitionHandler
at handle method. - Added parameter
RestrictionAssembler $restrictionAssembler
to constructor ofOro\Bundle\WorkflowBundle\Model\WorkflowAssembler
- Added parameter
RestrictionManager $restrictionManager
to constructor ofOro\Bundle\WorkflowBundle\Model\Workflow
- Added parameter
WorkflowPermissionRegistry $permissionRegistry
to constructor ofOro\Bundle\WorkflowBundle\Acl\Voter\WorkflowEntityVoter
- Added tags:
oro_workflow.changes.listener
andoro_workflow.changes.subscriber
for\Oro\Bundle\WorkflowBundle\Event\WorkflowEvents
event constants and separate dispatcher serviceoro_workflow.changes.event.dispatcher
. - Added class
Oro\Bundle\WorkflowBundle\Configuration\ProcessConfigurator
with corresponded serviceoro_workflow.process.configurator
for single point of workflow processes configurations by configuration sets. - Added class
Oro\Bundle\WorkflowBundle\Configuration\ProcessTriggersConfigurator
IMPORTANT: Configuration must provide full list of triggers for mentioned process definition. If list under definition key comes empty - triggers would be removed. See more in\Oro\Bundle\WorkflowBundle\Configuration\ProcessTriggersConfigurator::configureTriggers
doc-block. IMPORTANT: Changing of process cron triggers configuration will not keep all old cron triggers in database. E.g. old triggers would be removed and new created. - Added class
Oro\Bundle\WorkflowBundle\Handler\WorkflowDefinitionHandler
(oro_workflow.handler.workflow_definition
service) for single point ofWorkflowDefinition
entity management. All manipulations withOro\Bundle\WorkflowBundle\Entity\WorkflowDefinition
entity persistence should be provided through the handler. - Class
Oro\Bundle\WorkflowBundle\Model\WorkflowManager
construction signature was changed: additional (fifth) argumentSymfony\Component\EventDispatcher\EventDispatcherInterface $eventDispatcher
was added.
####CronBundle
- Added action
@create_job
for instance ofJMS\JobQueueBundle\Entity\Job
creation and persistence through actions (ClassOro\Bundle\CronBundle\Action\CreateJobAction
).
####SearchBundle
Oro\Bundle\SearchBundle\DependencyInjection\OroSearchExtension::setEntitiesConfigParameter
deprecated since 1.9. Will be removed after 1.11. Please use oro_search.provider.search_mapping service for mapping config instead.Oro\Bundle\SearchBundle\DependencyInjection\OroSearchExtension::mergeConfig
deprecated since 1.9. Will be removed after 1.11.Oro\Bundle\SearchBundle\EventListener\UpdateSchemaDoctrineListener
is no longer requiresOro\Bundle\SearchBundle\Engine\FulltextIndexManager
as an first argument- The constructor of the
Oro\Bundle\SearchBundle\Engine\AbstractEngine
class was changed. Before:__construct(ManagerRegistry $registry, EventDispatcherInterface $eventDispatcher, DoctrineHelper $doctrineHelper, ObjectMapper $mapper)
. After:__construct(ManagerRegistry $registry, EventDispatcherInterface $eventDispatcher, DoctrineHelper $doctrineHelper, ObjectMapper $mapper, EntityTitleResolverInterface $entityTitleResolver)
. - The constructor of the
Oro\Bundle\SearchBundle\EventListener\PrepareResultItemListener
class was changed. Before:__construct(Router $router, ObjectMapper $mapper, EntityManager $em)
. After:__construct(Router $router, ObjectMapper $mapper, EntityManager $em, EntityTitleResolverInterface $entityTitleResolver)
.
####FormBundle
- 'Oro\Bundle\FormBundle\Form\Extension\RandomIdExtension' was renamed to 'Oro\Bundle\FormBundle\Form\Extension\AdditionalAttrExtension'
- 'oro_form.extension.random_id' service was renamed to 'oro_form.extension.additional_attr'
- Form field identifier - 'data-name' attribute generation added to 'AdditionalAttrExtension'
- Method
Oro\Bundle\FormBundle\Model\UpdateHandler::handleUpdate
marked as deprecated. UseOro\Bundle\FormBundle\Model\UpdateHandler::update
instead. - In previous version client of methods
Oro\Bundle\UIBundle\Route\Router::redirectAfterSave
andOro\Bundle\FormBundle\Model\UpdateHandler::handleUpdate
was responsible to pass redirect data in arguments, for example:
return $this->get('oro_ui.router')->redirectAfterSave(
['route' => 'oro_calendar_event_update', 'parameters' => ['id' => $entity->getId()]],
['route' => 'oro_calendar_event_view', 'parameters' => ['id' => $entity->getId()]]
);
return $this->get('oro_form.model.update_handler')->handleUpdate(
$trackingWebsite,
$this->createForm($this->getFormType(), $trackingWebsite),
function (TrackingWebsite $entity) {
return [
'route' => 'oro_tracking_website_update',
'parameters' => ['id' => $entity->getId()]
];
},
function (TrackingWebsite $entity) {
return [
'route' => 'oro_tracking_website_view',
'parameters' => ['id' => $entity->getId()]
];
},
$this->getTranslator()->trans('oro.tracking.trackingwebsite.saved_message')
);
These routes were used to make redirect when user clicked on one of 2 buttons on UI rendered using 2 Twig macroses: saveAndCloseButton and saveAndStayButton. Now controller's action is not responsible to configure redirect data at all.
return $this->get('oro_ui.router')->redirect($entity);
return $this->get('oro_form.model.update_handler')->update(
$trackingWebsite,
$this->createForm($this->getFormType(), $trackingWebsite),
$this->getTranslator()->trans('oro.tracking.trackingwebsite.saved_message')
);
Redirect data is now configured directly in the button rendered in Twig template using macroses: saveAndCloseButton, saveAndStayButton, saveAndNewButton and saveActionButton.
See other related information in section OroUIBundle
of this document.
- Constructor for
Oro\Bundle\FormBundle\Form\Type\OroEntitySelectOrCreateInlineType
changed. New arguments:EntityManager $entityManager
,SearchRegistry $searchRegistry
.
####TranslationBundle
- Added translation strategies to dynamically handle translation fallbacks
- Refactored
Oro/Bundle/TranslationBundle/Translation/Translator
to support translation strategies
####DataGridBundle
- Moved and renamed class
Oro\Bundle\DataGridBundle\Common\Object
toOro\Component\Config\Common\ConfigObject
- Changed priority in next extensions:
- Oro\Bundle\DataGridBundle\Extension\Sorter\OrmSorterExtension from -250 to -260
- Oro\Bundle\DataGridBundle\Extension\Sorter\PostgresqlGridModifier from -251 to -261
- The constructor of the
Oro\Bundle\DataGridBundle\Extension\MassAction\DeleteMassActionHandler
class was changed. Before:__construct(EntityManager $entityManager, TranslatorInterface $translator, SecurityFacade $securityFacade, MassDeleteLimiter $limiter, RequestStack $requestStack)
. After:__construct(RegistryInterface $registry, TranslatorInterface $translator, SecurityFacade $securityFacade, MassDeleteLimiter $limiter, RequestStack $requestStack, OptionalListenerManager $listenerManager)
.
####ConfigExpression
- The class Oro\Component\ConfigExpression\Condition\False was renamed to FalseCondition
- The class Oro\Component\ConfigExpression\Condition\True was renamed to TrueCondition
####UIBundle
- Added lightgallery plugin by Sachin N.
Gallery view for a group of <a>
elements can be triggered by adding 'data-gallery' attribute with unique gallery id.
<a href="sample1.jpg" data-gallery="unique-id"></a>
<a href="sample2.jpg" data-gallery="unique-id"></a>
- Method
Oro\Bundle\UIBundle\Route\Router::redirectAfterSave
marked as deprecated. Use methodOro\Bundle\UIBundle\Route\Router::redirect
instead. - Use of Twig macroses
saveAndCloseButton
andsaveAndStayButton
was changed. In old version client was responsible to pass just a label of button. In this new version client responsible to specify route and parameters which will be used to make redirect if form will successfully saved. Before:
{% set html = UI.saveAndCloseButton() %}
{% if form.vars.value.id or resource_granted('oro_user_user_update') %}
{% set html = html ~ UI.saveAndStayButton() %}
{% endif %}
{{ UI.dropdownSaveButton({'html': html}) }}
{% endblock navButtons %}
Now:
{% if resource_granted('oro_user_create') %}
{% set html = html ~ UI.saveAndNewButton({
'route': 'oro_user_create'
}) %}
{% endif %}
{% if form.vars.value.id or resource_granted('oro_user_user_update') %}
{% set html = html ~ UI.saveAndStayButton({
'route': 'oro_user_update',
'params': {'id': '$id'}
}) %}
{% endif %}
{{ UI.dropdownSaveButton({'html': html}) }}
{% endblock navButtons %}
- New macros
saveAndNewButton
was added and used on most of pages with forms. By clicking on this button user redirects to page with form where a new record could be created.
####EmailBundle
Oro\Bundle\EmailBundle\Manager\EmailAttachmentManager::__construct()
signature changed frompublic function __construct(FilesystemMap $filesystemMap, EntityManager $em, KernelInterface $kernel, ServiceLink $securityFacadeLink, RouterInterface $router, ConfigFileValidator $configFileValidator, AttachmentAssociationHelper $attachmentAssociationHelper)
topublic function __construct(FileManager $fileManager, EntityManager $em, RouterInterface $router, ConfigFileValidator $configFileValidator, AttachmentAssociationHelper $attachmentAssociationHelper)
.Oro\Bundle\EmailBundle\Tools\EmailAttachmentTransformer::__construct()
signature changed frompublic function __construct(FilesystemMap $filesystemMap, Factory $factory)
topublic function __construct(Factory $factory, FileManager $fileManager, AttachmentManager $manager, EmailAttachmentManager $emailAttachmentManager)
.- The constructor of the
Oro\Bundle\EmailBundle\Mailer\Processor
class was changed. Before:__construct(DoctrineHelper $doctrineHelper, DirectMailer $mailer, EmailAddressHelper $emailAddressHelper, EmailEntityBuilder $emailEntityBuilder, EmailOwnerProvider $emailOwnerProvider, EmailActivityManager $emailActivityManager, ServiceLink $serviceLink, EventDispatcherInterface $eventDispatcher, Mcrypt $encryptor, EmailOriginHelper $emailOriginHelper)
. After:__construct(DoctrineHelper $doctrineHelper, DirectMailer $mailer, EmailAddressHelper $emailAddressHelper, EmailEntityBuilder $emailEntityBuilder, EmailActivityManager $emailActivityManager, EventDispatcherInterface $eventDispatcher, Mcrypt $encryptor, EmailOriginHelper $emailOriginHelper)
. Oro\Bundle\EmailBundle\Mailer\Processor::getEmailOrigin
marked as deprecated. Use methodOro\Bundle\EmailBundle\Tools\EmailOriginHelper::getEmailOrigin
instead.- Additional you should use origin as second parameter for
Oro\Bundle\EmailBundle\Mailer\Processor::process
if you want use specific transport different from system. - The constructor of the
Oro\Bundle\EmailBundle\Manager\EmailNotificationManager
class was changed. Before:__construct(EntityManager $entityManager, HtmlTagHelper $htmlTagHelper, Router $router, EmailCacheManager $emailCacheManager, ConfigManager $configManager)
. After:__construct(EntityManager $entityManager, HtmlTagHelper $htmlTagHelper, Router $router, ConfigManager $configManager)
. - Visibility of method
recipientsFromResult
inOro\Bundle\EmailBundle\Provider\EmailRecipientsHelper
was changed fromprotected
topublic
. This can bring abackward compatibility break
if you have own implementation of this class.
####PlatformBundle
- The method
prepend()
ofOro\Bundle\PlatformBundle\DependencyInjection\OroPlatformExtension
class was changed. The main aim is to change ordering of configuration load fromResources\config\oro\app.yml
files. At now the bundles that are loaded later can override configuration of bundles loaded before.
####AttachmentBundle:
- Fixed
Oro\Bundle\AttachmentBundle\Guesser\MsMimeTypeGuesser
to avoid PHP notices on file upload in some cases - Added translation strategies to dynamically handle translation fallbacks
- Extracted a file system relates functionality from
Oro\Bundle\AttachmentBundle\Manager\AttachmentManager
toOro\Bundle\AttachmentBundle\Manager\FileManager
. As result the following methods of the AttachmentManager class was marked as deprecated:prepareRemoteFile
,preUpload
,upload
,copyLocalFileToStorage
,getContent
,checkOnDelete
,copyAttachmentFile
. Oro\Bundle\AttachmentBundle\Manager\AttachmentManager::__construct()
signature changed frompublic function __construct(FilesystemMap $filesystemMap, Router $router, ServiceLink $securityFacadeLink, array $fileIcons, AssociationManager $associationManager)
topublic function __construct(RouterInterface $router, array $fileIcons, AssociationManager $associationManager)
.- Removed
uploaded
property ofOro\Bundle\AttachmentBundle\Entity\File
. Oro\Bundle\AttachmentBundle\Formatter\ImageEncodedFormatter::__construct()
signature changed frompublic function __construct(AttachmentManager $manager, FileLocatorInterface $fileLocator)
topublic function __construct(FileManager $fileManager, FileLocatorInterface $fileLocator)
.Oro\Bundle\AttachmentBundle\Entity\Manager\FileApiEntityManager::__construct()
signature changed frompublic function __construct(string $class, ObjectManager $om, SecurityFacade $securityFacade, AttachmentManager $attachmentManager)
topublic function __construct(string $class, ObjectManager $om, SecurityFacade $securityFacade, FileManager $fileManager, AttachmentManager $attachmentManager)
.Oro\Bundle\AttachmentBundle\Validator\ConfigFileValidator::validate()
signature changed frompublic function validate(string $dataClass, File $entity, string $fieldName = '')
topublic function validate(ComponentFile $file, string $dataClass, string $fieldName = '')
.
####CalendarBundle
- The method
formatCalendarDateRange
ofsrc/Oro/src/Oro/Bundle/CalendarBundle/Twig/DateFormatExtension.php
class was changed. Argument $dateTimeFormat was deleted, because it has no sense.calendar_date_range
extension method in twig templates should be called without this param. - Added method
formatCalendarDateRangeUser
ofsrc/Oro/src/Oro/Bundle/CalendarBundle/Twig/DateFormatUserExtension.php
. Methodcalendar_date_range_user
get additional param 'user' and return sate range according to user organization localization settings. - Added method
formatCalendarDateRangeOrganization
ofsrc/Oro/src/Oro/Bundle/CalendarBundle/Twig/DateFormatOrganizationExtension.php
. Methodcalendar_date_range_organization
get additional param 'organization' and return sate range according to organization localization settings. Oro\Bundle\CalendarBundle\Entity\CalendarEvent::NOT_RESPONDED
marked as deprecated. UseOro\Bundle\CalendarBundle\Entity\CalendarEvent::STATUS_NONE
.Oro\Bundle\CalendarBundle\Entity\CalendarEvent::TENTATIVELY_ACCEPTED
marked as deprecated. UseOro\Bundle\CalendarBundle\Entity\CalendarEvent::STATUS_TENTATIVE
.Oro\Bundle\CalendarBundle\Entity\CalendarEvent::ACCEPTED
marked as deprecated. UseOro\Bundle\CalendarBundle\Entity\CalendarEvent::STATUS_ACCEPTED
.Oro\Bundle\CalendarBundle\Entity\CalendarEvent::DECLINED
marked as deprecated. UseOro\Bundle\CalendarBundle\Entity\CalendarEvent::STATUS_DECLINED
.Oro\Bundle\CalendarBundle\Entity\CalendarEvent::getInvitationStatus
marked as deprecated. To get invitation status call methodsgetRelatedAttendee()->getStatus()
.- Guests
Oro\Bundle\CalendarBundle\Entity\CalendarEvent
of event are now represented via collection accessible by methodsgetAttendees
andsetAttendees
. Before to get all guets it was required to get all user owners of child events from parent event. Now parent event holds collection of entitiesOro\Bundle\CalendarBundle\Entity\Attendee
. Every attendee entity could refer toOro\Bundle\UserBundle\Entity\User
, but it's optional. - All email templates of events notifications were updated:
Migrations/Data/ORM/data/emails/invitation
. - Field
invitedUsers
inOro\Bundle\CalendarBundle\Form\Type\CalendarEvent[Api]Type
was deprecated. Use new fieldattendees
. - Field
invitationStatus
inOro\Bundle\CalendarBundle\Entity\CalendarEvent
was removed. Use new fieldrelatedAttendee.status
. - Field
doctrineHelper
inOro\Bundle\CalendarBundle\Provider\UserCalendarEventNormalizer
was removed. This can bring abackward compatibility break
if you have own implementation of this class. - Signature of
Oro\Bundle\CalendarBundle\Form\Type\CalendarEventType::__construct
method was changed. Before:__construct()
. After:__construct(ManagerRegistry $registry, SecurityFacade $securityFacade)
. This can bring abackward compatibility break
if you have own implementation of this class. - Methods of
Oro\Bundle\CalendarBundle\Form\Type\CalendarEventType
were removed:subscribeOnChildEvents
,preSubmit
,postSubmitChildEvents
,postSubmit
,setDefaultEventStatus
,preSetData
. Separate subscriber classes were added to handle logic of event listeners. See classes in namespaceOro\Bundle\CalendarBundle\Form\EventListeners
. This can bring abackward compatibility break
if you have own implementation ofOro\Bundle\CalendarBundle\Form\Type\CalendarEventType
class. - Method
setInvitationStatus
inOro\Bundle\CalendarBundle\Entity\CalendarEvent
was removed. Use new methodgetRelatedAttendee.setStatus
. - Signature of
Oro\Bundle\CalendarBundle\Form\Type\CalendarEventApiType::__construct
method was changed. Before:__construct(CalendarEventManager $calendarEventManager)
. After:__construct(CalendarEventManager $calendarEventManager, ManagerRegistry $registry, SecurityFacade $securityFacade, RequestStack $requestStack, AttendeeRelationManager $attendeeRelationManager)
. This can bring abackward compatibility break
if you have own implementation of this class. - Signature of
Oro\Bundle\CalendarBundle\Form\Handler\CalendarEventApiHandler::__construct
method was changed. Before:__construct(FormInterface $form, Request $request, ObjectManager $manager, EmailSendProcessor $emailSendProcessor, ActivityManager $activityManager)
. After:__construct(FormInterface $form, Request $request, ObjectManager $manager, EmailSendProcessor $emailSendProcessor, ActivityManager $activityManager, AttendeeRelationManager $attendeeRelationManager)
. This can bring abackward compatibility break
if you have own implementation of this class. - Signature of
Oro\Bundle\CalendarBundle\Form\Handler\CalendarEventApiHandler::onSuccess
method was changed. Before:onSuccess(CalendarEvent $entity, ArrayCollection $originalChildren)
. After:onSuccess(CalendarEvent $entity, ArrayCollection $originalAttendees)
. This can bring abackward compatibility break
if you have own implementation of this class. - Signature of
Oro\Bundle\CalendarBundle\Form\Handler\CalendarEventHandler::onSuccess
method was changed. Before:onSuccess(CalendarEvent $entity, ArrayCollection $originalChildren, $notify)
. After:onSuccess(CalendarEvent $entity, ArrayCollection $originalAttendees, $notify)
. This can bring abackward compatibility break
if you have own implementation of this class. Oro\Bundle\CalendarBundle\Form\Type\CalendarEventApiType::postSubmitData
method was moved toOro\Bundle\CalendarBundle\Form\EventListener\CalendarEventApiTypeSubscriber::postSubmitData
. This can bring abackward compatibility break
if you have own implementation of this class.Oro\Bundle\CalendarBundle\Form\Type\CalendarEventInviteesType
was removed. This can bring abackward compatibility break
if you have own implementation of this class.Oro\Bundle\CalendarBundle\Form\DataTransformer\EventsToUsersTransformer
was removed. This can bring abackward compatibility break
if you have own implementation of this class.Oro\Bundle\CalendarBundle\Model\Email\EmailNotification
andOro\Bundle\CalendarBundle\Model\Email\EmailSendProcessor
were updated to support entityOro\Bundle\CalendarBundle\Entity\Attendee
additionally toOro\Bundle\CalendarBundle\Entity\CalendarEvent
.- Signature of
Oro\Bundle\CalendarBundle\Provider\AbstractCalendarEventNormalizer::__construct
method was changed. Before:__construct(ReminderManager $reminderManager)
. After:__construct(ReminderManager $reminderManager, AttendeeManager $attendeeManager)
. This can bring abackward compatibility break
if you have own implementation of this class. - Signature of
Oro\Bundle\CalendarBundle\Provider\PublicCalendarEventNormalizer::__construct
method was changed. Before:__construct(ReminderManager $reminderManager, SecurityFacade $securityFacade)
. After:__construct(ReminderManager $reminderManager, SecurityFacade $securityFacade, AttendeeManager $attendeeManager)
. This can bring abackward compatibility break
if you have own implementation of this class. - Signature of
Oro\Bundle\CalendarBundle\Provider\SystemCalendarEventNormalizer::__construct
method was changed. Before:__construct(ReminderManager $reminderManager, SecurityFacade $securityFacade)
. After:__construct(ReminderManager $reminderManager, SecurityFacade $securityFacade, AttendeeManager $attendeeManager)
. This can bring abackward compatibility break
if you have own implementation of this class. - Signature of
Oro\Bundle\CalendarBundle\Provider\UserCalendarEventNormalizer::__construct
method was changed. Before:__construct(ReminderManager $reminderManager, SecurityFacade $securityFacade, DoctrineHelper $doctrineHelper)
. After:__construct(ReminderManager $reminderManager, SecurityFacade $securityFacade, AttendeeManager $attendeeManager)
. This can bring abackward compatibility break
if you have own implementation of this class. - Signature of
Oro\Bundle\CalendarBundle\EventListener\EntityListener::__construct
method was changed. Before:__construct(ServiceLink $securityContextLink)
. After:__construct(ServiceLink $securityContextLink, Recurrence $recurrenceModel)
. This can bring abackward compatibility break
if you have own implementation of this class. - Signature of
Oro\Bundle\CalendarBundle\Provider\UserCalendarProvider::__construct
method was changed. Before:__construct(DoctrineHelper $doctrineHelper, EntityNameResolver $entityNameResolver, AbstractCalendarEventNormalizer $calendarEventNormalizer)
. After:__construct(DoctrineHelper $doctrineHelper, EntityNameResolver $entityNameResolver, AbstractCalendarEventNormalizer $calendarEventNormalizer, Recurrence $recurrenceModel)
. This can bring abackward compatibility break
if you have own implementation of this class. - Route name for
Oro\Bundle\CalendarBundle\ControllerAjaxCalendarEventController::changeStatus
has been changed, according to status changes, formoro_calendar_event_tentatively_accepted
tooro_calendar_event_tentative
- Url for
Oro\Bundle\CalendarBundle\ControllerAjaxCalendarEventController::changeStatus
has been changed from "/accept/{id}" to "/accepted/{id}" and from "/tentatively/{id}" to "/tentative/{id}" - The constructor of the
Oro\Bundle\CalendarBundle\Form\DataTransformer\AttendeesToViewTransformer
class was changed. Before:__construct(EntityManager $entityManager, ConfigManager $configManager, TranslatorInterface $translator, ObjectMapper $mapper, TokenStorageInterface $securityTokenStorage, EventDispatcherInterface $dispatcher, AttendeeRelationManager $attendeeRelationManager)
. After:__construct(EntityManager $entityManager, ConfigManager $configManager, TranslatorInterface $translator, TokenStorageInterface $securityTokenStorage, EventDispatcherInterface $dispatcher, AttendeeRelationManager $attendeeRelationManager, EntityTitleResolverInterface $entityTitleResolver)
.
####LayoutBundle:
- Added possibility to create layout block types using only DI configuration, for details please check out documentation at Creating new block types section.
- BlockType classes replaced with DI configuration for listed block types:
root
,head
,body
,fieldset
,list
,listitem
,text
,button
andbutton_group
. Corresponding block type classes was removed. - Renamed
setDefaultOptions
toconfigureOptions
method atOro\Component\Layout\BlockTypeInterface\BlockTypeInterface
andOro\Component\Layout\BlockTypeInterface\BlockTypeExtensionInterface
. - Defined image types configuration section for theme config
- Added
oro_layout.provider.image_type
service to get image types available across all themes - The class Oro\Bundle\LayoutBundle\Layout\Block\Type\FormType was renamed to FormFieldsType
- New
Oro\Bundle\LayoutBundle\Layout\Block\Type\FormType
block type was added. This block type creates three child blocks in buildBlock method:FormStartType
,FormType
,FormEndType
. - Added possibility to view layout tree in developer toolbar and include block debug information in HTML, for details please check out documentation at Debug Information section.
- Added possibility to create layout update imports, for details please check out documentation Imports.
- Added new
\Oro\Component\Layout\ImportsAwareLayoutUpdateInterface
. - Layout theme additional configuration such as assets, images or requirejs from now placed in
layout/{theme_name}/config
folder Config definition. - Changed current expression language in layouts to symfony expression language, for details please check out documentation at Expressions section.
####EmbeddedFormBundle:
- Layout block types was replaced with DI only configuration for
embed_form_success
andembed_form_legacy_form
block types. ClassesOro/Bundle/EmbeddedFormBundle/Layout/Block/Type/EmbedFormSuccessType
andOro/Bundle/EmbeddedFormBundle/Layout/Block/Type/EmbedFormType
was removed.
####ActionBundle:
- Layout block types was replaced with DI only configuration for
abstract_configurable
block, classOro/Bundle/ActionBundle/Layout/Block/Type/ActionCombinedButtonsType
was removed.
####LocaleBundle:
- Added entity
Oro\Bundle\LocaleBundle\Entity\Localization
(see documentation
). - Added entity
Oro\Bundle\LocaleBundle\Entity\LocalizedFallbackValue
(see documentation
) for translating strings in different localizations. - Added trait
Oro\Bundle\LocaleBundle\Entity\FallbackTrait
for retrieve translated value for the needed localization. - Added Formatter
Oro\Bundle\LocaleBundle\Formatter\LanguageCodeFormatter
for displaying full title of the language by code. - Added Formatter
Oro\Bundle\LocaleBundle\Formatter\FormattingCodeFormatter
for displaying full title of the formatting by code. - Added
oro_format_datetime_organization
twig extension - allows get formatted date and calendar date range by organization localization settings. Deprecated since 1.11. Will be removed after 1.13.
####Layout Component:
\Oro\Component\Layout\Loader\Generator\ConfigLayoutUpdateGeneratorExtensionInterface::prepare()
signature was changed fromprepare(array $source, VisitorCollection $visitorCollection);
toprepare(Oro\Component\Layout\Loader\Generator\GeneratorData $data, VisitorCollection $visitorCollection);
@addTree
layout update action is\Oro\Bundle\LayoutBundle\Layout\Extension\Generator\AddTreeGeneratorExtension
now- Layout update
@setFormTheme
and@setBlockTheme
actions can accept relative paths now
####NotificationBundle:
- The constructor of the
Oro\Bundle\NotificationBundle\Provider\Mailer\DbSpool
class was changed. Before:__construct(EntityManager $em, EntityPool $entityPool, $entityClass)
. After:__construct(EntityManager $em, EntityPool $entityPool, $entityClass, EventDispatcherInterface $eventDispatcher)
.
####Oro\Component\Config
Oro\Component\Config\CumulativeResourceInfo::__construct
signature changed frompublic function __construct($bundleClass, $name, $path, $data)
topublic function __construct($bundleClass, $name, $path, array $data = [])
####UserBundle:
- The constructor of the
Oro\Bundle\UserBundle\Form\Type\UserType
class was changed. Removed argument:ConfigManager $userConfigManager
. - The constructor of the
Oro\Bundle\UserBundle\Form\Handler\UserHandler
class was changed. Removed argument:SecurityFacade $securityFacade = null
. - Added new configuration group user_configuration used to define which personal configurations can be updated by the user (Languages, Locale etc.)
- Added 2 new capabilites: Update User Profile and Access personal configuration to control access to "My Profile" and "My Configuration" updates
- Added new permission "Configure" which controls access to entity configuration settings. Currently is applied to User entity only.
####RequireJsBundle:
- Added
Oro\Bundle\RequireJSBundle\Provider\ConfigProviderInterface
interface. - Class
Oro\Bundle\RequireJSBundle\Provider\Config
marked as deprecated. UseOro\Bundle\RequireJSBundle\Provider\ConfigProvider
instead. - Added
Oro\Bundle\RequireJSBundle\Provider\AbstractConfigProvider
class. - Added
Oro\Bundle\RequireJSBundle\Manager\ConfigProviderManager
class for building all configs provided by config providers viaoro:requirejs:build
.
####ActivityBundle
- The constructor of the
Oro\Bundle\ActivityBundle\Entity\Manager\ActivityContextApiEntityManager
class was changed. Before:__construct(ObjectManager $om, ActivityManager $activityManager, TokenStorageInterface $securityTokenStorage, ConfigManager $configManager, RouterInterface $router, EntityAliasResolver $entityAliasResolver, ObjectMapper $objectMapper, TranslatorInterface $translator, DoctrineHelper $doctrineHelper)
. After:__construct(ObjectManager $om, ActivityManager $activityManager, TokenStorageInterface $securityTokenStorage, ConfigManager $configManager, RouterInterface $router, EntityAliasResolver $entityAliasResolver, EntityTitleResolverInterface $entityTitleResolver, DoctrineHelper $doctrineHelper)
. - The constructor of the
Oro\Bundle\ActivityBundle\Form\DataTransformer\ContextsToViewTransformer
class was changed. Before:__construct(EntityManager $entityManager, ConfigManager $configManager, TranslatorInterface $translator, ObjectMapper $mapper, TokenStorageInterface $securityTokenStorage, EventDispatcherInterface $dispatcher)
. After:__construct(EntityManager $entityManager, ConfigManager $configManager, TranslatorInterface $translator, TokenStorageInterface $securityTokenStorage, EventDispatcherInterface $dispatcher, EntityTitleResolverInterface $entityTitleResolver)
. - The constructor of the
Oro\Bundle\ActivityBundle\Form\Type\ContextsSelectType
class was changed. Before:__construct(EntityManager $entityManager, ConfigManager $configManager, TranslatorInterface $translator, ObjectMapper $mapper, TokenStorageInterface $securityTokenStorage, EventDispatcherInterface $dispatcher)
. After:__construct(EntityManager $entityManager, ConfigManager $configManager, TranslatorInterface $translator, TokenStorageInterface $securityTokenStorage, EventDispatcherInterface $dispatcher, EntityTitleResolverInterface $entityTitleResolver)
.