2009-07-14 20:26:39 +01:00
// add a notice encoded as JSON into the current timeline
2009-07-13 14:58:52 +01:00
//
2009-09-15 14:53:16 +01:00
// TODO: i18n
2009-07-13 14:58:52 +01:00
2009-07-14 20:26:39 +01:00
RealtimeUpdate = {
2009-07-14 22:06:29 +01:00
_userid : 0 ,
_replyurl : '' ,
_favorurl : '' ,
_deleteurl : '' ,
init : function ( userid , replyurl , favorurl , deleteurl )
{
RealtimeUpdate . _userid = userid ;
RealtimeUpdate . _replyurl = replyurl ;
RealtimeUpdate . _favorurl = favorurl ;
RealtimeUpdate . _deleteurl = deleteurl ;
} ,
receive : function ( data )
2009-07-13 14:58:52 +01:00
{
2009-07-14 20:26:39 +01:00
id = data . id ;
2009-07-13 14:58:52 +01:00
// Don't add it if it already exists
if ( $ ( "#notice-" + id ) . length > 0 ) {
return ;
}
2009-07-14 20:26:39 +01:00
var noticeItem = RealtimeUpdate . makeNoticeItem ( data ) ;
2009-07-13 14:58:52 +01:00
$ ( "#notices_primary .notices" ) . prepend ( noticeItem , true ) ;
$ ( "#notices_primary .notice:first" ) . css ( { display : "none" } ) ;
$ ( "#notices_primary .notice:first" ) . fadeIn ( 1000 ) ;
NoticeReply ( ) ;
2009-07-14 22:06:29 +01:00
} ,
2009-07-13 14:58:52 +01:00
2009-07-14 20:26:39 +01:00
makeNoticeItem : function ( data )
2009-07-13 14:58:52 +01:00
{
user = data [ 'user' ] ;
html = data [ 'html' ] . replace ( /&/g , '&' ) . replace ( /</g , '<' ) . replace ( />/g , '>' ) . replace ( /"/g , '"' ) ;
source = data [ 'source' ] . replace ( /&/g , '&' ) . replace ( /</g , '<' ) . replace ( />/g , '>' ) . replace ( /"/g , '"' ) ;
ni = "<li class=\"hentry notice\" id=\"notice-" + data [ 'id' ] + "\">" +
"<div class=\"entry-title\">" +
"<span class=\"vcard author\">" +
"<a href=\"" + user [ 'profile_url' ] + "\" class=\"url\">" +
"<img src=\"" + user [ 'profile_image_url' ] + "\" class=\"avatar photo\" width=\"48\" height=\"48\" alt=\"" + user [ 'screen_name' ] + "\"/>" +
"<span class=\"nickname fn\">" + user [ 'screen_name' ] + "</span>" +
"</a>" +
"</span>" +
"<p class=\"entry-content\">" + html + "</p>" +
"</div>" +
"<div class=\"entry-content\">" +
2009-09-15 14:53:16 +01:00
"<a class=\"timestamp\" rel=\"bookmark\" href=\"" + data [ 'url' ] + "\" >" +
2009-07-13 14:58:52 +01:00
"<abbr class=\"published\" title=\"" + data [ 'created_at' ] + "\">a few seconds ago</abbr>" +
"</a> " +
2009-09-15 14:53:16 +01:00
"<span class=\"source\">" +
"from " +
"<span class=\"device\">+source+</span>" ++ // may have a link
"</span>" ;
2009-07-13 14:58:52 +01:00
if ( data [ 'in_reply_to_status_id' ] ) {
2009-09-15 14:53:16 +01:00
ni = ni + " <a class=\"response\" href=\"" + data [ 'in_reply_to_status_url' ] + "\">in context</a>" ;
2009-07-13 14:58:52 +01:00
}
ni = ni + "</div>" +
"<div class=\"notice-options\">" ;
2009-07-14 22:06:29 +01:00
if ( RealtimeUpdate . _userid != 0 ) {
2009-07-13 14:58:52 +01:00
var input = $ ( "form#form_notice fieldset input#token" ) ;
var session _key = input . val ( ) ;
2009-07-14 20:26:39 +01:00
ni = ni + RealtimeUpdate . makeFavoriteForm ( data [ 'id' ] , session _key ) ;
ni = ni + RealtimeUpdate . makeReplyLink ( data [ 'id' ] , data [ 'user' ] [ 'screen_name' ] ) ;
2009-07-14 22:06:29 +01:00
if ( RealtimeUpdate . _userid == data [ 'user' ] [ 'id' ] ) {
2009-07-14 20:26:39 +01:00
ni = ni + RealtimeUpdate . makeDeleteLink ( data [ 'id' ] ) ;
2009-07-13 14:58:52 +01:00
}
}
ni = ni + "</div>" +
"</li>" ;
return ni ;
2009-07-14 22:06:29 +01:00
} ,
2009-07-13 14:58:52 +01:00
2009-07-14 20:26:39 +01:00
makeFavoriteForm : function ( id , session _key )
2009-07-13 14:58:52 +01:00
{
var ff ;
2009-07-14 22:06:29 +01:00
ff = "<form id=\"favor-" + id + "\" class=\"form_favor\" method=\"post\" action=\"" + RealtimeUpdate . _favorurl + "\">" +
2009-07-13 14:58:52 +01:00
"<fieldset>" +
2009-09-15 14:53:16 +01:00
"<legend>Favor this notice</legend>" +
2009-07-13 14:58:52 +01:00
"<input name=\"token-" + id + "\" type=\"hidden\" id=\"token-" + id + "\" value=\"" + session _key + "\"/>" +
"<input name=\"notice\" type=\"hidden\" id=\"notice-n" + id + "\" value=\"" + id + "\"/>" +
"<input type=\"submit\" id=\"favor-submit-" + id + "\" name=\"favor-submit-" + id + "\" class=\"submit\" value=\"Favor\" title=\"Favor this notice\"/>" +
"</fieldset>" +
"</form>" ;
return ff ;
2009-07-14 22:06:29 +01:00
} ,
2009-07-13 14:58:52 +01:00
2009-07-14 20:26:39 +01:00
makeReplyLink : function ( id , nickname )
2009-07-13 14:58:52 +01:00
{
var rl ;
2009-09-15 14:53:16 +01:00
rl = "<a class=\"notice_reply\" href=\"" + RealtimeUpdate . _replyurl + "?replyto=" + nickname + "\" title=\"Reply to this notice\">Reply <span class=\"notice_id\">" + id + "</span></a>" ;
2009-07-13 14:58:52 +01:00
return rl ;
2009-07-14 22:06:29 +01:00
} ,
2009-07-13 14:58:52 +01:00
2009-07-14 20:26:39 +01:00
makeDeleteLink : function ( id )
2009-07-13 14:58:52 +01:00
{
var dl , delurl ;
2009-07-14 22:06:29 +01:00
delurl = RealtimeUpdate . _deleteurl . replace ( "0000000000" , id ) ;
2009-07-13 14:58:52 +01:00
2009-09-15 14:53:16 +01:00
dl = "<a class=\"notice_delete\" href=\"" + delurl + "\" title=\"Delete this notice\">Delete</a>" ;
2009-07-13 14:58:52 +01:00
return dl ;
2009-07-14 22:06:29 +01:00
} ,
}