]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Patch from g0: fix for conversation links in Realtime updates
authorBrion Vibber <brion@pobox.com>
Mon, 17 May 2010 19:37:47 +0000 (19:37 +0000)
committerBrion Vibber <brion@pobox.com>
Mon, 17 May 2010 19:37:47 +0000 (19:37 +0000)
Previously was using the reply-to URL, which didn't match with other displays.
Now sends to the right conversation page.

plugins/Realtime/README
plugins/Realtime/RealtimePlugin.php
plugins/Realtime/realtimeupdate.js

index 524382696b05f2a21a1cfb6ddf3738b24305f53a..99c79cfab541d8b5b5e2076321d6c8f35eb90883 100644 (file)
@@ -1,6 +1,5 @@
 == TODO ==
 * i18n
-* Change in context URL to conversation (try not to construct the URL in JS)
 * Update mark behaviour (on notice send)
 * Pause, Send a notice ~ should not update counter
 * Pause ~ retain up to 50-100 most recent notices
index b559d80c605a540aa333299fb3e25deb998a0f35..fa1b5e3e1bbb46b191ab6b6449a5e208679f9bc2 100644 (file)
@@ -250,14 +250,7 @@ class RealtimePlugin extends Plugin
         $arr['url'] = $notice->bestUrl();
         $arr['html'] = htmlspecialchars($notice->rendered);
         $arr['source'] = htmlspecialchars($arr['source']);
-
-        if (!empty($notice->reply_to)) {
-            $reply_to = Notice::staticGet('id', $notice->reply_to);
-            if (!empty($reply_to)) {
-                $arr['in_reply_to_status_url'] = $reply_to->bestUrl();
-            }
-            $reply_to = null;
-        }
+        $arr['conversation_url'] = $this->getConversationUrl($notice);
 
         $profile = $notice->getProfile();
         $arr['user']['profile_url'] = $profile->profileurl;
@@ -272,10 +265,7 @@ class RealtimePlugin extends Plugin
                 $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();
-                }
+                $arr['retweeted_status']['conversation_url'] = $this->getConversationUrl($original);
             }
             $original = null;
         }
@@ -303,6 +293,32 @@ class RealtimePlugin extends Plugin
         return $tags;
     }
 
+    function getConversationUrl($notice)
+    {
+        $convurl = null;
+
+        if ($notice->hasConversation()) {
+            $conv = Conversation::staticGet(
+                'id',
+                $notice->conversation
+            );
+            $convurl = $conv->uri;
+
+            if(empty($convurl)) {
+                $msg = sprintf(
+                    "Couldn't find Conversation ID %d to make 'in context'"
+                    . "link for Notice ID %d",
+                    $notice->conversation,
+                    $notice->id
+                );
+
+                common_log(LOG_WARNING, $msg);
+            }
+        }
+
+        return $convurl;
+    }
+
     function _getScripts()
     {
         return array('plugins/Realtime/realtimeupdate.js');
index 2e5851ae531e539dc07f85a0d0eab80915a87fc8..25dc12d584617adc11eae223a6de2e17962696a4 100644 (file)
@@ -149,8 +149,8 @@ RealtimeUpdate = {
                "from "+
                 "<span class=\"device\">"+source+"</span>"+ // may have a link
                "</span>";
-          if (data['in_reply_to_status_id']) {
-               ni = ni+" <a class=\"response\" href=\""+data['in_reply_to_status_url']+"\">in context</a>";
+          if (data['conversation_url']) {
+               ni = ni+" <a class=\"response\" href=\""+data['conversation_url']+"\">in context</a>";
           }
 
           if (repeat) {