-
Notifications
You must be signed in to change notification settings - Fork 0
/
twitter.conversation.old.2.js
121 lines (114 loc) · 4.78 KB
/
twitter.conversation.old.2.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
/*
* This script is provided AS IS.
*
* Author: Alex Popescu
*/
var twittrConv = {
twit_template: '<li id="status_{{ id }}" class="hentry u-{{ user_screen_name }} status">' +
'<span class="thumb vcard author">' +
'<a class="tweet-url profile-pic url" href="http://twitter.com/{{ user_screen_name }}">' +
'<img width="48" height="48" src="{{ user_profile_image_url }}" class="photo fn" alt="{{ user_name }}">' +
'</a>' +
'</span> ' +
'<span class="status-body">' +
'<span class="status-content">' +
'<strong><a class="tweet-url screen-name" href="http://twitter.com/{{ user_screen_name }}">{{ user_screen_name }}</a></strong>' +
'<span class="actions">' +
'<div>' +
'<a title="favorite this tweet" class="fav-action non-fav" id="status_star_{{ id }}"> </a>' +
'</div>' +
'</span>' +
'<span class="entry-content"> {{{ text }}}</span>' +
'</span>' +
'<span data="{}" class="meta entry-meta">' +
'<a href="http://twitter.com/{{ user_screen_name }}/status/{{ id }}" rel="bookmark" class="entry-date">' +
'<span data="{time:\'{{ created_at }}\'}" class="published timestamp">{{ created_at }}</span>' +
'</a>'+
'</span>' +
'<ul class="actions-hover">' +
'<li>' +
'<span class="reply">' +
'<span class="reply-icon icon"></span>' +
'<a title="reply to {{ user_screen_name }}" href="/?status=@{{ user_screen_name }}&in_reply_to_status_id={{ id }}&in_reply_to={{ user_screen_name }}">Reply</a>' +
'</span>' +
'</li>' +
'<li>' +
'<span class="retweet-link">' +
'<span class="retweet-icon icon"></span>' +
'<a href="#" title="Retweet">Retweet</a>' +
'</span>' +
'</li>' +
'</ul>' +
'<ul class="meta-data clearfix">' +
'</ul>' +
'</span>' +
'</li>',
fetch_conversation:function(je) {
var id= je.attr('href').split('/').pop();
var par_li = je.parents('li.status');
//alert(par_li.attr('id'));
var newli = $('<li class="hentry status twittr_conv" style="padding-left:10px;"><ol class="statuses"><li>Conversation:</li></ol></li>')
par_li.after(newli);
var conv_ol = newli.find('ol.statuses');
twittrConv.fetch_status(id, conv_ol)
},
fetch_status:function(id, conv_ol){
//alert('fetch:' + id);
$.ajax({
url:'http://api.twitter.com/1/statuses/show/'+id+'.json',
success: function(data) {
for(var a in data.user) {
data['user_' + a] = data.user[a]
}
data['text'] = twittrConv.parse_tweet(data.text);
conv_ol.append(Mustache.to_html(twittrConv.twit_template, data));
if(data.in_reply_to_status_id){
twittrConv.fetch_status(data.in_reply_to_status_id, conv_ol);
}
},
dataType:'jsonp',
});
},
parse_tweet:function(text) {
text=text.replace(/http(s)?:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+/g, function(url) {
return url.link(url);
});
text = text.replace(/[@]+[A-Za-z0-9-_]+/g, function(u) {
var username = u.replace("@","")
return u.link("http://twitter.com/"+username);
});
text = text.replace(/[#]+[A-Za-z0-9-_]+/g, function(t) {
var tag = t.replace("#","%23")
return t.link("http://search.twitter.com/search?q="+tag);
});
return text;
},
attach:function() {
//alert('attaching');
$('span.status-body span.meta').each(function(idx,elem){
var a_elem=$(elem);
a_elem.find("a:contains('in reply to')").each(function(idx, e) {
var areply = $(e);
if(!areply.hasClass('twittr_conv')) {
var conv_span=$('<span class="meta entry-meta"></span>');
var conv_link=$('<a style="color:blue" href="' + areply.attr('href') + '">Show thread with ' + areply.text().substring(11) + '</a>');
conv_link.click(function(){twittrConv.fetch_conversation(areply);return false});
conv_span.append(conv_link);
a_elem.after(conv_span);
areply.addClass('twittr_conv');
}
});
});
},
activate:function() {
twittrConv.attach();
var navmenu = $('ul#primary_nav');
if(!navmenu.hasClass('twittr_conv')) {
navmenu.addClass('twittr_conv');
navmenu.append('<li id="twitter_conv"><a href="javascript:twittrConv.attach();" accesskey="t" title="Activate conversations">Conversations</a></li>');
$('div#pagination').after('<div style="margin-right: auto; margin-left: auto; text-align: center;" class="twittr_conversation"><a href="javascript:twittrConv.attach()" title="Activate conversations">Conversations</a></div>');
$('div#side').append('<div class="twittr_conv"><hr/><a href="javascript:twittrConv.attach()" title="Activate conversations" style="margin-left:13px;">Conversations</a></div>');
}
},
}
twittrConv.activate();