OroSidebarBundle 

OroSidebarBundle adds sidebars to the desktop version of the Oro application management UI and allows application users to enable or disable this feature in the system configuration menu.

The bundle enables developers to create sidebar widgets as Javascript modules and configure their default values in the YAML configuration files.

Every application user can configure their own widgets set in each enabled sidebar.

Initialize a Sidebar 

Templates left_panel.html.twig and right_panel.html.twig define the initial html markup and data for left and right sidebars accordingly. The data-models attribute with JSON-data is expected to contain data for the sidebar model. Example:

sidebar: {
    widgets: [
        // array of all registered widgets
        {
            title: 'Hello world',
            icon: 'bundles/orosidebar/img/hello-world.ico',
            module: 'orosidebar/widget/hello-world'
        }
    ]
},
widgets: [
    // widget instances, hosted on the sidebar
    {
        id: 1,
        title: 'Hello world',
        icon: 'bundles/orosidebar/img/hello-world.ico',
        dialogIcon: 'bundles/orosidebar/img/hello-world.png',
        module: 'orosidebar/widget/hello-world',
        description: 'This widget prints "Hello, World !!!"'
        isNew: true
        settings: {
            content: 'Hello, World!!!'
        }
    }
]

Configure a Sidebar Widget in YAML 

Define the default data for your widget in the widget.yml file in /Resources/public/sidebar_widget/widget_name/widget.yml. This file can contain the following item settings:

  • title - the title text of your widget

  • iconClass - the css icon class from Font Awesome icons. When this property is set, then icon setting is ignored

  • icon - the path to the icon image of your widget in the assets folder

  • dialogIcon - the path to the icon shown on widget add dialog

  • isNew - defines whether to show the “New” label next to the title

  • cssClass - the css class for the container of your widget

  • module - alias of the path to your widget in the asset folder, which should be declared in the require.yml file

  • placement - possible placement for your widget. Available positions: right, left, both

  • description - the description shown on widget add dialog. The description should be translatable, translation should be placed into the jsmessages.[language_code].yml file

  • settings - custom settings of your widget

Example:

title:     "Task list"
iconClass: "fa-tasks"
dialogIcon: "bundles/orocrmtask/sidebar_widgets/assigned_tasks/img/icon-task.png"
module:    "orocrm/sidebar/widget/assigned_tasks"
placement: "both"
cssClass:  "sidebar-widget-assigned-tasks"
description: orocrm.task.assigned_tasks_widget.description
isNew: true
settings:
    perPage: 5

Create a Sidebar Widget 

The widget is a module exporting three entities: default settings, ContentView and SetupView. ContentView and SetupView are Backbonejs views. defaults is a template for the widget’s settings. Example:

defaults: {
    title: 'Hello world',
    icon: 'bundles/orosidebar/img/hello-world.ico',
    settings: function () {
        return {
            content: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse pulvinar.'
        };
    }
}

The bundle includes a sample widget, called helloWorld in bundles/orosidebar/js/widget/widget.js.