summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Prodromou <evan@status.net>2009-12-15 15:47:37 -0500
committerEvan Prodromou <evan@status.net>2009-12-15 15:47:37 -0500
commitd6873beb9b2f17d62b90933e5974117a2fd713f1 (patch)
tree730c865ff400583d8f34630bc3c4039cf0231cc9
parent80b5a7fe600e9e30021f33e58cde7906e79663eb (diff)
make realtime plugin grok repeats
-rw-r--r--plugins/Realtime/RealtimePlugin.php18
-rw-r--r--plugins/Realtime/realtimeupdate.js35
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(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&quot;/g,'"');
source = data['source'].replace(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&quot;/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;
});