CKeditor - Пользовательские теги и символы внутри окна редактора

Когда вы вставите флеш-объект в CKeditor, в окне редактора появится этот символ:

альтернативный текст

Я размышлял. Можно ли сделать что-то подобное, когда пользователи вставляют этот тег в редактор (используя регулярное выражение {formbuilder=(\d+)}/ ):

{конструктор форм=2}

Если да, то может кто-нибудь объяснить, как это сделать? :)

ОБНОВЛЕНИЕ:

Я смотрел на плагин PageBreak, чтобы попытаться понять, что, черт возьми, происходит. Большая разница между этим плагином и моим заключается в том, как HTML вставляется в редактор.

CKEDITOR.plugins.add('formbuilder',
{
    init: function(editor)
    {
        var pluginName = 'formbuilder';
        var windowObjectReference = null;

        editor.ui.addButton('Formbuilder',
            {

                label : editor.lang.common.form,
                command: pluginName,
                icon: 'http://' + top.location.host + '/publish/ckeditor/images/formbuilder.png',
                click: function (editor)
                    {     
                        if (windowObjectReference == null || windowObjectReference.closed){
                            var siteid = $('#siteid').val();

                            windowObjectReference = window.open('/publish/formbuilder/index.php?siteid='+siteid,'Formbuilder','scrollbars=0,width=974,height=650');
                        } else {
                            windowObjectReference.focus();
                        }
                    }
            });
    }
});

Как видите, мой плагин открывает новое окно, и тег вставляется с помощью:

function InsertForm(form_id)
        {
            // Get the editor instance that we want to interact with.
            var oEditor = CKEDITOR.instances.page_content;

            // Check the active editing mode.
            if ( oEditor.mode == 'wysiwyg' )
            {
                // Insert the desired HTML.
                oEditor.insertHtml( '{formbuilder='+form_id+'}' );
            }
            else
                alert( 'You must be on WYSIWYG mode!' );
        }

Плагин PageBreak делает все, когда вы нажимаете на значок панели инструментов. Это позволяет сделать fakeImage внутри файла плагина. Для меня, с другой стороны, я не понимаю, как это возможно :\


person horgen    schedule 20.09.2010    source источник


Ответы (1)


Я хочу решить аналогичную проблему, за исключением того, что все мои вещи выглядят как XML. Типа, <cms:include page="whatever" />. В вашем случае вы сможете скопировать плагин-заполнитель и изменить регулярное выражение-заполнитель в соответствии с вашими тегами. В моем случае, похоже, я буду модифицировать плагин iframe или что-то в этом роде и, надеюсь, выясню, как добавить каждый из моих тегов как самозакрывающийся...

person ZiggyTheHamster    schedule 26.01.2011