{#
Displays title and search form
#}
{% macro renderTitleAndButtons(pageTitle, buttons) %}
{% if pageTitle is iterable %}
{% for title in pageTitle%}
{% if not loop.last %}
{{ title }}
/
{% else %}
{{ title|raw }}
{% endif %}
{% endfor %}
{% else %}
{{ pageTitle }}
{% endif %}
{% if buttons is defined %}
{% for button in buttons %}
{{ button }}
{% endfor %}
{% endif %}
{% endmacro %}
{#
Render page scrollable data
params:
data - tree of current configuration
form - form view of active group
activeTabName - active tab name
activeSubTabName - active subtab name
routeName - route name for tabs switch
routeParameters - additional route parameters
#}
{% macro renderScrollData(data, form, activeTabName = false, activeSubTabName = false, routeName = 'oro_config_configuration_system', routeParameters = {}) %}
{% import 'OroUIBundle::macros.html.twig' as UI %}
{% if activeSubTabName and form != false %}
{{ _self.renderTabs(data, activeTabName, activeSubTabName, routeName, routeParameters) }}
{{ _self.renderTabContent(form) }}
{% endif %}
{% endmacro %}
{#
Renders tab navigation item
params:
data.isActive - Tab is active
data.name - Tab name
data.title - Tab title
data.icon - Tab icon
data.url - Tab view url
#}
{% macro renderTabNavItem(data) %}
{% for tab in data %}
{% set tabData = {
isActive: activeTabName and activeTabName == tab.name,
name: tab.name,
url: path(routeName, {activeGroup: tab.name}|merge(routeParameters))
}|merge(tab.toViewData)
%}
{% for group in tab %}
{% set activeSubTab = null %}
{% for subTab in group %}
{% if tabData.isActive and activeSubTabName and activeSubTabName == subTab.name %}
{% set activeSubTab = subTab %}
{% endif %}
{% endfor %}
{% set groupData = {
isActive: activeSubTab is not null,
name: group.name
}|merge(group.toViewData)
%}
{% for subTab in group %}
{% set subTabData = {
isActive: activeSubTab == subTab,
name: subTab.name,
url: path(routeName, {activeGroup: tab.name, activeSubGroup: subTab.name}|merge(routeParameters))
}|merge(subTab.toViewData)
%}
{{ _self.renderTabNavItem(subTabData) }}
{% endfor %}
{% endfor %}
{% endfor %}
{% endif %}
{% endmacro %}
{#
Renders tab form
params:
form - form view for active tab tree configuration
#}
{% macro renderTabContent(form) %}
{% set data = {
'formErrors': form_errors(form),
'dataBlocks': form_data_blocks(form),
'hiddenData': form_rest(form)
} %}
{% set data = oro_form_process(data, form) %}
{% if data.formErrors is defined and data.formErrors | length %}
{{ data.formErrors|raw }}
{% endif %}
{% for scrollBlock in data.dataBlocks %}
{% set accordionId = 'system-configuration-collapse' ~ loop.index %}