Walleq's Blog
Ana Sayfa Profilim Arşiv İletişim
.:. Burn Me Alive .:.

Loading



10 Şubat 2012 Cuma
Kategori: Yazılım
Yazar : Walleq, 9 yorum var, 2032 defa okunmuş.
Etiket : FCKeditor Ajax Problem WYSIWYG Javascript Cozum
    Hata : FCKeditor açık kaynak kodlu bir WYSIWYG metin editörü ve Ajax da bilindiği üzere Web 2.0 ’ın getirdiği işlevselliklerden sadece biri. Fakat FCKeditor ile hazırladığınız bir formu Ajax ile submit etmek istediğinizde FCKeditor ’e yazmış olduğunuz koca bir metnin submit işlemi içerisinde yer almadığını göreceksiniz.

    Bu sorunla ilk karşılaşmam doğal olarak yazdığım scriptlere Ajax uygulamalarını dahil etmeye çalışırken gerçekleşti. jQuery kütüphanesine alışmam ve bir çok işlemi benim için kolaylaştırması nedeniyle, bende bir an önce bana ait olan bazı sitelere Ajax avantajını entegre etmeye çalıştım. Tabi başta herşey çok güzeldi. İstediğim zaman açılıp kapanmasını sağladığım alanlar, sayfa değiştirmek zorunda kalmadan yaptığım submit işlemleri gibi daha bir çok etken  Ajax ile uğraşmamın ne kadar haklı olduğunu  bana ispatlar nitelikteydi. İnternetin benimsediği en önemli kavramlardan birinin hız olduğu düşünülürse, Ajax bu hızı sağlamak açısından biçilmiş kaftan sanırım. Fakat ajax ile uğraşırken de bazı küçük problemler ortaya çıkabilmekte.

    Uyarı : Bu arada belirtmem gereken nokta yaşadığım problem, FCKeditor 2.4.3  ve önceki versiyonlarında gerçekleşmektedir. Bundan sonra çıkacak olan versiyonlarda sorun çözülmüş olabilir belirtmek isterim.



    Evet sonunda bir sıkıntı ile karşılaştım FCKeditor ’ün de içinde bulunduğu bir formu submit etmeye çalıştığımda FCKeditör alanı dışındaki tüm alanların veritabanına yazıldığını gördüm. Eğer böyle bir editör kullanıyorsanız zengin metin editörü kavramının, zengin bileşenini muhtemelen maksimum verimle kullanmak istiyorsunuzdur. Tabi yazdığınız onca zengin satır bu tip bir durumda boşa gider. Bende bunun üzerine farklı bir metin editörü aramaya koyuldum. Bir iki denemeden sonra da vazgeçtim. Çünkü diğer editörlerde aynı işlevselliği yakalayamamıştım. Artık soruna odaklanma vakti gelmişti küçük bir araştırma yaptım ve sıkıntının FCKeditor ’ün submit işlemine kadar kendine ait alanı güncellemediğini anladım.

    Çözüm : Bu sorunla ilgili de türkçe bir döküman bulamadığımdan biraz ingilizce araştırma yaptım. Karşıma almanca bir site çıktı . Yazılı dökümandan birşey anlamasamda yazan arkadaşın soruna ilişkin çözümünde verdiği kodların ne yapmak istediğini anlamıştım. Bunun üzerine hemen kodları kendi uygulamalarıma adapte ettim.

    Artık kodlar ve nasıl uygulanacakları konusunda birşeyler yapmanın zamanı geldi sanırım.

   ilk yapılması gereken aşağıda verdiğim sınıf betiğini javascript kodlarınız arasına yerleştirmek.

// Güncellemek için gereken sınıfımızı oluşturuyoruz
function MyupdateClass()
{
        this.updateEditorFormValue = function()
        {
                //Bu bölümde tüm FCKeditor alanlarının güncellenmesini sağlıyoruz.
                for ( i = 0; i < parent.frames.length; ++i )
                        if ( parent.frames[i].FCK )
                                parent.frames[i].FCK.updateLinkedField();
        }
}
// Yeni bir sınıf objesi oluşturuyoruz.
var MyObject= new MyupdateClass();

    Bu kodları javascript kodlarımız arasına eklediğimizden emin olduktan sonra yapmamız gereken tek şey ajax ile hazırlamış olduğumuz form submit fonsiyonunun öncesinde güncelleme fonksiyonumuzu çağırmak olacaktır.

MyObject.updateEditorFormValue();

Örnek bir kod bloğu vermem gerekirse hazırlamış olduğumuz FCKeditor ’lü form kodumuz :

<form ... onSubmit="MyObject.updateEditorFormValue(); Ajax.Collect(); return false;">

