JSTürk

Feed Rss

Adobe Air takımı, uzun süredir üzerinde uğraştıkları Linux desteği konusunda son noktayı koydu ve Air’in Linux versiyonunu kullanıma sundu.

air-loves-linux

Adobe’un Linux platformu üzerindeki takdir toplayan çalışmalarında Air önemli yer tutuyordu. Zira Air’ın Linux desteğiyle, artık HTML-CSS-Javascript bilgisiyle, gerçek manada cross platform masaüstü uygulamaları yazmak mümkün. Air’in daha önceden kullanıma sunduğu Windows ve Macintosh desteğine Linux desteğini de katması, Adobe gibi bir teknoloji devinin Linux platformlarına olan inancını da ortaya koyması açısından önemli.

Air’in Linux versiyonuyla hal-i hazırdaki bir çok Air uygulamasını da Linux’da kullanmak artık mümkün. Linux desteğinin şu an için en büyük eksiği 64bit işlemci desteğinin çok sağlıklı olmaması gibi görünüyor.

Linux için Adobe Air’i indirmek için: http://get.adobe.com/air/

Linux için Adobe Air SDK’sını indirmek için: http://www.adobe.com/products/air/tools/sdk/

Animated JavaScript Slideshow, sadece 5 KB’lık dosya boyutu ve ücretsiz olmasıyla dikkat çeken bir Javascript slayt gösterisi kodu.

javascript-slideshow

Resimlerle ilgili başlık ve açıklama metinlerini de resim üzerlerinde gösterebilen, küçük ve güzel geçiş animasyonlarına sahip uygulama, bir çok parametreyle kolayca özelleştirilebilir.

Kodlama çalışmak için herhangi bir Javascript Framework’e ihtiyaç duymuyor. Henüz ayrıntılı bir dokümasyona sahip değil ancak bu adresteki tanıtım metninde kullanılabilecek parametreler listelenmiş.

Websitesi: http://www.leigeber.com/2008/12/javascript-slideshow/

Örnek Uygulama: http://sandbox.leigeber.com/javascript-slideshow/

Kodu İndir: http://sandbox.leigeber.com/javascript-slideshow/TinySlideshow.zip

AJAX teknolojisinin Web’i kasıp kavurmasının temel sebebi, internet gezginlerinin AJAX uygulamalarını kullanmaktan duyduğu hazdır. Zira AJAX, kullanıcılarına sayfa sayfa içeriğe ulaşmaya çalışıp gereksiz içerikler arasında kaybolmak yerine, hedefe yönelik, hızlı ve kullanımı kolay bir yol sunar. Bu yüzden AJAX teknolojisi, biz Javascript kodlayıcıları için, artık yeri geldiğinde kullanılması farz olan bir yöntem haline gelmiştir. Bu derste de, temel bir AJAX kullanımına, AJAX form gönderimine değineceğiz.

Prototype JS framework‘ünü kullanarak bir AJAX form hazırlayacağız. Formumuzun çalışır halinin görünümü aşağıdaki gibi olacak:

Prototype JS ile AJAX Form Örneği

Formumuzun XHTML kodunu çıkararak işe başlayalım:

      <form id="ornek_form" action="test.php" method="post">
          <p><label for="isim">İsim :</label><input id="isim" type="text" name="isim" /></p>
          <p><label for="mesaj">Mesaj :</label><textarea id="mesaj" cols="30" rows="5"></textarea></p>
          <p class="submit"><input type="submit" value="Gönder" />
      </form>

Görüldüğü üzere formumuzda basit 2 adet alan var; isim ve mesaj adlı alanlar. Form içinde herhangi bir yere Javascript kodu yazmadığımıza da dikkatinizi çekiyorum. Burada Javasript kodumuz için önemli olan formumuza verdiğimiz “ornek_form” id’sidir.

Bu formda “Gönder”e bastığımızda form elemanlarına yazdıklarımız test.php dosyasına post edilecektir.  Bu işi AJAX’a dönüştürmek için yapmamız gereken, form gönderilmek istendiğinde Javascript ile araya girerek, sayfanın test.php’ye gitmesi yerine, bizim Javascript ile form verilerini arkaplanda test.php’ye gönderip sonucu sayfada göstermemizdir. Bunun için öncelikle form gönderildiğinde Javascript ile nasıl araya gireceğimize bakalım:

document.observe('dom:loaded',function(olay){
   $('ornek_form').observe('submit',form_gonder);
});

Prototype’ın observe metodu, bir olaya fonksiyon atamaya yaramaktadır. Biz de burada dokümanımızın “loaded” yani “yüklendi” olayına bir fonksiyon atıyoruz. Böylece sayfamız tamamen yüklendiğinde bu fonksiyonumuz çalıştırılıyor. Fonksiyonumuzun içeriğine baktığımızda da $(‘ornek_form’) ile aldığımız formumuzun (Prototype’de $ fonksiyonu, parametre olarak gönderilen metindeki id’ye sahip HTML elemanını verir) “submit” yani “gönder” olayına, yine observe metoduyla “form_gonder” adlı bir fonksiyon atıyoruz. Böylece formumuz bir şekilde submit edilmeye çalışıldığında öncelikle bizim form_gonder fonksiyonumuz çalışacak.

Şimdi de form_gonder fonksiyounumuzun nasıl göründüğüne bakalım:

