Добрый день!
Понадобилось добавить 2 кнопки в карточке пользователя, ведущие на определённые страницы.
Решил использовать BX.SidePanel.
Однако при заходе на страницу сразу открывается слайдер из сайдпанели.
Как это выглядит сейчас
JS:
PHP:
Как выглядят кнопки, если не вешать на них событие:
Подскажите, что нужно делать, чтобы сайдпанель открывалась только по клику. Пробовал повесить window.lodation.assign(link) - тоже сразу переход происходит
Понадобилось добавить 2 кнопки в карточке пользователя, ведущие на определённые страницы.
Решил использовать BX.SidePanel.
Однако при заходе на страницу сразу открывается слайдер из сайдпанели.
Как это выглядит сейчас
JS:
| Код |
|---|
const LeftColumn = 'intranet-user-profile-column-left';
const BlockColumn = 'intranet-user-profile-column-block';
const BlockColumnTitle = 'intranet-user-profile-column-block-title';
const BlockColumnTitleSpan = 'intranet-user-profile-column-block-title-text';
const Metrics = BX.namespace('Metrics');
Metrics.createButtonArea = function(userId) {
let sidebar = BX.findChildByClassName(document, LeftColumn, true);
// Создание объекта кнопок
const ButtonTelephony = this.createButton('История звонков', 'ui-btn ui-btn-primary ui-btn-icon-phone-call', '/user/telephony.php?user=' + userId)
const ButtonCrm = this.createButton('Сделки', 'ui-btn ui-btn-primary ui-btn-icon-list', '/user/crm.php?user=' + userId);
const blockColumnArea = BX.create('div', {
attrs: {
className: BlockColumn
}
})
sidebarBlock = sidebar.appendChild(blockColumnArea);
arButtons = [ButtonTelephony, ButtonCrm];
// Добавление кнопок
arButtons.forEach(button => {
sidebarBlock.appendChild(BX.create('div', {
style: {
margin: '1em 0'
},
children: [button]
}))
});
}
// Функция создания объекта кнопок
Metrics.createButton = function(buttonText, cssClass, link) {
return BX.create('button', {
attrs: {
className: cssClass
},
events: {
click: BX.SidePanel.Instance.open(link)
},
text: buttonText,
});
}
|
PHP:
| Код |
|---|
$profileTemplates = [
"profile" => ltrim(Option::get('intranet', 'path_user', '', SITE_ID), '/')
];
if(CComponentEngine::parseComponentPath('/', $profileTemplates, $arVars) == 'profile') {
$userId = intval($arVars["USER_ID"]);
$script = "<sc ript>BX.ready(function() {Metrics.createButtonArea($userId)});</sc ript>";
CJSCore::Init(['user_metrics', 'sidepanel']);
Asset::getInstance()->addString($script);
}
|
Как выглядят кнопки, если не вешать на них событие:
Подскажите, что нужно делать, чтобы сайдпанель открывалась только по клику. Пробовал повесить window.lodation.assign(link) - тоже сразу переход происходит