Firefox’un Babylon Eklentisi ve Geliştirilmesi

Babylon sözlüğü duymayan neredeyse kalmamıştır. Firefox için yapılmış ücretsiz bir eklentileri burada mevcut. Gayet güzel çalışıyor. Sözlükte aramak için kelimeye iki defa tıklamanız yeterli oluyor.

extension

Fakat eksik yanı şu;

Sözlükte arattığımız kelimeleri bir yerde saklamıyor, 10 gün önce baktığınız bir kelimeyle karşılaştığınızda ya onu hatırlayacaksınız yada tekrar aratacaksınız.

Bu eksikliği giderme adına eklentiye eklemeler yaptım. Eklentinin değişmiş halini kullandığınızda Desktop dizininizde bulunan mywords.html dosyası içerisinde daha önce sözlükten baktığınız  kelimeleri aşağıdaki gibi bulacaksınız :-).

testciktisieklenti

değişikliği yaptığım eklentiyi ve mywords.html(sağ tıklayıp farklı kaydedin) dosyasını indirin, eklentiyi firefox’a kurun, mywords.html dosyasını da Desktop dizininize atın.

eklentide yaptığım değişiklikler aşağıdaki gibidir.

BabylonWordSearch.Results.js dosyasında;
saveDataToFile adında bir fonksiyon ekledim.

saveDataToFile: function(filepath, data, charset)
{
var lokasyon = data.search("OT_CopyrightStyle") - 14;
var lokasyon2 = data.search("Download this dictionary") + 37;
//alert(lokasyon);
data = data.substr(lokasyon2,lokasyon-lokasyon2);
data = data +"
";
file = Components.classes["@mozilla.org/file/local;1"].
createInstance(Components.interfaces.nsILocalFile);
file.initWithPath(filepath);
// file is nsIFile, data is a string
var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"].
createInstance(Components.interfaces.nsIFileOutputStream);
// use 0x02 | 0x10 to open file for appending.
foStream.init(file, 0x02 | 0x10, 0666, 0);
// write, create, truncate
// In a c file operation, we have no need to set file mode with or operation,
// directly using "r" or "w" usually.
// if you are sure there will never ever be any non-ascii text in data you can
// also call foStream.write(data, data.length) directly
var converter = Components.classes["@mozilla.org/intl/converter-output-stream;1"].
createInstance(Components.interfaces.nsIConverterOutputStream);
converter.init(foStream, "UTF-8", 0, 0);
converter.writeString(data);
converter.close(); // this closes foStream
}

aşağıdaki if bloğunda da, innerHTML ile babylon sunucusundan gelen cevabı alarak, yukarıdaki fonksiyona gönderdim.

if (containerDiv) {
var data = this.resultsFrame.contentWindow.document.getElementById('container').innerHTML;
this.saveDataToFile("~/Desktop/mywords.html",data,"UTF-8");

eklentiyi kendinize göre modifiye etmek için, kaynak kodlarına ulaşmayı buradaki yazıda bulabilirsiniz.