-
Notifications
You must be signed in to change notification settings - Fork 3
/
index.html
812 lines (803 loc) · 62.6 KB
/
index.html
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="author" content="Chilla42o <tweetfilterjs@gmail.com>" />
<title>Tweetfilter - browser extension for twitter.com / #newtwitter</title>
<style type="text/css">
body.loading { overflow: hidden; background:#fff url(webdata/page-loading.gif) no-repeat center; height:150px; }
body.loading #all { visibility: hidden !important; }
</style>
<link rel="stylesheet" type="text/css" media="all" href="http://fonts.googleapis.com/css?family=Droid+Serif|Droid+Sans&v1" />
<link rel="stylesheet" type="text/css" media="all" href="webdata/index.css?v1" />
</head>
<body class="">
<script>document.getElementsByTagName('body')[0].setAttribute('class','loading');</script>
<div id="all">
<div id="contents">
<div id="content">
<div id="header">
<img id="logo" src="webdata/tf-logo-trans.png" width="200" height="127" alt="Tweetfilter" />
<h1>Tweetfilter</h1>
<h2>for browsers</h2>
</div>
<div id="description">
<p><span>Tweetfilter is a browser extension for twitter.com, supporting <a href="http://getfirefox.com" target="_blank">Firefox <i>3.6+</i></a>,
<a href="http://www.google.com/chrome" target="_blank">Chrome <i>10+</i></a>, <a href="http://www.opera.com/" target="_blank">Opera <i>11+</i></a>,
<a href="http://www.apple.com/safari/" target="_blank">Safari <i>5+</i></a> and <a href="http://ie.microsoft.com" target="_blank">IE <i>9+</i></a>.</span>
For best experience please always use the latest stable release of your favorite browser.
</p>
</div>
<div id="screenshot">
<span class="img block" style="width:681px;height:296px">
<img src="webdata/tf-screenshot.png" alt="Tweetfilter 2.0 / @tweetfilterjs" width="681" height="296" />
<em>Tweetfilter 2.0 widget</em>
</span>
</div>
<div id="intro">
<p>Tweetfilter allows you to <strong>customize</strong> many aspects of the <strong>Twitter website</strong>,
declutter your dashboard, hide features and add new ones, for better transparency and usability,
just by setting the options.
</p>
<p>With the powerful <strong>Tweet filter</strong> you can filter (hide or search) Tweets of certain kind, from certain sources or
with specific content. The filter makes an exception for your conversations and can be
disabled and inverted at any time making sure you don't miss something important to you.
This gives you the possibility to <strong>remove the noise</strong> from your timeline or ignore topics
you are not interested in without inversive actions like unfollowing your friends, but
also to quickly <strong>find Tweets</strong> with specific content in your timelines.</p>
</div>
<div id="idea">
<h2>Tweetfilter was your idea</h2>
<p>
<strong>Thanks to many (direct or indirect) suggestions you and others posted on Twitter over time, Tweetfilter
became more than just a timeline cleaner.</strong> In particular many #newtwitter and #twitter/@twitter
tagged critics and feature requests from the public timeline were (and are still!) taken into account during development,
making Tweetfilter a truly useful extension to the twitter.com application.
</p>
</div>
<div id="features">
<h2 id="features-basic">Basic features</h2>
<ul>
<li>filter independently all retweets (including classic RT-format), media, replies, Tweets with
links from timelines with tweets</li>
<li>custom filters for keywords, full-word (exact) match, username, mentions, hashtags,
real name, source (via) with live updated match count</li>
<li>shortened <strong>link expansion</strong></li>
<li><strong>highlight Tweets</strong> mentioning you</li>
<li>customize timeline layout, add via information, new menu options</li>
<li>customize dashboard and aspects of the twitter.com layout
gaining more space and remove distractions</li>
<li><strong>show friend status</strong> in Tweets (who you follow, who follows you)</li>
<li><strong>sound and message notification</strong> on new mentions and/or direct messages</li>
<li>... please see section <a href="#options">Options</a> for full list of options.</li>
</ul>
<h2 id="features-user">New most user requested features in Tweetfilter 2.0</h2>
<ul>
<li><strong>Filter</strong> works on <strong>all timelines</strong> with Tweets, like
favorites, user profile or lists</li>
<li><strong>Export and import</strong> settings and filters via bookmarklet</li>
<li><strong>Quote Tweets</strong> ("classic RT")</li>
<li><strong>Direct message</strong> feature</li>
<li>Alert and <strong>sound notification</strong> on new messages and mentions</li>
<li>Filter <strong>exclusion</strong> list</li>
<li>Hide main Tweet box to gain <strong>more vertical space</strong> (press "N" for new
tweet or click the top bar icon)</li>
<li>Disable timeline cache <strong>solving lags</strong> between page switches on older/slower
browsers</li>
<li><strong>Regular expression</strong> filters</li>
</ul>
<h2 id="features-new">Other new features in Tweetfilter 2.0</h2>
<ul>
<li><strong>Tweetfilter 2.0 is</strong> completely refactored and runs
<strong>faster</strong> and smoother with a index based filter</li>
<li><strong>New collapsible widget</strong> with <strong>scrollable filter list</strong>,
browser independent layout adapting to your color settings</li>
<li>quickly filter all retweets (including classic RT-format), media, replies, Tweets with
links on top of the widget</li>
<li>Better retweets: show source and friend status of retweeting user.</li>
<li>New <strong>exclusive filter</strong> mode: you can <strong>middle/ctrl-click
filters</strong> to combine and quickly search for Tweets matching them</li>
<li>Highlight excluded tweets</li>
<li><strong>Friend status</strong> now also shows who follows you and who you are
following, useful <strong>outside home timeline</strong></li>
<li>New <strong>name filter</strong>: filter Tweets matching certain bio realnames</li>
<li>Many more <strong>fixes and improvements</strong>, adapted to latest twitter.com
updates</li>
</ul>
</div>
<div id="usage">
<h2>Usage</h2>
<p> Tweetfilter reorganizes and adds new menu options to the Tweets in your timelines. By
clicking the Tweetfilter symbol at the bottom right of a tweet a <strong>drop-down
menu</strong> will appear showing you the <strong>user</strong>, contained
<strong>mentions</strong>, <strong>hashtags</strong> and <strong>links</strong> (if any).</p>
<p><span class="img left"><img src="webdata/tf-screenshot-2.png" alt="Tweetfilter" width="288" height="157" /><em>Tweetfilter dropdown</em></span>
You can <strong>select from the list</strong> what you want to filter. Newly added filters take effect immediately and
will <strong>add matching Tweets to "Filtered"</strong> (hide from timeline). On the top of the Tweetfilter widget you see the count
of Tweets which passed all filters ("<strong>passed</strong>") and those which match at least one filter ("<strong>filtered</strong>").
You can click "filtered" and "passed" to <strong>switch between the two</strong> (invert the filter).</p>
<ul class="wrap"><li>Click the filter in the dropdown <strong>holding shift</strong> to add it to <strong>Exclusions</strong> - no Tweets matching this filter will be added
to "Filtered" Tweets (also see also see section <a href="#exclusion">Exclusions</a>). </li>
<li>Click the filter <strong>holding Ctrl</strong> to immediately search your timeline (also see <a href="#quick-filters">exclusive filter</a>)</li></ul>
<p class="wrap">With the four quick filters on the right of the Tweetfilter logo you can instantly show (white background)
or hide (gray background) all replies, retweets, media and tweets containing links from the current timeline.</p>
<p>The Tweetfilter symbol shows when Tweetfilter is currently waiting for the website or processing operations by flapping it's wings. If it stands still,
Tweetfilter is idle and not doing anything. <strong>Clicking the TF-symbol minimizes the widget</strong> (or restores it's maximized state, if minimized).</p>
<p><span class="img left" style="width:448px;height:108px;"><img src="webdata/tf-screenshot-3.png" alt="Tweetfilter" width="448" height="83" /><em>Tweetfilter quick filters</em></span></p>
<p class="wrap">You can type <strong>simple text filters</strong> (keywords/phrases) in the
"<strong>Add to Tweetfilter</strong>"-input on the widget, pressing enter will create a
new filter entry in the "Filters" list showing you the count of matches and all Tweets
containing this keyword/phrase (also as part of another word or contained in the text of links)
are immediately moved to the "<strong>filtered</strong>"-group. This way you can also filter #hashtags, @mentions and links.
To <strong>copy/edit a filter</strong> click it in the Filters/Exclusions list while holding <strong>shift</strong>.</p>
<h3 id="special-filters">Special filters</h3>
<ul>
<li>To hide/search all Tweets coming from a certain user, either select it directly from
the <strong>"add to filter"-dropdown</strong> menu at the bottom of the tweet, or add
<code>from:@username</code> (with or without @) to the filter. Filters which match usernames
appear <strong>bold</strong> in the filter. If you want to exclude a user from the
filter, prefix it with - (hyphen): <code>-from:@buddy</code> - the filter will be
added to the "exclusions" list, no Tweets coming from this user will be added to the
"filtered" Tweets.</li>
<li>to filter Tweets by <strong>Tweet's source (via)</strong> add
<code>via:partofclient</code> to the filter (will appear italic). For example
<code>via:web</code> will filter all Tweets from sources (via) <strong>containing</strong> "web".
</li>
<li>to filter all Tweets by posting user's <strong>real name</strong> add
<code>by:partofname</code> to the filter (where "partofname" is the keyword/phrase
you want to search within the user's real name)</li>
<li>to force any filter to <strong>full word match</strong> (exact phrase or word surrounded by stop chars like space), wrap the
keyword/phrase part in double quotes: the filter <code>"hat"</code> will not
match a Tweet which just contains <strong>what</strong>, <strong>hattrick</strong> or <strong>hate</strong> (like the simple text filter
<code>hat</code> without quotes would). You can <strong>combine exact search</strong> with <strong>source</strong>, <strong>name</strong> or
<strong>simple</strong> (keyword, hashtags, mentions, linktext) <strong>filters</strong>:
<code>via:"web"</code>, <code>by:"Bob"</code>, <code>"#exacthashtag"</code>, ...
</li>
<li>User filters are always "exact" (username must fully match the posting user). Use
<strong>Regular Filters</strong> (see <a href="#usage-advanced">Advanced Usage</a>)
to circumvent this.</li>
</ul>
<h3 id="exclusion">Exclusions</h3>
<p>If you want to <strong>exclude</strong> anything from the filter process, write it in
the <strong>Add to Tweetfilter</strong> input and press <strong>Shift+Enter</strong>. <br />Alternatively, <strong>prefix your filter with - (hyphen)</strong>.
<br />For example: <code>-love</code> will
<em>exclude</em> all Tweets containing <code>love</code> <em>from all other
filters</em> - the filter will be added to the "exclusions" list, no Tweets matching this
filter will be added to the "filtered" Tweets<br />
<strong>This works for all filter types:</strong> <code>-@mention</code>, <code>-by:nameofuser</code>, <code>-"exact
phrase"</code>, <code>-from:@username</code>, etc.</p>
<p>You can also add a filter from the <strong>Tweetfilter dropdown</strong> menu to the <strong>Exclusions</strong> by <strong>holding shift while clicking</strong> on a filter from the list.</p>
<h3 id="edge-cases">Edge cases</h3>
<ul>
<li>If it happens you want to filter a term which Tweetfilter sees as special filter,
prefix it with a ' (single quote): <code>'-keyword</code>. If you enter anything in
the filter <strong>prefixed with single quote,</strong> it will always be a <em>simple
text filter</em> even if it has a special syntax.</li>
<li>if you want to filter anything beginning with a single quote, prefix it with another
one: <code>''neverhappens'</code> will filter anything containing 'neverhappens'
(with the quotes).</li>
</ul>
<h3 id="quick-filters">Exclusive/Search filter</h3>
<p>
You can click every filter in <strong>Filters</strong>, <strong>Exclusions</strong> and
<strong>on the right of the Tweetfilter logo</strong> with the <strong>middle
mouse</strong> button or while <strong>holding Ctrl</strong> to exclusively <strong>show
only Tweets matching this filters.</strong> The filter will be
<strong>underlined</strong> (or dark colored in case of the top filters). Clicking
another filter this way will <strong>add it</strong> to the <strong>exclusive
filter</strong> set. Middle/Ctrl-clicking it another time will <strong>remove it</strong>
from the set. Scroll down (or click the Tweetfilter <strong>down arrow</strong>) to load
more tweets, only those matching the filters will appear. Press <strong>passed</strong>
or <strong>filtered</strong> to exit exclusive filter mode.
</p>
<p>Another way to instantly <strong>search</strong> for a term/phrase is to write it in the "Add to Tweetfilter" input
and pressing <strong>Ctrl+Enter</strong>. This will add the new filter and set it as exclusive filter immediately. You can add more terms
the same way, they will be added to the exclusive filter set.</p>
<h3 id="filter-notes">Notes</h3>
<ul>
<li>All filters are <strong>case insensitive</strong>.</li>
<li><strong>Tweets mentioning you</strong> will not be added to "filtered" unless you uncheck <strong>don't hide mentioning me</strong> in
the Filter-options (except when in @Mentions or in exclusive mode).</li>
<li><strong>Your own Tweets</strong> will not be filtered unless you uncheck the option <strong>skip my posts</strong> in the
"Filter" options (except when in timelines showing only your Tweets, like in "Your
Tweets" or "Your Tweets, retweeted", or in exclusive mode)</li>
<li><strong>Simple text filters</strong> also match <strong>text contained in @mentions</strong> (appearing as
@username-link). If setting a filter <code>tweetfilter</code>, a Tweet mentioning @tweetfilterjs
will be filtered. Use exact search (<code>"tweetfilter"</code>) or exclusions (<code>-@tweetfilterjs</code>)
to refine the filter process.</li>
<li><strong>Text filters</strong> also scan the <strong>text within expanded links</strong> (the url). It can occur that
Tweets will be moved to filtered or back to passed (in case of exclusion) as soon as the
<strong>Twitter-API expands a link</strong> in the Tweet containing a filter keyword. The option <strong>expand
links</strong> doesn't need to be active for this to work, links are expanded in the background
by the twitter.com application itself, not Tweetfilter. This way Tweetfilter can match
<strong>links pointing to certain domains</strong> even if they appear shortened.</li>
</ul>
<h3 id="usage-advanced">Advanced usage</h3>
<p>If you know how to write Regular Expressions, Tweetfilter 2.0 offers you the
possibility to transform any filter to a regular expression:</p>
<ul>
<li><code>from:@/^[ab]/</code> will filter all usernames beginning with "A", "a", "B" or
"b" (the "i" flag is added to the expression)</li>
<li><code>via:noisy sources=/123$/</code> will filter all Tweets via sources ending
with 123, the <strong>filter title</strong> will be "noisy sources".</li>
<li>you can also add regular filters to the exclusion list prefixing them with -
(hyphen).</li>
<li>The <strong>short</strong> (but also less comprehensive) <strong>syntax</strong> still works
(and even has been extended)
<ul>
<li><code>@@</code> is equivalent to <code>from:@</code></li>
<li><code>:@</code> is equivalent to <code>via:</code></li>
<li><code>?@</code> is equivalent to <code>by:</code></li>
</ul>
Like the corresponding long syntax explained earlier, this <strong>can be combined</strong> with
<strong>exclusion</strong>, <strong>exact</strong> word match or <strong>regular
expression</strong>:
<ul>
<li><code>@@buddies=/^(user1|user2|user3)$/</code> filter all tweets (and retweets) from user1,user2 and user3 and name the filter "buddies".</li>
<li><code>?@"Bob"</code> filter all tweets from users which have the exact word "Bob" in their bio name</li>
</ul>
</li>
</ul>
</div>
<div id="options">
<h2>Options</h2>
<h3 id="options-filter">Filter</h3>
<ul>
<li><strong>don't hide mentioning me</strong> will avoid tweets containg an @mention of your username to
be hidden from your timeline, even if matching other filters in use. <em>This option is disabled in
@Mentions.</em></li>
<li><strong>don't hide my posts</strong> will always show tweets written by you, even if
matching other active filters you set. This option is disabled in timelines
which show only your own Tweets.</li>
<li><strong>add selection to filter</strong> enables you to quickly add select
text within your Tweets by clicking the Tweet again afterwards. If you want do deselect,
click left or right outside the timeline. Use the mousewheel/Ctrl-click (middle click) to
add the selection to the exclusion list.</li>
<li><strong>highlight mentioning me</strong> adds some color to Tweets containing an @Mention
of you (disabled and inactive in @Mentions).</li>
<li><strong>highlight my tweets</strong> adds color to Tweets written by you.</li>
<li><strong>highlight excluded</strong> adds color gradient to Tweets which match a filter from the Exclusions-tab.</li>
</ul>
<h3 id="options-timeline">Timeline</h3>
<ul>
<li><strong>show friend status</strong> shows with an icon near the name of tweeting (and retweeting)
user in Tweets and friend lists who follows you (<span class="follower">white star</span>),
who you follow (<span class="following">gray star</span>), and who is a mutual friend
(<span class="mutual">yellow star</span>), refreshed automatically after half an hour.
</li>
<li><strong>show line breaks</strong> shows the line breaks in Tweets (like most desktop
clients do)</li>
<li><strong>show Tweet's local time</strong> displays the original time of the tweet (posting user's timezone)</li>
<li><strong>expand new tweets</strong> immediately shows new tweets instead of new new tweets
bar</li>
<li><strong>expand links</strong> expands shortened urls in Tweets</li>
<li><strong>small links</strong> shrinks link size in Tweets saving vertical space
(especially when "expand links" is enabled)</li>
</ul>
<h3 id="options-dashboard">Dashboard</h3>
<ul>
<li><strong>fixed dashboard</strong> keeps the dashboard in position while scrolling
down.</li>
<li><strong>compact activities</strong> hides your last tweet, followings and followers and replaces
it with a compact dashboard component showing you extended overview. If this option is activated,
the information on the dashboard component is updated every two minutes.</li>
<li><strong>hide who to follow</strong> hides the "Who To Follow" and the "Similar To"
box.</li>
<li><strong>hide trends</strong> hides the "Trends"-box</li>
<li><strong>hide advertising</strong> hides the advertising-box</li>
<li><strong>hide invite friends</strong> prevents the "invite friends" prompt from showing randomly</li>
<li><strong>minify menu</strong> shows only essential menu links</li>
<li><strong>hide last tweet</strong> removes "Your Tweets" from your dashboard (Home only)</li>
<li><strong>expand last tweet</strong> shows the full text of your last Tweet in your dashboard, instead of cutting it off after the first line</li>
</ul>
<h3 id="options-layout">Global</h3>
<ul>
<li><strong>auto hide top bar</strong> shows the top bar only when the mouse is over it or when the
search-field is focused</li>
<li><strong>hide question hides</strong> "Whats happening?"</li>
<li><strong>hide main tweet</strong> box hides the tweet box on top of the timeline. You can still press
"N" for new Tweet.</li>
<li><strong>alert new dm</strong> displays a message through Twitters notification system when you have
new messages</li>
<li><strong>sound on new dm</strong> plays a sound on new messages</li>
<li><strong>alert new mentions</strong> displays a message through Twitters notification system when
someone mentioned you (@Mentions)</li>
<li><strong>sound on new mentions</strong> plays a sound when you have new @Mentions</li>
<li><strong>default search to "all"</strong> forces all <strong>searches defaulting to "All Tweets"</strong> instead of
<strong>"Top Tweets"</strong>. This option affects the top <strong>black bar search</strong>, <strong>clicks on hashtags</strong> in timeline
and the selection of <strong>saved searches</strong>.</li>
<li><b>disable copy link shortener</b> suppresses the t.co link shortener when copying a Tweet's text in your timeline.
This is especially useful together with the option <b>expand links</b> when you want to copy the real link instead of a t.co-link.</li>
</ul>
<h3 id="options-more">More</h3>
<ul>
<li><strong>disable timeline cache</strong> causes a reload of the timeline on switch. On older/slower browser
versions like Firefox 3.6.x this solves lags when switching back to a stream which has
many loaded (and cached) Tweets. </li>
<li><strong>fill page with Tweets</strong> causes loading more tweets if less than <strong>10 visible Tweets</strong> are in timeline.
This option is disabled per default, use it wisely, it will continue loading Tweets and making API calls if less Tweets are visible.
Please note that <strong>API calls are hourly limited</strong> by Twitter. If you <strong>hit the API limit</strong>, don't panic -
your Twitter will very soon deliver new Tweets again - but make sure you know why this happened to prevent it in the future.</li>
<li><strong>expand link targets</strong> makes links in timeline point directly to the expanded link
target instead of the t.co-link. This works independently from the option <strong>expand links</strong>.</li>
<li><b>enable twee+ support</b> expands tweeplus.com shortened Tweets in the details pane (click the Tweet). </li>
<li>export <strong>Tweetfilter settings</strong> by dragging the "Tweetfilter settings" bookmarklet to
your favorites bar (or, alternatively right click > add to bookmarks or similar).
After you click it (while on twitter.com with Tweetfilter running), your settings from the moment of adding the
bookmarklet will be reloaded. This triggers one page refresh. <strong>Your current settings will be overwritten</strong>, export them
to another bookmarklet before reloading the settings, if you still need them.</li>
</ul>
</div>
<div id="changelog">
<h2>Tweetfilter Updates</h2>
<div id="whatsnew">
<div>
<h3>2.1.3 <em>2011-12-06</em></h3>
<ul>
<li>Adapted to latest Twitter updates causing empty timelines and other misbehaviours.</li>
<li>Added option <strong>show classic tabs</strong> (Global) to restore the <b>Retweets and @Mentions-Tab</b>.</li>
<li>Tweetfilter enables the <b>Activity-tab</b> now also <b>in user profiles</b>, which is a hidden Twitter feature.</li>
<li>Added option <strong>Hide activity tab</strong> (Global) which hides all activity related tabs everywhere. <em>Note that your activity
is still visible to others (unless your Tweets are protected). Twitter always collects your activities no matter what client you use.</em>
</li>
<li><b>Retweets</b> now also show the <b>profile image of the retweeting user</b>.</li>
<li><b>Removed</b> the (buggy) <b>beta options</b> from the release version. If you still want to use them please install <a href="/tweetfilter-beta.user.js">Tweetfilter Beta</a> (from github).</li>
</ul>
<h3>2.1.2 <em>2011-11-07</em></h3>
<ul>
<li>Twitter Update: Twitter changed some internals breaking Tweetfilter functions.
<ul>
<li>Added options <b>hide following</b>, <b>hide followers</b>, moreover you can <b>hover the following/follower dashboard components</b> to see more profile pictures.</li>
</ul>
</li>
</ul>
<h3>2.1.1 <em>2011-11-03</em></h3>
<ul>
<li>Twitter Timeline Update: Twitter removed the <a href="http://techcrunch.com/2011/10/25/twitter-is-testing-expandable-timeline/" target="_blank">expandable timeline</a> and reverted to details pane layout.
Apparently the didn't like it enough to make it standard yet. If you still have the expandable timeline you're fine with previous version (2.1.0) and don't need to update.
<ul>
<li>Readded Options <b>show via in tweets</b>, <b>show full timestamp</b></li>
<li>Updated Tweetfilter layout, icons and positioning</li>
<li>Updated <b>enable Twee+ support</b> for long tweets.</li>
</ul>
</li>
<li>Some small fixes in Tweetfilter links menu</li>
</ul>
<h3>2.1.0 <em>2011-10-30</em></h3>
<ul>
<li>Twitter Timeline Update: Twitter removed the details pane and added more functionality to the timeline.
<ul>
<li>Removed options <b>show via in tweets</b>, <b>show full timestamp</b> - these are now standard. Tweetfilter adds the <b>retweeter's via</b> in Retweets.</li>
<li>Updated Tweetfilter layout, icons and positioning</li>
<li>Fixed empty timelines (<a href="https://github.com/Tweetfilter/tweetfilter.github.com/issues/30" target="_blank">issue #30</a>,
<a href="https://github.com/Tweetfilter/tweetfilter.github.com/issues/29" target="_blank">issue #29</a>)
</li>
<li>Updated <b>enable Twee+ support</b> for long tweets - Tweets now expands after click.</li>
</ul>
</li>
<li>Added option <b>treat classic RT like new RT</b> which allows you to exclude or include "RT @user"-style tweets from the Retweets-Filter.</li>
<li>Optimized speed of link expander and user filter</li>
</ul>
<h3>2.0.9 <em></em></h3>
<ul>
<li>Improved <strong>expand links</strong> performance and cache handling. Expanded links are now cached on the timeline instead of the Tweetfilter object.</li>
<li>Fixed <strong>filter matches</strong> not being removed from filter index after deletion. This caused some special filters still taking effect after deletion (required F5).</li>
<li>Updated <strong>show friend status</strong> to retry once after one failed load, fixed "failed loading friends" error message.</li>
<li>Fixed <strong>expand link targets</strong> (Beta), option did nothing after 2.0.7 link expander update.</li>
<li>Updated <strong>stream navigation</strong> on widget (the up/down arrows), added smooth scrolling instead of jumping.</li>
<li>Updated <strong>top filters</strong> on widget: added line through styling to captions on active top filters (replies, retweets, media, links) to make it more evident Tweetfilter
is hiding those Tweets.</li>
<li>Added <strong>"About" Tab</strong> with current version and direct install / update link</li>
</ul>
<h3>2.0.8 <em>(Bugfix release)</em></h3>
<ul>
<li>Fixed <strong>show friend status</strong> causing API rate limit hit.</li>
</ul>
<h3>2.0.7</h3>
<ul>
<li>Fixed <strong>empty timeline after first load</strong> related to latest Twitter updates</li>
<li>Fixed <strong>Firefox 3.6.x compatibility</strong> (please update such old Firefox, if possible - 3.6.x is awfully slow compared to current releases)</li>
<li><strong>Reorganized and simplified</strong> options and filter tabs</li>
<li>Added <strong>timeline selection for filters</strong> ("for this timeline" / "for all timelines") allowing you to add filters which
only take effect current timeline and filters which are active in all timelines (like it was in versions before 2.0.7).<br />
You can, if you need to, convert your global filters to local filters by editing (shift+click) and readding them with Enter while "for this timeline" is selected.</li>
<li>Improved <strong>expand links</strong>: now also expands links in dashboard panes, better handling of Twitter's link expander bugs</li>
<li>Improved <strong>messages/mention notification</strong> to work along multiple tabs notifying only once</li>
<li><strong>New Beta Section</strong>: this contains the options which are known to behave inconsistently. <em>Please use the Beta options for testing purposes
only until they can be fixed.</em></li>
</ul>
<h3>2.0.6</h3>
<ul>
<li>Fixed <b>show friend status</b> not updating after first load. Reduced refresh time to 15 minutes for users with less than 5000 friends.
Now also works on <b>"you both follow"</b> streams.</li>
<li>Added new option <b>show full timestamp</b> (Timeline) which replaces the time ago display in Tweets with the full date and time.</li>
<li>Added new option <b>enable rich text editor</b> (More) which unlocks the new Tweet editor when writing new Tweets (Twitter beta feature, disabled in Opera where it doesn't work yet).</li>
<li>Fixed <b>highlight mentioning me</b> and <b>highlight my tweets</b> to work when filter is disabled</li>
<li>Updated <b>show retweeted count</b>, sorts the retweeting users by their followers count and displays the total count of users the Tweet reached through retweets.</li>
<li>Fixed <b>compact activities</b> not refreshing immediately when switching back to a previously loaded page.</li>
<li>Updated <b>twee+ support</b> to recognize in_reply_to-links</li>
<li>Improved option <b>show Tweet's local time</b>, balloon help now also shows the approximate difference between your and posting user's time.</li>
</ul>
<h3>2.0.5</h3>
<ul>
<li><b>Greasemonkey users</b>: The recommended Firefox <b>userscript engine</b> for Tweetfilter is now <a href="https://addons.mozilla.org/firefox/addon/scriptish/" target="_blank"><b>Scriptish</b></a>
as replacement for Greasemonkey. Scriptish is under active development and offers some nice additions, the most noticeable is an <b>integrated
update notification</b>. If you'd like Firefox to notify you when a new version of Tweetfilter is available, <a href="https://addons.mozilla.org/firefox/addon/scriptish/" target="_blank">get Scriptish now</a>.</li>
<li>Updated widget: <b>better contrast</b> on top filters, disabling filter hides all filter related controls,
widget adapts visible options to user/tweet stream and hides on pages / streams where Tweetfilter can't operate (like Messages or single Tweet view)</li>
<li>Added new option <b>show retweeted count</b>, which shows you the count of retweeters at the bottom of Tweets (from the time the tweet reached you).
Clicking the link will <b>show up to 100 profile images/links of the retweeters</b> (which is way more than you see in Tweet's details pane).
</li>
<li>Added new option <b>lock scroll position</b> (<a href="https://github.com/Tweetfilter/tweetfilter.github.com/issues/6" target="_blank">issue 6</a>,
<a href="https://github.com/Tweetfilter/tweetfilter.github.com/issues/13" target="_blank">issue 13</a>)
which keeps the current visible Tweets in place when (automatically) expanding new Tweets instead of scrolling down</li>
<li>Reintroduced <b>expand last tweet</b> (dashboard) together with it's new counter part <b>hide last tweet</b> (options exclude one each other)</li>
<li>Added new option <b>disable copy link shortener</b> to suppress the t.co link shortener when copying a Tweet's text.
This is especially useful together with the option <b>expand links</b> when you want to copy the real link instead of shortening it again.</li>
<li>Added <b>enable twee+ support</b>: <a href="http://tweeplus.com" target="_blank">tweeplus.com</a> is the only long Tweet service I've seen so far that does not store your
long Tweets and just posts a link to their page, but takes a smarter approach and delivers the <b>whole text in form of a literal shortened link containing all your text,
by keeping @mentions in the Tweet</b>.
This makes it possible to expand the shortened long Tweets without any call to a service (no crossdomain requests).
<br />
Tweetfilter <b>expands twee+ Tweets in the details pane</b> (click the Tweet).
You can <b>filter twee+ tweets</b> with keywords contained in the expanded twee+ text.
Tweetfilter's <b>link expander collapses links to tweeplus.com</b> in your timeline, avoiding to break the layout.
</li>
<li>Updated <b>show friend status</b>: better data compression, <b>raised limit to 1.000.000 friends</b>. Loading (many) friends now <b>resumes after F5 reload</b>
instead of starting over again, if fetch was not completed</li>
<li>Updated option <b>small links</b> (moved to Layout-tab): really long (expanded) links are limited to 3 Tweet lines,
hovering the link with the mouse will show it entirely.</li>
<li>Updated <b>Mention / Message-Notification</b>:
<ul>
<li>Message notification is now synchronized with the internal message manager, used to fire earlier than the Tweets arrived - F5 is not needed anymore.</li>
<li>Fixed issue with Messages appearing multiple times in stream</li>
<li>Notification box hides as soon as you switch to the according page (Mentions or Messages)</li>
</ul>
</li>
<li>Updated option <b>compact activities</b>, now also shows up on profile pages, bringing you back the <b>Favorites count</b> in the dashboard.</li>
<li>Updated <b>expand links</b>, is now faster</li>
<li>Fixed <b>add selection to filter</b>: selected text now only adds selection to filter if you click the same Tweet's text again</li>
<li>Fixed <b>show line breaks</b> to show multiple line breaks</li>
<li>Fixed <b>show Tweet's local time</b>, is now more accurate (<a href="https://github.com/Tweetfilter/tweetfilter.github.com/issues/11" target="_blank">issue 11</a>),
the <a href="https://github.com/Tweetfilter/tweetfilter.github.com/issues/7" target="_blank"> possible daylight saving discrepancy</a> remains)</li>
</ul>
<h3>2.0.4</h3>
<ul>
<li>Fixed <strong>show friend status</strong> (Timeline) to sostain up to 600.000 friends (<a href="https://github.com/Tweetfilter/tweetfilter.github.com/issues/8" target="_blank">issue #8</a>)</li>
<li>Added option <strong>default search to "all"</strong> (More) which forces all <strong>searches defaulting to "All Tweets"</strong> instead of <strong>"Top Tweets"</strong>. This works
in the <strong>black bar search</strong>, when <strong>clicking hashtags</strong> in timeline and in <strong>saved searches</strong>.</li>
<li>Fixed filter icons in Tweets disappearing after favorite or retweet action (<a href="https://github.com/Tweetfilter/tweetfilter.github.com/issues/5" target="_blank">issue #5</a>)
<li>Updated option <strong>expanded link targets</strong> (More) to fix another case of broken expanded links, caused by a Twitter bug in link resolver (read more about in <a href="https://github.com/Tweetfilter/tweetfilter.github.com/issues/4" target="_blank">issue #4</a>)</li>
<li>Other minor updates, fixes and optimizations for better stability</li>
</ul>
<h3>2.0.3 <em>(Hotfix, 11-07-29)</em></h3>
<ul>
<li>Fixed <strong>minimize widget</strong> not working after update</li>
</ul>
<h3>2.0.2 <em>(11-07-29)</em></h3>
<ul>
<li>Fixed <strong>default options</strong> not loading after cleaning local storage or after first install</li>
<li>Fixed widget overlapping dark background in media gallery</li>
<li>Fixed <strong>skip my posts</strong> (Filter), option was broken</li>
<li>Added <em>experimental</em> option <strong>show local time</strong> (Timeline), which displays the original local time a tweet was posted. This
is displayed only if the user has set it's time zone.</li>
<li>Added option <strong>highlight my tweets</strong> (Filter) which adds a gradient to your own tweets</li>
<li>Added option <strong>hide promoted tweets</strong> (Filter) that tells Tweetfilter to <strong>always hide</strong> sponsored Tweets</li>
<li>Added option <strong>hide promoted content</strong> (Dashboard) to hide promoted trends and who to follow</li>
<li>Fixed <strong>expand links</strong> occasionally chopping off the #hash from links, workaround for Twitter bug</li>
<li>Added option <strong>expand link target</strong> (More) which leads your click directly to the expanded link target instead of the t.co-link. This works
independently from the option <strong>expand links</strong></li>
</ul>
<h3>2.0.1 <em>(11-07-27)</em></h3>
<ul>
<li><strong>Fixed overlapping with dashboard pane</strong> when Tweet details with much content are opened. Tweetfilter now
resizes the open dashboard pane in realtime when the widget is maximized</li>
<li>Updated option <strong>compact activities</strong>, new dashboard component similar to the profile view</li>
<li>Option <strong>highlight mentioning me</strong> now works while filter is disabled</li>
<li>Fixed Tweetfilter not going back to idle state in realtime searches with fast flowing results</li>
<li>Removed dashboard option <strong>expand last tweet</strong>, that option was never requested, dashboard space is precious</li>
<li>Added option <strong>hide invite friends</strong> which prevents the big random "invite friends" message to show up</li>
<li>Fixed <strong>links to @Mentions and Messages</strong> in the Tweetfilter notification messages</li>
<li>Fixed <strong>friend status</strong> not showing up when switching stream before friend status was fully loaded</li>
<li>Small optimization of filter process resulting in a <strong>noticeable speed increase</strong> (♥ ECMA 5)</li>
<li>Fixed quick <strong>filter links</strong> not showing it's disabled state when in "Search with links"</li>
</ul>
</div>
</div>
</div>
<div id="feedback">
<h2>Bugs, your ideas and feature suggestions</h2>
<p>Found a bug? Great, let's kill it. Have an idea on how to improve Tweetfilter? Even
better! You can post potential bugs, ideas and/or feature suggestions in the <a href="https://github.com/Tweetfilter/tweetfilter.github.com/issues" target="_blank">Github
Tweetfilter Issues Tracker</a>, thanks! If you are a developer and fixed a bug, please
file a <a href="https://github.com/Tweetfilter/tweetfilter.github.com/pulls" target="_blank">pull request</a>.</p>
<p>Thanks for using Tweetfilter!</p>
</div>
</div>
<div id="sidebar">
<div id="install">
<div class="method dynamic">
<h2>Get Tweetfilter</h2>
<div class="browsers"></div>
<ol>
<li>Add this bookmarklet to your favorites:
<div class="bookmarklet">
<a class="bookmarklet" title="Tweetfilter 2.0" onclick="return false;" href="javascript:(function()%20{%20var%20d=new%20Date();$('body').append('<script%20src=%22'+location.protocol+'//userscripts.org/scripts/source/49905.user.js?v'+d.getFullYear()+d.getMonth()+d.getDay()+'%22%20type=%22text/javascript%22></script>');})()">
<span>Tweetfilter</span>
</a>
<div class="version">
<script src="webdata/version.js"></script>
Current Version: <span data-tag="number" class="version"></span> <br />
Minified, <span data-tag="minified-size"></span> <a class="source" href="http://userscripts.org/scripts/review/49905" target="_blank">(view source)</a><br />
Updated: <span data-tag="updated"></span><br />
<span class="via">(via <a href="http://userscripts.org/scripts/show/49905" target="_blank">userscripts.org</a>)</span>
</div>
</div>
<em id="howtoinstall">(drag the Tweetfilter symbol above your favorites/links bar or add it to your bookmarks
with right click > add to bookmarks/favorites or similar)</em></li>
<li>Go to your home on <a href="https://twitter.com/" target="_blank">Twitter</a> and
press the bookmarklet.</li>
</ol>
</div>
<p class="note">No installation or authorization process is
required in order to use Tweetfilter. You need to add the bookmarklet only once
and you will always get the latest version.
After you pressed the bookmarklet Tweetfilter will stay loaded on all pages
which have timelines and the top black bar, until you fully refresh the page (F5) or switch away to
another page, outside twitter.com or without a user stream, timeline or the black bar.</p>
<div class="method dynamic">
<h2>Permanent installation</h2>
<div class="browsers permanent"></div>
<ol>
<li>(This step for Firefox only) Get <a href="https://addons.mozilla.org/firefox/addon/scriptish/" target="_blank">Scriptish</a></li>
<li>Click to install <a href="tweetfilter-min.user.js">Tweetfilter</a> (minified, <span data-tag="minified-size"></span>)</li>
<li>Go to <a href="http://twitter.com/#" target="_blank">Twitter</a></li>
</ol>
</div>
<p class="note">Though it is still compatible, Greasemonkey won't tell you when a new version of Tweetfilter is available.
Please follow/list <a href="https://twitter.com/tweetfilterjs">@tweetfilterjs</a> for update notifications, check this site for updates
or switch from Greasemonkey to Scriptish.</p>
<p class="note">Permanent installation with Opera through Javascript settings is not supported
anymore. Please use the bookmarklet instead, which also has
other advantages, or send your suggestions <a href="https://twitter.com/tweetfilterjs" target="_blank">@tweetfilterjs</a> if you know an alternative
permanent installation method for Opera or any browsers not mentioned.</p>
</div>
<div class="developer">
<h2>Developers</h2>
<p>If you want to check out the source, report bugs or make a suggestion, please see <a href="https://github.com/Tweetfilter" target="_blank">Tweetfilter project page on github.</a></p>
<p>There is also a <a href="tweetfilter.user.js">uncompressed version</a> (<span data-tag="uncompressed-size"></span>) and a <a href="tweetfilter-dbg.user.js">debug version</a> (<span data-tag="debug-size"></span>) with extensive <a href="http://getfirebug.com/" target="_blank">Firebug</a> output.</p>
</div>
<div id="mentions">
<h2>Thanks for all the mentions!</h2>
<div id="links">
<h3>Tweetfilter 2.x</h3>
<ul>
<li>Video: <a href="http://www.youtube.com/watch?v=NG8gx9WjoeU">Pick of the Week: Tweetfilter</a> <em>on <a href="http://www.youtube.com/user/guysfromqueens" target="_blank">guysfromqueens Youtube Channel</a> (English)</em></li>
<li><a href="http://www.ghacks.net/2011/10/30/tweetfilter-twitter-filters-and-customizations/">Tweetfilter, Twitter Filters And Customizations</a> <em>on <a href="http://ghacks.net/" target="_blank">ghacks.net</a> (English)</em></li>
<li><a href="http://mabzicle.blogspot.com/2011/07/tweetfilter-browser-extension-for.html" target="_blank">TweetFilter Browser Extension for Twitter </a><em> on <a href="http://mabzicle.blogspot.com/" target="_blank">mabzicle.blogspot.com</a></em></li>
<li><a href="http://socialstrategist.com/2011/11/14/how-to-make-twitter-take-less-time/">How to Make Twitter Take Less Time</a><em>on <a href="http://socialstrategist.com">socialstrategist.com</a></em>
<li><a href="http://www.trixya.net/index.php/twitter/view-tweet-source-in-twitter" target="_blank">View Tweet Source in Twitter</a><em>on <a href="http://www.trixya.net" target="_blank">trixya.net</a></em></li>
<li><a href="http://www.autourdurezo.com/index.php/actus-rezo/web-20/1433-tweetfilter-filtrer-et-customiser-le-client-officiel-de-twitter">Tweetfilter: filtrer et customiser le client officiel de Twitter. </a> <em>on <a href="http://www.autourdurezo.com">autourdurezo.com</a> (Français)</em></li>
<li><a href="http://vida20.com/18292/una-mejor-forma-de-utilizar-twitter-con-tweetfilter/" target="_blank">Una mejor forma de utilizar Twitter con Tweetfilter </a> <em>on <a href="http://vida20.com/" target="_blank">vida20.com</a> (Español)</em></li>
<li><a href="http://www.ideageek.it/personalizzare-twitter-modificando-filtrando-visualizzazione-tweet-tweetfilter/" target="_blank">Personalizzare Twitter modificando e filtrando la visualizzazione dei tweet con Tweetfilter </a><em> on <a href="http://www.ideageek.it" target="_blank">ideageek.it</a> (Italiano)</em></li>
<li><a href="http://www.stilegames.com/2011/11/05/come-personalizzare-i-tweet-di-twitter.html" target="_blank">Come personalizzare i Tweet di Twitter</a><em> on <a href="http://www.stilegames.com" target="_blank">stilegames.com</a> (Italiano)</em></li>
</ul>
<h3>Tweetfilter 1.x and older</h3>
<ul>
<li>Video: <a href="http://www.youtube.com/watch?v=grW_eEBD3AA">Test Tweetfilter</a> <em> on <a href="http://www.youtube.com/user/TheIncr3dible">TheIncr3dible Youtube Channel</em></a></li>
<li><a href="http://www.ampercent.com/filter-block-tweets-keywords-sources/7462/" target="_blank">Tweet Filter Removes Clutter From Twitter Timeline By Blocking Specific Tweets</a>
<em>on ampercent.com</em></li>
<li><a href="http://lifehacker.com/5703244/tweetfilter-is-like-a-gmail-filter-for-twitter" target="_blank">Tweetfilter is Like a Gmail Filter for Twitter</a> <em>on lifehacker.com</em></li>
<li><a href="http://horstscheuer.net/article.php?id=723" target="_blank">UserScript TweetFilter</a> <em>on horstscheuer.net (German)</em></li>
<li><a href="http://www.techedified.com/2011/01/filter-your-twitter-stream-with-tweetfilter/">Filter Your Twitter Stream With Tweetfilter</a> <em>on techedified.com</em></li>
<li><a href="http://www.moongift.jp/2010/12/20101212-2/" target="_blank">Gmailのようにツイートをフィルタリングする「Tweetfilter」</a> <em>on moongift.jp (Japan)</em></li>
<li><a href="http://circuitointegrado.folha.blog.uol.com.br/arch2010-12-26_2011-01-01.html#2010_12-28_13_15_19-130986617-0" target="_blank">Filtre chatos do Twitter sem precisar dar unfollow neles</a> <em>on circuitointegrado.folha.blog.uol.com.br (Portuguese)</em></li>
</ul>
</div>
<div id="tweets"></div>
</div>
<div id="awesome">
<h2>Tweetfilter is awesome and free, thanks to you</h2>
<p><strong>Tweetfilter is free open source software</strong> released under <a href="LICENSE">GPL v3
license</a>, <strong>inspired and supported by the Twitter community. Tweetfilter is not
associated in any way with Twitter Inc.</strong></p>
<p>Tweetfilter started in 2009 ("old" Twitter times) as project on the well known
<a href="http://userscripts.org/scripts/show/49905" rel="nofollow">userscripts.org</a>, where the (minified) bookmarklet is still hosted.
Since 2011 Tweetfilter 2.0+ is maintained on the fabulous <a href="https://github.com/Tweetfilter/tweetfilter.github.com">github.com</a>, where also this site
you're viewing is currently stored.</p>
</div>
<div id="support">
<h2>Support Tweetfilter</h2>
<p>Everything you donate goes to support the Tweetfilter project, for the work already
done and for new nice features to come. Thank you very much!</p>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank">
<input name="cmd" value="_s-xclick" type="hidden" />
<input type="hidden" name="hosted_button_id" value="LKM9ZBZ77KSYN">
<a class="paypal" href="#" data-type="submit"><span>Donate via <i>Pay</i><i>Pal™</i></span></a>
<a class="flattr" href="http://flattr.com/thing/333626/Tweetfilter" target="_blank">
<span>Flattr <i>this</i></span>
</a>
<img alt="" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" height="1" width="1" />
</form>
<h2>Share with your friends</h2>
<div class="sharethis">
<span class="st_twitter_vcount" displayText="Tweet"></span>
<span class="st_stumbleupon_vcount" displayText="StumbleUpon"></span>
<span class="st_sharethis_vcount" displayText="ShareThis"></span>
<span class="st_plusone_vcount" ></span>
</div>
</div>
</div><!--sidebar-->
</div><!--contents-->
</div><!--all-->
<script type="text/javascript">var switchTo5x=false;</script><script type="text/javascript" src="http://w.sharethis.com/button/buttons.js"></script>
<script type="text/javascript">stLight.options({publisher:'5bac7d26-3bc6-49e7-9b2e-7bf4e9a13321'});</script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script>
var winresize = function() {
$contents.css('height', $content.outerHeight()+14); //fix for bottom shadow
$sidebarscroll.css({'width':$sidebar.innerWidth()-50});
};
var winscroll = function() {
sidebar.height = $sidebarscroll.outerHeight();
sidebar.offset = $sidebar.offset();
sidebar.positiontop = $sidebarscroll.offset().top;
scrolled.top = $win.scrollTop();
scrolled.delta = scrolled.top - scrolled.prevtop; // < 0 = up, > 0 = down
scrolled.prevtop = scrolled.top;
if ((scrolled.delta < 0 && sidebar.appearance === 'bottom') ||
(scrolled.delta > 0 && sidebar.appearance === 'top')) {
sidebar.positiontop = $sidebarscroll.offset().top;
$sidebar.removeClass('pintop pinbottom').css({'top':sidebar.positiontop});
sidebar.appearance = 'positioned';
}
if (sidebar.appearance === 'positioned') {
if (scrolled.delta < 0 && scrolled.top < sidebar.positiontop) {
$sidebar.addClass('pintop');
$sidebarscroll.css({'width':$sidebar.innerWidth()-50});
sidebar.appearance = 'top';
} else if (scrolled.delta > 0 && (scrolled.top+$win.height() > sidebar.height+parseInt($sidebar.css('top'), 10))) {
$sidebar.addClass('pinbottom');
$sidebarscroll.css({'width':$sidebar.innerWidth()-50});
sidebar.appearance = 'bottom';
}
}
};
var cache=[];
var preloadimages = function() {
var args_len = arguments.length;
for (var i = args_len; i--;) {
var cacheImage = document.createElement('img');
cacheImage.src = arguments[i];
cache.push(cacheImage);
}
};
function relatime(time) {
var values = time.split(" ");
time = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
var parsed_date = Date.parse(time);
var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
delta = delta + (relative_to.getTimezoneOffset() * 60);
if (delta < 60) {
return 'less than a minute ago';
} else if(delta < 120) {
return 'about a minute ago';
} else if(delta < (60*60)) {
return (parseInt(delta / 60)).toString() + ' minutes ago';
} else if(delta < (120*60)) {
return 'about an hour ago';
} else if(delta < (24*60*60)) {
return 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago';
} else if(delta < (48*60*60)) {
return '1 day ago';
} else {
return (parseInt(delta / 86400)).toString() + ' days ago';
}
}
var showtweets = function(tweets) {
var tweet, feedhtml = ["<ul>"];
for (var t=0,tmax=tweets.results.length;t<tmax && (tweet=tweets.results[t]);t++) {
if (tweet.from_user === 'tweetfilterjs' && tweet.text[0] === '@') continue;
feedhtml.push('<li>'+
'<div class="pic">'+
'<a target="_blank" href="https://twitter.com/#!/'+tweet.from_user+'" title="'+tweet.from_user+'">'+
'<img src="webdata/tf-logo.gif" width="48" height="48" data-src="'+tweet.profile_image_url+'" /></a>'+
'</div>'+
'<div class="msg">'+
'<a class="from" href="https://twitter.com/'+tweet.from_user+'">'+tweet.from_user+'</a>: '+tweet.text+'<br />'+
'<span class="time">'+relatime(tweet.created_at)+'</span>'+
'</div>'+
'</li>');
}
feedhtml.push("</ul>");
$('#tweets').html(feedhtml.join("\n"));
}
function showtweetfeed() {
var twitterJSON = document.createElement("script");
twitterJSON.type="text/javascript";
twitterJSON.src="http://search.twitter.com/search.json?callback=showtweets&q=tweetfilter+source:web&lang=all&rpp=20";
$('body').append(twitterJSON);
return false;
}
$(function() {
preloadimages('webdata/tf-bookmarklet-over.gif','webdata/tf-bookmarklet-grab.gif');
$('a.bookmarklet').bind('mouseenter', function() { $(this).addClass('over'); })
.bind('mouseleave', function() { $(this).removeClass('over'); })
.bind('mousedown', function() { $(this).addClass('grab'); })
.bind('mouseup mouseleave', function() { $(this).removeClass('grab'); });
showtweetfeed();
$('#links a').click(function() {
window.open($(this).attr('href'));
return false;
});
$('a[data-type=submit]').click(function() {
$(this).closest('form').submit();
return false;
});
})
var sidebar = {'appearance':'positioned'}, $win, scrolled={};
$(window).load(function() {
$win = $(window);
scrolled.prevtop = 0;
$content = $('#content');
$contents = $('#contents');
$content.css({'position': 'absolute',
'left': 0,
'width':'60%'
});
$sidebar = $('#sidebar');
$sidebar.css({'position': 'absolute',
'left': '60%',
'top':0,
'width':'40%'
});
$sidebar.wrapInner('<div class="scroll"></div>');
$sidebarscroll = $('> div.scroll', $sidebar);
$win.resize(winresize).scroll(winscroll).triggerHandler('resize');
var versionvalue;
for(var key in version[0]) {
versionvalue= version[0][key];
if (key.indexOf('-size') !== -1) {
versionvalue = Math.round(versionvalue / 1024)+' kB';
}
$('span[data-tag="'+key+'"]').html(versionvalue);
}
$('img[data-src]').each(function() {
var image = $(this);
image.attr('src', image.attr('data-src')).removeAttr('data-src');
});
var warning = '<span class="warning">Tweetfilter can\'t run in this browser, it failed the minimum requirements check. Please update to a current version or use a compatible browser.</span>';
try {
if (!window.localStorage || !JSON || ~~[] !== 0 || !Array.prototype.indexOf) {
$('em#howtoinstall').before(warning);
}
} catch(e) {
$('em#howtoinstall').before(warning);
}
$('body').removeClass('loading');
if (window.location.hash) {
window.setTimeout((function() {
var target, targetid = window.location.hash.toString();
if (targetid === '#thankyou') {
$('#description').after(version[0].thankyou);
}
target = $(targetid);
if (target.length) {
$('html,body').animate({scrollTop: target.offset().top},'slow');
}
}),120);
}
});
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-24587451-1']);
_gaq.push(['_gat._anonymizeIp']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
</body>
</html>