diff options
author | Evan Prodromou <evan@status.net> | 2009-12-15 15:47:37 -0500 |
---|---|---|
committer | Evan Prodromou <evan@status.net> | 2009-12-15 15:47:37 -0500 |
commit | d6873beb9b2f17d62b90933e5974117a2fd713f1 (patch) | |
tree | 730c865ff400583d8f34630bc3c4039cf0231cc9 | |
parent | 80b5a7fe600e9e30021f33e58cde7906e79663eb (diff) |
make realtime plugin grok repeats
-rw-r--r-- | plugins/Realtime/RealtimePlugin.php | 18 | ||||
-rw-r--r-- | plugins/Realtime/realtimeupdate.js | 35 |
2 files changed, 47 insertions, 6 deletions
diff --git a/plugins/Realtime/RealtimePlugin.php b/plugins/Realtime/RealtimePlugin.php index d57438de2..a810b7165 100644 --- a/plugins/Realtime/RealtimePlugin.php +++ b/plugins/Realtime/RealtimePlugin.php @@ -267,6 +267,24 @@ class RealtimePlugin extends Plugin $profile = $notice->getProfile(); $arr['user']['profile_url'] = $profile->profileurl; + // Add needed repeat data + + if (!empty($notice->repeat_of)) { + $original = Notice::staticGet('id', $notice->repeat_of); + if (!empty($original)) { + $arr['retweeted_status']['url'] = $original->bestUrl(); + $arr['retweeted_status']['html'] = htmlspecialchars($original->rendered); + $arr['retweeted_status']['source'] = htmlspecialchars($original->source); + $originalProfile = $original->getProfile(); + $arr['retweeted_status']['user']['profile_url'] = $originalProfile->profileurl; + if (!empty($original->reply_to)) { + $originalReply = Notice::staticGet('id', $original->reply_to); + $arr['retweeted_status']['in_reply_to_status_url'] = $originalReply->bestUrl(); + } + } + $original = null; + } + return $arr; } diff --git a/plugins/Realtime/realtimeupdate.js b/plugins/Realtime/realtimeupdate.js index 2844aa580..18f00f22a 100644 --- a/plugins/Realtime/realtimeupdate.js +++ b/plugins/Realtime/realtimeupdate.js @@ -116,11 +116,24 @@ RealtimeUpdate = { makeNoticeItem: function(data) { + if (data.hasOwnProperty('retweeted_status')) { + original = data['retweeted_status']; + repeat = data; + data = original; + unique = repeat['id']; + responsible = repeat['user']; + } else { + original = null; + repeat = null; + unique = data['id']; + responsible = data['user']; + } + 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']+"\">"+ + ni = "<li class=\"hentry notice\" id=\"notice-"+unique+"\">"+ "<div class=\"entry-title\">"+ "<span class=\"vcard author\">"+ "<a href=\""+user['profile_url']+"\" class=\"url\">"+ @@ -142,15 +155,24 @@ RealtimeUpdate = { ni = ni+" <a class=\"response\" href=\""+data['in_reply_to_status_url']+"\">in context</a>"; } - ni = ni+"</div>"+ - "<div class=\"notice-options\">"; + if (repeat) { + ru = repeat['user']; + ni = ni + "<span class=\"repeat vcard\">Repeated by " + + "<a href=\"" + ru['profile_url'] + "\" class=\"url\">" + + "<img src=\"" + ru['profile_image_url'] + "\" class=\"avatar photo\" width=\"24\" height=\"24\" alt=\"" + ru['screen_name'] + "\"/>" + + "<span class=\"nickname\">"+ ru['screen_name'] + "</span></a></span>"; + } + + ni = ni+"</div>"; + + ni = ni + "<div class=\"notice-options\">"; if (RealtimeUpdate._userid != 0) { var input = $("form#form_notice fieldset input#token"); var session_key = input.val(); ni = ni+RealtimeUpdate.makeFavoriteForm(data['id'], session_key); ni = ni+RealtimeUpdate.makeReplyLink(data['id'], data['user']['screen_name']); - if (RealtimeUpdate._userid == data['user']['id']) { + if (RealtimeUpdate._userid == responsible['id']) { ni = ni+RealtimeUpdate.makeDeleteLink(data['id']); } else { @@ -158,7 +180,8 @@ RealtimeUpdate = { } } - ni = ni+"</div>"+ + ni = ni+"</div>"; + "</li>"; return ni; }, @@ -330,7 +353,7 @@ RealtimeUpdate = { { $('.notices .entry-title a, .notices .entry-content a').bind('click', function() { window.open(this.href, ''); - + return false; }); |