12 Ekim 2008 Pazar

Extjs submit response dilemma : Aslında bunun türkçesi de fiyakalı olurdu :)

Önemli not : Eğer, bir forum submit ettikten sonra, success ve fail durumunu ayırd edip, ona göre fonksiyonlar çağırmak isterseniz,

örneğin :


handler:function(){
login.getForm().submit({
url: 'test.php',
form: 'login_form',
waitTitle:'Bağlanıyor',
waitMsg:'Veri gönderiliyor...',
success:function(form, action){alert('success');},
failure:function(form, action){alert('fail');},
});


test.php çıktısı aşağıdaki şekilde olmalı;

{"success":false,"errors":[],"errorMessage":"someCustomErrorMesage example"}

Aşağıdaki notta şöyle yazıyor : Eğer, error listesi olmazda error handling mekanızması çalışmıyor. Ve bu durumda, HTTP response 200 olan her durumda, success fonksiyonu çalışıyor, eğer sizi istediğiniz bu olmasa bile :(


Detaylı tartışma aşağıda :

http://extjs.com/forum/showthread.php?t=6236&page=2

Extjs : window close problemi

Extjs de window.close() yaparsanız, window referansı bellekte kalıyor. Onun yerine win.destroy() 'u kullandım. İşimi gördü.

Extjs : window close problemi

Extjs kullanırken, eğer bir pencereyi sadece win.close() ile kapatırsanız, DOM'dan kaldırmıyor. Bunu, yaşayarak gördüm. pencerenin köşesindeki çarpı tıklanınca pencere temizleniyor, ama win.close() yapınca hala bellekte referansı kalıyor. Bu sorunu gidermek için, win.destroy() denedim, çok faydasını gördüm, herkese tavsiye ederim.

Şimdiki sorunum, submit ettiği değer success dönmediği halde success olmuş gibi davranan formlar :)

11 Temmuz 2008 Cuma

CakePHP ve veritabanı utf-8 Encoding problemi...

Cake 1.2 beta ya kadar, encoding sorununu aşağıdaki şekilde çözmüştüm :

class AppModel extends Model{
function __construct() {
Configure::write('debug', 3);
$this->execute("SET NAMES UTF8");
parent::__construct();
}
}

Ancak 1.2 Beta'da sorun çıktı, ve artık database.php de değişiklik yapmak gerekiyor:

var $default = array('driver' => 'mysql',
'connect' => 'mysql_connect',
'host' => 'localhost', 'login' => 'login',
'password' => 'password',
'database' => 'database',
'prefix' => '',
'encoding' => 'utf8');

2 Temmuz 2008 Çarşamba

Java : HTML e-posta atarken, içine resim nasıl eklenir ?

Java : HTML e-posta atarken, içine resim nasıl eklenir ?

Java ile e-posta atmak çok basit bir işlem ancak, işin içine HTML ve resim olunca işler biraz değişiyor. Aşağıdaki örnekde nasıl olduğunu görebilirsiniz.

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.Date;
import java.util.Properties;

import javax.activation.DataHandler;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.util.ByteArrayDataSource;

public class EmailSender {

String username = ""; // e-mail server username ile değişecek
String password = ""; // e-mail server password ile değişecek

private class SMTPAuthenticator extends javax.mail.Authenticator {

public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}

}

public static void main(String[] args) {

EmailSender emailSender = new EmailSender();

Properties props = System.getProperties();
SMTPAuthenticator authenticator = emailSender.new SMTPAuthenticator();

props.put("mail.smtp.host", "email server"); // E-posta sunucusunun
// adresi ile değişecek
props.put("mail.smtp.auth", "true");

Session session = Session.getDefaultInstance(props, authenticator);

MimeMessage message = new MimeMessage(session);
try {
message.setFrom(new InternetAddress("from")); // gönderen adresi
// ile
// değiştirilecek

message.addRecipient(Message.RecipientType.TO, new InternetAddress("TO")); // alıcı
// adresi
// ile
// değiştirilecek
message.setSubject("subject"); // Konu ile değiştirilecek

message.setSentDate(new Date());

message.setContent(emailSender.prepareHTMLMailWithImage());

Transport.send(message);

} catch (AddressException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (URISyntaxException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

private Multipart prepareHTMLMailWithImage() throws MessagingException, URISyntaxException {

Multipart multipart = new MimeMultipart("alternative"); // Hazırladığımız HTML i kabul etmeyen client için ek olarak plaintext gönderiyoruz

MimeBodyPart mimeBodyPartPlain = new MimeBodyPart();

// Düz metin
String mailText = "Message text";

mimeBodyPartPlain.setDataHandler(new DataHandler(mailText, "text/plain; charset=UTF-8 "));
multipart.addBodyPart(mimeBodyPartPlain);
// Düz metin sonu

MimeBodyPart mimeBodyPartHtml = new MimeBodyPart();
String mailHtml = "HTML H1 HTML Message Text/H1 img src=cid:1@deneme align=\"right\" width=100 height=35/HTML";

mimeBodyPartHtml.setContent(mailHtml, "text/html; charset=UTF-8 ");

MimeBodyPart mimeBodyPartImage = new MimeBodyPart();
URL url = this.getClass().getResource("/img/your.jpg"); // com ile aynı düzeyde olacak bir dizin
try {
mimeBodyPartImage.setDataHandler(new DataHandler(new ByteArrayDataSource(url.openStream(), "image/jpg")));
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

mimeBodyPartImage.setHeader("Content-ID", "<1@deneme>");

multipart.addBodyPart(mimeBodyPartHtml);
multipart.addBodyPart(mimeBodyPartImage);

return multipart;

}
}