Сортировка jquery-ui в div с редакторами TinyMCE приводит к исчезновению текста - PullRequest
6 голосов
/ 04 мая 2011

следуя инструкциям по адресу: http://www.farinspace.com/multiple-wordpress-wysiwyg-visual-editors/

У меня есть несколько хороших редакторов WYSIWYG в моих метабоксах

моя разметка выглядит так:

 <div class="sortable">
 <div class="sortme">
<?php $mb->the_field('extra_content2'); ?>
        <div class="customEditor"><textarea name="<?php $mb->the_name(); ?>"><?php echo wp_richedit_pre($mb->get_the_value()); ?></textarea></div>
</div>
 <div class="sortme"
<?php $mb->the_field('extra_content3'); ?>
        <div class="customEditor"><textarea name="<?php $mb->the_name(); ?>"><?php echo wp_richedit_pre($mb->get_the_value()); ?></textarea></div>
</div>
</div>

это просто WP_alchemy (также с farinspace.com) для текстовой области, завернутой в div

и сценарий, который говорит tinymce, чтобы включить:

function my_admin_print_footer_scripts()
{
    ?><script type="text/javascript">/* <![CDATA[ */

        jQuery(function($)
        {
            var i=1;
            $('.customEditor textarea').each(function(e)
            {
                var id = $(this).attr('id');

                if (!id)
                {
                    id = 'customEditor-' + i++;
                    $(this).attr('id',id);
                }
                tinyMCE.execCommand('mceAddControl', false, id);

            });
        });
    /* ]]> */</script><?php
}

// important: note the priority of 99, the js needs to be placed after tinymce loads
add_action('admin_print_footer_scripts','my_admin_print_footer_scripts',99);

эта часть работает нормально. но когда я пытаюсь пнуть в jqueryUI сортируемый:

$('.sortable').sortable();

это позволяет мне сортировать несколько div .sortme, но содержимое в редакторах исчезает. как я могу сохранить текст? это работает очень хорошо без редакторов tinymce, поэтому я предполагаю, что это конфликт с каким-то образом.

1 Ответ

10 голосов
/ 05 мая 2011

Это ($('.sortable').sortable();) не будет работать с редакторами tinymce.Tinymce не любит, когда ее таскают по дому.Для того, чтобы это работало, вам сначала нужно выключить Tinymce

tinyMCE.execCommand('mceRemoveControl', false, id);

, затем отсортировать, а затем повторно инициализировать их

tinyMCE.execCommand('mceAddControl', false, id);
...