В init.php создадим обработчик события:
AddEventHandler("main", "OnAdminListDisplay", "MyOnAdminListDisplay"); function MyOnAdminListDisplay(&$list) { if ($list->table_id=="tbl_sale_order") {//если это страница списка заказов, для других страниц админки будет свой table_id - чтобы его узнать, распечатайте входящий массив $list на нужной странице foreach ($list->aRows as $row){ // здесь мы вклиниваемся в контекстное меню каждой строки таблицы $row->aActions["all_orders"]["ICON"] = ""; $row->aActions["all_orders"]["TEXT"] = "Все заказы пользователя"; $row->aActions["all_orders"]["ACTION"] = "javascript:orders_ms(".$row->id.")"; // здесь мы объявляем действие - js-функция orders_ms(), в которую будем передавать параметр (в данном случае id заказа) } // $list->arActions["status_draft"] = "Все заказы пользователя"; // а здесь попадаем в меню групповых действий над элементами над элементами } } |
Чтобы функция orders_ms() могла выполниться мы опишем ее в файле, который загружается в начале подгрузки административных страниц Битрикса - /bitrix/php_interface/admin_header.php (если его нет - создайте)
В данном случае мы хотим, чтобы при нажатии на новый пункт контекстного меню появлялось всплывающее окно с какой-то информацией. Значит в admin_header.php пишем скрипт:
<script> // опишем всплывающее окно (средствами Битрикса) var Dialog = new BX.CDialog({ title: "Все заказы пользователя", content: '<div id="all_orders"></div>', // в этот div будем вставлять инфу, полученную функцией orders_ms() icon: 'head-block', resizable: true, draggable: true, height: '400', width: '600', buttons: [BX.CDialog.btnClose] }); // теперь функция function orders_ms(id) { // теперь в ajax-е обратимся к странице, на которой выполним нужный нам код и отправим письмо BX.ready(function () { BX.ajax({ method: 'GET', dataType: 'html', url: '/bitrix/admin/all_orders.php?id='+id, data: { id: id }, onsuccess: function(data){ BX('all_orders').innerHTML = data; Dialog.Show(); // вызвали окно, которое описано выше }, onfailure: function(){ alert('Возникла ошибка'); } }); }) } </script> |