bu şekilde başlamalıdır. Tabi düzenlemeniz gereken yerlerin varlığından bahsetmeme gerek yok sanırım. İyi çalışmalar dilerim, umarım aynı sorunu yaşayanlara yardımcı olabilmişimdir.











  • Hasan Aytekin
    Merhaba bir ufak sorun var kodda..


    parent.frames[i].FCK.updateLinkedField();

    yazan satırdaki update ile başlayan kısmının baş harfi küçük olmalı yani doğrusu aşağıdaki şekilde. Yokta hata verir :)

    parent.frames[i].FCK.updateLinkedField();
  • walleq
    Hasan bey ilginiz için teşekkürler. Ancak sanırım kodda bir yanlışlık yok. Düzeltilmesini önerdiğiniz alanda ben bir farklılık göremedim.
  • Taha Paksu
    Güzel bir çözüm teşekkürler. Bende bugün aynı sorunla karşılaştım ve çözüm ararken siteni buldum. Ancak sorunum hala çözülmedi. jQuery’nin facebox diye bir uygulaması var (lightbox’un facebook tarzı olanını düşün), onun içinde FCKEditor kullanıyım dedim. Aynı zamanda da dediğin gibi formu jQuery Forms kütüphanesindeki $(this).ajaxSubmit() fonksiyonuyla gönderiyorum. Önceden FCK verisini görmüyordu ajax submit. Boş post değeri döndürüyordu. Senin kodunu ekledim ve şu hatayı verdi :

    Hata: parent.frames[i].FCK.updateLinkedField is not a function

    Sorun Firefox’ta olabilir henüz ayrıntıya inmedim. Ama dediğin kodun IE’de çalışma olasılığı yüksek. Yeni birşeyler bulursam buraya yazarım.

    Kolay Gelsin.
  • Taha Paksu
    Tamam. Hatayı düzelttim. Sadece biraz mantıksız oldu gibi :D

    parent.frames[i].FCK

    yerine

    parent.frames[i].document.FCK

    yazmak gerekiyormuş. Ayrıca ikinci kod hem IE’de hem FF’de çalışıyor. Teşekkürler Çözüm için. Kolay Gelsin.
  • walleq
    Taha Merhabalar,

    Yaşadığın sıkıntının çözümüne biraz da olsa katkıda bulunabildiğime sevindim.

    Diğer yandan belirtmeliyim, ben kodu yukarıdaki hali ile hem ie de, hem firefox ta sorun yaşamadan kullanabiliyorum. Özellikle Firefox hastası biri olarak kodun çalışmıyor olmasına tahammül edemezdim sanırım :)
  • Hasan Aytekin
    Sayın @walleq;

    Ben yorumu yaparken eminim ki kodda bir hata vardı. Şimdi bakıyorum, hem kendi yorumum değişmiş hemde kod. Bu nasıl oldu?
  • walleq
    @Hasan Aytekin,

    Yazdığınız yorumun üzerinde görsel sunumu yükseltmek amacının (Paragraflandırma) dışında yada sayfamda yer alan kodun üzerinde herhangi bir değişiklik yapmadığımı belirtmek isterim. Ayrıca siz ilk yorumunuzu yaptığınız sırada ben o kodu hali hazırda kullanıyordum. Bu yüzden bir sıkıntı yaşamış olsaydım, kodu kendi kullandığım şekilde burada yayınlama gereği duymazdım.
  • Taha Paksu
    Evet bende de kod çalışmaya başladı senin sitende bulunan haliyle. Ayrıca Firefox’ta Dialog genişliğini düzeltmek için bende bir eklenti yazdım sitemde yayınlıyorum. ilgini çekerse kendi sitene koyabilirsin :)
  • walleq
    Açıkçası bundan sonra editör olarak TinyMCE yi kullanmayı planlıyorum. Çok daha çekici bulduğumu söylemeliyim. Misal link eklemek için yeni tarayıcı penceresi açmak zorunda olmamak bile, Tiny yi FCKEditor den daha kullanışlı kılıyor. Denemenizi tavsiye ederim, gerçi bende henüz projelerimde kullanmış değilim ancak demo sayfasından ne demek istediğimi rahatlıkla anlayabilirsiniz.
Kategoriler
Son Yazılarım
» Geliştirmekte olduğum proje: isyeridevredenler.com
» Son Projem: Asya Peruk ve Saç Kaynağı Merkezi
» Postacı Programı Kullanıma Hazır
» Taşınabilir ASP Web Server
» Portable VirtualBox 1.6.2
Etiket Bulutsusu
Son Yorumlar
hakan baba
» YA KARDEŞ TOPLİSTEYİ SAYFAMIZA KUTUCUKLA
bölüm izle
» teşşekrler benm siteye burdan bir tane a
tugberk uylas
» kaynak kodları için teşekkürler
Emre Erdemir
» Sonunda biri bu alandaki eksiği görüp ki
osman okan
» teşekkürler
Bağlantılar
» isimler
» ABD de Yaşam
» Ferruh Mavituna Blog
» Osmanlica Türkçe Sözlük
» Kişisel Güncem
» Ergene.NET - Renk Katar
Blog Takip Sistemi

E-Mail İle Blog Takibi :


Coded And Designed By Walleq
Gizlilik Politikası