Добрый день!
Понадобилось добавить 2 кнопки в карточке пользователя, ведущие на определённые страницы.
Решил использовать BX.SidePanel.
Однако при заходе на страницу сразу открывается слайдер из сайдпанели.
Как это выглядит сейчас
JS:
PHP:
Как выглядят кнопки, если не вешать на них событие:
https://yadi.sk/i/IesikHPiBktrjg
Подскажите, что нужно делать, чтобы сайдпанель открывалась только по клику. Пробовал повесить 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) - тоже сразу переход происходит