jEditable: передать содержимое TinyMCE обратно в textarea - PullRequest
1 голос
/ 09 мая 2011

Привет, у меня есть смесь JMQ-плагинов tinyMCE и jeditable для текстовой области.При нажатии на редактируемый элемент он превращается в крошечный iframe.Теперь мне нужно передать содержимое iframe обратно в textarea с помощью tinymce.triggerSave () ДО того, как форма будет ajaxed.

У кого-нибудь есть идеи?

    function editNote(){
    $('.edit').editable('<?php echo base_url(); ?>index.php/notes/edit', {
         type      : 'textarea',
         onblur    : 'ignore',
         cancel    : 'Cancel',
         submit    : 'OK',
         indicator : "<img src='<?php echo base_url(); ?>css/images/indicator.gif'>",
         tooltip   : 'Click to edit...'

     });
 }

 $('.edit').live('click', function(){
    editNote();
    $('textarea').tinymce({
                    // Location of TinyMCE script
                    script_url : '<?php echo base_url(); ?>js/tiny_mce/tiny_mce.js',

                    // General options
                    theme : "simple"
});
});

Приведенный выше код вызывает функцию editNoteа затем Tinymce JS.

Я ищу способ запуска tinyMCE.triggerSave ();ДО того, как отправляется jeditable форма.Так что-то вроде обратного вызова.

Спасибо,

Билли

1 Ответ

1 голос
/ 11 мая 2011

Добавьте этот кусок кода вместо.По сути, вы создаете новый тип с именем mce.

$.fn.tinymce = function(options){
   return this.each(function(){
      tinyMCE.execCommand("mceAddControl", true, this.id);
   });
}

function initMCE(){
   tinyMCE.init({
        mode : "textarea",
        theme : "advanced",
        ... // YOUR CUSTOMIZATION
      });
}

initMCE();

$.editable.addInputType('mce', {
   element : function(settings, original) {
      var textarea = $('<textarea id="'+$(original).attr("id")+'_mce"/>');
      if (settings.rows) {
         textarea.attr('rows', settings.rows);
      } else {
         textarea.height(settings.height);
      }
      if (settings.cols) {
         textarea.attr('cols', settings.cols);
      } else {
         textarea.width(settings.width);
      }
      $(this).append(textarea);
         return(textarea);
      },
   plugin : function(settings, original) {
      tinyMCE.execCommand("mceAddControl", true, $(original).attr("id")+'_mce');
      },
   submit : function(settings, original) {
      tinyMCE.triggerSave();
      tinyMCE.execCommand("mceRemoveControl", true, $(original).attr("id")+'_mce');
      },
   reset : function(settings, original) {
      tinyMCE.execCommand("mceRemoveControl", true, $(original).attr("id")+'_mce');
      original.reset(this);
   }
});

В вашей инициализации JEditable сделайте его типа mce.Итак:

    $(".edit").editable('ajax/save.php?editnotetext', {
        type : 'mce',
        ... // etc
    });
...