выбрать элемент фигуры в ckeditor - захватить щелчок по элементу фигуры (или любым дочерним элементам) - PullRequest
0 голосов
/ 29 июня 2011

Я ищу способ захвата и выделения элемента фигуры (или любого из его дочерних элементов)

в идеале, я бы хотел, чтобы это обошло выбор imgs (включая objectResizing для imgs), когда онинаходятся внутри тега рисунка.

Я поиграл с захватом событий с использованием события currentInstance.не уверен, что это лучший подход или есть другое событие.Очевидно, мне нужен какой-то всплеск событий, чтобы знать, находится ли цель события (т.е. img) внутри элемента figure.

У меня есть представление о том, как это сделать в javascript / jquery, но яЯ ищу правильный подход ckeditor, так как это делается в ckeditor с imgs и таблицами.

Я нашел одно возможное решение, которое позволяет мне выбрать элемент figure, независимо от того, нажимаю ли я на его дочернем элементе илисама фигура.однако двойной щелчок запускает другие события, связанные с дочерними элементами, поэтому мне нужно найти способ отменить эти другие события в этом случае

    editor.on( 'selectionChange', function( evt )
    {
        if ( editor.readOnly )
                return;

        /*
         * only select our figure elements
         */
        var element = evt.data.path.lastElement && evt.data.path.lastElement.getAscendant( 'figure', true );
        if ( element && element.getName() == 'figure' && element.getAttribute( 'data-media-id' ) && element.getChildCount() ) {
            editor.getSelection().selectElement(element);
        }
    });


    editor.on( 'doubleclick', function( evt )
    {
        var element = evt.data.element.getAscendant( 'figure', true );

        if ( !element.isReadOnly() )
        {
            if ( element.is( 'figure' ) || element.getParent().is( 'figure' ) )
            {   
                editor.getSelection().selectElement( element );

                editor.execCommand('imagemanager', element);
            }

        }
    });

1 Ответ

2 голосов
/ 20 июля 2011

получается, мне просто нужно притвориться, чтобы открыть диалог.Моя проблема с двойным щелчком состоит в том, что я не использую диалоги ckeditor (потому что я открываю окно ajax и строю его сам).так что это препятствует открытию других окон

    editor.on( 'doubleclick', function( evt )
    {
        var element = evt.data.element.getAscendant( 'figure', true );

        if ( !element.isReadOnly() )
        {
            if ( element.is( 'figure' ) || element.getParent().is( 'figure' ) )
            {   
                editor.getSelection().selectElement( element );

                editor.execCommand('imagemanager', element);

                // :HACK: pretend to open a dialog, cancels other dialogs from opening
                evt.data.dialog = '';
            }

        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...