Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сноски CKEditor
 
 автор: devil943   (07.07.2011 в 16:28)   письмо автору
 
 

Необходимо добавить в 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;
            }
        }
    };
});

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования