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.
06
2008
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();
09
2008
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.
07
2008
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.
07
2008
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.
11
2008
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 :)
11
2008
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?
12
2008
@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.
24
2008
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 :)
29
2008
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.