####General
-
Upgrade to 2.0 is available only from 1.10 version.
To correctly upgrade to version 2.0 follow the steps in the guide How to Upgrade to a New Version. At Step 7 instead of running
$ sudo -u www-data php app/console oro:platform:update --env=prod --force
you will run only once the upgrade command introduced to help upgrading from 1.10 to 2.0
$ sudo -u www-data php app/console oro:platform:upgrade20 --env=prod --force
Upgrade from version less then 1.10 is not supported.
-
Changed minimum required php version to 5.6
-
PhpUnit 5.7 support
-
LiipImagineBundle was updated to 1.5.* version.
-
Added dependency to fxpio/composer-asset-plugin composer plugin.
-
All original third-party asset libraries were moved out from platform and added to composer.json as bower-asset/npm-asset dependency.
####SOAP API was removed
- removed all dependencies to the
besimple/soap-bundle
bundle. - removed SOAP annotations from the entities. Updated entities:
- Oro\Bundle\ActivityListBundle\Entity\ActivityList
- Oro\Bundle\ActivityListBundle\Entity\ActivityOwner
- Oro\Bundle\AddressBundle\Entity\AbstractAddress
- Oro\Bundle\AddressBundle\Entity\AbstractEmail
- Oro\Bundle\AddressBundle\Entity\AbstractPhone
- Oro\Bundle\AddressBundle\Entity\AbstractTypedAddress
- Oro\Bundle\DataAuditBundle\Entity\Audit
- Oro\Bundle\EmailBundle\Entity\Email
- Oro\Bundle\EmailBundle\Entity\EmailAttachment
- Oro\Bundle\EmailBundle\Entity\EmailAttachmentContent
- Oro\Bundle\EmailBundle\Entity\EmailBody
- Oro\Bundle\EmailBundle\Entity\EmailFolder
- Oro\Bundle\EmailBundle\Entity\EmailRecipient
- Oro\Bundle\EmailBundle\Entity\EmailThread
- Oro\Bundle\EmailBundle\Entity\EmailUser
- Oro\Bundle\EmailBundle\Entity\InternalEmailOrigin
- Oro\Bundle\SearchBundle\Query\Result
- Oro\Bundle\SearchBundle\Query\Result\Item
- removed classes:
- Oro\Bundle\ActivityListBundle\Controller\Api\Soap\ActivityListController
- Oro\Bundle\AddressBundle\Controller\Api\Soap\AddressTypeController
- Oro\Bundle\AddressBundle\Controller\Api\Soap\CountryController
- Oro\Bundle\AddressBundle\Controller\Api\Soap\RegionController
- Oro\Bundle\DataAuditBundle\Controller\Api\Soap\AuditController
- Oro\Bundle\EmailBundle\Controller\Api\Soap\EmailController
- Oro\Bundle\NoteBundle\Controller\Api\Soap\NoteController
- Oro\Bundle\OrganizationBundle\Controller\Api\Soap\BusinessUnitController
- Oro\Bundle\OrganizationBundle\Controller\Api\Soap\OrganizationController
- Oro\Bundle\SearchBundle\Controller\Api\SoapController
- Oro\Bundle\UserBundle\Controller\Api\Soap\GroupController
- Oro\Bundle\UserBundle\Controller\Api\Soap\RoleController
- Oro\Bundle\UserBundle\Controller\Api\Soap\UserController
- Oro\Bundle\AddressBundle\Entity\AddressTypeSoap
- Oro\Bundle\AddressBundle\Entity\CountrySoap
- Oro\Bundle\AddressBundle\Entity\RegionSoap
- Oro\Bundle\NoteBundle\Entity\NoteSoap
- Oro\Bundle\OrganizationBundle\Entity\BusinessUnitSoap
- Oro\Bundle\OrganizationBundle\Entity\OrganizationSoap
- Oro\Bundle\UserBundle\Entity\GroupSoap
- Oro\Bundle\UserBundle\Entity\RoleSoap
- Oro\Bundle\UserBundle\Entity\UserSoap
- Oro\Bundle\TaskBundle\Entity\TaskSoap
- Oro\Bundle\DataAuditBundle\Entity\AuditData
- Oro\Bundle\EntityBundle\Model\EntityIdSoap
- Oro\Bundle\SearchBundle\Soap\Type\SelectedValue
- Oro\Bundle\SoapBundle\DependencyInjection\Compiler\LoadPass
- Oro\Bundle\SoapBundle\ServiceDefinition\Loader\OroSoapLoader
- Oro\Bundle\SoapBundle\ServiceDefinition\Loader\AnnotationComplexTypeLoader
- Oro\Bundle\SoapBundle\ServiceDefinition\Loader\FilterableLoaderInterface
- Oro\Bundle\SoapBundle\ServiceDefinition\Loader\ComplexTypeFilterInterface
- Oro\Bundle\SoapBundle\ServiceDefinition\Loader\SoapAclFieldFilter
- Oro\Bundle\SoapBundle\Type\KeyValue\StringType
- Oro\Bundle\AddressBundle\Tests\Functional\API\SoapAddressTypeApiTest
- Oro\Bundle\AddressBundle\Tests\Functional\API\SoapApiTest
- Oro\Bundle\DataAuditBundle\Tests\Functional\API\SoapDataAuditApiTest
- Oro\Bundle\DataAuditBundle\Tests\Functional\Controller\Api\Soap\AuditControllerTest
- Oro\Bundle\OrganizationBundle\Tests\Functional\API\SoapApiTest
- Oro\Bundle\SearchBundle\Tests\Functional\Controller\Api\SoapAdvancedSearchApiTest
- Oro\Bundle\SearchBundle\Tests\Functional\Controller\Api\SoapSearchApiTest
- Oro\Bundle\SearchBundle\Tests\Functional\Controller\Api\SoapSearchApiTest
- Oro\Bundle\UserBundle\Tests\Functional\API\SoapApiAclTest
- Oro\Bundle\UserBundle\Tests\Functional\API\SoapGroupsTest
- Oro\Bundle\UserBundle\Tests\Functional\API\SoapInvalidUsersTest
- Oro\Bundle\UserBundle\Tests\Functional\API\SoapRolesTest
- Oro\Bundle\UserBundle\Tests\Functional\API\SoapUsersACLTest
- Oro\Bundle\UserBundle\Tests\Functional\API\SoapUsersTest
- Oro\Bundle\DataAuditBundle\Tests\Unit\Entity\AuditDataTest
####Action Component
- Deprecated constant
Oro\Component\Action\Event\ExecuteActionEvents::DEPRECATED_HANDLE_BEFORE
removed. UseOro\Component\Action\Event\ExecuteActionEvents::HANDLE_BEFORE
instead. - Deprecated constant
Oro\Component\Action\Event\ExecuteActionEvents::DEPRECATED_HANDLE_AFTER
removed. UseOro\Component\Action\Event\ExecuteActionEvents::HANDLE_AFTER
instead. - Deprecated events
oro_workflow.action.handle_before
andoro_workflow.action.handle_action
removed. - Interface Oro\Component\ConfigExpression\ContextAccessorInterface improved. All methods can accept
PropertyPathInterface
andstring
. - Also updated all methods of Oro\Component\ConfigExpression\ContextAccessor according to changes in Oro\Component\ConfigExpression\ContextAccessorInterface.
- Class
Oro\Component\Action\Model\ContextAccessor
. UseOro\Component\ConfigExpression\ContextAccessor
(@oro_action.expression.context_accessor
) instead. - Class
Oro\Component\Action\Action\ActionFactory
- implements new interface
Oro\Component\ConfigExpression\FactoryWithTypesInterface
- implements new interface
- Class
Oro\Component\Action\Action\FlashMessage
- method
setRequest
now accepts null value.
- method
####Config Expression Component
- Added interface
Oro\Component\ConfigExpression\FactoryWithTypesInterface
with methodFactoryWithTypesInterface::getTypes()
- Class
Oro\Component\ConfigExpression\ExpressionFactory
now implements interfaceOro\Component\ConfigExpression\FactoryWithTypesInterface
####EntitySerializer Component
- Method
isMetadataProperty
ofOro\Component\EntitySerializer\ConfigUtil
marked as deprecated. UseisMetadataProperty
ofOro\Component\EntitySerializer\FieldAccessor
instead
####OrganizationBundle
- Changed signature of method
Oro\Bundle\OrganizationBundle\Entity\Repository\OrganizationRepository::getEnabledOrganizations
.
####ActionBundle
- Class
Oro\Bundle\ActionBundle\Layout\Block\Type\ActionLineButtonsType
was removed -> block typeaction_buttons
replaced with DI configuration. - Added class
Oro\Bundle\ActionBundle\Layout\DataProvider\ActionButtonsProvider
- layout data provider. - Default value for parameter
applications
in operation configuration renamed frombackend
todefault
. - Service
oro_action.context_accessor
removed. Useoro_action.expression.context_accessor
instead. - Added new command
Oro\Bundle\ActionBundle\Command\DebugActionCommand (oro:debug:action)
that displays list of all actions with description. - Added new command
Oro\Bundle\ActionBundle\Command\DebugConditionCommand (oro:debug:condition)
that displays list of all conditions full description - Command
Oro\Bundle\ActionBundle\Command\DumpActionConfigurationCommand
(oro:action:configuration:dump
) renamed toOro\Bundle\ActionBundle\Command\DebugOperationCommand
(oro:debug:operation
) - Tag
oro_workflow.action
removed, now for actions always usingoro_action.action
- Tag
oro_workflow.condition
removed, now for conditions always usingoro_action.condition
- Deprecated service
oro_workflow.context_accessor
removed - Service (
Oro\Bundle\ActionBundle\Model\ConfigurationPass\ReplacePropertyPath
) removed, useOro\Component\ConfigExpression\ConfigurationPass\ReplacePropertyPath
instead - Added
Oro\Bundle\ActionBundle\Provider\CurrentApplicationProviderInterface
and traitOro\Bundle\ActionBundle\Provider\CurrentApplicationProviderTrait
, interface declare methodsisApplicationsValid()
andgetCurrentApplication()
- Added
Oro\Bundle\ActionBundle\Provider\RouteProviderInterface
and traitOro\Bundle\ActionBundle\Provider\RouteProviderTrait
, interface declare getters and setters forwidgetRoute
,formDialogRoute
,formPageRoute
,executionRoute
- Deleted
Oro\Bundle\ActionBundle\Helper\ApplicationsHelper
. Please useOro\Bundle\ActionBundle\Provider\CurrentApplicationProvider
andOro\Bundle\ActionBundle\Provider\RouteProvider
instead. - Changes in
Oro\Bundle\ActionBundle\Helper\ApplicationsUrlHelper
:- type of first argument of
__construct()
changed toOro\Bundle\ActionBundle\Provider\RouteProviderInterface
- implemented method
getPageUrl()
, that usedApplicationsHelperInterface::getFormDialogRoute()
- type of first argument of
- Type of second argument of
Oro\Bundle\ActionBundle\Helper\DefaultOperationRequestHelper::__construct()
changed toOro\Bundle\ActionBundle\Provider\CurrentApplicationProviderInterface
- Type of third argument of
Oro\Bundle\ActionBundle\Model\OperationRegistry::__construct()
changed toOro\Bundle\ActionBundle\Provider\CurrentApplicationProviderInterface
- Changes in
Oro\Bundle\ActionBundle\Layout\DataProvider
:- type of first argument of
__construct()
changed toOro\Bundle\ActionBundle\Provider\CurrentApplicationProviderInterface
- implemented method
getPageRoute()
- type of first argument of
- Added
Oro\Bundle\ActionBundle\Button\ButtonSearchContext
, that wrap parameters needed for searching of a buttons - Added
Oro\Bundle\ActionBundle\Provider\ButtonSearchContextProvider
for providing ButtonSearchContext by array context - Added
Oro\Bundle\ActionBundle\Button\ButtonInterface
, that declare methods for rendering of a button,getOrder()
,getTemplate()
,getTemplateData()
,getButtonContext()
andgetGroup()
,getName()
,getLabel()
,getIcon()
,getTranslationDomain()
- Added
Oro\Bundle\ActionBundle\Button\ButtonContext
, that should be used to provide required context data toButtonInterface
- Added
Oro\Bundle\ActionBundle\Button\ButtonProviderExtensionInterface
, that declare methodfind()
for collect buttons from extensions - Added
Oro\Bundle\ActionBundle\Button\ButtonsCollection
to handle relation between button (ButtonInterface) and its extension (ButtonProviderExtensionInterface), so it can be used in itsmap
orfilter
methods as arguments. the collection can be used to keep matched buttons under single structure fot further reuse- method
filter():ButtonsCollection
filter to a new collection instance by provided filter callback - method
map():ButtonsCollection
to a new collection instance through provided map callback - method
toList():ButtonInterface[]
gets ordered array of buttons by (ButtonInterface::getOrder()) - method
toArray():ButtonInterface[]
gets all buttons that handle the collection - can be iterated (implements
\IteratorAggregate
) through\ArrayIterator
oftoList()
result. - implements
\Countable
- method
- Added
Oro\Bundle\ActionBundle\Provider\ButtonProvider
for providing buttons from extensions methods:findAll(ButtonSearchContext):ButtonInterface[]
- search by context through provider, sets ButtonContext enabled flag by availabilityfindAvailable(ButtonSearchContext):ButtonInterface
- only available buttonsmatch(ButtonSearchContext):ButtonsCollection
- returns instance that contains matched buttons and its corresponded button extensionhasButtons(ButtonSearchContext):bool
- any matched button met- registered as service
oro_action.provider.button
- Added
Oro\Bundle\ActionBundle\DependencyInjection\CompilerPass\ButtonProviderPass
, that collect button providers by tagoro.action.extension.button_provider
and inject it tooro_action.provider.button
- Added
Oro\Bundle\ActionBundle\Model\OperationButton
, that implementsButtonInterface
and specific logic for operation buttons - Added
Oro\Bundle\ActionBundle\Extension\OperationButtonProviderExtension
, that provide operation buttons- registered by tag
oro.action.extension.button_provider
- registered by tag
- Changed
Oro\Bundle\ActionBundle\Controller\WidgetController::buttonsAction
, now it useoro_action.provider.button
andoro_action.provider.button_search_context
to provide buttons - Added
Oro\Bundle\ActionBundle\Layout\DataProvider\LayoutButtonProvider
, that provide buttons for layouts- methods
getAll()
andgetByGroup()
- registered as layout provider
button_provider
- methods
- Changes in
Oro\Bundle\ActionBundle\Twig\OperationExtension
:- first argument
Oro\Bundle\ActionBundle\Model\OperationManager $manager
of__construct()
removed - type of second argument changed from
Oro\Bundle\ActionBundle\Helper\ApplicationsHelper
toOro\Bundle\ActionBundle\Provider\CurrentApplicationProviderInterface
and now it first argument - added fourth argument
Oro\Bundle\ActionBundle\Provider\ButtonProvider $buttonProvider
of__construct()
- added fifth argument
Oro\Bundle\ActionBundle\Provider\ButtonSearchContextProvider $searchContextProvider
of__construct()
- added filter
oro_action_has_buttons
, usedOro\Bundle\ActionBundle\Provider\ButtonProvider
andOro\Bundle\ActionBundle\Provider\ButtonSearchContextProvider
- removed filter
has_operations
- first argument
- Renamed js component
oroaction/js/app/components/buttons-component
tooroaction/js/app/components/button-component
(from plural to single) - Added tag
oro_action.operation_registry.filter
to be able to register custom final filters forOro\Bundle\ActionBundle\Model\OperationRegistry::find
result. Custom filter must implementOro\Bundle\ActionBundle\Model\OperationRegistryFilterInterface
- Changed signature for
Oro\Bundle\ActionBundle\Model\OperationRegistry::find
it now accepts only one argumentOro\Bundle\ActionBundle\Model\Criteria\OperationFindCriteria
. - Class
Oro\Bundle\ActionBundle\Datagrid\EventListener\OperationListener
renamed toOro\Bundle\ActionBundle\Datagrid\EventListener\ButtonListener
to support all buttons fromButtonProvider
- Changed constructor dependencies on
\Oro\Bundle\ActionBundle\Datagrid\Extension\DeleteMassActionExtension
- third argument
Oro\Bundle\ActionBundle\Model\OperationManager
replaced withOro\Bundle\ActionBundle\Model\OperationRegistry
and additionalOro\Bundle\ActionBundle\Helper\ContextHelper
as fourth argument. - Class
Oro\Bundle\ActionBundle\Form\Type\OperationType
first constructor argument (OperationManager) removed. - Class
Oro\Bundle\ActionBundle\Model\OperationManager
with serviceoro_action.operation_manager
removed. Use: Oro\Bundle\ActionBundle\Model\OperationRegistry
(@oro_action.operation_registry
) to retrieve an Operation directlyOro\Bundle\ActionBundle\Extension\OperationButtonProviderExtension
(@oro_action.provider.button.extension.operation
) for OperationButtonsOro\Bundle\ActionBundle\Provider\ButtonProvider
(@oro_action.provider.button
) - to operate all buttons- Changed signature of constructor of
Oro\Bundle\ActionBundle\Datagrid\EventListener\ButtonListener
. The argumentGridConfigurationHelper $gridConfigurationHelper
was replaces withEntityClassResolver $entityClassResolver
. - Changed signature of constructor of
Oro\Bundle\ActionBundle\Datagrid\Extension\DeleteMassActionExtension
. The argumentGridConfigurationHelper $gridConfigurationHelper
was replaces withEntityClassResolver $entityClassResolver
.
####ApiBundle
- The
oro.api.action_processor
DI tag was removed. To add a new action processor, useoro_api.actions
section of the ApiBundle configuration. - The
oro_api.config_extension
DI tag was removed. To add a new configuration extension, useoro_api.config_extensions
section of the ApiBundle configuration.
- ImportExportBundle/Field/FieldHelper.php was moved to EntityBundle/Helper/
- Added fourth argument
Oro\Bundle\EntityConfigBundle\Provider\ConfigProvider $entityConfigProvider
to__construct
method ofOro\Bundle\ImportExportBundle\Handler\AbstractHandler
. - Added fifth argument
Symfony\Component\Translation\TranslatorInterface $translator
to__construct
method ofOro\Bundle\ImportExportBundle\Handler\AbstractHandler
. - Removed method
public function setTranslator(TranslatorInterface $translator)
fromOro\Bundle\ImportExportBundle\Handler\AbstractImportHandler
. - Method
setSourceIterator
ofOro\Bundle\ImportExportBundle\Reader\IteratorBasedReader
now can set null value.
####WorkflowBundle
-
Class
Oro\Bundle\WorkflowBundle\Model\WorkflowManager
- construction signature was changed, now it takes the next arguments:
WorkflowRegistry
$workflowRegistry,DoctrineHelper
$doctrineHelper,EventDispatcherInterface
$eventDispatcher,WorkflowEntityConnector
$entityConnector
- method
getApplicableWorkflow
was removed -> new methodgetApplicableWorkflows
with$entity
instance was added instead. - method
getApplicableWorkflowByEntityClass
was removed. UseOro\Bundle\WorkflowBundle\Model\WorkflowManager::getApplicableWorkflows
method instead. - method
hasApplicableWorkflowByEntityClass
was removed. Use methodhasApplicableWorkflows
instead with an entity instance. - method
getWorkflowItemByEntity
was removed -> new methodgetWorkflowItem
with arguments$entity
and$workflowName
to retrieve anWorkflowItem
instance for corresponding entity and workflow. - method
getWorkflowItemsByEntity
was added to retrieve allWorkflowItems
instances from currently active (running) workflows for the entity provided as single argument. - method
hasWorkflowItemsByEntity
was added to get whether entity provided as single argument has any active (running) workflows with itsWorkflowItems
. - method
setActiveWorkflow
was removed -> methodactivateWorkflow
with just one argument as$workflowName
should be used instead. The method now just ensures that provided workflow should be active.- the method emits event
Oro\Bundle\WorkflowBundle\Event\WorkflowEvents::WORKFLOW_BEFORE_ACTIVATION
before workflow will be activated. - the method emits event
Oro\Bundle\WorkflowBundle\Event\WorkflowEvents::WORKFLOW_ACTIVATED
if workflow was activated.
- the method emits event
- method
deactivateWorkflow
changed its signature. Now it handles single argument as$workflowName
to ensure that provided workflow is inactive.- the method emits event
Oro\Bundle\WorkflowBundle\Event\WorkflowEvents::WORKFLOW_BEFORE_DEACTIVATION
before workflow will be deactivated. - the method emits event
Oro\Bundle\WorkflowBundle\Event\WorkflowEvents::WORKFLOW_DEACTIVATED
if workflow was deactivated.
- the method emits event
- method
resetWorkflowData
was added withWorkflowDefinition $workflowDefinition
as single argument. It removes from database all workflow items related to corresponding workflow. - method
resetWorkflowItem
was removed
- construction signature was changed, now it takes the next arguments:
-
Entity configuration (
@Config()
annotation) sub-nodeworkflow.active_workflow
was removed in favor ofWorkflowDefinition
fieldactive
. Now for proper workflow activation through configuration you should usedefaults.active: true
in corresponded workflow YAML config. -
Class
Oro\Bundle\WorkflowBundle\Model\Workflow
changed constructor signature. First argumentEntityConnector
was replaced byDoctrineHelper
- method
resetWorkflowData
was removed - useOro\Bundle\WorkflowBundle\Model\WorkflowManager::resetWorkflowData
instead.
- method
-
Repository
Oro\Bundle\WorkflowBundle\Entity\Repository\WorkflowItemRepository
signature was changed for methodresetWorkflowData
:- it requires instance of
Oro\Bundle\WorkflowBundle\Entity\WorkflowDefinition
as the first argument - argument
excludedWorkflows
was removed;
- it requires instance of
-
Changed signature of
@transit_workflow
action. Addedworkflow_name
parameter as a the third parameter in inline call. Be aware previously the third parameter wasdata
parameter. Nowdata
is the fourth one. -
Service
oro_workflow.entity_connector
(Oro\Bundle\WorkflowBundle\Model\EntityConnector.php
) was removed; -
Parameter
oro_workflow.entity_connector.class
was removed; -
Removed parameter
EntityConnector $entityConnector
from constructor ofOro\Bundle\WorkflowBundle\EventListener\WorkflowItemListener
; -
Removed form type
Oro\Bundle\WorkflowBundle\Form\Type\ApplicableEntitiesType
; -
Service
oro_workflow.entity_connector
(Oro\Bundle\WorkflowBundle\Model\WorkflowEntityConnector
) was added with purpose to check whether entity can be used in workflow as related. -
Now entity can have more than one active workflows.
-
Activation of workflows is now provided through
WorkflowManager::activateWorkflow
andWorkflowManager::deactivateWorkflow
methods as well as with workflow YAML configuration boolean nodedefaults.active
to load default activation state from configuration.NOTE: Please pay attention to make activations only through corresponded
WorkflowManager
methods. Do NOT make direct changes inWorkflowDefinition::setActive
setter. AsWorkflowManager
is responsive for activation events emitting described above. -
Added trait
Oro\Bundle\WorkflowBundle\Helper\WorkflowQueryTrait
with methods:joinWorkflowItem
- to easily join workflowItem to an entity with QueryBuilderjoinWorkflowStep
- to easily join workflowStep to an entity with QueryBuilder through optionally specified workflowItem alias Note:joinWorkflowStep
internally checks for workflowItem alias join to be already present in QueryBuilder instance to use it or creates new one otherwise.addDatagridQuery
- for datagrid listeners to join workflow fields (especially workflowStatus)
- Activation or deactivation of workflow now triggers removal for all data in affected entity flows. So when workflow is deactivated or reactivated - WorkflowItems will be removed from storage.
- Controllers methods (REST as well) for activation/deactivation now takes
workflowName
asWorkflowDefinition
identifier instead of related entity class string. - Steps retrieval for an entity now returns steps for all currently active workflows for related entity with
workflow
node in each as name of corresponding workflow for steps instepsData
. Example:{"workflowName":{"workflow": "workflowName", "steps":["step1", "step2"], "currentStep": "step1"}}
- User Interface. If an entity has multiply workflows currently active, transition buttonswill be displayed for each transition available from all active workflows on the entity view page. Flow chart will show as many flows as workflows started for an entity.
- For workflow activation (on workflows datagrid or workflow view page) there would be a popup displayed with a field that brings user to pick workflows that should not remain active and are supposed to be deactivated (e.g replaced with current workflow).
- Entity datagrids with workflow steps column now will show a list of currently started workflows with their steps and filtering by started workflows and their steps is available as well.
- Entity relations for fields
workflowItem
andworkflowStep
(e.g. implementation ofWorkflowAwareInterface
) are forbidden for related entity. - Added
Oro\Bundle\WorkflowBundle\Provider\WorkflowVirtualRelationProvider
class for relations between entities and workflows. Actively used in reports. - Added support for string identifiers in entities. Previously, there was only integers supported as primary keys for workflow related entity.
- Removed
Oro\Bundle\WorkflowBundle\Model\EntityConnector
class and its usage. - Removed
Oro\Bundle\WorkflowBundle\Model\EntityConnector
dependency formOro\Bundle\WorkflowBundle\Model\Workflow
class. - Added
Oro\Bundle\WorkflowBundle\Model\WorkflowEntityConnector
class with purpose to check whether entity can be used in workflow as related. - Entity
Oro\Bundle\WorkflowBundle\Entity\WorkflowItem
now hasentityClass
field with its related workflow entity class name. - Service '@oro_workflow.manager' (class
Oro\Bundle\WorkflowBundle\Model\WorkflowManager
) was refactored in favor of multiple workflows support. - Method
Oro\Bundle\WorkflowBundle\Model\WorkflowManager::getApplicableWorkflowByEntityClass
removed. UseOro\Bundle\WorkflowBundle\Model\WorkflowManager::getApplicableWorkflows
instead. - Interface
Oro\Bundle\WorkflowBundle\Entity\WorkflowAwareInterface
should no longer be used for entities. It completely changed. - Trait
Oro\Bundle\WorkflowBundle\Entity\WorkflowAwareTrait
removed. - Removed class
Oro\Bundle\WorkflowBundle\Field\FieldProvider
and its usages. - Removed class
Oro\Bundle\WorkflowBundle\Field\FieldGenerator
and its usages. - Definition for
oro_workflow.prototype.workflow
was changed, removedOro\Bundle\WorkflowBundle\Model\EntityConnector
dependency. - Updated class constructor
Oro\Bundle\WorkflowBundle\Configuration\WorkflowDefinitionConfigurationBuilder
, removed second argument$fieldGenerator
. - Updated REST callback
oro_api_workflow_entity_get
, now it usesoro_entity.entity_provider
service to collect entities and fields. - Removed following services:
- oro_workflow.field_generator
- oro_workflow.exclusion_provider
- oro_workflow.entity_provider
- oro_workflow.entity_field_provider
- oro_workflow.entity_field_list_provider
- Removed
Oro\Bundle\WorkflowBundle\Field\FieldGenerator
dependency from classOro\Bundle\WorkflowBundle\Datagrid\WorkflowStepColumnListener
, for now all required constants moved to this class - Added a new method
Oro\Bundle\WorkflowBundle\Model\WorkflowRegistry::getActiveWorkflowsByEntityClass
, that returns all found workflows for an entity class - Added a new method
Oro\Bundle\WorkflowBundle\Model\WorkflowRegistry::hasActiveWorkflowsByEntityClass
, that indicates if an entity class has one or more linked workflows - Removed method
getActiveWorkflowByEntityClass
fromOro\Bundle\WorkflowBundle\Model\WorkflowRegistry
, usegetActiveWorkflowsByEntityClass
instead. - Removed method
hasActiveWorkflowByEntityClass
fromOro\Bundle\WorkflowBundle\Model\WorkflowRegistry
, usehasActiveWorkflowsByEntityClass
instead. - Class
Oro\Bundle\WorkflowBundle\Form\EventListener\InitActionsListener
renamed toOro\Bundle\WorkflowBundle\Form\EventListener\FormInitListener
. - Service 'oro_workflow.form.event_listener.init_actions' was renamed to
oro_workflow.form.event_listener.form_init
. - Fourth constructor argument of class
Oro\Bundle\WorkflowBundle\Form\Type\WorkflowAttributesType
was changed fromInitActionsListener $initActionsListener
toFormInitListener $formInitListener
. - Added
preconditions
to process definition to be used instead ofpre_conditions
- Added
preconditions
to transition definition to be used instead ofpre_conditions
- Added
form_init
to transition definition to be used instead ofinit_actions
- Added
actions
to transition definition to be used instead ofpost_actions
- Definitions
pre_conditions
,init_actions
,post_actions
marked as deprecated
- Added workflow definition configuration node
exclusive_active_groups
to determine exclusiveness of active state in case of conflicting workflows in the system. - Added workflow definition configuration node
exclusive_record_groups
to determine exclusiveness of currently running workflow for a related entity by named group. - Added
WorkflowDefinition
property with workflow YAML configuration nodepriority
to be able regulate order of workflow acceptance in cases with cross-functionality. For exampleworkflow_record_group
with two workflows in one group and auto start transition will be sorted by priority and started only one with higher priority value.
- Removed service
@oro_workflow.manager.system_config
and its classOro\Bundle\WorkflowBundle\Model\WorkflowSystemConfigManager
as now there no entity configuration for active workflows. Activation and deactivation of a workflow now should be managed through WorkflowManager (Oro\Bundle\WorkflowBundle\Model\WorkflowManager
-@@oro_workflow.manager
) * Added new interfaceWorkflowApplicabilityFilterInterface
with methodOro\Bundle\WorkflowBundle\Model\WorkflowManager::addApplicabilityFilter(WorkflowApplicabilityFilterInterface $filter)
for ability to additionally filter applicable workflows for an entity. Used with new classOro\Bundle\WorkflowBundle\Model\WorkflowExclusiveRecordGroupFilter
now representsexclusive_record_groups
functionality part. - Added
priority
property toOro\Bundle\WorkflowBundle\Entity\WorkflowDefinition
and workflow configuration to be able configure priorities in workflow applications. - Added
isActive
property toOro\Bundle\WorkflowBundle\Entity\WorkflowDefinition
instead of EntityConfig - Added
groups
property toOro\Bundle\WorkflowBundle\Entity\WorkflowDefinition
that containsWorkflowDefinition::GROUP_TYPE_EXCLUSIVE_ACTIVE
andWorkflowDefinition::GROUP_TYPE_EXCLUSIVE_RECORD
nodes of array with corresponding groups thatWorkflowDefintiion
is belongs to. - Added methods
getExclusiveRecordGroups
andgetExclusiveActiveGroups
toOro\Bundle\WorkflowBundle\Entity\WorkflowDefinition
getName
,getLabel
andisActive
methods ofOro\Bundle\WorkflowBundle\Model\Workflow
now are proxy methods to itsOro\Bundle\WorkflowBundle\Entity\WorkflowDefinition
instance.- Removed method
getStartTransitions
fromOro\Bundle\WorkflowBundle\Model\WorkflowManager
-$workflow->getTransitionManager()->getStartTransitions()
can be used instead - The command
oro:process:execute:job
was removed. - Processes configuration file now loads from
Resorces/config/oro/processes.yml
file instead ofResources/config/oro/process.yml
- Processes configuration in
oro/processes.yml
file now gathered underprocesses: ...
root node.
oro_workflow.repository.workflow_item
inheritsoro_entity.abstract_repository
.- Service
oro_workflow.generator.trigger_schedule_options_verifier
(Oro\Bundle\WorkflowBundle\Model\TriggerScheduleOptionsVerifier
) removed. - Service
oro_workflow.transition_schedule.process_configuration_generator
(Oro\Bundle\WorkflowBundle\Model\TransitionSchedule\ProcessConfigurationGenerator
) removed. - Service
oro_workflow.transition_schedule.items_fetcher
(Oro\Bundle\WorkflowBundle\Model\TransitionSchedule\ItemsFetcher
) removed. - Service
oro_workflow.transition_schedule.query_factory
(Oro\Bundle\WorkflowBundle\Model\TransitionSchedule\TransitionQueryFactory
) removed. - Service
oro_workflow.cache.process_trigger
(Oro\Bundle\WorkflowBundle\Cache\ProcessTriggerCache
) removed. - Model
Oro\Bundle\WorkflowBundle\Model\TransitionSchedule\ScheduledTransitionProcessName
removed. - Class
Oro\Bundle\WorkflowBundle\Model\ProcessTriggerCronScheduler
was moved toOro\Bundle\WorkflowBundle\Cron\ProcessTriggerCronScheduler
and constructor signature was changed toDeferredScheduler $deferredScheduler
. - Added new entity
Oro\Bundle\WorkflowBundle\Entity\TransitionCronTrigger
. - Added new entity
Oro\Bundle\WorkflowBundle\Entity\TransitionEventTrigger
. - Added new interface
Oro\Bundle\WorkflowBundle\Entity\EventTriggerInterface
. - Added new interface
Oro\Bundle\WorkflowBundle\Entity\Repository\EventTriggerRepositoryInterface
. - Added new command
oro:workflow:handle-transition-cron-trigger
to handle transition cron trigger. - Removed schedule feature for workflow transitions. Now triggers can be used for schedule transitions.
- Removed listener
Oro\Bundle\WorkflowBundle\EventListener\ProcessCollectorListener
. - Removed parameter
oro_workflow.listener.process_collector.class
. - Removed listener
oro_workflow.event_listener.scheduled_transitions_listener
(Oro\Bundle\WorkflowBundle\EventListener\WorkflowScheduledTransitionsListener
). - Removed action group
oro_workflow_transition_process_schedule
. - Added possibility of translation for workflow configuration fields in file
Resources/translations/workflows.en.yml
: Now all following fields MUST be moved from workflow.yml configuration file in appropriate translation file under its key node. See keys and fields below:oro.workflow.{workflow_name}.label
- workflowlabel
field.oro.workflow.{workflow_name}.step.{step_name}.label
- steplabel
field.oro.workflow.{workflow_name}.attribute.{attribute_name}.label
- workflow attributelabel
field.oro.workflow.{workflow_name}.transition.{transition_name}.label
- transitionlabel
field.oro.workflow.{workflow_name}.transition.{transition_name}.warning_message
- transitionmessage
field.oro.workflow.{workflow_name}.transition.{transition_name}.attribute.{attribute_name}.label
- form options attributelabel
field. To migrate all labels from configuration translatable fields automatically you can use application commandoro:workflow:definitions:upgrade20
. - Added command
oro:workflow:translations:dump
as a helper to see custom workflow translations (lack of them as well) and their keys. - Added
Oro\Bundle\WorkflowBundle\Configuration\WorkflowDefinitionBuilderExtensionInterface
andoro.workflow.definition_builder.extension
service tag for usage in cases to pre-process (prepare) workflow builder configuration. - Added service tag
oro.workflow.configuration.handler
for request configuration procession byOro\Bundle\WorkflowBundle\Configuration\Handler\ConfigurationHandlerInterface
. - Removed
import
method fromOro\Bundle\WorkflowBundle\Entity\WorkflowDefinition
. UseOro\Bundle\WorkflowBundle\Handler\Helper\WorkflowDefinitionCloner::cloneDefinition
instead. - Added
originalDefinition
property and second constructor argument forOro\Bundle\WorkflowBundle\Event\WorkflowChangesEvent
in case of definition update. - Container parameter
oro_workflow.workflow_item.entity.class
renamed tooro_workflow.entity.workflow_item.class
- Container parameter
oro_workflow.workflow_definition.entity.class
renamed tooro_workflow.entity.workflow_definition.class
- Container parameter
oro_workflow.process_trigger.entity.class
renamed tooro_workflow.entity.process_trigger.class
- Container parameter
oro_workflow.process_definition.entity.class
renamed tooro_workflow.entity.process_definition.class
- Added container parameter
oro_workflow.entity.transition_trigger_cron.class
- Added container parameter
oro_workflow.entity.transition_trigger_event.class
- Changed signature of constructor of
\Oro\Bundle\WorkflowBundle\Form\Type\WorkflowDefinitionSelectType
, now it takes as second argument instance ofSymfony\Component\Translation\TranslatorInterface
- Changed signature of constructor of
\Oro\Bundle\WorkflowBundle\Form\Type\WorkflowSelectType
, now it takes as second argument instance of\Symfony\Component\Translation\TranslatorInterface
- Changed signature of constructor of
\Oro\Bundle\WorkflowBundle\Form\Type\WorkflowStepSelectType
, now it takes as second argument instance of\Symfony\Component\Translation\TranslatorInterface
- Deprecated service
oro_workflow.attribute_guesser
removed. - Deprecated interfaces and classes removed:
Oro\Bundle\WorkflowBundle\Model\AbstractStorage
Oro\Bundle\WorkflowBundle\Model\ConfigurationPass\ReplacePropertyPath
(serviceoro_workflow.configuration_pass.replace_property_path
)Oro\Bundle\WorkflowBundle\Model\ReplacePropertyPath\ContextAccessor
Oro\Bundle\WorkflowBundle\Event\ExecuteActionEvent
Oro\Bundle\WorkflowBundle\Event\ExecuteActionEvents
Oro\Bundle\WorkflowBundle\Exception\ActionException
Oro\Bundle\WorkflowBundle\Exception\InvalidParameterException
Oro\Bundle\WorkflowBundle\Model\AbstractAssembler
Oro\Bundle\WorkflowBundle\Model\Action\AbstractAction
Oro\Bundle\WorkflowBundle\Model\Action\AbstractDateAction
Oro\Bundle\WorkflowBundle\Model\Action\ActionAssembler
Oro\Bundle\WorkflowBundle\Model\Action\ActionFactory
Oro\Bundle\WorkflowBundle\Model\Action\ActionInterface
Oro\Bundle\WorkflowBundle\Model\Action\AssignActiveUser
Oro\Bundle\WorkflowBundle\Model\Action\AssignConstantValue
Oro\Bundle\WorkflowBundle\Model\Action\AssignValue
Oro\Bundle\WorkflowBundle\Model\Action\CallMethod
Oro\Bundle\WorkflowBundle\Model\Action\Configurable
Oro\Bundle\WorkflowBundle\Model\Action\CopyTagging
Oro\Bundle\WorkflowBundle\Model\Action\CreateDate
Oro\Bundle\WorkflowBundle\Model\Action\CreateDateTime
Oro\Bundle\WorkflowBundle\Model\Action\CreateEntity
Oro\Bundle\WorkflowBundle\Model\Action\CreateObject
Oro\Bundle\WorkflowBundle\Model\Action\EventDispatcherAwareActionInterface
Oro\Bundle\WorkflowBundle\Model\Action\FlashMessage
Oro\Bundle\WorkflowBundle\Model\Action\FormatName
Oro\Bundle\WorkflowBundle\Model\Action\FormatString
Oro\Bundle\WorkflowBundle\Model\Action\Redirect
Oro\Bundle\WorkflowBundle\Model\Action\RemoveEntity
Oro\Bundle\WorkflowBundle\Model\Action\RequestEntity
Oro\Bundle\WorkflowBundle\Model\Action\TranslateAction
Oro\Bundle\WorkflowBundle\Model\Action\Traverse
Oro\Bundle\WorkflowBundle\Model\Action\TreeExecutor
Oro\Bundle\WorkflowBundle\Model\Action\UnsetValue
Oro\Bundle\WorkflowBundle\Model\Attribute
Oro\Bundle\WorkflowBundle\Model\AttributeGuesser
Oro\Bundle\WorkflowBundle\Model\AttributeManager
Oro\Bundle\WorkflowBundle\Model\Condition\AbstractCondition
Oro\Bundle\WorkflowBundle\Model\Condition\Configurable
- Added new node
sopes
toOro\Bundle\WorkflowBundle\Configuration\WorkflowConfiguration
. - Added method
Oro\Bundle\WorkflowBundle\Entity\Repository\WorkflowDefinitionRepository::getScopedByNames(array $names, ScopeCriteria $scopeCriteria)
. - Added ManyToMany relation from
WorkflowDefinition
toOro\Bundle\ScopeBundle\Entity\Scope
. - Added interface
Oro\Bundle\WorkflowBundle\Model/Filter\WorkflowDefinitionFilterInterface.
It can be used for extensions ofWorkflowRegisty
. - Removed third constructor argument
Oro\Bundle\EntityConfigBundle\Provider\ConfigProvider $configProvider
ofWorkflowRegistry
. - Added method
public function addDefinitionFilter(WorkflowDefinitionFilterInterface $definitionFilter)
toWorkflowRegistry
. - Added listener
oro_workflow.listener.workflow_definition_scope
for creating or updatingWorflowDefinition
to updateWorkflowScope
entities. - Changes in
Oro\Bundle\WorkflowBundle\Configuration\WorkflowConfiguration
:- added constants
NODE_INIT_ENTITIES
,NODE_INIT_ROUTES
,NODE_INIT_CONTEXT_ATTRIBUTE
,DEFAULT_INIT_CONTEXT_ATTRIBUTE
- added nodes for constants
NODE_INIT_ENTITIES
,NODE_INIT_ROUTES
,NODE_INIT_CONTEXT_ATTRIBUTE
intotransitions
- added constants
- Changes in
Oro\Bundle\WorkflowBundle\Configuration\WorkflowDefinitionConfigurationBuilder
:- added processing of a init context from all transitions (
NODE_INIT_ENTITIES
,NODE_INIT_ROUTES
,NODE_INIT_CONTEXT_ATTRIBUTE
,NODE_INIT_DATAGRIDS
) - added nodes
NODE_INIT_ENTITIES
,NODE_INIT_ROUTES
,NODE_INIT_CONTEXT_ATTRIBUTE
,NODE_INIT_DATAGRIDS
into white list of a transition configuration filter
- added processing of a init context from all transitions (
- Changed
Oro\Bundle\WorkflowBundle\Controller\Api\Rest\WorkflowController::startAction
, now it use transition init options andoro_action.provider.button_search_context
- Changed
Oro\Bundle\WorkflowBundle\Controller\WidgetController::startTransitionFormAction
, now it use transition init options andoro_action.provider.button_search_context
- Changed
Oro\Bundle\WorkflowBundle\Controller\WorkflowController::startTransitionAction
, now it use transition init options - Added method
findActive()
toOro\Bundle\WorkflowBundle\Entity\Repository\WorkflowDefinitionRepository
- Added
Oro\Bundle\WorkflowBundle\Extension\TransitionButtonProviderExtension
asOro\Bundle\ActionBundle\Extension\ButtonProviderExtensionInterface
, that provide transition buttons - Added
Oro\Bundle\WorkflowBundle\Extension\StartTransitionButtonProviderExtension
asOro\Bundle\ActionBundle\Extension\ButtonProviderExtensionInterface
, that provide start transition buttons - Added
Oro\Bundle\WorkflowBundle\Button\TransitionButton
- Added
Oro\Bundle\WorkflowBundle\Button\StartTransitionButton
- Changed
Oro\Bundle\WorkflowBundle\Model\AttributeAssembler::assemble
, now it processing WorkflowConfiguration::NODE_INIT_CONTEXT_ATTRIBUTE - Changed
Oro\Bundle\WorkflowBundle\Model\Transition
, added properties $initEntities, $initRoutes, $initContextAttribute and getters/setters for it - Changed
Oro\Bundle\WorkflowBundle\Model\TransitionAssembler::assembleTransition
, now it process NODE_INIT_ENTITIES, NODE_INIT_ROUTES, NODE_INIT_CONTEXT_ATTRIBUTE - Added
Oro\Bundle\WorkflowBundle\Model\TransitionButton
, that implementsButtonInterface
and specific logic for transition buttons - Changed
Oro\Bundle\WorkflowBundle\Model\Workflow
, added methodsgetInitEntities()
andgetInitRoutes()
to obtain the appropriate options from the configuration - Changed
Oro\Bundle\WorkflowBundle\Model\WorkflowAssembler::assembleAttributes
, now it pass transition configuration intoAttributeAssembler::assemble()
- Added method
getActiveWorkflows()
toOro\Bundle\WorkflowBundle\Model\WorkflowRegistry
- Added class
Oro\Bundle\WorkflowBundle\Filter\WorkflowOperationFilter
and registered as an additional (tag:oro_action.operation_registry.filter
) filter for OperationRegistry. - Added class
Oro\Bundle\WorkflowBundle\Form\Handler\TransitionFormHandler
- Added class
Oro\Bundle\WorkflowBundle\Provider\TransitionDataProvider
- Added class
Oro\Bundle\WorkflowBundle\Provider\WorkflowDataProvider
- Changed signature of constructor of
Oro\Bundle\WorkflowBundle\Datagrid\Extension\RestrictionsExtension
. The argumentGridConfigurationHelper $gridConfigurationHelper
was replaces withEntityClassResolver $entityClassResolver
. - Changed signature of constructor of
Oro\Bundle\WorkflowBundle\Datagrid\WorkflowStepColumnListener
. The argumentEntityClassResolver $entityClassResolver
was added.
####LocaleBundle:
- Added helper
Oro\Bundle\LocaleBundle\Helper\LocalizationQueryTrait
for adding necessary joins to QueryBuilder - Added provider
Oro\Bundle\LocaleBundle\Provider\CurrentLocalizationProvider
for providing current localization - Added manager
Oro\Bundle\LocaleBundle\Manager\LocalizationManager
for providing localizations - Added datagrid extension
Oro\Bundle\LocaleBundle\Datagrid\Extension\LocalizedValueExtension
for working with localized values in datagrids - Added datagrid property
Oro\Bundle\LocaleBundle\Datagrid\Formatter\Property\LocalizedValueProperty
- Added extension interface
Oro\Bundle\LocaleBundle\Extension\CurrentLocalizationExtensionInterface
for providing current localization - Added twig filter
localized_value
toOro\Bundle\LocaleBundle\Twig\LocalizationExtension
for getting localized values in Twig - Added ExpressionFunction
localized_value
toOro\Bundle\LocaleBundle\Layout\ExpressionLanguageProvider
- can be used in Layouts - Added Localization Settings page in System configuration
- Updated
Oro\Bundle\LocaleBundle\Helper\LocalizationHelper
, usedCurrentLocalizationProvider
to provide current localization and addedgetLocalizedValue()
to retrieve fallback values - Changed signature of constructor of
Oro\Bundle\LocaleBundle\Form\Type\LanguageType
- now it takes the following arguments:ConfigManager $cm
,LanguageProvider $languageProvider
.
oro_locale.repository.localization
inheritsoro_entity.abstract_repository
- Updated moment-timezone.js library to version 0.5.*
- Changed signature of constructor of
Oro\Bundle\LocaleBundle\Datagrid\Extension\LocalizedValueExtension
. The argumentEntityClassResolver $entityClassResolver
was added. - Removed methods
getRootEntityNameAndAlias
andgetEntityClassName
fromOro\Bundle\LocaleBundle\Datagrid\Extension\LocalizedValueExtension
####SearchBundle
- Changed all
private
fields and accessors toprotected
inOro/Bundle/SearchBundle/Entity/IndexDecimal
,Oro/Bundle/SearchBundle/Entity/IndexInteger
,Oro/Bundle/SearchBundle/Entity/IndexText
,Oro/Bundle/SearchBundle/Entity/Item
- Constructor of class
Oro/Bundle/Engine/FulltextIndexManager
was changed. New optional arguments$tableName
and$indexName
was added. - Methods
PdoMysql::getPlainSql
andPdoPgsql::getPlainSql
were changed. New optional arguments$tableName
and$indexName
was added \Oro\Bundle\SearchBundle\Provider\AbstractSearchMappingProvider::getEntityConfig
returns empty array if config not found\Oro\Bundle\SearchBundle\Provider\AbstractSearchMappingProvider::getEntityModeConfig
default value is Mode::NORMAL if configurations is mepty\Oro\Bundle\SearchBundle\Engine\ObjectMapper::mapSelectedData
returns empty array if data fields not found\Oro\Bundle\SearchBundle\Query\Result\Item::_construct
signature changed, array type hintings added- Constructor of class
Oro\Bundle\SearchBundle\Datagrid\Extension\SearchResultsExtension
was changed. Dependency onDoctrine\ORM\EntityManager
was removed. - Constructor of class
Oro\Bundle\SearchBundle\Query\Result\Item
was changed. Dependency onDoctrine\ORM\EntityManager
was removed. - Method
getEntity
was removed fromOro\Bundle\SearchBundle\Query\Result\Item
. - Changed signature of the constructor of
Oro\Bundle\SearchBundle\EventListener\ORM\FulltextIndexListener
. Removed$databaseDriver
parameter. - Changed signature of the constructor of
Oro\Bundle\SearchBundle\EventListener\ORM\FulltextIndexListener
. AddedConnection $connection
parameter.
####OroIntegrationBundle:
- The option
--integration-id
renamed to--integration
inoro:cron:integration:sync
cli command. - The option
--force
were removed fromoro:cron:integration:sync
cli command. Pass it as connector optionforce=true
. - The option
--transport-batch-size force
were removed fromoro:cron:integration:sync
cli command. - The option
--params
were removed fromoro:integration:reverse:sync
cli command. Use--connector-parameters
instead. - The
SyncScheduler::schedule
method signature was changed. - The
GenuineSyncScheduler::schedule
method signature was changed. - The parameter
oro_integration.genuine_sync_scheduler.class
was removed. - The parameter
oro_integration.reverse_sync.processor.class
was removed.
####Layout Component:
- Interface
Oro\Component\Layout\DataProviderInterface
was removed. - Abstract class
Oro\Component\Layout\AbstractServerRenderDataProvider
was removed. - Methods
Oro\Component\Layout\DataAccessorInterface::getIdentifier()
andOro\Component\Layout\DataAccessorInterface::get()
were removed. - Added class
Oro\Component\Layout\DataProviderDecorator
. - Add possibility to use parameters in data providers, for details please check out documentation Layout data.
- Method
Oro\Component\Layout\ContextDataCollection::getIdentifier()
was removed. - Twig method
layout_attr_merge
was renamed tolayout_attr_defaults
. - BlockType classes replaced with DI configuration for listed block types:
external_resource
,input
,link
,meta
,ordered_list
,script
andstyle
. Corresponding block type classes were removed. - Added interface
Oro\Component\Layout\Extension\Theme\ResourceProvider\ResourceProviderInterface
- Added class
Oro\Component\Layout\Extension\Theme\ResourceProvider\ThemeResourceProvider
that implementsOro\Component\Layout\Extension\Theme\ResourceProvider\ResourceProviderInterface
- Added interface
Oro\Component\Layout\Extension\Theme\Visitor\VisitorInterface
- Added class
Oro\Component\Layout\Extension\Theme\Visitor\ImportVisitor
that implementsOro\Component\Layout\Extension\Theme\Visitor\VisitorInterface
- Added method
Oro\Component\Layout\Extension\Theme\ThemeExtension::addVisitor
for adding visitors that implementsOro\Component\Layout\Extension\Theme\Visitor\VisitorInterface
- Added method
Oro\Component\Layout\LayoutUpdateImportInterface::getImport
. - Added methods
Oro\Component\Layout\Model\LayoutUpdateImport::getParent
andOro\Component\Layout\Model\LayoutUpdateImport::setParent
that contains parentOro\Component\Layout\Model\LayoutUpdateImport
for nested imports. - Renamed option for
Oro\Component\Layout\Block\Type\BaseType
fromadditional_block_prefix
toadditional_block_prefixes
, from now it contains array. - Added methods
getRoot
,getReplacement
,getNamespace
andgetAdditionalBlockPrefixes
toOro\Component\Layout\ImportLayoutManipulator
to work with nested imports. - Added method
Oro\Component\Layout\Templating\Helper\LayoutHelper::parentBlockWidget
to render parent block widget. - Added method
getUpdateFileNamePatterns
toOro\Component\Layout\Loader\LayoutUpdateLoaderInterface
. - Added method
getUpdateFilenamePattern
toOro\Component\Layout\Loader\Driver\DriverInterface
. - Added
Oro\Component\Layout\Block\Type\Options
class that wraps thearray
of options and can evaluate option type (isoption
instanceofExpression
). - Updated method
Oro\Component\Layout\Extension\Theme\Visitor::loadImportUpdate()
to add imported updates to updates list right after parent update instead of adding it to the end of updates list. - Updated
Oro\Component\Layout\BlockTypeInterface
,Oro\Component\Layout\BlockTypeExtensionInterface
,Oro\Component\Layout\LayoutRegistryInterface
to use theOptions
object instead ofarray
. - Added method
Oro\Component\Layout\BlockView::getId
. - Added method
Oro\Component\Layout\ContextInterface::getHash
. - Added config loader
\Oro\Component\Layout\Config\Loader\LayoutUpdateCumulativeResourceLoader
that tracks directory structure/content updates and files modification time. - Added interface
Oro\Component\Layout\BlockViewCacheInterface
. - Added class
Oro\Component\Layout\BlockViewCache
. - Updated method
Oro\Component\Layout\LayoutBuilder::getLayout
. Added layout cache. - Injected
BlockViewCache
intoLayoutFactoryBuilder
and passed as argument toLayoutFactory
. FromLayoutFactory
BlockViewCache
argument passed as argument toLayoutBuilder
to save/fetch layout cache data. - Update interface method arguments
Oro\Component\Layout\BlockFactoryInterface::createBlockView
- removed$rootId
.
####LayoutBundle
- Removed class
Oro\Bundle\LayoutBundle\CacheWarmer\LayoutUpdatesWarmer
. - Added class
Oro\Bundle\LayoutBundle\EventListener\ContainerListener
, register eventonKernelRequest
that helps to warm cache for layout updates resources. - Moved layout updates from container to
oro.cache.abstract
- Added new Twig function
parent_block_widget
toOro\Bundle\LayoutBundle\Twig\LayoutExtension
for rendering parent block widget. - Added interface
Oro\Component\Layout\Form\FormRendererInterface
to add fourth argument$renderParentBlock
to methodsearchAndRenderBlock
that tells renderer to search for widget in parent theme resources. - Added interface
Oro\Bundle\LayoutBundle\Form\TwigRendererInterface
that extends newOro\Component\Layout\Form\FormRendererInterface
. - Added interface
Oro\Component\Layout\Form\RendererEngine\FormRendererEngineInterface
that extendsSymfony\Component\Form\FormRendererEngineInterface
to add new methodswitchToNextParentResource
needed forparent_block_widget
. - Added interface
Oro\Bundle\LayoutBundle\Form\TwigRendererEngineInterface
that extends newOro\Component\Layout\Form\RendererEngine\FormRendererEngineInterface
for using it everywhere in LayoutBundle instead ofSymfony\Bridge\Twig\Form\TwigRendererEngineInterface
. - Added class
Oro\Bundle\LayoutBundle\Form\BaseTwigRendererEngine
that extendsSymfony\Bridge\Twig\Form\TwigRendererEngine
and implements newOro\Bundle\LayoutBundle\Form\TwigRendererEngineInterface
. - Updated class
Oro\Bundle\LayoutBundle\Form\RendererEngine\TwigRendererEngine
to extend newOro\Bundle\LayoutBundle\Form\BaseTwigRendererEngine
. - Updated class
Oro\Bundle\LayoutBundle\Form\RendererEngine\TemplatingRendererEngine
that extendsSymfony\Component\Form\Extension\Templating\TemplatingRendererEngine
and implementsOro\Component\Layout\Form\RendererEngine\FormRendererEngineInterface
. - Updated class
Oro\Bundle\LayoutBundle\Form\TwigRendererEngine
to extend newOro\Bundle\LayoutBundle\Form\BaseTwigRendererEngine
. - Updated class
Oro\Bundle\LayoutBundle\Layout\TwigLayoutRenderer
to implementOro\Bundle\LayoutBundle\Form\TwigRendererInterface
. - Added class
Oro\Bundle\LayoutBundle\Layout\Block\Extension\DataCollectorExtension
that collects layout debug information in data collector used in Layouts section of Symfony Profiler. - Class
Oro\Bundle\LayoutBundle\Provider\ImageTypeProvider
added to provide available image types collected from all themes - Class
Oro\Bundle\LayoutBundle\Loader\ImageFilterLoader
added to dynamically load Imagine filters - Dependency injection tag
layout.image_filter.provider
added to support custom Imagine filter providers - Removed class
Oro\Bundle\LayoutBundle\Layout\Block\Extension\ExpressionExtension
. - Removed class
Oro\Bundle\LayoutBundle\Layout\Block\Extension\OptionValueBagExtension
. - Class
Oro\Bundle\LayoutBundle\Exception\CircularReferenceException
moved toOro\Component\Layout\Exception\CircularReferenceException
. - Class
Oro\Bundle\LayoutBundle\Layout\Encode\ExpressionEncoderInterface
moved toOro\Component\Layout\ExpressionLanguage\Encoder\ExpressionEncoderInterface
. - Class
Oro\Bundle\LayoutBundle\Layout\Encoder\ExpressionEncoderRegistry
moved toOro\Component\Layout\ExpressionLanguage\Encoder\ExpressionEncoderRegistry
. - Class
Oro\Bundle\LayoutBundle\Layout\Encoder\JsonExpressionEncoder
moved toOro\Component\Layout\ExpressionLanguage\Encoder\JsonExpressionEncoder
. - Class
Oro\Bundle\LayoutBundle\ExpressionLanguage\ExpressionManipulator
moved toOro\Component\Layout\ExpressionLanguage\ExpressionManipulator
. - Class
Oro\Bundle\LayoutBundle\Layout\Processor\ExpressionProcessor
moved toOro\Component\Layout\ExpressionLanguage\ExpressionProcessor
. - All logic that work with
\Oro\Bundle\LayoutBundle\Layout\Form\FormAccessor
and related blocks was moved toEmbeddedFormBundle
:Oro\Bundle\LayoutBundle\Layout\Form\AbstractFormAccessor
moved toOro\Bundle\EmbeddedFormBundle\Layout\Form\AbstractFormAccessor
Oro\Bundle\LayoutBundle\Layout\Form\ConfigurableFormAccessorInterface
moved toOro\Bundle\EmbeddedFormBundle\Layout\Form\ConfigurableFormAccessorInterface
Oro\Bundle\LayoutBundle\Layout\Form\DependencyInjectionFormAccessor
moved toOro\Bundle\EmbeddedFormBundle\Layout\Form\DependencyInjectionFormAccessor
Oro\Bundle\LayoutBundle\Layout\Form\FormAccessor
moved toOro\Bundle\EmbeddedFormBundle\Layout\Form\FormAccessor
Oro\Bundle\LayoutBundle\Layout\Form\FormAccessorInterface
moved toOro\Bundle\EmbeddedFormBundle\Layout\Form\FormAccessorInterface
Oro\Bundle\LayoutBundle\Layout\Form\FormAction
moved toOro\Bundle\EmbeddedFormBundle\Layout\Form\FormAction
Oro\Bundle\LayoutBundle\Layout\Form\FormLayoutBuilder
moved toOro\Bundle\EmbeddedFormBundle\Layout\Form\FormLayoutBuilder
Oro\Bundle\LayoutBundle\Layout\Form\FormLayoutBuilderInterface
moved toOro\Bundle\EmbeddedFormBundle\Layout\Form\FormLayoutBuilderInterface
Oro\Bundle\LayoutBundle\Layout\Form\GroupingFormLayoutBuilder
moved toOro\Bundle\EmbeddedFormBundle\Layout\Form\GroupingFormLayoutBuilder
Oro\Bundle\LayoutBundle\Layout\Block\Type\AbstractFormType
moved toOro\Bundle\EmbeddedFormBundle\Layout\Block\Type\AbstractFormType
Oro\Bundle\LayoutBundle\Layout\Block\Type\FormEndType
moved toOro\Bundle\EmbeddedFormBundle\Layout\Block\Type\EmbedFormEndType
Oro\Bundle\LayoutBundle\Layout\Block\Type\FormFieldType
moved toOro\Bundle\EmbeddedFormBundle\Layout\Block\Type\EmbedFormFieldType
Oro\Bundle\LayoutBundle\Layout\Block\Type\FormFieldsType
moved toOro\Bundle\EmbeddedFormBundle\Layout\Block\Type\EmbedFormFieldsType
Oro\Bundle\LayoutBundle\Layout\Block\Type\FormStartType
moved toOro\Bundle\EmbeddedFormBundle\Layout\Block\Type\EmbedFormStartType
Oro\Bundle\LayoutBundle\Layout\Block\Type\FormType
moved toOro\Bundle\EmbeddedFormBundle\Layout\Block\Type\EmbedFormType
- Added layout block type
Oro\Bundle\LayoutBundle\Layout\Block\Type\FormType
with new logic. - Layout block types
form_start
,form_end
,form_fields
is created asconfigurable
with DI configuration. - Added class
Oro\Bundle\LayoutBundle\DependencyInjection\Compiler\BlockViewSerializerNormalizersPass
that collect serializers by taglayout.block_view_serializer.normalizer
and inject it tooro_layout.block_view_serializer
:- Added block view normalizer
Oro\Bundle\LayoutBundle\Layout\Serializer\BlockViewNormalizer
- Added block view normalizer
Oro\Bundle\LayoutBundle\Layout\Serializer\ExpressionNormalizer
- Added block view normalizer
Oro\Bundle\LayoutBundle\Layout\Serializer\OptionValueBagNormalizer
- Added block view normalizer
- Added exception class
Oro\Bundle\LayoutBundle\Exception\UnexpectedBlockViewVarTypeException
. - Added layout context configurator
Oro\Bundle\LayoutBundle\Layout\Extension\LastModifiedDateContextConfigurator
.
####ConfigBundle:
- Class
Oro\Bundle\ConfigBundle\Config\AbstractScopeManager
added$scopeIdentifier
of type integer, null or object as optional parameter for next methods:getSettingValue
,getInfo
,set
,reset
,getChanges
,flush
,save
,calculateChangeSet
,reload
- Class
Oro\Bundle\ConfigBundle\Config\ConfigManager
added$scopeIdentifier
of type integer, null or object as optional parameter for next methods:get
,getInfo
,set
,reset
,flush
,save
,calculateChangeSet
,reload
,getValue
,buildChangeSet
- Class
Oro\Component\Config\Loader\FolderContentCumulativeLoader
now uses list of regular expressions as fourth argument instead of list of file extensions. For example, if you passed as fourth argument['yml', 'php']
you should replace it with['/\.yml$/', '/\.php$/']
- System configuration now loads from
Resources/config/oro/system_configuration.yml
instead ofResources/config/system_configuration.yml
file. - Root node for system configuration in
Resources/config/oro/system_configuration.yml
file were changed fromoro_system_configuration
tosystem_configuration
. - Form type
Oro\Bundle\ConfigBundle\Form\Type\ConfigFileType
added to allow file management in the system configuration
####AttachmentBundle:
- Class
Oro\Bundle\AttachmentBundle\Resizer\ImageResizer
introduced to resize images by filter name - Removed constant
GRID_LEFT_JOIN_PATH
fromOro\Bundle\AttachmentBundle\EventListener\AttachmentGridListener
####DatagridBundle:
- Class
Oro/Bundle/DataGridBundle/Provider/ConfigurationProvider.php
- construction signature was changed now it takes next arguments:
SystemAwareResolver
$resolver,CacheProvider
$cache
- method
warmUpCache
was added to fill or refresh cache. - method
loadConfiguration
was added to set raw configuration for all datagrid configs. - method
getDatagridConfigurationLoader
was added to get loader for datagrid.yml files. - method
ensureConfigurationLoaded
was added to check if datagrid config need to be loaded to cache. - You can find example of refreshing datagrid cache in
Oro/Bundle/DataGridBundle/EventListener/ContainerListener.php
- construction signature was changed now it takes next arguments:
- Class
Oro\Bundle\DataGridBundle\Datasource\Orm\OrmDatasource.php
- construction signature was changed, now it takes next arguments:
ConfigProcessorInterface
$processor,EventDispatcherInterface
$eventDispatcher,ParameterBinderInterface
$parameterBinder,QueryHintResolver
$queryHintResolver
- construction signature was changed, now it takes next arguments:
- Added parameter
split_to_cells
to layoutdatagrid
block type which allows to customize grid through layouts. - Configuration files for datagrids now loads from
Resources/config/oro/datagrids.yml
file instead ofResources/config/datagrid.yml
. - Configuration files root node now changed to its plural form
datagrids: ...
. - Added class
Oro\Bundle\DataGridBundle\Extension\Action\Action\ExportAction
- Added class
Oro\Bundle\DataGridBundle\Extension\Action\Action\ImportAction
- Added class
Oro\Bundle\DataGridBundle\Extension\Action\Action\AbstractImportExportAction
- Added class
Oro\Bundle\DataGridBundle\Datasource\Orm\Configs\YamlProcessor
- Added interface
Oro\Bundle\DataGridBundle\Datasource\Orm\Configs\ConfigProcessorInterface
Oro\Bundle\DataGridBundle\Datasource\Orm\OrmDatasource::getParameterBinder
was deprecatedOro\Bundle\DataGridBundle\Datasource\ParameterBinderAwareInterface::getParameterBinder
was deprecated- Class
Oro/Bundle/DataGridBundle/Extension/MassAction/DeleteMassActionHandler.php
- construction signature was changed now it takes new argument:
MessageProducerInterface
$producer
- construction signature was changed now it takes new argument:
- Added helper
Oro\Bundle\DataGridBundle\Tools\DatagridRouteHelper
- Class
Oro\Bundle\DataGridBundle\Extension\Action\Actions\AbstractAction\ActionWidgetAction
renamed toOro\Bundle\DataGridBundle\Extension\Action\Actions\AbstractAction\ActionWidgetAction\ButtonWidgetAction
- Removed class
Oro\Bundle\DataGridBundle\EventListener\AbstractDatagridListener
- Removed constant
DATASOURCE_BIND_PARAMETERS_PATH
fromOro\Bundle\DataGridBundle\EventListener\DatasourceBindParametersListener
- Changed signature of constructor of
Oro\Bundle\DataGridBundle\Extension\Board\Processor\DefaultProcessor
. The argumentGridConfigurationHelper $gridConfigurationHelper
was replaces withEntityClassResolver $entityClassResolver
. - Changed signature of constructor of
Oro\Bundle\DataGridBundle\Extension\Board\BoardExtension
. The argumentGridConfigurationHelper $gridConfigurationHelper
was replaces withEntityClassResolver $entityClassResolver
. - Changed signature of constructor of
Oro\Bundle\DataGridBundle\Extension\Board\RestrictionManager
. The argumentGridConfigurationHelper $gridConfigurationHelper
was replaces withEntityClassResolver $entityClassResolver
. - Removed constant
CONFIG_EXTENDED_ENTITY_KEY
fromOro\Bundle\DataGridBundle\Extension\InlineEditing\Configuration
- Changed signature of constructor of
Oro\Bundle\DataGridBundle\Extension\MassAction\DeleteMassActionExtension
. The argumentGridConfigurationHelper $gridConfigurationHelper
was replaces withEntityClassResolver $entityClassResolver
. - Class
Oro\Bundle\DataGridBundle\Tools\GridConfigurationHelper
was marked as deprecated. Useconfig->getOrmQuery()->getRootEntity()
andconfig->getOrmQuery()->getRootAlias()
instead - Method
addSelect
ofOro\Bundle\DataGridBundle\Datagrid\Common\DatagridConfiguration
was marked as deprecated. Useconfig->getOrmQuery()->addSelect()
instead - Method
joinTable
ofOro\Bundle\DataGridBundle\Datagrid\Common\DatagridConfiguration
was marked as deprecated. Useconfig->getOrmQuery()->addInnerJoin()
orconfig->getOrmQuery()->addLeftJoin()
instead
####SecurityBundle
- Removed layout context configurator
Oro\Bundle\SecurityBundle\Layout\Extension\SecurityFacadeContextConfigurator
. - Added layout context configurator
Oro\Bundle\SecurityBundle\Layout\Extension\IsLoggedInContextConfigurator
. - Added layout data provider
\Oro\Bundle\SecurityBundle\Layout\DataProvider\CurrentUserProvider
with methodgetCurrentUser
, from now use=data['current_user'].getCurrentUser()
instead of=context["logged_user"]
. - ACLs configuration file now loads from
Resources/config/oro/acls.yml
file instead ofResources/config/oro/acls.yml
file - ACLs configuration file now has root node in their structure named
acls
. So all ACLs should be placed under the root. - Removed unused properties
$metadataCache
,$maskBuilderClassNames
,$permissionToMaskBuilderIdentity
and$maskBuilderIdentityToPermissions
fromOro\Bundle\SecurityBundle\Acl\Extension\FieldAclExtension
. - Removed methods
getMaskBuilderConst
andgetPermissionsForIdentity
fromOro\Bundle\SecurityBundle\Acl\Extension\FieldAclExtension
. - Removed methods
setEntityOwnerAccessor
andfixMaxAccessLevel
fromOro\Bundle\SecurityBundle\Acl\Extension\EntityAclExtension
. The accessor is injected via constructor. - Removed
Oro\Bundle\SecurityBundle\Acl\Extension\OwnershipDecisionMakerInterface
. UseOro\Bundle\SecurityBundle\Acl\Extension\AccessLevelOwnershipDecisionMakerInterface
instead. - Removed unused method
getSystemLevelClass
fromOro\Bundle\SecurityBundle\Owner\Metadata\MetadataProviderInterface
. - Class
Oro\Bundle\SecurityBundle\Acl\Domain\EntityObjectReference
marked as deprecated. UseOro\Bundle\SecurityBundle\Acl\Domain\DomainObjectReference
instead. - Removed unused class
Oro\Bundle\SecurityBundle\Acl\Extension\BaseEntityMaskBuilder
. - Changed signature of
setTriggeredMask
method ofOro\Bundle\SecurityBundle\Acl\Domain\PermissionGrantingStrategyContextInterface
. Addedint $accessLevel
parameter. - Removed method
isMasksComparable
ofOro\Bundle\SecurityBundle\Acl\Domain\PermissionGrantingStrategy
. This was done by performance reasons. - Changed signature of the constructor of
Oro\Bundle\SecurityBundle\Acl\Extension\FieldAclExtension
. Removed$entityClassResolver
parameter. ParameterConfigProvider $configProvider
replaced withConfigManager $configManager
. - Changed signature of the constructor of
Oro\Bundle\SecurityBundle\Metadata\AclAnnotationProvider
. AddedEntityClassResolver $entityClassResolver
parameter. - Changed signature of the constructor of
Oro\Bundle\SecurityBundle\Acl\Persistence\AclPrivilegeRepository
. Removed$translator
parameter. - Changed signature of the constructor of
Oro\Bundle\SecurityBundle\Metadata\ActionMetadataProvider
. AddedTranslatorInterface $translator
parameter. - Changed signature of the constructor of
Oro\Bundle\SecurityBundle\Metadata\EntitySecurityMetadataProvider
. AddedTranslatorInterface $translator
parameter.
####ImportExportBundle
- Added new event
AFTER_JOB_EXECUTION
, for details please check out documentation. - For
Oro\Bundle\ImportExportBundle\Job\JobExecutor
added new public methodsetEventDispatcher
for setting Event Dispatcher. - Options for import/export buttons configuration
dataGridName
was renamed todatagridName
####TranslationBundle
- Added controller
Oro\Bundle\TranslationBundle\Controller\LanguageController
to manage Languages. - Added controller
Oro\Bundle\TranslationBundle\Controller\TranslationController
to manage Translations. - Added
Oro\Bundle\TranslationBundle\Controller\Api\Rest\TranslationController::updateAction
to update translations. - Removed controller
Oro\Bundle\TranslationBundle\Controller\ServiceController
. - Added entity
Oro\Bundle\TranslationBundle\Entity\Language
. - Added import and export features for translations.
- Added class
Oro\Bundle\TranslationBundle\Provider\LanguageProvider
to get available and enabled languages. - Added class
Oro\Bundle\TranslationBundle\Helper\LanguageHelper
with helpers-methods for managing Languages. - Class
Oro\Bundle\TranslationBundle\Provider\TranslationServiceProvider
:- In method
download
removed argument$toApply
and the class accepts following arguments now:string $pathToSave
,array $projects
,string $locale (default null)
.
- Added method
loadTranslatesFromFile
for loading translations from file. Arguments:string $pathToSave
,string $locale (default null)
.
- In method
- Removed form
Oro\Bundle\TranslationBundle\Form\Type\AvailableTranslationsConfigurationType
. - Removed twig extension
Oro\Bundle\TranslationBundle\Twig\TranslationStatusExtension
. - Added new command "oro:translation:load", that allows to transfer all translations from files into Database
- Added entity
Oro\Bundle\TranslationBundle\Entity\TranslationKey
- Updated entity
Oro\Bundle\TranslationBundle\Entity\Translation
- added constant SCOPE_INSTALLED
- used relation to
Oro\Bundle\TranslationBundle\Entity\TranslationKey
instead ofkey
anddomain
fields - used relation to
Oro\Bundle\TranslationBundle\Entity\Language
instead ofcode
field
- Added entity repository
Oro\Bundle\TranslationBundle\Entity\Repository\TranslationKeyRepository
- Removed methods from entity repository
Oro\Bundle\TranslationBundle\Entity\Repository\TranslationRepository
:findValues()
findAvailableDomains()
findAvailableDomainsForLocales()
saveValue()
renameKey()
copyValue()
getCountByLocale()
deleteByLocale()
- Added interface
Oro\Bundle\TranslationBundle\Extension\TranslationContextResolverInterface
- Added default translation context resolver
Oro\Bundle\TranslationBundle\Extension\TranslationContextResolver
- Added translation context provider
Oro\Bundle\TranslationBundle\Provider\TranslationContextProvider
- Added custom datagrid filter
Oro\Bundle\TranslationBundle\Filter\LanguageFilter
, that allows to handle available language choices for the dropdown. - Added custom datagrid filter form type
\Oro\Bundle\TranslationBundle\Form\Type\Filter\LanguageFilterType
, that displays only enabled and available languages. - Added constructor for
Oro\Bundle\TranslationBundle\ImportExport\Serializer\TranslationNormalizer
, now it takes an instance ofOro\Bundle\TranslationBundle\Manager\TranslationManager
- Added new manager
Oro\Bundle\TranslationBundle\Manager\TranslationManager
, that provides all required functionality to work with Translation and related entities. - Added new ACL permission
TRANSLATE
, should be used to determine if user has access to modify translations per language. - Removed
Oro\Bundle\TranslationBundle\Translation\TranslationStatusInterface
- Added
Oro\Bundle\TranslationBundle\DependencyInjection\Compiler\TranslationContextResolverPass
. - Added
Oro\Bundle\TranslationBundle\Helper\TranslationHelper
class withoro_translation.helper.translation
as accessor for translation values in database. - Added Twig extension
\Oro\Bundle\TranslationBundle\Twig\TranslationExtension
wich declare following TWIG functions:oro_translation_debug_translator
translation_grid_link
- Added
Oro\Bundle\TranslationBundle\Translation\TranslationKeyGenerator
- Added
Oro\Bundle\TranslationBundle\Translation\TranslationKeySourceInterface
with 2 types of implementationsOro\Bundle\TranslationBundle\Translation\KeySource\DynamicTranslationKeySource
and immutable one -Oro\Bundle\TranslationBundle\Translation\KeySource\TranslationKeySource
- Added
Oro\Bundle\TranslationBundle\Translation\TranslationFieldsIteratorInterface
as useful way to define single point of custom structure translatable fields awareness and manipulation. - Added
Oro\Bundle\TranslationBundle\Translation\TranslationFieldsIteratorTrait
. - Added Data Provider
Oro\Bundle\TranslationBundle\Layout\DataProvider\TranslatorProvider
that provides the translator to Layouts. - Added helper
Oro\Bundle\TranslationBundle\Helper\TranslationsDatagridRouteHelper
. - Changed signature of constructor of
Oro\Bundle\TranslationBundle\EventListener\Datagrid\LanguageListener
. The argumentGridConfigurationHelper $gridConfigurationHelper
was replaces withEntityClassResolver $entityClassResolver
.
####EntityExtendBundle
- Extend fields default mode is
Oro\Bundle\EntityConfigBundle\Entity\ConfigModel::MODE_READONLY
Oro\Bundle\EntityExtendBundle\Migration\EntityMetadataHelper
getEntityClassByTableName
deprecated, usegetEntityClassesByTableName
instead- removed property
tableToClassMap
in favour oftableToClassesMap
- `Oro\Bundle\EntityExtendBundle\Migration\ExtendOptionsBuilder
- construction signature was changed now it takes next arguments:
EntityMetadataHelper
$entityMetadataHelper,FieldTypeHelper
$fieldTypeHelper,ConfigManager
$configManager - removed property
tableToEntityMap
in favour oftableToEntitiesMap
- renamed method
getEntityClassName
in favour ofgetEntityClassNames
- construction signature was changed now it takes next arguments:
Oro\Bundle\EntityExtendBundle\Migration\ExtendOptionsParser
- construction signature was changed now it takes next arguments:
EntityMetadataHelper
$entityMetadataHelper,FieldTypeHelper
$fieldTypeHelper,ConfigManager
$configManager
- construction signature was changed now it takes next arguments:
- Entity extend configuration now loads from
Resources/conig/oro/entity_extend.yml
file instead ofResources/config/entity_extend.yml
- Root node for entity extend configuration in file
Resources/conig/oro/entity_extend.yml
were changed fromoro_entity_extend
toentity_extend
Oro\Bundle\EntityExtendBundle\Command\CacheCommand::setClassAliases
no longer throws\ReflectionException
Oro\Bundle\EntityExtendBundle\OroEntityExtendBundle::checkConfigs
andOro\Bundle\EntityExtendBundle\OroEntityExtendBundle::initializeCache
throws\RuntimeException
if cache initialization failed. Make sure you don't autoload extended entity classes during container compilation.cache_warmer
is decorated to allow disable cache warming during extend commands calls. Tag your warmer withoro_entity_extend.warmer
tag if it works with extend classes- Changed
Oro\Bundle\EntityExtendBundle\Tools\EnumSynchronizer
, now it useOro\Bundle\EntityConfigBundle\Translation\ConfigTranslationHelper
to save translations instead ofDoctrine\Common\Persistence\ManagerRegistry
andOro\Bundle\TranslationBundle\Translation\DynamicTranslationMetadataCache
. Oro\Bundle\EntityExtendBundle\EventListener\ExtendFieldValueRenderListener::getValueForCollection
always return arrayOro\Bundle\EntityExtendBundle\Grid\AbstractFieldsExtension
added support of to-one relations- Method
get*TargetEntities
is generated as deprecated for bothmany-to-many
andmany-to-one
associations. - Changed signature of auto-generated
get*Targets
method ofmany-to-many
association. The parameter$targetClass
is optional now. If this parameter is not specified this method returns all target entities without filtering them by type. - Removed constant
EXTEND_ENTITY_CONFIG_PATH
fromOro\Bundle\EntityExtendBundle\Grid\DynamicFieldsExtension
- Method
addManyToOneRelationTargetSide
ofOro\Bundle\EntityExtendBundle\Tools\RelationBuilder
was marked as deprecated because it is not used anywhere.
####ApiBundle:
- API configuration file now loads from
Resources/config/oro/api.yml
instead ofResources/config/api.yml
. Resources/config/oro/api.yml
root node were renamed fromoro_api
toapi
.
####QueryDesignerBundle:
- YAML Configuration for query designer now loads from
Resources/config/oro/query_designer.yml
file instead ofResources/config/query_designer.yml
.
####TestFrameworkBundle:
- Behat elements now loads from
Resources/config/oro/behat.yml
file instead ofResources/config/behat_elements.yml
. Oro\Bundle\TestFrameworkBundle\Test\Client::requestGrid
accepts route to test grid as optional last argument. Request pushed to@request_stack
for proper request emulation- Added
Oro\Bundle\TestFrameworkBundle\Test\Stub\CallableStub
to be able to easily mock callbacks.
####ChartBundle:
- Charts configurations now loads from
Resources/config/oro/charts.yml
file instead ofResources/config/oro/chart.yml
. - Root node for charts configuration in
Resources/config/oro/charts.yml
file were changed fromoro_chart
tocharts
.
####IntegrationBundle:
- Integration configuration file now loads from
Resources/config/oro/integrations.yml
file instead ofResources/config/integration_settings.yml
. - Root node for integration config file
Resources/config/oro/integrations.yml
were changed fromoro_integration
tointegrations
. - The
Oro\Bundle\IntegrationBundle\Command\ReverseSyncCommand
command was removed.
####EntityConfigBundle:
- Entity configuration now loads from
Resources/config/oro/entity_config.yml
file instead ofResources/config/entity_config.yml
. - Root node for entity configuration in file
Resources/config/oro/entity_config.yml
were changed fromoro_entity_config
toentity_config
. - Constructor of
Oro\Bundle\EntityConfigBundle\Translation\ConfigTranslationHelper
changed. Now it takes as first argument instance ofOro\Bundle\TranslationBundle\Manager\TranslationManager
and second argument still instance ofSymfony\Component\Translation\TranslatorInterface
. - Changed
Oro\Bundle\EntityConfigBundle\Form\EventListener\ConfigSubscriber
, now it useOro\Bundle\EntityConfigBundle\Translation\ConfigTranslationHelper
to save translations instead ofDoctrine\Common\Persistence\ManagerRegistry
andOro\Bundle\TranslationBundle\Translation\DynamicTranslationMetadataCache
. - Changed
Oro\Bundle\EntityConfigBundle\Form\Type\ConfigType
, now it useOro\Bundle\EntityConfigBundle\Translation\ConfigTranslationHelper
to save translations. Oro\Bundle\EntityConfigBundle\Config\ConfigManager::flush
now flushes $models only- Class
Oro\Bundle\EntityConfigBundle\Twig\ConfigExtension
- construction signature was changed now it takes next arguments:
ConfigManager
$configManager,RouterInterface
$router,EntityClassNameHelper
$entityClassNameHelper,DoctrineHelper
$doctrineHelper
- construction signature was changed now it takes next arguments:
####HelpBundle:
- Help configuration now loads from
Resources/config/oro/help.yml
instead ofResources/config/oro_help.yml
file. - Root node
help
were added for help configuration inResources/config/oro/help.yml
file.
####SearchBundle:
- Search configuration now loads from
Resources/config/oro/search.yml
instead ofResources/config/search.yml
file. - Root node
search
were added for search configuration inResources/config/oro/search.yml
file. oro_search.entity.repository.search_index
marked as lazy- Search
\Oro\Bundle\SearchBundle\Query\Query::addSelect()
and\Oro\Bundle\SearchBundle\Query\Query::select()
have been extended to support the SQL aliasing syntax. \Oro\Bundle\SearchBundle\Query\IndexerQuery
has grown to have an interface\Oro\Bundle\SearchBundle\Query\SearchQueryInterface
and an abstract base class with common operations. New operations in the interface, highly encouraged to use them:addSelect
,setFrom
,setWhere
.\Oro\Bundle\SearchBundle\Datagrid\Extension\Pager\IndexerPager
is no longer depending on IndexerQuery.\Oro\Bundle\SearchBundle\Datasource\SearchDatasource
has now improved alignment with the\Oro\Bundle\DataGridBundle\Datasource\Orm\OrmDatasource
and is moved to theOro\Bundle\SearchBundle\Datasource
namespace.- Search Query is now created by
\Oro\Bundle\SearchBundle\Query\Factory\QueryFactory
. - using own, customized Query wrappers, instead of IndexerQuery now possible, by replacing QueryFactory with own factory
\Oro\Bundle\SearchBundle\Query\Factory\QueryFactoryInterface
object. - new Extensions added:
\Oro\Bundle\SearchBundle\Datagrid\Extension\Pager\SearchPagerExtension
(extending the Orm version),\Oro\Bundle\SearchBundle\Datagrid\Extension\SearchFilterExtension
(common part with the Orm version). \Oro\Bundle\SearchBundle\Datagrid\Extension\SearchFilterExtension
makes it possible to use search filters together with a new\Oro\Bundle\SearchBundle\Datagrid\Datasource\Search\SearchFilterDatasourceAdapter
.\Oro\Bundle\SearchBundle\Datagrid\Datasource\Search\SearchFilterDatasourceAdapter
does not rely on the Doctrine's ExpressionBuilder. Usingexpr()
discouraged in favor ofCriteria::expr()
.- filters are now loaded per Datasource, by specifying the
datasource
attribute. Currently supported values areorm
andsearch
. - custom Search filter added:
\Oro\Bundle\SearchBundle\Datagrid\Filter\SearchStringFilter
. \Oro\Bundle\SearchBundle\Query\Result\Item
is now compatible with the default backend datagrid templates.\Oro\Bundle\SearchBundle\Datasource\SearchDatasource
can now be defined as the datasource of any datagrid (both frontend and backend).- Datagrids having search datasource expect an indexed array of search indexes in 'from' part of datagrid configuration, as opposed to ORM format
- Introduced new interface Oro\Bundle\SearchBundle\Engine\IndexerInterface. Next methods were extracted from
Oro\Bundle\SearchBundle\Engine\EngineInterface into this new interface:
save
,delete
,reindex
. - Configuration parameter realtime_update and container parameter
oro_search.realtime_update
were removed. All index operations are async now. - Oro/Bundle/SearchBundle/Entity/UpdateEntity and Oro/Bundle/SearchBundle/EventListener/UpdateSchemaDoctrineListener were removed
oro_search.search.engine.indexer
service was replaced with async implementationoro_search.async.indexer
. Use sync indexer only for test environment.- New helper trait Oro/Component/Testing/SearchExtensionTrait - easy access to sync indexer for test environment
- Removed
Oro\Bundle\SearchBundle\Resolver\EntityTitleResolverInterface
and classes that implement it: - Changed constructor and replaced
Oro\Bundle\SearchBundle\Resolver\EntityTitleResolverInterface
withOro\Bundle\EntityBundle\Provider\EntityNameResolver
in classes:Oro\Bundle\SearchBundle\Engine\AbstractIndexer
Oro\Bundle\SearchBundle\Engine\OrmIndexer
Oro\Bundle\SearchBundle\EventListener\PrepareResultItemListener
Oro\Bundle\ElasticSearchBundle\Engine\ElasticSearchIndexer
Oro\Bundle\ActivityBundle\Entity\Manager\ActivityContextApiEntityManager
Oro\Bundle\ActivityBundle\Form\DataTransformer\ContextsToViewTransformer
Oro\Bundle\ActivityBundle\Form\Type\ContextsSelectType
Oro\Bundle\CalendarBundle\Form\DataTransformer\AttendeesToViewTransformer
- Removed (deprecated) usage of
title_fields
as they are not available on all search engines (e.g. elastic search). Entity titles will resolve using EntityNameResolver. This may affect search results (e.g.recordTitle
andrecord_string
in functional tests are changed).
####ElasticSearchBundle
- Changed constructor of
Oro\Bundle\ElasticSearchBundle\Engine\ElasticSearchIndexer
. ReplacedEntityTitleResolverInterface
withEntityNameResolver
.
####ActivityBundle:
- Changed constructor of
Oro\Bundle\ActivityBundle\Autocomplete\ContextSearchHandler
. ReplacedObjectMapper
withEntityNameResolver
. Class now use EntityNameResolver instead oftitle_fields
. - Removed method
getActivityTargetEntities
fromOro\Bundle\ActivityBundle\Model\ActivityInterface
andOro\Bundle\ActivityBundle\Model\ExtendActivity
. To avoid BC break this method is still generated, but it is marked as deprecated. - Removed constant
GRID_EXTENDED_ENTITY_PATH
fromOro\Bundle\ActivityBundle\Grid\Extension\ContextsExtension
- Removed constant
GRID_FROM_PATH
fromOro\Bundle\ActivityBundle\Grid\Extension\ContextsExtension
- Changed signature of constructor of
Oro\Bundle\ActivityBundle\Grid\Extension\ContextsExtension
. The argumentGridConfigurationHelper $gridConfigurationHelper
was replaces withEntityClassResolver $entityClassResolver
.
####ActivityListBundle:
- Removed method
getActivityListTargetEntities
fromOro\Bundle\ActivityListBundle\Entity\ActivityList
. To avoid BC break this method is still generated, but it is marked as deprecated.
####UIBundle:
- Placeholders configuration now loads from
Resources/config/oro/placeholders.yml
file instead ofResources/config/placeholders.yml
. - Additional common root node
placeholders
were added for placeholders configurations inResources/config/oro/placeholders.yml
file. Please node that your configuration now should have twoplaceholders
nodes (one nested in other) instead of single one.
placeholders:
placeholders: ...
items: ...
- Main menu dropdown active item is now triggering a page refresh, despite the Backbone router limitations.
- Upgrade Font-awesome component to 4.6.* version.
- Updated jquery.mCustomScrollbar plugin to version 3.1.5.
- Changed
form_row
block to support of form field 'hints' which allows rendering of simple help section for the respective form control. - Updated jQuery and jQuery-UI libraries to version 3.1.* and 1.12.* accordingly.
- Updated Backbone library to version 1.2.*.
- Updated Underscore library to version 1.8.*.
- Class
Oro\Bundle\UIBundle\Placeholder\PlaceholderProvider
- construction signature was changed now it takes next arguments:
array
$placeholdersResolverInterface
$resolverSecurityFacade
$securityFacadeFeatureChecker
$featureChecker
- construction signature was changed now it takes next arguments:
####RequireJS:
- Updated RequireJS library to version 2.3.*
####FormBundle:
- Added
Oro\Bundle\FormBundle\Form\Extension\HintFormExtension
to support hints.
####DashboardBundle:
- Dashboards configurations now loads from
Resources/config/oro/dashboards.yml
instead ofResources/config/dashboard.yml
file. - Root node for dashboards configuration in
Resources/config/oro/dashboards.yml
file were changed fromoro_dashboard_config
todashboards
. - Class
Oro\Bundle\DashboardBundle\Model\WidgetConfigs
- construction signature was changed now it takes next arguments:
ConfigProvider
$configProvider,ResolverInterface
$resolver,EntityManagerInterface
$entityManager,ConfigValueProvider
$valueProvider,TranslatorInterface
$translator,EventDispatcherInterface
$eventDispatcher,WidgetConfigVisibilityFilter
$visibilityFilter
- method
filterWidgets
signature was changed now it takes next arguments:array
$items- $widgetName = null
- construction signature was changed now it takes next arguments:
- Constructor of
Oro\Bundle\DashboardBundle\Model\Factory
was changed. AddedWidgetConfigs $widgetConfigs
as last argument.
####NavigationBundle:
- Navigation configuration now loads form
Resources/config/oro/navigation.yml
instead ofResources/config/navigation.yml
file. - Configuration nodes in
Resources/config/oro/navigation.yml
were nested under single root nodenavigation
. - Configuration nodes in
Resources/config/oro/navigation.yml
were renamed:oro_titles
totitles
oro_menu_config
tomenu_config
oro_navigation_elements
tonavigation_elements
- All configuration nodes in
Resources/config/oro/navigation.yml
were renamed to snake case - Added class
Oro\Bundle\NavigationBundle\Builder\MenuUpdateBuilder
that implementsOro\Bundle\NavigationBundle\Menu\BuilderInterface
. - Added
tree.$.scope_type
,tree.$.max_nesting_level
,tree.$.read_only
anditems.$.read_only
nodes toOro\Bundle\NavigationBundle\DependencyInjection\Configuration
. - Added interface
Oro\Bundle\NavigationBundle\Entity\MenuUpdateInterface
. - Added trait
Oro\Bundle\NavigationBundle\Entity\MenuUpdateTrait
. - Added entity
Oro\Bundle\NavigationBundle\Entity\MenuUpdate
that extendsOro\Bundle\NavigationBundle\Model\ExtendMenuUpdate
and implementsOro\Bundle\NavigationBundle\Entity\MenuUpdateInterface
. - Added new exceptions:
Oro\Bundle\NavigationBundle\Exception\MaxNestingLevelExceededException
Oro\Bundle\NavigationBundle\Exception\NotFoundParentException
- Added class
Oro\Bundle\NavigationBundle\JsTree\MenuUpdateTreeHandler
that provides menu tree data in format used byjstree
. - Added class
Oro\Bundle\NavigationBundle\Manager\MenuUpdateManager
with serviceoro_navigation.manager.menu_update
. - Added class
Oro\Bundle\NavigationBundle\Utils\MenuUpdateUtils
. - Moved class
Oro\Bundle\NavigationBundle\Menu\FeatureAwareMenuFactoryExtension
toOro\Bundle\FeatureToggleBundle\Menu\FeatureAwareMenuFactoryExtension
. - Moved class
Oro\Bundle\NavigationBundle\Event\DoctrineTagEventListener
toOro\Bundle\SyncBundle\Event\DoctrineTagEventListener
. - Moved class
Oro\Bundle\NavigationBundle\Twig\ContentTagsExtension
toOro\Bundle\SyncBundle\Twig\ContentTagsExtension
. - Moved class
Oro\Bundle\NavigationBundle\Content\TagGeneratorChain
toOro\Bundle\SyncBundle\Content\TagGeneratorChain
. - Moved class
Oro\Bundle\NavigationBundle\Content\DoctrineTagGenerator
toOro\Bundle\SyncBundle\Content\DoctrineTagGenerator
. - Moved class
Oro\Bundle\NavigationBundle\Content\SimpleTagGenerator
toOro\Bundle\SyncBundle\Content\SimpleTagGenerator
. - Moved class
Oro\Bundle\NavigationBundle\Content\DataGridTagListener
toOro\Bundle\SyncBundle\Content\DataGridTagListener
. - Moved class
Oro\Bundle\NavigationBundle\Content\TopicSender
toOro\Bundle\SyncBundle\Content\TopicSender
. - Added class
Oro\Bundle\NavigationBundle\DependencyInjection\Compiler\MenuExtensionPass
compiler pass for registering menu factory extensions by tagoro_navigation.menu_extension
. - Moved twig template
OroNavigationBundle:Include:contentTags.html.twig
toOroSyncBundle:Include:contentTags.html.twig
. - Moved JS file
js/app/modules/content-manager-module.js
toSyncBundle
. - Moved JS file
js/content/grid-builder.js
toSyncBundle
. - Moved JS file
js/content-manager.js
toSyncBundle
. - Moved DOC file
doc/content_outdating.md
toSyncBundle
. - Moved DOC file
doc/mediator-handlers.md
toSyncBundle
. - Class
Oro\Bundle\NavigationBundle\Provider\BuilderChainProvider
- construction signature was changed now it takes next arguments:
FactoryInterface
$factory,ArrayLoader
$loader,MenuManipulator
$manipulator
- construction signature was changed now it takes next arguments:
- Added new command
oro:navigation:menu:reset
that removes changes in menus for different scopes. - Removed class
Oro\Bundle\NavigationBundle\Title\StoredTitle
. - Changed signature of constructor of
Oro\Bundle\NavigationBundle\Provider\TitleService
. ParameterSerializer $serializer
was removed. - Added new datagrid data source
Oro\Bundle\NavigationBundle\Datagrid\MenuUpdateDatasource
. - Added new entity repository
Oro\Bundle\NavigationBundle\Entity\Repository\MenuUpdateRepository
.
####EmailBundle
- Constructor of
Oro\Bundle\EmailBundle\Form\DataTransformer\EmailTemplateTransformer
was changed. Removed the arguments. - Constructor of
Oro\Bundle\EmailBundle\Form\Type\EmailTemplateRichTextType
was changed. Removed the arguments. - Constructor of
Oro\Bundle\EmailBundle\Form\Type\EmailType
was changed. AddedConfigManager $configManager
as last argument. - Constructor of
Oro\Bundle\EmailBundle\EventListener\EntityListener
was changed. AddedMessageProducerInterface $producer
as last argument. - Constructor of
Oro\Bundle\EmailBundle\EventListener\AutoResponseListener
was changed. AddedMessageProducerInterface $producer
as last argument. - Constructor of
Oro\Bundle\EmailBundle\EventListener\PrepareResultItemListener
was changed. AddedOro\Bundle\EntityBundle\ORM\DoctrineHelper
as last argument. - Moved class
Oro\Bundle\EmailBundle\Command\Manager\AssociationManager
toOro\Bundle\EmailBundle\Async\Manager
. Constructor ofOro\Bundle\EmailBundle\Command\Manager\AssociationManager
was changed. AddedMessageProducerInterface
as last argument. - Service name
oro_email.command.association_manager
was changed tooro_email.async.manager.association_manager
Oro/Bundle/EmailBundle/Cache/EntityCacheClearer
deprecated, tag onoro_email.entity.cache.clearer
removedoro_email.email_address.entity_manager
inheritsoro_entity.abstract_entity_manager
Oro/Bundle/EmailBundle/Entity/MailboxProcessSettings
no longer inheritsOro\Bundle\EmailBundle\Form\Model\ExtendMailboxProcessSettings
Oro\Bundle\EmailBundle\Form\Model\ExtendMailboxProcessSettings
was removed- Class
Oro\Bundle\EmailBundle\Form\Model\Email
- method
getContexts
now returnsDoctrine\Common\Collections\Collection
instead of array
- method
- Constructor of
Oro\Bundle\EmailBundle\Mailbox\MailboxProcessStorage
was changed. AddedFeatureChecker $featureChecker
argument. - The command
oro:email:add-associations
(classOro\Bundle\EmailBundle\Command\AddAssociationCommand
) was removed. Produce message to the topicoro.email.add_association_to_email
ororo.email.add_association_to_emails
instead. - The command
oro:email:autoresponse
(classOro\Bundle\EmailBundle\Command\AutoResponseCommand
) was removed. Produce message to the topicoro.email.send_auto_response
ororo.email.send_auto_responses
instead. - The command
oro:email:flag-sync
(classOro\Bundle\EmailBundle\Command\EmailFlagSyncCommand
) was removed. Produce message to the topicoro.email.sync_email_seen_flag
instead. - The command
oro:email-attachment:purge
(classOro\Bundle\EmailBundle\Command\PurgeEmailAttachmentCommand
) was removed. Produce message to the topicoro.email.purge_email_attachments
instead. - The command
oro:email:update-email-owner-associations
(classOro/Bundle/EmailBundle/Command/UpdateEmailOwnerAssociationsCommand
) was removed. Produce message to the topicoro.email.update_email_owner_association
ororo.email.update_email_owner_associations
instead. - Added
Oro\Bundle\EmailBundle\Form\Model\SmtpSettings
value object. - Added
Oro\Bundle\EmailBundle\Form\Model\SmtpSettingsFactory
for creating value objects from the request for now. - Added
Oro\Bundle\EmailBundle\Mailer\Checker\SmtpSettingsChecker
serviceoro_email.mailer.checker.smtp_settings
, used to check connection with a givenSmptSettings
value object. - Added
Oro\Bundle\EmailBundle\Form\Handler\EmailConfigurationHandler
which triggersOro\Bundle\EmailBundle\Event\SmtpSettingsSaved
. - Added
Oro\Bundle\EmailBundle\Controller\EmailController::checkSmtpConnectionAction
. - Added
Oro\Bundle\EmailBundle\Mailer\DirectMailer::afterPrepareSmtpTransport
. - Added
Oro\Bundle\EmailBundle\Provider\SmtpSettingsProvider
to get smtp settings from configuration. - Added service
oro_email.command.email_body_sync
forOro\Bundle\EmailBundle\Command\Cron\EmailBodySyncCommand
command.
####EntityBundle
- Added possibility to define
entity repositories as a services
by the usage of
oro_entity.abstract_repository
as a parent service Oro\Bundle\EntityBundle\ORM\DatabaseDriverInterface::getName
introduced
Before
oro_workflow.repository.workflow_item:
class: Doctrine\ORM\EntityRepository
factory: ["@oro_entity.doctrine_helper", getEntityRepository]
After
oro_workflow.repository.workflow_item:
class: 'Oro\Bundle\WorkflowBundle\Entity\Repository\WorkflowItemRepository'
parent: oro_entity.abstract_repository
oro_entity.abstract_entity_manager
introduced. Please inherit all your doctrine entity manager factory services
Before
oro_email.email_address.entity_manager:
public: false
class: Doctrine\ORM\EntityManager
factory: ['@doctrine', getManagerForClass]
After
oro_email.email_address.entity_manager:
parent: oro_entity.abstract_entity_manager
- Added entity fallback functionality
- Added EntityFieldFallbackValue entity to store fallback information
- Added EntityFallbackResolver service which handles fallback resolution
- Added SystemConfigFallbackProvider service which handles
systemConfig
fallback type - Added EntityFallbackExtension service which reads fallback values of entities in twig
- Added AbstractEntityFallbackProvider abstract service to ease adding new fallback types, please refer to the Fallback documentation for details
Oro\Bundle\EntityBundle\Provider\EntityNameProvider
now is the generic Entity Name Provider which resolves:- 'Short' format: title based on entity fields from 'firstName', 'name', 'title', 'subject' (uses only the first that is found)
- 'Full' format: a space-delimited concatenation of all string fields of the entity.
- For both formats: will return the entity ID when fields are found but their value is empty. Same applies for both
getName
andgetNameDQL
methods. Will returnfalse
if no suitable fields are available.
- Added
Oro\Bundle\EntityBundle\Provider\FallbackEntityNameProvider
which will resolve entity title in form of 'Item #1' (translatesoro.entity.item
). Can use only single-column identifiers, else returnsfalse
. Should be kept as last provider. - Removed constant
PATH_FROM
fromOro\Bundle\EntityBundle\Grid\CustomEntityDatagrid
####ContactBundle
Oro\Bundle\ContactBundle\Provider\ContactEntityNameProvider
now uses phone and email as fallback when entity names are empty
####CacheBundle
Oro\Bundle\CacheBundle\Manager\OroDataCacheManager
now has methodclear
to clear cache at all cache providers
####MigrationBundle
Oro\Bundle\MigrationBundle\Migration\MigrationExecutor
now clears cache at all cache providers after successful migration load
####FeatureToggleBundle
- Added class
Oro\Bundle\FeatureToggleBundle\Menu\FeatureAwareMenuFactoryExtension
moved fromNavigationBundle
.
####SyncBundle
- Added class
Oro\Bundle\SyncBundle\DependencyInjection\Compiler\SkipTagTrackingPass
compiler pass that add skipped entity classes tooro_sync.event_listener.doctrine_tag
service. - Added class
Oro\Bundle\SyncBundle\Event\DoctrineTagEventListener
moved fromNavigationBundle
. - Added class
Oro\Bundle\SyncBundle\Twig\ContentTagsExtension
moved fromNavigationBundle
. - Added class
Oro\Bundle\SyncBundle\Content\TagGeneratorChain
moved fromNavigationBundle
. - Added class
Oro\Bundle\SyncBundle\Content\DoctrineTagGenerator
moved fromNavigationBundle
. - Added class
Oro\Bundle\SyncBundle\Content\SimpleTagGenerator
moved fromNavigationBundle
. - Added class
Oro\Bundle\SyncBundle\Content\DataGridTagListener
moved fromNavigationBundle
. - Added class
Oro\Bundle\SyncBundle\Content\TopicSender
moved fromNavigationBundle
. - Added twig template
OroSyncBundle:Include:contentTags.html.twig
moved fromNavigationBundle
. - Added JS file
js/app/modules/content-manager-module.js
moved fromNavigationBundle
. - Added JS file
js/content/grid-builder.js
moved fromNavigationBundle
. - Added JS file
js/content-manager.js
moved fromNavigationBundle
. - Added DOC file
doc/content_outdating.md
moved fromNavigationBundle
. - Added DOC file
doc/mediator-handlers.md
moved fromNavigationBundle
.
####DependencyInjection Component
- Added trait
Oro\Component\DependencyInjection\Compiler\TaggedServicesCompilerPassTrait
####EntitySerializer Component
- Changed signature of
transform
method ofOro\Component\EntitySerializer\DataTransformerInterface
. Addedarray $context
as the last parameter. - Changed signature of
post_serialize
callbacks for the EntitySerializer. Addedarray $context
as the last parameter. - Changed signature of
post_serialize
callbacks for the EntitySerializer. Addedarray $context
as the last parameter. - Changed signature of
serialize
method ofOro\Component\EntitySerializer\EntitySerializer
. Addedarray $context = []
as the last parameter. - Changed signature of
serializeEntities
method ofOro\Component\EntitySerializer\EntitySerializer
. Addedarray $context = []
as the last parameter.
####NotificationBundle
- Moved interface
Oro\Bundle\NotificationBundle\Processor\EmailNotificationInterface
toOro\Bundle\NotificationBundle\Model
namespace - Moved interface
Oro\Bundle\NotificationBundle\Processor\SenderAwareEmailNotificationInterface
toOro\Bundle\NotificationBundle\Model
namespace - Removed class
Oro\Bundle\NotificationBundle\Processor\AbstractNotificationProcessor
- Removed service @oro_notifications.manager.email_notification and its class
Oro\Bundle\NotificationBundle\Processor\EmailNotificationProcessor
as now the email notifications are processed asynchronously withOro\Bundle\NotificationBundle\Async\SendEmailMessageProcessor
- Added class
Oro\Bundle\NotificationBundle\Manager\EmailNotificationManager
; some logic fromOro\Bundle\NotificationBundle\Processor\EmailNotificationProcessor
was moved there - Added class
Oro\Bundle\NotificationBundle\Manager\EmailNotificationSender
; some logic fromOro\Bundle\NotificationBundle\Processor\EmailNotificationProcessor
was moved there - Added class
Oro\Bundle\NotificationBundle\Async\Topics
- Added class
Oro\Bundle\NotificationBundle\Async\SendEmailMessageProcessor
- Constructor of
Oro\Bundle\NotificationBundle\Event\Handler\EmailNotificationHandler
was changed: the first argument type isOro\Bundle\NotificationBundle\Manager\EmailNotificationManager
instead ofOro\Bundle\NotificationBundle\Processor\EmailNotificationProcessor
- Constructor of
Oro\Bundle\NotificationBundle\Model\MassNotificationSender
was changed: the first argument type isOro\Bundle\NotificationBundle\Manager\EmailNotificationManager
instead ofOro\Bundle\NotificationBundle\Processor\EmailNotificationProcessor
####CalendarBundle
- CalendarBundle moved to a separate package
####ReminderBundle
- Constructor of
Oro\Bundle\ReminderBundle\Model\Email\EmailSendProcessor
was changed: the first argument type isOro\Bundle\NotificationBundle\Manager\EmailNotificationManager
instead ofOro\Bundle\NotificationBundle\Processor\EmailNotificationProcessor
####DataAuditBundle
Oro\Bundle\DataAuditBundle\Loggable\LoggableManager
was removed. Some logic moved toOro\Bundle\DataAuditBundle\EventListener\SendChangedEntitiesToMessageQueueListener
class and some backend processors.Oro\Bundle\DataAuditBundle\EventListener\EntityListener
was removed. Similar logic could be found inOro\Bundle\DataAuditBundle\EventListener\SendChangedEntitiesToMessageQueueListener
class.Oro\Bundle\DataAuditBundle\EventListener\KernelListener
was removed.Oro\Bundle\DataAuditBundle\Metadata\Driver\AnnotationDriver
was removed.Oro\Bundle\DataAuditBundle\Metadata\ExtendMetadataFactory
was removed.Loggable
andVersioned
annotations were removed. Use entity config auditable option instead.Oro\Bundle\DataAuditBundle\EventListener\AuditGridListener
was removed. Similar functionality can be found inOro\Bundle\DataAuditBundle\Datagrid\EntityTypeProvider
.Oro\Bundle\DataAuditBundle\Loggable\AuditEntityMapper
was renamed toOro\Bundle\DataAuditBundle\Provider\AuditEntityMapper
.
####ImapBundle
- The command
oro:imap:clear-mailbox
was removed. Produce message to the topicOro\Bundle\ImapBundle\Async\Topics::CLEAR_INACTIVE_MAILBOX
instead. - Added service
oro_imap.command.email_sync
forOro\Bundle\ImapBundle\Command\Cron\EmailSyncCommand
command.
####CronBundle
- Removed class
Oro\Bundle\CronBundle\Action\CreateJobAction
, serviceoro_cron.action.create_job
and action@create_job
- Removed class
Oro\Bundle\CronBundle\Controller\JobController
. - Removed class
Oro\Bundle\CronBundle\DependencyInjection\Compiler\JobSerializerMetadataPass
. - Removed class
Oro\Bundle\CronBundle\DependencyInjection\Compiler\JobStatisticParameterPass
. - Removed class
Oro\Bundle\CronBundle\Entity\Manager\JobManager
and serviceoro_cron.job_manager
. - Removed class
Oro\Bundle\CronBundle\Entity\Repository\JobRepository
. - Removed class
Oro\Bundle\CronBundle\Job\Daemon
and serviceoro_cron.job_daemon
- Removed class
Oro\Bundle\CronBundle\JobQueue\JMSJobQueueBundle
- Added command
oro:cron:definitions:load
(classOro\Bundle\CronBundle\Command\CronDefinitionsLoadCommand
) to load cron command definitions to schedule table - Temporary added listener
Oro\Bundle\CronBundle\Migrations\Schema\v2_0\SchemaColumnDefinitionListener
to prevent default behavior forjms_job_safe_object
type. - Removed command
oro:cron:cleanup
(classOro\Bundle\CronBundle\Command\CleanupCommand
). - Removed command
oro:daemon
(classOro\Bundle\CronBundle\Command\DaemonMonitorCommand
). - Removed command
oro:jms-job-queue:count
(classOro\Bundle\CronBundle\Command\JmsJobCountCommand
). - Command
oro:cron
(classOro\Bundle\CronBundle\Command\CronCommand
) doesn't have optionskipCheckDaemon
any more. - Parameters
max_concurrent_jobs
,max_runtime
,jms_statistics
underoro_cron
root were removed. - Removed listener
Oro\Bundle\CronBundle\EventListener\JobSubscriber
- Removed listener
Oro\Bundle\CronBundle\EventListener\LoadClassMetadataSubscriber
and serviceoro_cron.listener.load_class_metadata_subscriber
####UserBundle
- Added
auth_status
extended enum property toOro\Bundle\UserBundle\Entity\User
entity. - Added
Oro\Bundle\UserBundle\Validator\Constraints\PasswordComplexity
to User model. - User password requirements are more restrictive by default and require 8 characters, an upper case letter, and a number.
- Any new users or changing of existing passwords need to meet the password requirements specified in System Configuration/General Setup/User Settings. Existing user passwords are not affected.
- Removed service @oro_user.password_reset.widget_provider.actions (replaced by @oro_user.forced_password_reset.widget_provider.actions)
- Constructor of
Oro\Bundle\UserBundle\Entity\UserManager
changed. Added 4-th parameter of typeOro\Bundle\EntityExtendBundle\Provider\EnumValueProvider
. - Added method
setAuthStatus($user, $enumId)
toOro\Bundle\UserBundle\Entity\UserManager
method to setauth_status
of a User by enum id. - Removed
Oro\Bundle\UserBundle\Security\WsseAuthListener
class.
####ImapBundle
- The command
oro:imap:clear-mailbox
was removed. Produce message to the topicoro.imap.clear_inactive_mailbox
instead. - Removed action
@job_add_dependency
- Changed property name from
$possibleSentFolderNameMap
to$knownFolderNameMap
inOro\Bundle\ImapBundle\Mail\Storage\Folder
- Changed method name from
guessSentTypeByName
toguessFolderTypeByName
inOro\Bundle\ImapBundle\Mail\Storage\Folder
####OroInstallerBundle
- Added interface
Oro\Bundle\InstallerBundle\CacheWarmer\NamespaceMigrationProviderInterface
. it makes available add the rules for command "oro:platform:upgrade20"
getViewType
method was removed formOro\Bundle\CurrencyBundle\Config\CurrencyConfigInterface
VIEW_TYPE_SYMBOL
andVIEW_TYPE_ISO_CODE
constants were removed fromOro\Bundle\CurrencyBundle\Config\CurrencyConfigInterface
Oro\Bundle\CurrencyBundle\Provider\CurrencyProviderInterface
was renamed toCurrencyListProviderInterface
Oro\Bundle\CurrencyBundle\Provider\DefaultCurrencyProviderInterface
was addedOro\Bundle\CurrencyBundle\Config\CurrencyConfigInterface
was renamed toOro\Bundle\CurrencyBundle\Provider\CurrencyProviderInterface
Oro\Bundle\CurrencyBundle\Provider\CurrencyProviderInterface
extendsOro\Bundle\CurrencyBundle\Provider\CurrencyListProviderInterface
andOro\Bundle\CurrencyBundle\Provider\DefaultCurrencyProviderInterface
Oro\Bundle\CurrencyBundle\Config\CurrencyConfigManager
was renamed toDefaultCurrencyConfigProvider
- Changed signature of constructor of
Oro\Bundle\CurrencyBundle\Datagrid\EventListener\ColumnConfigListener
. The argumentEntityClassResolver $entityClassResolver
was removed.
####OroTrackingBundle
- Moved
TrackingBundle
to a separatemarketing
package, required by default in the CRM applications. - Deleted
tracking.php
front controllers from applications. This file is created in application's/web
folder automatically duting an instalation.
####OroNoteBundle
- Implementation of activity list relation with entity
Oro\Bundle\NoteBundle\Entity\Note
was changed. Now the entity is a regular activity entity like others: Email, Task, Call, Email, etc.
Before
- One Note could be related only to one entity in the Activity List.
After
-
One Note could be related to many entities in the Activity List. Context field can be used to add Note to multiple entities.
-
Removed property
entityId
from SOAP API for entityOro\Bundle\NoteBundle\Entity\Note
. -
Added use of
Oro\Bundle\ActivityBundle\Model\ActivityInterface
into classOro\Bundle\NoteBundle\Entity\Note
. -
Removed methods from entity
Oro\Bundle\NoteBundle\Entity\Note
:supportTarget
,getTarget
,setTarget
. Methods ofOro\Bundle\ActivityBundle\Model\ActivityInterface
should be used to access target entities instead. -
Removed extra classes and services were as unnecessary after Note entity became a regular activity entity. See detailed list of removed items below.
-
Removed class
Oro\Bundle\NoteBundle\Migration\Extension\NoteExtension
. Generic extensionOro\Bundle\ActivityBundle\Migration\Extension\ActivityExtension
is used to add relation of entity with Note as Activity. -
Removed class
Oro\Bundle\NoteBundle\Migration\Extension\NoteExtensionAwareInterface
. Generic interface\Oro\Bundle\ActivityBundle\Migration\Extension\ActivityExtensionAwareInterface
should be used instead in schema migrations. -
Removed entity config with scope "note" after Note entity became a regular Activity entity.
-
Removed class
Oro\Bundle\NoteBundle\Placeholder\PlaceholderFilter
and serviceoro_note.placeholder.filter
. -
Removed class
Oro\Bundle\NoteBundle\Provider\NoteExclusionProvider
and serviceoro_note.exclusion_provider
. -
Removed class
Oro\Bundle\NoteBundle\Tools\NoteAssociationHelper
and serviceoro_note.association_helper
. -
Removed class
Oro\Bundle\NoteBundle\Tools\NoteEntityConfigDumperExtension
and serviceoro_note.entity_config_dumper.extension
. -
Removed class
Oro\Bundle\NoteBundle\Tools\NoteEntityGeneratorExtension
and serviceoro_note.entity_generator.extension
. -
Removed class
Oro\Bundle\NoteBundle\EventListener\MergeListener
and serviceoro_note.listener.merge_listener
. Generic classOro\Bundle\ActivityListBundle\EventListener\MergeListener
applicable for activity entities now is used instead. -
Removed class
Oro\Bundle\NoteBundle\Model\MergeModes
. Generic classOro\Bundle\ActivityListBundle\Model\MergeModes
applicable for activity entities now is used instead. -
Removed class
Oro\Bundle\NoteBundle\Model\Strategy\ReplaceStrategy
and serviceoro_note.strategy.replace
. Generic classOro\Bundle\ActivityListBundle\Model\Strategy\ReplaceStrategy
applicable for activity entities now is used instead. -
Removed class
Oro\Bundle\NoteBundle\Model\Stratgy\UniteStrategy
and serviceoro_note.strategy.unite
. Generic classOro\Bundle\ActivityListBundle\Model\Strategy\UniteStrategy
applicable for activity entities now is used instead. -
Removed service
oro_note.widget_provider.actions
. -
Added parameter
renderContexts
to route controller actionOro\Bundle\NoteBundle\Controller\Note::infoAction
(routeoro_note_widget_info
). Default value of the parameter istrue
. -
Changed signature of controller action
Oro\Bundle\NoteBundle\Controller\Note::createAction
. The parameters of routeoro_note_create
remain the same as before -entityClass
andentityId
. -
Changed signature of method
Oro\Bundle\NoteBundle\Form\Handler\NoteHandler::__construct
. -
Changed signature of method
Oro\Bundle\NoteBundle\Provider\NoteActivityListProvider::__construct
. -
Replaced method
Oro\Bundle\NoteBundle\Form\Type\NoteType::setDefaultOptions
withOro\Bundle\NoteBundle\Form\Type\NoteType::configureOptions
. -
Changed view template
OroNoteBundle:Note:js/activityItemTemplate.html.twig
. -
Changed view template
OroNoteBundle:Note:widget/info.html.twig
. -
Removed parameter
oro_note.manager.api.class
from DIC. -
Removed parameter
oro_note.activity_list.provider.class
from DIC. -
Removed parameter
oro_note.manager.class
from DIC.
- Constructor of
Oro\Bundle\TagBundle\Grid\Extension\TagSearchResultsExtension
was changed. Dependency onDoctrine\ORM\EntityManager
was removed. - Removed constant
GRID_FROM_PATH
fromOro\Bundle\TagBundle\Grid\AbstractTagsExtension
- Removed constant
GRID_COLUMN_ALIAS_PATH
fromOro\Bundle\TagBundle\Grid\AbstractTagsExtension
- Changed signature of constructor of
Oro\Bundle\TagBundle\Grid\AbstractTagsExtension
. The argumentGridConfigurationHelper $gridConfigurationHelper
was replaces withEntityClassResolver $entityClassResolver
. - Changed signature of constructor of
Oro\Bundle\TagBundle\Grid\TagsExtension
. The argumentGridConfigurationHelper $gridConfigurationHelper
was replaces withEntityClassResolver $entityClassResolver
. - Changed signature of constructor of
Oro\Bundle\TagBundle\Grid\TagsReportExtension
. The argumentGridConfigurationHelper $gridConfigurationHelper
was replaces withEntityClassResolver $entityClassResolver
.