| Необходимо добавить в CKEditor сноски в виде тега <span> с атрибутом title (текстом которого и будет сноска).
Плагин должен добавлять кнопку на тулбар, после нажатия на которую в диалоговом окне появляется возможность ввести текст сноски. Выделенный в редакторе текст должен обрамиться тегом span с title.
Это сделано. Не могу понять, как делать поля заполненными, если курсор пользователя уже находится в размеченной области.
Насколько я понял у CKEdiror нет никакой документации по созданию плагинов, только обрывочные сведения ан формах и исходники, где в самых ответственных местах применяются методы ядра.
Помогите, если кто-то разбирается. Заранее спасибо.
CKEDITOR.dialog.add( 'footnote', function( editor )
{
return {
title : 'Сноски',
minWidth : 350,
minHeight : 230,
contents : [{
id : 'footnote_block',
label : 'First Tab',
title : 'First Tab',
elements : [
{
id : 'footnote_text',
type : 'textarea',
label : 'Текст сноски',
setup : function(text){
alert(text);
this.setValue(text);
}
},
{
id : 'source_text',
type : 'text',
label : 'Текст, для которого создается сноска',
}
]
}],
onShow : function()
{
var editor = this.getParentEditor(),
selection = editor.getSelection(),
element = null;
// Fill in all the relevant fields if there's already one link selected.
if ( ( element = plugin.getSelectedLink( editor ) ) && element.hasAttribute( 'href' ) )
selection.selectElement( element );
else
element = null;
this.setupContent('123');
},
onOk : function()
{
var attributes = {},
me = this,
editor = this.getParentEditor(),
footnote_text = this.getContentElement( 'footnote_block', 'footnote_text').getInputElement().getValue(),
source_text = this.getContentElement( 'footnote_block', 'source_text').getInputElement().getValue();
//this.commitContent( data );
attributes.title = footnote_text;
if ( !this._.selectedElement )
{
// Create element if current selection is collapsed.
var selection = editor.getSelection(),
ranges = selection.getRanges( true );
if ( ranges.length == 1 && ranges[0].collapsed )
{
// Short mailto link text view (#5736).
var text = new CKEDITOR.dom.text(source_text, editor.document );
ranges[0].insertNode( text );
ranges[0].selectNodeContents( text );
selection.selectRanges( ranges );
}
// Apply style.
var style = new CKEDITOR.style( { element : 'span', attributes : attributes } );
style.type = CKEDITOR.STYLE_INLINE; // need to override... dunno why.
style.apply( editor.document );
}
else
{
// We're only editing an existing link, so just overwrite the attributes.
var element = this._.selectedElement,
textView = element.getHtml();
element.setAttributes( attributes );
delete this._.selectedElement;
}
}
};
});
|
| |