■
tombloo patch
- http://ido.nu/kuma/2007/12/21/tombloo-hacks-support-hatena-diary/
- http://ido.nu/kuma/files/21_HatenaDiary.js
var HatenaDiary = { URL : 'http://d.hatena.ne.jp', hatenaId: null, rkm: null, getHatenaId : function(){ if ( this.hatenaId && this.hatenaId != '' ) { return succeed( this.hatenaId ); } else { var d = new MochiKit.Async.Deferred(); var timerid = window.setTimeout( function () { var id; while ( (id = getPref('hatenaId', null)), !id && id != '' ) { id = prompt("plz input your hatena id."); id = id.replace(/\s/g); setPref('hatenaId', id) } HatenaDiary.hatenaId = id; window.clearTimeout(timerid); d.callback(id); }, 0); return d; } }, getToken : function(){ return this.getHatenaId().addCallback( function (hatenaId) { if ( HatenaDiary.rkm ) { return succeed( HatenaDiary.rkm ); } else { return doXHR( [ HatenaDiary.URL, hatenaId, "20350101" // empty page has lesser content but with rkm. ].join("/") ).addCallback( function (res) { if ( res.responseText.match( /Hatena\.rkm\s*=\s*['"](.+?)['"]/) ) { return HatenaDiary.rkm = RegExp.$1; } else { // error } } ); } } ); }, post : function(params){ return this.getToken().addCallback(function(token){ params.rkm = token; var u = [HatenaDiary.URL, HatenaDiary.hatenaId, ""].join("/"); var c = HatenaDiary[capitalize(params.type)].convertToForm(params); return doXHR( u, { method : 'POST', mimeType: "application/x-www-form-urlencoded", referrer : u, sendContent : c, } ).addCallback(function(res){ }); }); }, } HatenaDiary.Link = { convertToForm : function(m){ return { rkm : m.rkm, title : "[" + m.type + "]" + m.title, body : m.title.link(m.href), }; } } HatenaDiary.Quote = { convertToForm : function(m){ var body = '<blockquote ' + 'cite="' + m.href + '"' + 'title="' + m.title + '">' + m.body + '</blockquote>'; return { rkm : m.rkm, title : "[" + m.type + "]" + m.title, body : body }; } }