Releases: oroinc/platform
Release Notes
Embedded forms
This feature allows developers to create embedded forms that can used in third-party websites in order to collect data directly into OroCRM and have workflows around the data collected. These forms can be set up to maintain the look & feel of a target website.
The package for embedded forms contains two examples of such forms: generic Contact Request form and a Magento Contact Request form that uses Magento CE CSS in its appearance. The latter form also has an OroCRM workflow attached to data records generated from it, serving as an example of the use case for embedded form data collection.
CSV export
The ability to export data grids to CSV files has been expanded to custom reports and most data grids.
Package management
This is a BAP feature that provides user interface for Package Manager – a separate application that allows to view installed packages, check for available packages, install new packages and disable installed packages.
Package Manager can be reached via System → Package Manager menu items. In order to use it, the user has to have permissions to edit composer.json.
Packages can include demo data of the application contained in the package and can be added while enabling a package.
Upgrading
We have added the ability to upgrade existing installations of OroCRM. To upgrade follow the instructions in upgrade.md file. This process will be automated in future releases.
Release Notes
Translations management
These features complement each other: they provide ability to prepare and upload packages of messages that shall be translated to crowdin.net service, and then download translated packages back to the platform.
Packages contain .yml files grouped by bundles, and, in case of translated packages, by languages
This feature provides UI for language settings, available under System → Configuration → Language settings menu. It allows to see the available translations and progress of the translation (percentage of translated messages across all projects). Translations can be downloaded; for downloaded translations the status is also shown – translation is "Up to date" when no changes have been made in crowdin since the last download, or "Needs update" if such changes has been made. In the latter case the Update action is also available.
Downloaded translations can be enabled or disabled, and enabled translations can be used to set the Default language of the system and as a supported language for email templates. After the system language is changed, user should run clear:cache command for changes to apply.
Please note that in some rare cases PCRE that is used to process translation messages may fail on Windows servers
Improved Reports
Segmentation Builder
The idea of this feature is to provide improved UI for conditions builder that includes drag-and-drop, extended condition expressions, and grouping of conditions
Tree for choice field for report creation wizard
This feature improves the UI for the field choice control in both Column selector and Condition selector of the Report editing page. The control now shows fields grouped under the entity name, and this group can be either folded or unfolded by clicking the entity name. This grouping is also preserved in display of search results.
CSV export for grids and reports
This feature allows to export (default) report data in CSV format
Add Totals for Grids
Totals row has been added to default reports. This row shows total value for all numerical columns on the page; the value shown is total for visible rows only, not for the entire report.
Add Money and Percent formatting for static reports
Values in money and percent columns (like Budget amount and Probability for Opportunities) are now properly formatted: instead of 1,234.00 and 0.5 the reports will now display $1,234.00 and 50%, respectively
Apply FontAwesome web-application icons to our entity icon field
Known issues
Extended entity fields are duplicated after the reinstall of an existing instance. Duplicate fields can be viewed in Entity Configuration screen.
Doesn't work ability to create custom relations for entities. These field types were temporary removed from entities management
Release Notes
Table Reports creation wizard
"Table Reports" are simple reports where user can choose fields to show from target entity or related entities, set filters and conditions.
On “Manage Reports” page, user can find UI management for reports, where users can create, modify or delete reports. For now it is possible to choose an entity, select fields from chosen or related entity, set filter or sorting rules and describe filters logic.
It is possible to add grouping by fields and use some of aggregation functions. Available functions (depends on column type): COUNT, AVG, MIN, MAX.
Manageable labels of entities and entity fields
Implemented possibility to change entity field labels from Entities Management (System -> Entities). From now, if you change label of entity field – it will be changed on entity instance view and edit pages.
There is also support for plural label and description.
Record updates notification
Added notifications via Web Sockets for all connected clients when data that they are viewing is changed. Each page subscribes to several channels (tags) and checks updates on them. When update notification is received an update message appears that data was changed with suggestion to reload the page. If data was changed inside pinned pages a yellow marker will appear on appropriate pin tabs.
Sidebars widgets
Added left and right sidebars for special sidebar widgets. Sidebar has two states: minimized or expanded. To add widget, user should click on “+” inside a sidebar. Widgets, can be added to a sidebar, deleted from it, change widgets order. Each widget can have its own configuration. All these settings are saved per user. Bundles can provide their own widgets. The widget is a module, exporting 3 entities: default settings, ContentView and SetupView. ContentView and SetupView are Backbonejs views. defaults is template for widget's settings.
Mobile Web
Implemented responsive design for mobile devices.
Package Definition and Management
Added feature with possibility to manage external packages. User can install/uninstall/upgrade packages from Oro repository. Package Management has different entry point and different user session. You can get to it through the menu: System -> Package Management.
Themes
Added ability to define application theme in config, using oro_theme section in config.yml. Themes are needed to redefine styles specific for application (i.e. colors, fonts, etc).
Theme examples can be found in \Oro\Bundle\UIBundle\Resources\public\theme.
Notifications for record owners
Added ability to send notification emails for entity owners on user, business unit and organization levels. User can turn it on during creation or edit notification rule checking Owner checkbox in Recipient list.
If ownership type is user an email will be send to the primary email of this user, if business unit is set an email will be sent to primary emails of all users that belongs to this business unit. If organization is set - an email to all primary emails of the users that belongs to all business units of this organization.
--force option for oro:install
Added --force option for oro:install command. With this command user can reinstall application from CLI without checks of “installed” parameter.
Remove old Grid bundle
Enhanced implementation of the grids was placed in Oro/ Bundle /DataGridBundle. Oro/Bundle /GridBundle which left for backward compatibility in previous releases was removed.
Basic dashboards
Developers can create dashboards using configuration file dashboard.yml where in section “dashboards” a new instance can be declared with list of widgets declared in section “widgets”. Each bundle can provide its own dashboard.yml where a new dashboard can be added or change existing ones.
Example can be found in Oro\Bundle\DashboardBundle\Resources\config\dashboard.yml
Added basic dashboards for Oro Platform and OroCRM. On Oro Platform new dashboard with calendar and recent emails widgets is loaded by default.
Release Notes
ACL management in scope of organization and business unit
Main point of this story was to give administrator an ability to limit permissions for users on organization or business unit level. Users can now be assigned permissions of a role and in the same time assign a scope for this permission.
Known issue:
- Create and Edit actions now support only “None” or “System” ACL scope. Owner field on create and edit actions cannot view entities according to ACL levels (e.g. users, business unit. division. organizations etc.) it only works on “None” and “System” scope. This should be fixed in next sprint.
- Action buttons in grid rows, such as “View”, “Edit” and “Delete” displayed even if user has no permissions for these actions. If clicked a user will get an error message about his lack of permissions. Buttons are not visible only if ACL action is set to “None”.
- Search results has no filtering according to ACL access, search result will return all founded entities.
- Contact address ACL does not work.
- If ACL role was changed and pinned without saving, when user will return to pinned page all changes will be lost.
- If session is lost while on the edit/create role page user will not get any ACL dropdown opened.
"Option Set" Field Type for Entity Field
Implemented functionality for users with the ability to add select/multiselect attributes to extended entities. Users are able to create custom field with type “Option set”, set it as “select” or “multiselect”, add options, change options order and mark all options that will be selected by default.
Form validation improvements
Added form extension that will add data-validation attributes to all forms where it is needed.
Tabs implementation on entity view pages
Was refactored implementation of scrollSpy component re-initialization.
Title block of the tab hided if tab is active.
Last tab is scrollable to the top of the page.
Eliminated registry js-component
'oro/registry' component has been removed from UIBundle because it encourages writing tightly coupled components.
In the future, it would be great to minimize usage of global state in any form. For that matter we should always try to pass as little information as possible in the parameters to emitted events (either 'oro/mediator' or DOM-events) . By giving a reference to some private object in the parameters, we allow other components to save this link permanently and create potential memory leak.
Implemented responsive markup on most pages
Release Notes
Grid refactoring
All existed grids were replaced with new implementation.
Improvements:
- updated Backgrid.js lib to the latest version;
- added declarative grid definition: ability to define a grid using .yml configuration file;
- created JS datagrid builder that will take care about creating object, storing and loading metadata information
- eliminated JS memory leaks
- performance improvements
Form validation improvements
- eliminated need to write to document root in runtime,
- removed requirement on write permissions
- twig templates needed to generate validators replaced with RequireJS modules
- Hierarchical validators processing, - validators can be applied not only to the field but also on parent containers;
- UX improvements.
Make all entities as Extended
Removed dependency on flexible bundle from all entities.
From now all system entities (entities created by developer, i.e. User, Accounts, …) are extendable, so user can create custom fields for them.
JavaScript Tests
Added support to cover JS code with tests.
An article on how to write and run JS test is available on GitHub.
https://github.com/laboro/platform/blob/master/src/Oro/Bundle/TestFrameworkBundle/Resources/doc/reference/js_unittests.md
End support for Internet Explorer 9
From 1.0.0-Beta 4 release BAP and OroCRM will not support IE9.
Release Notes
Upgrade the Symfony framework to version 2.3.6
Both OroCRM and Oro Platform are now released with Symfony 2.3.6
Oro Calendar
New feature Oro Calendar adds the ability for users to add and mange events. Calendar has multiple views of month, week and day. based on permissions users can view other users calendars
Calendar is linked under the User Menu -> My Calendar.
Email Communication
Added ability for users to send emails directly from Oro. A user can click send email form the contact page by clicking on “Send email” button at the top – and using the email dialog window.
Removed bundle dependencies on application
All application configuration for each bundle was moved from application to a bundle folder Resources/config/oro/
file with bundle registrations bundles.yml moved from Resources/config/ to Resources/config/oro/
twig templates declarations were moved from app/config.yml to Resources/config/oro/twig.yml
assetic declarations moved to Resources/config/oro/assetic.yml
SOAP controllers declarations moved from app/soap.yml to Resources/config/oro/assetic.yml
routes declarations moved from app/routing.yml to Resources/config/oro/.
One-to-many and many-to-many relations between extended/custom entities
Added ability to add one-to-many and many-to-many relations for an entity. Added the option to define ‘short‘ and ‘detailed’ view of a relation.
Localizations and Internationalization of input and output
Implemented localization settings for numbers, currency, date and time, names and address for input and output for all bundles.
The configuration can be found under System -> Configuration
Release Notes
Installer enhancements
- Added several enhancements to the installation wizard.
- On first step added section «Oro Requirements» which is used to separate the requirements of the application and Symfony framework.
- Added ability to load sample data during installation, each bundle can provide fixtures that will be loaded after installation. These fixtures must be placed in "YourBundle\DataFixtures\Demo" directory.
- Installation process was enhanced to view step-by-step progress.
Automatic bundles distribution for application
Removed requirement to manually register bundles in app/AppKernel.php. Add file "YourBundle/Resources/config/bundles.yml" to every bundle you want to be autoregistered. Example:
bundles:
- My\Bundle\MyBundle\MyCustomBundle
Routes declaration on Bundles level
Implemented possibility to declare routers on bundle level without adding something to app/config/routing.yml. Now it can be done in "YourBundle/Resources/config/oro/routing.yml"
System Help and Tooltips
Added feature that gives ability for developer to manage page associations with help pages on external web site. Also was added possibility to manage help tooltips for forms. Help link is an "?" icon at the top right side of every page.
RequireJS optimizer utilization
Implemented minification of JS resources using RequireJS optimizer during installation to reduce number of requests per page. Documentation can be found here: https://github.com/laboro/platform/tree/master/src/Oro/Bundle/RequireJSBundle
ACL Caching
Added caching of ACL queries - this will improve application performance and reduce number of queries on every action.
System Requirements Changes
PHP v.5.4.4. and above
Release Notes
Installer
Added step-by-step installation wizard.
New ACL implementation
Implemented a new ACL which will increase system performance for ACL checks. A new matrix UI was added to easily manage permissions.
Emails synchronization via IMAP
Added the possibility to synchronize emails with all email services that support IMAP. User should add credentials to allow access to email service. After emails are synchronized, all emails that mention the user's email in the 'from', 'to' or 'cc' ('bcc' is not supported for now) will be listed on the user view page. Also added to Contact view page a list of emails where a user can find all correspondence where one of the contact's email addresses is mentioned in 'to' or 'cc'.
Synchronization process can be performed by cron every 30 minutes, or using Symfony console command oro:cron:imap-sync.
Custom entities and custom fields
Custom fields can be added to entities marked as extended. This ability was added to the Contact, Leads and Opportunity entities as an example. These fields are added on edit/create form, view page and grid (according to configuration).
Custom entities management appears in System -> Entities -> ... sub-menu, after creating and applying schema.
Managing relations between entities
Added ability to create custom fields for extended (or custom) entities that will introduce many-to-one relation with another entity. To add it a user should define target entity and field. After saving a relation between the two entities will be created on DB level. We will add on the edit form an auto-complete field to choose an entity, the search will be performed on target field.
Grid views
Added ability for developers to define a set of filters and sorters for a grid. On grids that have different views available a select with the predefined grid views will be available to a user. As an example you can see it in System -> Emails -> Templates grid.
Release Notes
Maintenance Mode
Added ability to put the system in Maintenance mode. Changing system status can be done using appropriate console commands.
Added interface for cron jobs that need be executed in maintenance mode.
Maintenance mode was integrated into update schema process inside Entity Extend functionality. In current implementation when a user updates an entity the system will enter maintenance mode while applying schema changes.
WebSocket messaging between browser and the web server
Added ability for messaging between browser and web server using web-sockets. Added notification for all opened connections when system goes to maintenance mode.
To use this feature you need to run WebSocket server with console command clank:server, configuration for it added to parameters.yml.dist
Asynchronous Module Definition of JS resources
Added support of Require.js to provide Asynchronous Module Definition of JS resources.
- all JS-resources turned into modules (or most of them) which match AMD requirements, that means, all dependencies for a module are defined in the definition-function and passed as arguments into callback-function of the module definition;
- some JS-files which contains initialization code (different from module code) are wrapped into require-function call with list of defined dependencies and initialization callback;
- turned off OroAssetic bundle for JS-resources.
For now all JS-files are loaded as they are, without minification, this increases a page load time
System configuration
Added global system configuration (System -> Configuration). Every bundle can provide its configuration options. Each option can have a scope with value: bundle, application, global configuration, organization, group, locale, user (scopes are introduced according to priority from lowest to highest). To add configuration options developer should add a system_configuration.yml config in appropriate format. In current version, UI will allow to define only global configuration settings as we are completing this feature more scopes will be added.
Added multiple sorting for a Grid
By default multiple sorting is enabled for all grids, this can be configured in datagrid manager for each grid. Each column has 3 states that can be changed by clicking on column head: ascending, descending, no sorting. Column sort order is determined by the order in which user clicked on column heads. Usability of this features will be improved in future versions to allow better control and insight to current state of the grid sorting.
Release Notes
Custom entity creation
Added feature with ability for user to create custom entities. Also added ability for bundles to define and modify existing entities.
Note: this feature is not fully integrated into the system and adding new entities or fields will not impact system behavior (i.e. forms, grids will not be affected by changes, will not be added CRUD for new entity copies).
Cron Job
Implemented feature with the ability to run tasks at a given time or with a given period. The scope of this implementation added console command that will execute scheduled tasks and added ability for developers to setup tasks for it.
This command will be executed by cron job and check schedule of tasks, then run all appropriate tasks that need to run as per their schedule. This feature supports logging activity of tasks. Task queue you can be found on newly added page System -> Cron.
Record ownership
Added ability to assign an owner of an entity. Each entity can have ownership based on types: organization, business unit, user, none or global. Ownership type is defined in entity configuration. For some system entities ownership type will never changes and can be defined in annotation.
On entity edit/create form added required field, where user can set owner according to ownership type, if this is permitted by ACL.
Grid Improvements
added improvement for Grid, that allows it to work with SQL aggregation functions;
added possibility to remove pagination and actions panel;
action panel is not rendered when grid is empty;
added ability to hide row actions that are not available;
added Grid Mass Actions. Developers have the ability to add mass actions with different behavior options: that will perform some action immediately, that will process selected items (for example, change several properties of an entity), this can be implemented in two ways: on different page or in popup. Support of both of this options was also implemented.
Filter Improvements
default filter operation is displayed;
added "Starts with" and "Ends with" operations for string filter;
added two options for date filter to give user the ability to explicitly set from-to filters.
Email Template Improvements
added possibility to preview email templates during edit or create;
added ability to use variables defined in entity’s configuration inside email templates.