Skip to content

Releases: oroinc/platform-application

Release Notes

05 Dec 17:17
Compare
Choose a tag to compare

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

21 Nov 12:55
Compare
Choose a tag to compare

Removed install.bat/install.sh

Application can be installed using either installation wizard or using oro:install console command.

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

11 Nov 14:59
Compare
Choose a tag to compare

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

28 Oct 14:47
Compare
Choose a tag to compare

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

30 Sep 16:37
Compare
Choose a tag to compare

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

12 Sep 17:47
Compare
Choose a tag to compare

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

29 Aug 18:36
Compare
Choose a tag to compare

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.

Implemented extractor for messages in PHP code.

Removed dependency on SonataAdminBundle

Added possibility to unpin page using pin icon.

Release Notes

31 Jul 20:08
Compare
Choose a tag to compare

The Symfony framework was upgraded to version 2.3

Entity and Entity's Field Management

Added ability to configure metadata for existing entities. It is now possible to extend existing entities with custom fields. To enable configuration of entity you should add annotation @extend to entity class. In default installation configuration is enabled for user groups entity. Metadata for entity and custom entity field is configurable. To apply changes to DB you should update your schema. Note: This feature is not fully integrated into the system and working with entities will not impact system behavior (i.e. menus, forms will not be affected by changes)

Multiple Organizations and Business Units

Added feature with the ability to configure and manage Organizations in the system. In a default installation a 'default' organization is included. Added feature with the ability to manage business units and assign users to different business units in the system.

Transactional Emails

Added ability for a developer to define custom events for entities and ability for user to configure emailing when one of these events occurs. To do this user should create notification rule and configure it with entity, event, email template, recipients etc.

Email Templates

Added ability to create custom email templates for different languages.

Tags Management

Added ability to add tags to entities and search by tags.

Translations JS files

Added a simple way to translate messages inside JS code.

Pin tab experience update

When a user pins a page the state of the page will be saved. If the page content or state changes the next time the user views this pin tab they will see a notification with the option to refresh the page.

Redesigned Page Header

The header was redesigned to reduce the height and allow more space for the page content. Menu changed to dropdown menu style and breadcrumbs were added to reflect a pages position in the menu. Pin bar was positioned at the top of the page.

Optimized load time of JS resources

To reduce the page load time in development mode we added the ability for a developer to define groups of JS files which will be merged in to one file during rendering. For development purposes files can also be excluded from a group. Removed dev_js application mode.

Release Notes

31 Jul 20:15
Compare
Choose a tag to compare

Placeholders

This is ability to configurable output position for blocks. Added new twig token 'placeholder' which allows you to combine several blocks (templates or actions) and output them in different places in twig templates. Placeholders can be defined in any bundle in appropriate config file and then used in twig templates. More details you can find here.

Developer toolbar works with AJAX navigation requests

Now developer toolbar can be used along with navigation requests that are using AJAX.

Configuring hidden columns in a Grid

Added configuration option for the columns in Grid using which can be disabled output of this column. Data for this column will be still loaded, so you will be able to use it, for example for filtering.

Auto-complete form type

Added new form type based on Select2 to use for dynamically loaded data and customizable output.

Added "address book"

User can add multiple addresses for one entity.

Localized countries and regions

Added localized countries and regions list in default installation.

Enhanced data change log with ability to save changes for collections

Removed dependency on lib ICU

Now it is not necessary to have lib ICU installed.

Fixed issues:

fixed Twig exception "Twig_Error_Runtime: An exception has been thrown during the rendering of a template ("User Deprecated: Overwriting Knp\Menu\MenuFactory::buildOptions is deprecated."
fixed issues with missing option “auto_initialize”
fixed issue with root ACL permission
fixed 500 error on optional filter for the groups roles collection "[Semantical Error] line 0, col 71 near 'roles LIKE :': Error: Invalid PathExpression. Must be a StateFieldPathExpression."
fixed JavaScript error on search bar : "TypeError: queryString2 is undefined" (file searchBar.js from the searchBundle, line 104)"
fixed double generating API Key for user

Known issues

sometimes after form submit appears an error message from page state component. It happens because of improper creation of a trigger save state event. To avoid further appearing of this error just do a hard refresh in browser.