summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSarven Capadisli <csarven@controlyourself.ca>2009-04-27 20:08:00 +0000
committerSarven Capadisli <csarven@controlyourself.ca>2009-04-27 20:08:00 +0000
commitdf6c22c4cb0964353414277b89f47151ff9cfd9d (patch)
treebcbc17441d6a77fdc67532acd6fb6dc645982c37
parentefe8c47d7d9e91eb8308845b8b0717e84e36e346 (diff)
parent8cf8298dc02b1373fed53eb95982a33b969b42ee (diff)
Merge branch '0.7.x' of git@gitorious.org:laconica/dev into 0.7.x
-rw-r--r--js/util.js14
-rw-r--r--plugins/Comet/CometPlugin.php37
-rw-r--r--plugins/Comet/updatetimeline.js12
3 files changed, 57 insertions, 6 deletions
diff --git a/js/util.js b/js/util.js
index 15a14625c..f15c4f2bb 100644
--- a/js/util.js
+++ b/js/util.js
@@ -188,11 +188,15 @@ $(document).ready(function(){
alert(result);
}
else {
- $("#notices_primary .notices").prepend(document._importNode($("li", xml).get(0), true));
- $("#notices_primary .notice:first").css({display:"none"});
- $("#notices_primary .notice:first").fadeIn(2500);
- NoticeHover();
- NoticeReply();
+ li = $("li", xml).get(0);
+ id = li.id;
+ if ($("#"+li.id).length == 0) {
+ $("#notices_primary .notices").prepend(document._importNode(li, true));
+ $("#notices_primary .notice:first").css({display:"none"});
+ $("#notices_primary .notice:first").fadeIn(2500);
+ NoticeHover();
+ NoticeReply();
+ }
}
$("#notice_data-text").val("");
counter();
diff --git a/plugins/Comet/CometPlugin.php b/plugins/Comet/CometPlugin.php
index a7a4f4b23..2e0bb40a4 100644
--- a/plugins/Comet/CometPlugin.php
+++ b/plugins/Comet/CometPlugin.php
@@ -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)
diff --git a/plugins/Comet/updatetimeline.js b/plugins/Comet/updatetimeline.js
index c6eefb447..de750baba 100644
--- a/plugins/Comet/updatetimeline.js
+++ b/plugins/Comet/updatetimeline.js
@@ -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\">"+