Class: Disqus::Widget
- Inherits:
-
Object
- Object
- Disqus::Widget
- Defined in:
- lib/disqus/widget.rb
Overview
Constant Summary collapse
- VALID_COLORS =
['blue', 'grey', 'green', 'red', 'orange']
- VALID_NUM_ITEMS =
5..20
- VALID_DEFAULT_TABS =
['people', 'recent', 'popular']
- VALID_AVATAR_SIZES =
[24, 32, 48, 92, 128]
- VALID_ORIENTATIONS =
['horizontal', 'vertical']
- ROOT_PATH =
'http://disqus.com/forums/%s/'
- THREAD =
ROOT_PATH + 'embed.js'
- COMBO =
ROOT_PATH + 'combination_widget.js?num_items=%d&color=%s&default_tab=%s'
- RECENT =
ROOT_PATH + 'recent_comments_widget.js?num_items=%d&avatar_size=%d'
- POPULAR =
ROOT_PATH + 'popular_threads_widget.js?num_items=%d'
- TOP =
ROOT_PATH + 'top_commenters_widget.js?num_items=%d&avatar_size=%d&orientation=%s'
Class Method Summary collapse
-
.combo(opts = {}) ⇒ Object
Show the Disqus combo widget.
-
.comment_counts(opts = {}) ⇒ Object
Loads Javascript to show the number of comments for the page.
-
.popular_threads(opts = {}) ⇒ Object
Show the popular threads Disqus widget.
-
.recent_comments(opts = {}) ⇒ Object
Show the recent comments Disqus widget.
-
.thread(opts = {}) ⇒ Object
Show the main Disqus thread widget.
-
.top_commenters(opts = {}) ⇒ Object
Show the top commenters Disqus thread widget.
Class Method Details
.combo(opts = {}) ⇒ Object
Show the Disqus combo widget. This is a three-tabbed box with links popular threads, top posters, and recent threads. Options:
-
:account:
Your Discus account (required). -
:num_items:
How many items to show. -
:hide_mods:
Don’t show moderators. -
:default_tab:
Should be ‘people’, ‘recent’, or ‘popular’.
160 161 162 163 164 165 166 167 168 |
# File 'lib/disqus/widget.rb', line 160 def combo(opts = {}) opts = Disqus::defaults.merge(opts) validate_opts!(opts) s = '<script type="text/javascript" src="' s << COMBO s << '&hide_mods=1' if opts[:hide_mods] s << '"></script>' s % [opts[:account], opts[:num_items], opts[:color], opts[:default_tab]] end |
.comment_counts(opts = {}) ⇒ Object
Loads Javascript to show the number of comments for the page.
The Javascript sets the inner html to the comment count for any links on the page that have the anchor “disqus_thread”. For example, “View Comments” below would be replaced by “1 comment” or “23 comments” etc.
<a href="http://my.website/article-permalink#disqus_thread">View Comments</a>
<a href="http://my.website/different-permalink#disqus_thread">View Comments</a>
Options:
-
account:
Your Discus account (required).
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 |
# File 'lib/disqus/widget.rb', line 59 def comment_counts(opts = {}) opts = Disqus::defaults.merge(opts) validate_opts!(opts) s = <<-WHIMPER <script type="text/javascript"> //<![CDATA[ (function() { var links = document.getElementsByTagName('a'); var query = '?'; for(var i = 0; i < links.length; i++) { if(links[i].href.indexOf('#disqus_thread') >= 0) { query += 'url' + i + '=' + encodeURIComponent(links[i].href) + '&'; } } document.write('<' + 'script type="text/javascript" src="#{ROOT_PATH}get_num_replies.js' + query + '"></' + 'script>'); })(); //]]> </script> WHIMPER s % opts[:account] end |
.popular_threads(opts = {}) ⇒ Object
Show the popular threads Disqus widget. Options:
-
account:
Your Discus account (required). -
header:
HTML snipper with header (default h2) tag and text. -
num_items:
: How many items to show. -
hide_mods:
Don’t show moderators.
114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
# File 'lib/disqus/widget.rb', line 114 def popular_threads(opts = {}) opts = Disqus::defaults.merge(opts) opts[:header] ||= '<h2 class="dsq-widget-title">Popular Threads</h2>' validate_opts!(opts) s = '<div id="dsq-popthreads" class="dsq-widget">' s << opts[:header] s << '<script type="text/javascript" src="' s << POPULAR s << '&hide_mods=1' if opts[:hide_mods] s << '"></script>' s << '</div>' s << '<a href="http://disqus.com">Powered by Disqus</a>' if opts[:show_powered_by] s % [opts[:account], opts[:num_items]] end |
.recent_comments(opts = {}) ⇒ Object
Show the recent comments Disqus widget. Options:
-
account:
Your Discus account (required). -
header:
HTML snipper with header (default h2) tag and text. -
num_items:
: How many items to show. -
hide_avatars:
Don’t show avatars. -
avatar_size:
Avatar size.
136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
# File 'lib/disqus/widget.rb', line 136 def recent_comments(opts = {}) opts = Disqus::defaults.merge(opts) opts[:header] ||= '<h2 class="dsq-widget-title">Recent Comments</h2>' validate_opts!(opts) s = '<div id="dsq-recentcomments" class="dsq-widget">' s << opts[:header] s << '<script type="text/javascript" src="' s << RECENT s << '&hide_avatars=1' if opts[:hide_avatars] s << '"></script>' s << '</div>' if opts[:show_powered_by] s << '<a href="http://disqus.com">Powered by Disqus</a>' end s % [opts[:account], opts[:num_items], opts[:avatar_size]] end |
.thread(opts = {}) ⇒ Object
Show the main Disqus thread widget. Options:
-
account:
Your Discus account (required).
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/disqus/widget.rb', line 29 def thread(opts = {}) opts = Disqus::defaults.merge(opts) opts[:view_thread_text] ||= "View the discussion thread" validate_opts!(opts) s = '' if opts[:developer] s << '<script type="text/javascript">var disqus_developer = 1;</script>' end s << '<div id="disqus_thread"></div>' s << '<script type="text/javascript" src="' + THREAD + '"></script>' s << '<noscript><a href="http://%s.disqus.com/?url=ref">' s << opts[:view_thread_text] s << '</a></noscript>' if opts[:show_powered_by] s << '<a href="http://disqus.com" class="dsq-brlink">blog comments ' s << 'powered by <span class="logo-disqus">Disqus</span></a>' end s % [opts[:account], opts[:account]] end |
.top_commenters(opts = {}) ⇒ Object
Show the top commenters Disqus thread widget. Options:
-
account:
Your Discus account (required). -
header:
HTML snipper with header (default h2) tag and text. -
show_powered_by:
Show or hide the powered by Disqus text. -
num_items:
: How many items to show. -
hide_mods:
Don’t show moderators. -
hide_avatars:
Don’t show avatars. -
avatar_size:
Avatar size.
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/disqus/widget.rb', line 90 def top_commenters(opts = {}) opts = Disqus::defaults.merge(opts) opts[:header] ||= '<h2 class="dsq-widget-title">Top Commenters</h2>' validate_opts!(opts) s = '<div id="dsq-topcommenters" class="dsq-widget">' s << opts[:header] s << '<script type="text/javascript" src="' s << TOP s << '&hide_avatars=1' if opts[:hide_avatars] s << '&hide_mods=1' if opts[:hide_mods] s << '"></script>' s << '</div>' if opts[:show_powered_by] s << '<a href="http://disqus.com">Powered by Disqus</a>' end s % [opts[:account], opts[:num_items], opts[:avatar_size], opts[:orientation]] end |