Рабочий пример:
[CODE]function print_r(theObj){//Аналог php print_r для script
if(theObj.constructor == Array ||
theObj.constructor == Object){
document.write("<ul style='font-size:9px;'>"
for(var p in theObj){
if(theObj.constructor == Array||
theObj.constructor == Object){
document.write("<li>["+p+"] => "+typeof(theObj)+"</li>";
document.write("<ul>"
print_r(theObj);
document.write("</ul>"
} else {
document.write("<li>["+p+"] => "+theObj+"</li>";
}
}
document.write("</ul>"
}
}
/*Переопределяем и создаём кнопки*/
arButtons['HeadingList'] =
['BXEdList',
{
field_size: 100,
width: 210,
title: '(' + BX_MESS.Format + ')',
disableOnCodeView: true,
bAdminConfigure: true,
//bSetGlobalStyles: false,
values:
[
{value: 'p', name: 'Абзац'},
{value: 'h1', name: 'Заголовок 1'},
{value: 'h2', name: 'Заголовок 2'},
{value: 'h3', name: 'Заголовок 3'},
{value: 'h4', name: 'Заголовок 4'},
{value: 'h5', name: 'Заголовок 5'},
{value: 'h6', name: 'Заголовок 6'},
{value: 'pre', name: 'Preformatted'}
],
OnSelectionChange: function (){
var sel = 0;
var frm = this.pMainObj.queryCommand('FormatBlock');
if(frm)
{
var re = /[1-6]/;
var r = frm.match(re);
if(r>0)
sel = r;
else if(frm == 'pre')
sel = 7;
}
this.Select(sel);
},
OnChange: function (selected){this.pMainObj.executeCommand('FormatBlock', (selected['value'].length>0?'<' + selected['value']+'>':'<p>'));},
OnDrawItem: function (item)
{
if (!styleList_render_style)
return item['name'];
return (item['value'].length <= 0 ? item['name'] : '<'+item['value']+'>'+item['name']+'</'+item['value']+'>');
}
}
];
arButtons['Cite'] = ['BXButton',
{
id : 'Cite',
src : '/bitrix/templates/.default/images/fileman/icon_cite.gif',
name : 'Цитата',
title : 'Вставить цитату',
show_name : true,
handler: function(){
this.pMainObj.insertHTML('<cite>Цитата</cite>');
}
}
];
/*
Добавим свою кнопку за место разделится(separator) после hr(Горизонтальный разделитель).
Для этого обновим объект arToolbars['formating'] и arGlobalToolbar объявленные в toolbarbuttons.js
Для не административной части (arGlobalToolbar) требуется поиск элемента по id. В административной элемент находится в объекте formating 0 месте в массиве.
Разделитель(separator) следует сразу за hr.
Заодно изменим выпадающий список формат.
*/
try{//Публичный режим (Просто проверяем код на истинность, иначе режим административной части) if(window.lightMode) не сработает
var j_chet=0;
var j_pos_formating=-1;
while(arGlobalToolbar[j_chet]){
if(arGlobalToolbar[j_chet][1]['title']=="(Формат)"{ arGlobalToolbar[j_chet]=arButtons['HeadingList'];}
if(arGlobalToolbar[j_chet][1]['id']=="InsertHorizontalRule"{j_pos_formating=j_chet+1;}
j_chet+=1;
}
if(j_pos_formating>0)arGlobalToolbar[j_pos_formating]=arButtons['Cite'];
}catch(e){//Для режима административной части
var j_chet=0;
while(arToolbars.style[1][j_chet]){
if(arToolbars.style[1][j_chet][1]['title']=="(Формат)"{ arToolbars.style[1][j_chet]=arButtons['HeadingList'];break;}
j_chet+=1;
}
arToolbars.formating[1][1]=arButtons['Cite'];
}
//print_r(arGlobalToolbar);[/CODE]