Problem bir jQuery UI iletişim kutusu içinde çalışan bir CKEditor Asliye içine JavaScript ekleme

1 Cevap php

İşte oluyor ne:

Kullanıcıların ckeditor kullanarak bir web sayfası (Üstbilgi, Altbilgi, Ana İçerik, Kenar) çeşitli bit düzenlemek sağlayan parçası olan, (PHP, jQuery, vb kullanarak) bir uygulama inşa ediyorum.

Her düzenlenebilir bit tıklamada, bir jQuery UI iletişim kutusunun içindeki CKEditor bir örneğini başlattı, sağ üst bir "İçeriği Düzenle" düğmesi vardır, böylece ayarlanmış oluyor. Kullanıcı düzenleme yapıldıktan sonra, onlar geri ana sayfaya kapalı Düzenlenen içeriği geçer ve Dialog / ckeditor kapanır bir "Update Değişiklikleri 'butonuna tıklayabilirsiniz.

Tek bir şey için tasarruf, muhteşem çalışıyor. Birisi CKEditor veya CKEditor olarak 'Kaynak' gidiyor ve kaynak kodu yerleştirerek Ekle HTML Plugin kullanarak, bir 'script' etiketleri sarılı herhangi bir JavaScript kodu, ekler, onlar "Update Değişiklikleri tıklayın kadar, her şey yolunda gibi görünüyor düğmesine basın.

JavaScript düzgün ekleme gibi görünüyor, ama "Update Değişiklikleri 'yerine Dialog, ait div geri komut kapanış ve geçen, tıklandığında, ne yerine olsun sadece çıkışı ile bir all-beyaz ekran JavaScript. Örneğin, basit bir 'Merhaba Dünya' yazısı sol üst köşede string 'Merhaba Dünya' ile beyaz bir ekran sonuçları; için bir API çağrısı gibi daha karmaşık komut için, ben mükemmel ekranın ortasında işlenen AWeber API çağrısı çıkan formu ile bir all-beyaz ekran olsun, bir bülten kayıt formunu oluşturur AWeber, söylüyorlar.

En kafa karıştırıcı parçalarından biri, bu sayfalarda, ben 'Kaynağı Görüntüle' seçeneğini tıklayın eğer, ben kesinlikle hiçbir şey elde olmasıdır. Boş boşluk.

İşte jQuery UI Dialog içindeki CKEditor örneğinin başlatılması, ve "Update Değişiklikleri 'butonuna tıklayarak geri ilişkili div içine Düzenlenen verilerin geçen kolları benim kod:

$(function()
{
  $('.foobar_edit_button')
  .button()
  .click(function()
  {
    var beingEdited = $(this).nextAll('.foobar_editable').attr('id');
    var content = $(this).nextAll('.foobar_editable').html();
    $('#foobar_editor').html(content);
    $('#foobar_editor').dialog(
    {
      open:function()
      {
        $(this).ckeditor(function()
        {
          CKFinder.SetupCKEditor( this, '<?php echo '/foobar/lib/editor/ckfinder/'; ?>' );
        });
      },
      close:function()
      {
        $(this).ckeditorGet().destroy();
      },
      autoOpen: false,
      width: 840,
      modal: true,
      buttons: 
      {
        'Update Changes': function() 
        {
          // TODO: submit changes to server via ajax once its completed:
          for ( instance in CKEDITOR.instances )
            CKEDITOR.instances[instance].updateElement();

          var edited_content = $('#foobar_editor').html();
          $('#' + beingEdited).html(edited_content);
          $(this).dialog('close');
        }
      }
    });
    $('#foobar_editor').dialog('open');
  });
});

Kafam her türlü değilim. Herkes bana doğru yönde işaret edebilir, bu büyük takdir edilecektir.

Teşekkürler!

1 Cevap

Ben drupal ile ckeditor kullanarak benzer bir sorun yaşıyorum. Dediğiniz gibi ben CKEditor Javascript'in girebilirsiniz ve ilk defa iş gibi görünüyor. Bu içerik güncelleme söz konusu olduğunda Ancak benim javascript kırık gibi görünüyor. Bir şey ben çıkışını ayarlamak ve özellikle herhangi bir dönem sonra bir boşluk ekler gibi görünüyor fark.

Benim çözüm içeriğinde herhangi bir javascript ekleme veya güncelleme yaparken ckeditor kullanmak oldu.