[spoiler]
Прежде всего зарегистрируем обработчик в init.php
AddEventHandler('main', 'OnAdminContextMenuShow', 'OrderDetailAdminContextMenuShow');
// собственно сам обработчик
function OrderDetailAdminContextMenuShow(&$items){
if ($_SERVER['REQUEST_METHOD']=='GET' && $GLOBALS['APPLICATION']->GetCurPage()=='/bitrix/admin/sale_order_edit.php' && $_REQUEST['ID']>0)
{
$items[] = array(
"TEXT"=>"Отправить письмо",
"LINK"=>"javascript:mail_ms(".$_REQUEST['ID'].")",
"TITLE"=>"Отправить письмо",
"ICON"=>"adm-btn",
);
}
if ($_SERVER['REQUEST_METHOD']=='GET' && $GLOBALS['APPLICATION']->GetCurPage()=='/bitrix/admin/sale_order_view.php' && $_REQUEST['ID']>0)
{
$items[] = array(
"TEXT"=>"Отправить письмо",
"LINK"=>"javascript:mail_ms(".$_REQUEST['ID'].")",
"TITLE"=>"Отправить письмо",
"ICON"=>"adm-btn",
);
}
} |
TEXT - надпись на кнопке
LINK - в данном случае указана js-функция, но может быть и просто ссылка на файл
ICON - тип кнопки (внешний вид)
Чтобы вызов функции mail_ms() был возможен опишем ее в файле local/php_interface/admin_header.php. Этот файл автоматически подгружается в админке битрикса.
<script>
// опишем всплывающее окно (средствами Битрикса)
var Dialog = new BX.CDialog({
title: "Отправить письмо",
content: '<form method="POST" style="overflow:hidden;" action="button.php" id="mailform">\
<textarea name="comment" id="comment" style="height: 78px; width: 374px;">Пишем текст сюда</textarea><br><br>\
<input type="checkbox" name="sostav" id="sostav"><label for="sostav">Отправлять состав заказа</label>\
</form>',
icon: 'head-block',
resizable: true,
draggable: true,
height: '200',
width: '400',
buttons: ['<input type="submit" class="btnSubmit" value="Отправить" />', BX.CDialog.btnCancel, BX.CDialog.btnClose]
});
// теперь функция
function mail_ms(id) {
Dialog.Show(); // вызвали окно
// теперь в ajax-е обратимся к странице, на которой выполним нужный нам код и отправим письмо
$('.btnSubmit').on('click', function () {
var comment = $('#comment').val();
if($('#sostav').is(":checked")) {var sostav = 'on';} else {var sostav = 'off';}
$.ajax({
type: 'GET',
url: '/bitrix/admin/button.php',
data: { id: id, comment: comment, sostav: sostav },
success: function(data) {
// в случае успеха закроем окно
Dialog.Close();
// и перезагрузим страницу
location='<?=$_SERVER["REQUEST_URI"]?>';
},
error: function(xhr, str){
alert('Возникла ошибка: ' + xhr.responseCode);
}
});
})
}
</script> |


Компетентные специалисты оказывают техническую поддержку сайтов на любых CMS