function form_gonder(submit_olay){
   // Fonksiyona gönderilen olay parametresinden form elemanımızı öğreniyoruz
   var form = Event.element(submit_olay);

   /* Form elemanlarının present metodu içeriklerinin var olup olmadığını kontrol eder.
   Bu satırda iki alanımızın da içeriği girilmiş mi diye kontrol ediyoruz */
   var gecerli = form.isim.present() &amp;amp;&amp;amp; form.mesaj.present();

   var durum_kutusu = $('durum_gostergesi');
   durum_kutusu.removeClassName('mesaj_basarili');
   durum_kutusu.removeClassName('mesaj_hata');
   durum_kutusu.addClassName('mesaj_islem');

   if(gecerli){

      durum_kutusu.update('Form gönderiliyor...').show();

      form.request({
         onSuccess: function(sonuc){
            durum_kutusu.update('Tebrikler! Form gönderildi...').removeClassName('mesaj_islem').addClassName('mesaj_basarili');
         },
         onFailure: function(sonuc){
            durum_kutusu.update('Bir hata oldu!').removeClassName('mesaj_islem').addClassName('mesaj_hata');
         }
      });
   }else{
      durum_kutusu.update('Tüm alanların doldurulması zorunludur!').show().removeClassName('mesaj_islem').addClassName('mesaj_hata');
   }

   // Formun submit işlemini durduruyoruz ki, bulunduğumuz sayfada kalalım
   Event.stop(submit_olay);
}

Fonksiyonumuza öncelikle form elemanımızı teşhis ederek başlıyoruz. formu_gonder fonksiyonumuzu tetikleyecek şeyin Prototype’ın “observe” metodu olduğunu hatırlatarak, bu metodun çağırdığı fonksiyonlara oluşan olayın objesini parametre olarak gönderdiğini bilmelisiniz. Bu objeden de Event.element() metoduyla olayın oluştuğu elementi öğrenebiliyoruz.

Aradaki bazı kontroller ve mesajı göstereceğimiz div’le ilgili hazırlıklardan sonra asıl işlemi 14. satırdan itibaren yapmaya başlıyoruz. Formumuzun kontrollerden geçtiğini gördükten sonra durum mesajı kutumuza yüklemeye başladığımız bilgisini yazıp form elemanımızın request metodunu çalıştırıyoruz. Bu metod Prototype’ın form elemanlarını AJAX ile gönderip sonucunu almamızı sağlayan bir metodu. Bu metod Prototype’ın AJAX objesinin bütün özelliklerini desteklemekle birlikte form elemanına özgü de bazı kolaylıklar sunuyor. Örneğin, request metodu, formun action adresinden formun gönderileceği sayfayı otomatik olarak okuyor. Tabi isterseniz bu değeri değiştire de biliyorsunuz:

form.request({ url: 'baska_adres.php' });

Bununla birlikte form’un request metodu form elemanlarının değerlerini de otomatik olarak AJAX parametrelerine çeviriyor. Burada kullanmadığımız iki önemli özelliği de şöyle belirtelim:

form.request({
   parameters: {isim: 'Murat', numara: 12}, // Gönderilecek verilere ek parametreler
   method: 'get'  // Gönderim metodu. Varsayılan olarak post'dur.
});

Formun request metoduna olay dönüt fonksiyonları da atanabiliyor. Örneğimizde onSuccess (Başarılı olduğunda) olayına yazdığımız fonksiyonla ekrana formun gönderildiği mesajını yazdırabiliyor, onFailure (Başarısız olduğunda) olayına yazdığımız fonksiyonla da ekrana hata mesajı çıkartabiliyoruz.

Burada son önemli nokta da formu_gonder fonksiyonumuz işlemini bitirmeden önce form submit olayının durdurulması gerektiğidir. Zira bu işlem yapılmazsa AJAX talebi yapıldıktan hemen sonra form’un doğal submit işlevi de çalışarak tarayıcıyı formun action adresine gönderecek, dolayısıyla AJAX talebimiz manasızlaşacaktır. Bu işlemi de Event.stop(submit_olay); satırıyla hallediyoruz.

Böylece temel manada bir AJAX formumuzu çalışır hale getirmiş oluyoruz. AJAX uygulamalarıyla ilgili çok geniş çalışma konuları mevcut. Ancak hepsinde başarı, iyi bir başlangıçla gelebilir. Sanırım, bu yazı, temel manada yardımcı olacaktır.

Örneğin çalışan hali: http://jsturk.com/test/prototype-ajax-form-ornek/

Daha fazla okuma:

SlideItMoo, Mootools Framework’ü ile yapılmış bir resim slayt göstericisi.

SlideItMoo

Foroğrafları fare tekerleğiyle hareket ettirme, otomatik slayt, geçiş efekti gibi özelliklere sahip SlideItMoo’da stil verileri tamamen harici bir CSS dosyasından okunduğundan görsel yapısını kolayca değiştirme esnekliğine de sahip.

Websitesi: http://www.php-help.ro/mootools-12-javascript-examples/mootools-12-image-slider-slideitmoo/

Örnek Uygulama: http://www.php-help.ro/examples/mootools_rotator/

Tarayıcı Uyumluluğu: IE6+, Firefox 2+, Operan9.5, Google Chrome 1

Gereksinimler: Mootools, Fx.Scroll