Skip to content

Instantly share code, notes, and snippets.

@BedrosovaYulia
Created September 7, 2021 15:55
Show Gist options
  • Save BedrosovaYulia/0aec02cdf206843f4700a46f95d4f179 to your computer and use it in GitHub Desktop.
Save BedrosovaYulia/0aec02cdf206843f4700a46f95d4f179 to your computer and use it in GitHub Desktop.
Adding a button to the Bitrix24 deal interface without customizing the components
const ElenButton = document.querySelector(".crm-bizproc-starter-icon") // кнопка контекстного меню бизнесс-процессов
const onItemClick = () => {
ElenButton.dispatchEvent(new Event("click")) // открытие меню для получения это элементов
ElenButton.dispatchEvent(new Event("click")) // закрытие
let blockOnClick = document.getElementById("popup-window-content-menu-popup-bp-starter-tpl-menu-1").querySelector(".menu-popup-item") // элемент запускающий БП
blockOnClick.dispatchEvent(new Event("click")) // передача клика
}
const onItemClickSlider = () => {
document.querySelectorAll('iframe').forEach( item => { // получение массива frame
let frameElenButton = item.contentWindow.document.body.querySelector(".crm-bizproc-starter-icon") // кнопка контекстного меню бизнесс-процессо
if(frameElenButton) {
frameElenButton.dispatchEvent(new Event("click")) // открытие меню для получения это элементов
frameElenButton.dispatchEvent(new Event("click")) // закрытие
let blockOnClickSlider = item.contentWindow.document.body.querySelector("#popup-window-content-menu-popup-bp-starter-tpl-menu-1").querySelector(".menu-popup-item") // элемент запускающий БП
blockOnClickSlider.dispatchEvent(new Event("click")) // передача клика
}
})
}
BX.addCustomEvent("SidePanel.Slider:onLoad", function(event) { // слушатель на конец загрузки контента в слайдере
document.querySelectorAll('iframe').forEach( item => { // получаем массивы frame
item.contentWindow.document.body.querySelectorAll('#crm_scope_detail_custom_deal_2').forEach (item => {
// добавление кнопки в iframe
let LinkEventDeal = event.getSlider().getUrl()
if(LinkEventDeal.indexOf('deal/details') !== -1) { // проверка по адрессу
let buttonBP = document.createElement('div') // содание wrapper для кнопки
buttonBP.className = 'main-buttons-item'
buttonBP.onmouseover = function () {
buttonBP.style.opacity = "0.4";
}
buttonBP.onmouseleave = function () {
buttonBP.style.opacity = "1";
}
buttonBP.innerHTML =
"<a href='#' class='main-buttons-item-link'>Генерация документов</a>"
item.append(buttonBP) // добавление элемента в конец родителя (append)
buttonBP.onclick = () => onItemClickSlider() // вешаем слушатель на кнопку и запускаем отправку на генерацию документа
}
})
})
})
// добавление кнопки в html
let linkDeal = window.location.href
if(linkDeal.indexOf('deal/details') !== -1) {
let buttonBP = document.createElement('div')
buttonBP.className = 'main-buttons-item'
buttonBP.innerHTML =
"<a href='#' class='main-buttons-item-link' onclick='onItemClick()'>Генерация документов</a>"
document.body.querySelector("#crm_scope_detail_custom_deal_2").append(buttonBP)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment