Чтобы вывести свою кнопку в списке разделов, воспользуемся обработчиком события "OnProlog" главного модуля (опишу пока в формате старого ядра, т.к. сайт не обновляется уже больше года:():
AddEventHandler("main", "OnProlog", array("clInitMaxline", "OnEndBufferContentHandler"));
AddEventHandler("main", "OnProlog", array("clInitMaxline", "OnEndBufferContentHandler"));
class clInitMaxline{
function OnEndBufferContentHandler()
{
if (defined("ADMIN_SECTION") && $GLOBALS["APPLICATION"]->GetCurPage() == "/bitrix/admin/sale_order.php")
{
// подключаем обработчик для нужной страницы в админ-панели
// нам нужен JQUERY, чтобы с его помощью производить манипуляции с dom-структурой
\CJSCore::Init(array("jquery"));
// дальше формируем тот кусок js-кода, который нужно добавить на нужной странице:
ob_start();
?><script type="text/javascript">
var printjQ = false;
function initOrderPrintBtnJQ() {
var pathName = window.location.pathname;
if (pathName == "/bitrix/admin/sale_order.php" && !printjQ) {
$(function () {
$('#tbl_sale_order_result_div .adm-list-table-top').append(
'<a class="adm-btn adm-btn-save" href="javascript:void(0)" ' +
'id="btnPrintOrder" ' +
'data-action="/путь к обработчику ajax-запроса" ' +
'title="Вывести на печать" >' +
'Вывести на печать' + '</a>'
);
$('#tbl_sale_order_result_div').on('click', 'a#btnPrintOrder', function () {
var that = this;
var orders = [];
var table = $('#tbl_sale_order');
table.find('tbody tr.adm-list-table-row').each(function () {
var orderID = $(this).find('input[name="ID[]"]').val();
orders.push(parseInt(orderID));
});
if ($(that).data('action') !== undefined) {
$.post($(that).data('action'),{orders: orders},
function (data) {
// тут обрабатываем полученный результат - если с сервера вернулся url-файла - просто отдаем этот файл на загрузку
if(data.url!==undefined){
window.location.href = data.url;
}
}
);
}
return false;
});
printjQ = true;
});
}
}
initOrderPrintBtnJQ();
</script><?
$sContent = ob_get_clean();
$GLOBALS['APPLICATION']->AddHeadString($sContent);
}
}
}
Все! Таким образом, рядом с кнопками "Добавить заказ" и "Архивирование заказов" появится еще одна, наша кнопка. При нажатии на данную кнопку, будут получены все заказы с текущей страницы (если нужно обрабатывать все заказы - тут можно обрабатывать url - разбирать параметры адресной строки, вытягивать из них фильтр и отправлять уже не ID-шники товаров, а параметры для выборки заказов из базы). Оставется реализовать скрипт, принимающий ajax-запрос и производящий обработку данных.