2014-07-23 34 views
15

TinyMCE 4'ün yeni file_picker_callback işleviyle kendi özel dosya seçicimi kullanıyorum. Bu dokümantasyondaki belgeler harika değil, bu yüzden kredi beni bu kadar almam için Fred'e gidiyor - https://stackoverflow.com/a/24571800/2460995TinyMCE4 file_picker_callback - ek paramları döndür

Özel dosya seçicisi çalışıyor ve bir görüntü üzerine tıklattığınızda "Kaynak" ve "Boyutlar" yazıyor. ". Sadece "Resim açıklaması" alanını otomatik olarak doldurmanın herhangi bir yolu olup olmadığını merak ediyorum.

Resimlerin bilgileri bir veritabanı tablosundan oluşturulmuştur, bu yüzden zaten bir açıklamaya sahibim ve bunu otomatik olarak doldurmak iyi olur. Verileri geri almanın çeşitli yollarını denedikten sonra nasıl yapılabileceğini anlamak için uğraşıyorum. TinyMCE için

Kodu: Özel Dosya Seçici için

tinymce.init({ 
    ... 
    file_picker_callback: function(callback, value, meta) { 
     myImagePicker(callback, value, meta); 
    } 
}); 

function myImagePicker(callback, value, meta) { 
    tinymce.activeEditor.windowManager.open({ 
     title: 'Image Browser', 
     url: '/media/browser/1?type=' + meta.filetype, 
     width: 800, 
     height: 550, 
    }, { 
     oninsert: function (url) { 
      callback(url); 
     } 
    }); 
}; 

Kodu: My javascript bilgisi ben eğer öyleyse, kendisine oldukça yeniyim henüz

$(function(){ 
    $('.img').on('click', function(event){ 
     mySubmit('/upload/' + $(this).data('filename')); 
    }); 
}); 

function mySubmit(url) { 
    top.tinymce.activeEditor.windowManager.getParams().oninsert(url); 
    top.tinymce.activeEditor.windowManager.close(); 
} 

değil en fazla olduğu

sen Lütfen herhangi bir cevabı örneklerle ve/veya çok yararlı ve takdir edilecek net mantığıyla gösterebiliriz.

cevap

15

Ben de aynı sorunu ve aşağıdaki çözüm geldi edildi:

  1. güncelleme myImagePicker fonksiyonu olacak şekilde (oninsert işlevine yeni objVals parametreyi unutmayın):

    function myImagePicker(callback, value, meta) { 
        tinymce.activeEditor.windowManager.open({ 
         title: 'Image Browser', 
         url: '/media/browser/1?type=' + meta.filetype, 
         width: 800, 
         height: 550, 
        }, { 
         oninsert: function (url, objVals) { 
          callback(url, objVals); 
         } 
        }); 
    }; 
    
  2. mySubmit işlevinizi güncelleştirin (oninsert geçirilen objVals parametresine dikkat edin):

    Eğer mySubmit çağrı
    function mySubmit (url, objVals) { 
        top.tinymce.activeEditor.windowManager.getParams().oninsert(url, objVals); 
        top.tinymce.activeEditor.windowManager.close(); 
        return false; 
    } 
    
  3. Güncelleme yerleri doldurma için objVals nesne. Örneğin

    :

    mySubmit("https://google.com", { text: "Go To Google", target: '_blank' }); 
    

    özellikleri iletişim çağrı türüne göre objVals değişim-doldurmak için, ve (kısmen) here belgelenmiştir. görüntü iletişim için

    mySubmit("https://google.com", { text: "Go To Google", target: '_blank' }); 
    

    :

    mySubmit("image.jpg", { alt: "My image" }); 
    

    mediadialog için: link iletişim için

    mySubmit("movie.mp4", {source2: 'movie-alt.ogg', poster: 'movie-image.jpg'}); 
    
+1

Neredeyse bu konuda umudunu ediyorum ama 6 hafta sonra gönderdim, Jason adında bir kahraman geliyor ve doğru köknarları alıyor t zamanı. Bu benim için mükemmel çalıştı. Cevap vermek için zaman ayırdığınız için çok teşekkür ederim! – SigmaSteve

+0

Çok ilgili bir notta, meta alanların geçerli değerini karşılaştırmaya çalışıyorum, böylece dosya otomatik olarak File Browser'dan döndürülen ile değiştirilmez.Örneğin, bazı metni vurgulayın, bağlantıyı tıklayın ve tarayıcıyı açın, bir öğeyi tıklayın. Mantık şöyle olmalıdır: if (textToDisplay === "") textToDisplay.val = browserText. Fakat if ifadesinde kullanmak için "textToDisplay" e nasıl başvurabileceğimi hiçbir yerde bulamıyorum! Herhangi bir fikir? – SigmaSteve

+0

@ Lason S: bu durumda cevabı kabul etmelisiniz – Thariama