]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Merge branch 'cometplugin' into 0.7.x
authorEvan Prodromou <evan@controlyourself.ca>
Mon, 27 Apr 2009 19:28:36 +0000 (15:28 -0400)
committerEvan Prodromou <evan@controlyourself.ca>
Mon, 27 Apr 2009 19:28:36 +0000 (15:28 -0400)
plugins/Comet/CometPlugin.php
plugins/Comet/updatetimeline.js

index a7a4f4b23786d69afda6432cb1bc811bc26af272..2e0bb40a46ce3ffeb0b1baab1495a16fa982776f 100644 (file)
@@ -62,6 +62,14 @@ class CometPlugin extends Plugin
          case 'public':
             $timeline = '/timelines/public';
             break;
+         case 'tag':
+            $tag = $action->trimmed('tag');
+            if (!empty($tag)) {
+                $timeline = '/timelines/tag/'.$tag;
+            } else {
+                return true;
+            }
+            break;
          default:
             return true;
         }
@@ -94,6 +102,14 @@ class CometPlugin extends Plugin
             $timelines[] = '/timelines/public';
         }
 
+        $tags = $this->getNoticeTags($notice);
+
+        if (!empty($tags)) {
+            foreach ($tags as $tag) {
+                $timelines[] = '/timelines/tag/' . $tag;
+            }
+        }
+
         if (count($timelines) > 0) {
             // Require this, since we need it
             require_once(INSTALLDIR.'/plugins/Comet/bayeux.class.inc.php');
@@ -127,6 +143,7 @@ class CometPlugin extends Plugin
 
         $arr = $act->twitter_status_array($notice, true);
         $arr['url'] = $notice->bestUrl();
+        $arr['html'] = htmlspecialchars($notice->rendered);
 
         $profile = $notice->getProfile();
         $arr['user']['profile_url'] = $profile->profileurl;
@@ -134,6 +151,26 @@ class CometPlugin extends Plugin
         return $arr;
     }
 
+    function getNoticeTags($notice)
+    {
+        $tags = null;
+
+        $nt = new Notice_tag();
+        $nt->notice_id = $notice->id;
+
+        if ($nt->find()) {
+            $tags = array();
+            while ($nt->fetch()) {
+                $tags[] = $nt->tag;
+            }
+        }
+
+        $nt->free();
+        $nt = null;
+
+        return $tags;
+    }
+
     // Push this up to Plugin
 
     function log($level, $msg)
index c6eefb4475bf2cd1f247b956e10fbcda92452e77..de750baba333551596e0f3b32af2b8944751f000 100644 (file)
@@ -23,6 +23,14 @@ var updater = function()
 
      function receive(message)
      {
+          id = message.data.id;
+
+          // Don't add it if it already exists
+
+          if ($("#notice-"+id).length > 0) {
+               return;
+          }
+
           var noticeItem = makeNoticeItem(message.data);
           $("#notices_primary .notices").prepend(noticeItem, true);
           $("#notices_primary .notice:first").css({display:"none"});
@@ -34,6 +42,8 @@ var updater = function()
      function makeNoticeItem(data)
      {
           user = data['user'];
+          html = data['html'].replace(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;/g,'>');
+
           ni = "<li class=\"hentry notice\" id=\"notice-"+data['id']+"\">"+
                "<div class=\"entry-title\">"+
                "<span class=\"vcard author\">"+
@@ -42,7 +52,7 @@ var updater = function()
                "<span class=\"nickname fn\">"+user['screen_name']+"</span>"+
                "</a>"+
                "</span>"+
-               "<p class=\"entry-content\">"+data['text']+"</p>"+
+               "<p class=\"entry-content\">"+html+"</p>"+
                "</div>"+
                "<div class=\"entry-content\">"+
                "<dl class=\"timestamp\">"+