Commit 73f9889fed4ff5ff06e8a1732d6ec6ea77d6fd70
Committed by
Antonio Terceiro
1 parent
22728463
Exists in
master
and in
29 other branches
Better tag cloud display
(ActionItem101)
Showing
5 changed files
with
32 additions
and
5 deletions
Show diff stats
app/helpers/tags_helper.rb
... | ... | @@ -53,9 +53,14 @@ module TagsHelper |
53 | 53 | "top: #{ -(delta/2) - (v * (delta/2)).round }px;" |
54 | 54 | destination = url.kind_of?(Hash) ? url_for(url.merge(tagname_option => tag)) : (url.to_s + tag) |
55 | 55 | |
56 | - display_count = options[:show_count] ? "<small><sup>(#{count})</sup></small>" : "" | |
56 | + if options[:show_count] | |
57 | + display_count = options[:show_count] ? "<small><sup>(#{count})</sup></small>" : "" | |
58 | + link_to tag + display_count, destination, :style => style | |
59 | + else | |
60 | + link_to tag , destination, :style => style, | |
61 | + :title => n_( 'one item', '%d items', count ) % count | |
62 | + end | |
57 | 63 | |
58 | - link_to tag + display_count, destination, :style => style | |
59 | 64 | end.join("\n") |
60 | 65 | end |
61 | 66 | ... | ... |
app/models/tags_block.rb
... | ... | @@ -4,6 +4,8 @@ class TagsBlock < Block |
4 | 4 | include BlockHelper |
5 | 5 | include ActionController::UrlWriter |
6 | 6 | |
7 | + settings_items :limit, :type => :integer, :default => 12 | |
8 | + | |
7 | 9 | def self.description |
8 | 10 | _('Block listing content count by tag') |
9 | 11 | end |
... | ... | @@ -21,6 +23,12 @@ class TagsBlock < Block |
21 | 23 | tags = owner.article_tags |
22 | 24 | return '' if tags.empty? |
23 | 25 | |
26 | + if limit | |
27 | + tags_tmp = tags.sort_by{ |k,v| -v }[0..(limit-1)] | |
28 | + tags = {} | |
29 | + tags_tmp.map{ |k,v| tags[k] = v } | |
30 | + end | |
31 | + | |
24 | 32 | block_title(title) + |
25 | 33 | "\n<div class='tag_cloud'>\n"+ |
26 | 34 | tag_cloud( tags, :id, |
... | ... | @@ -29,6 +37,13 @@ class TagsBlock < Block |
29 | 37 | "\n</div><!-- end class='tag_cloud' -->\n"; |
30 | 38 | end |
31 | 39 | |
40 | + def footer | |
41 | + owner_id = owner.identifier | |
42 | + lambda do | |
43 | + link_to s_('tags|View all'), :profile => owner_id, :controller => 'profile', :action => 'tags' | |
44 | + end | |
45 | + end | |
46 | + | |
32 | 47 | def timeout |
33 | 48 | 15.minutes |
34 | 49 | end | ... | ... |
app/views/profile/tags.rhtml
1 | 1 | <h1><%= _("%s's tags") % @profile.name %></h1> |
2 | 2 | |
3 | +<div class='tag_cloud'> | |
3 | 4 | <% cache_timeout(@tags_cache_key, 4.hour.from_now) do %> |
4 | - <%= tag_cloud(@tags, :id, { :action => :tag}, {:show_count => true} ) %> | |
5 | + <%= tag_cloud @tags, :id, { :action => :tag}, {:show_count => true} %> | |
5 | 6 | <% end %> |
7 | +</div> | ... | ... |
app/views/search/tags.rhtml
1 | -<h2><%= _('Tag cloud') %></h2> | |
1 | +<h1><%= _('Tag cloud') %></h1> | |
2 | 2 | |
3 | +<div class='tag_cloud'> | |
3 | 4 | <% cache_timeout(@tags_cache_key, 4.hour.from_now) do %> |
4 | - <%= tag_cloud(@tags, :tag, :action => 'tag') %> | |
5 | + <%= tag_cloud @tags, :tag, {:action => 'tag'}, {:show_count => true} %> | |
5 | 6 | <% end %> |
7 | +</div> | ... | ... |