Commit b3bb617789de1c6a58f30594841ac152f1e1df13
1 parent
0b8734e8
Exists in
master
and in
29 other branches
ActionItem183: better tags and profile info
git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@1503 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
18 changed files
with
110 additions
and
31 deletions
Show diff stats
app/helpers/application_helper.rb
@@ -332,7 +332,7 @@ module ApplicationHelper | @@ -332,7 +332,7 @@ module ApplicationHelper | ||
332 | if File.exists?(File.join(RAILS_ROOT, 'public', filename)) | 332 | if File.exists?(File.join(RAILS_ROOT, 'public', filename)) |
333 | "@import url(#{filename});\n" | 333 | "@import url(#{filename});\n" |
334 | else | 334 | else |
335 | - '' | 335 | + "/* Not included: url(#{filename}) */\n" |
336 | end | 336 | end |
337 | end.join(), | 337 | end.join(), |
338 | { "type" => "text/css" }.merge(options) | 338 | { "type" => "text/css" }.merge(options) |
@@ -342,7 +342,7 @@ module ApplicationHelper | @@ -342,7 +342,7 @@ module ApplicationHelper | ||
342 | def filename_for_stylesheet(name, in_theme) | 342 | def filename_for_stylesheet(name, in_theme) |
343 | result = '' | 343 | result = '' |
344 | if in_theme | 344 | if in_theme |
345 | - result << '/designs/templates/' + current_theme | 345 | + result << '/designs/themes/' + current_theme |
346 | end | 346 | end |
347 | result << '/stylesheets/' << name << '.css' | 347 | result << '/stylesheets/' << name << '.css' |
348 | end | 348 | end |
app/helpers/tags_helper.rb
@@ -40,12 +40,17 @@ module TagsHelper | @@ -40,12 +40,17 @@ module TagsHelper | ||
40 | 40 | ||
41 | delta = max_size - min_size | 41 | delta = max_size - min_size |
42 | max = tags.values.max.to_f | 42 | max = tags.values.max.to_f |
43 | + min = tags.values.min.to_f | ||
43 | 44 | ||
44 | tags.map do |tag,count| | 45 | tags.map do |tag,count| |
45 | - v = count.to_f / max | 46 | + if ( max == min ) |
47 | + v = 0.5 | ||
48 | + else | ||
49 | + v = (count.to_f - min) / (max - min) | ||
50 | + end | ||
46 | style = ""+ | 51 | style = ""+ |
47 | "font-size: #{ (v * delta).round + min_size }px;"+ | 52 | "font-size: #{ (v * delta).round + min_size }px;"+ |
48 | - "top: #{ -4 - (v * 4).round }px;" | 53 | + "top: #{ -(delta/2) - (v * (delta/2)).round }px;" |
49 | destination = url.kind_of?(Hash) ? url_for(url.merge(tagname_option => tag)) : (url.to_s + tag) | 54 | destination = url.kind_of?(Hash) ? url_for(url.merge(tagname_option => tag)) : (url.to_s + tag) |
50 | 55 | ||
51 | display_count = options[:show_count] ? "<small><sup>(#{count})</sup></small>" : "" | 56 | display_count = options[:show_count] ? "<small><sup>(#{count})</sup></small>" : "" |
app/models/profile_info_block.rb
@@ -4,6 +4,10 @@ class ProfileInfoBlock < Block | @@ -4,6 +4,10 @@ class ProfileInfoBlock < Block | ||
4 | _('Profile information block') | 4 | _('Profile information block') |
5 | end | 5 | end |
6 | 6 | ||
7 | + def help | ||
8 | + _('Basic information about <i>%{user}</i>. Here you see how much time <i>%{user}</i> is part of the <i>%{env}</i> enviroment, and useful links.') % { :user => self.owner.name(), :env => self.owner.environment.name() } | ||
9 | + end | ||
10 | + | ||
7 | def content | 11 | def content |
8 | block = self | 12 | block = self |
9 | lambda do | 13 | lambda do |
app/models/profile_list_block.rb
@@ -66,7 +66,7 @@ class ProfileListBlock < Block | @@ -66,7 +66,7 @@ class ProfileListBlock < Block | ||
66 | lambda do | 66 | lambda do |
67 | list = profiles.map {|item| content_tag( 'li', profile_image_link(item) ) }.join("\n ") | 67 | list = profiles.map {|item| content_tag( 'li', profile_image_link(item) ) }.join("\n ") |
68 | if list.empty? | 68 | if list.empty? |
69 | - list = '<i>'+ _('None') +'</i>' | 69 | + list = '<div class="common-profile-list-block-none">'+ _('None') +'</div>' |
70 | else | 70 | else |
71 | list = content_tag( 'ul', nl +' '+ list + nl ) | 71 | list = content_tag( 'ul', nl +' '+ list + nl ) |
72 | end | 72 | end |
app/models/tags_block.rb
@@ -18,7 +18,7 @@ class TagsBlock < Block | @@ -18,7 +18,7 @@ class TagsBlock < Block | ||
18 | "\n<div class='tag_cloud'>\n"+ | 18 | "\n<div class='tag_cloud'>\n"+ |
19 | tag_cloud( owner.tags, :id, | 19 | tag_cloud( owner.tags, :id, |
20 | owner.generate_url(:controller => 'profile', :action => 'tag'), | 20 | owner.generate_url(:controller => 'profile', :action => 'tag'), |
21 | - :max_size => 18, :min_size => 9 ) + | 21 | + :max_size => 16, :min_size => 9 ) + |
22 | "\n</div><!-- end class='tag_cloud' -->\n"; | 22 | "\n</div><!-- end class='tag_cloud' -->\n"; |
23 | end | 23 | end |
24 | 24 |
app/views/blocks/profile_info.rhtml
1 | <h2><%= block.owner.name %></h2> | 1 | <h2><%= block.owner.name %></h2> |
2 | 2 | ||
3 | -<%= profile_image(block.owner) %> | 3 | +<div class="profile-info-picture"><%= profile_image(block.owner) %></div> |
4 | 4 | ||
5 | -<ul> | ||
6 | - <li><%= _('Since %d') % block.owner.created_at.year %></li> | 5 | +<ul class="profile-info-data"> |
6 | + <li><%= _('Since %{year}/%{month}') % { :year => block.owner.created_at.year, :month => block.owner.created_at.month } %></li> | ||
7 | <li><%= link_to _('Homepage'), block.owner.url %></li> | 7 | <li><%= link_to _('Homepage'), block.owner.url %></li> |
8 | <li><%= link_to _('View profile'), block.owner.public_profile_url %></li> | 8 | <li><%= link_to _('View profile'), block.owner.public_profile_url %></li> |
9 | </ul> | 9 | </ul> |
10 | 10 | ||
11 | -<div class='profile-info-options'> | 11 | +<div class="profile-info-options"> |
12 | <%= render :file => 'blocks/profile_info_actions/' + block.owner.class.name.underscore %> | 12 | <%= render :file => 'blocks/profile_info_actions/' + block.owner.class.name.underscore %> |
13 | </div> | 13 | </div> |
14 | 14 |
app/views/blocks/profile_info_actions/community.rhtml
1 | <ul> | 1 | <ul> |
2 | <% if logged_in? %> | 2 | <% if logged_in? %> |
3 | - <li><%= link_to _('Join this community'), :profile => user.identifier, :controller => 'memberships', :action => 'join', :id => profile.id %></li> | 3 | + <li><%= link_to content_tag('span', _('Join this community')), { :profile => user.identifier, :controller => 'memberships', :action => 'join', :id => profile.id }, :class => 'button with-text icon-add' %></li> |
4 | <% end %> | 4 | <% end %> |
5 | </ul> | 5 | </ul> |
app/views/blocks/profile_info_actions/person.rhtml
1 | <ul> | 1 | <ul> |
2 | <%if logged_in? && (user != profile) && (! user.friends.include?(profile)) %> | 2 | <%if logged_in? && (user != profile) && (! user.friends.include?(profile)) %> |
3 | - <li><%= link_to _('Add friend'), :profile => user.identifier, :controller => 'friends', :action => 'add', :id => profile.id %></li> | 3 | + <li><%= link_to content_tag('span', _('Add friend')), { :profile => user.identifier, :controller => 'friends', :action => 'add', :id => profile.id }, :class => 'button with-text icon-add' %></li> |
4 | <% end %> | 4 | <% end %> |
5 | </ul> | 5 | </ul> |
1.16 KB
919 Bytes
905 Bytes
1.18 KB
public/designs/themes/default/stylesheets/blocks/profile-info-block.css
0 → 100644
@@ -0,0 +1,30 @@ | @@ -0,0 +1,30 @@ | ||
1 | +.profile-info-block h2 { | ||
2 | + text-align: center; | ||
3 | +} | ||
4 | + | ||
5 | +.profile-info-picture { | ||
6 | + border: 2px solid #204A87; | ||
7 | + padding: 1px; | ||
8 | + background: #FFF; | ||
9 | + margin-right: 40px; | ||
10 | +} | ||
11 | +.msie6 .profile-info-picture { | ||
12 | + margin-right: 20px; | ||
13 | +} | ||
14 | + | ||
15 | +.profile-info-data { | ||
16 | + width: 140px; | ||
17 | + font-size: 10px; | ||
18 | + text-align: right; | ||
19 | + position: relative; | ||
20 | + top: 6px; | ||
21 | +} | ||
22 | + | ||
23 | +.profile-info-options { | ||
24 | + clear: both; | ||
25 | +} | ||
26 | + | ||
27 | +.profile-info-options { | ||
28 | + text-align: center; | ||
29 | +} | ||
30 | + |
public/designs/themes/default/stylesheets/blocks/tags-block.css
0 → 100644
@@ -0,0 +1,34 @@ | @@ -0,0 +1,34 @@ | ||
1 | +.tags-block { | ||
2 | +} | ||
3 | +.box-2 .tags-block { | ||
4 | + text-align: right; | ||
5 | +} | ||
6 | + | ||
7 | +#content .tags-block .block-title { | ||
8 | + margin-bottom: 0px; | ||
9 | + background: url(../../images/bg-tags-top.png) 0% 0%; | ||
10 | + padding: 3px 0px 0px 20px; | ||
11 | +} | ||
12 | + | ||
13 | +.tags-block .tag_cloud { | ||
14 | + background: url(../../images/bg-tags.png) 0% 100%; | ||
15 | + padding: 0px 0px 5px 5px; | ||
16 | +} | ||
17 | + | ||
18 | +#content .box-2 .tags-block .block-title { | ||
19 | + background: url(../../images/bg-tags-top-2.png) no-repeat 100% 0%; | ||
20 | + padding: 3px 20px 0px 0px; | ||
21 | +} | ||
22 | +.box-2 .tags-block .tag_cloud { | ||
23 | + background: url(../../images/bg-tags-2.png) no-repeat 100% 100%; | ||
24 | + padding: 0px 5px 5px 0px; | ||
25 | +} | ||
26 | + | ||
27 | +.tags-block .tag_cloud a { | ||
28 | + text-decoration: none; | ||
29 | + padding: 0px 4px; | ||
30 | +} | ||
31 | + | ||
32 | +.tags-block .tag_cloud a:hover { | ||
33 | + color: red; | ||
34 | +} |
public/stylesheets/blocks/profile-info-block.css
1 | -div.profile-info-block img { | 1 | + |
2 | +.profile-info-picture { | ||
2 | float: right; | 3 | float: right; |
3 | - margin-left: 1em; | ||
4 | } | 4 | } |
5 | 5 | ||
6 | -div.profile-info-block { | 6 | +.profile-info-block { |
7 | padding-left: 1em; | 7 | padding-left: 1em; |
8 | padding-right: 1em; | 8 | padding-right: 1em; |
9 | } | 9 | } |
10 | 10 | ||
11 | -div.profile-info-block ul { | 11 | +.profile-info-block ul { |
12 | padding: 0px; | 12 | padding: 0px; |
13 | + margin: 0px; | ||
13 | } | 14 | } |
14 | 15 | ||
15 | -div.profile-info-block li { | 16 | +.profile-info-block li { |
16 | list-style: none; | 17 | list-style: none; |
17 | - border-bottom: 1px solid #d0d0d0; | ||
18 | - background: #f0f0f0; | 18 | + margin: 0px; |
19 | padding: 2px; | 19 | padding: 2px; |
20 | } | 20 | } |
public/stylesheets/blocks/profile-list-block.css
@@ -59,6 +59,20 @@ | @@ -59,6 +59,20 @@ | ||
59 | .communities-block .block-footer-content { | 59 | .communities-block .block-footer-content { |
60 | text-align: center; | 60 | text-align: center; |
61 | font-size: 80%; | 61 | font-size: 80%; |
62 | - padding: 10px 0px 0px 0px; | 62 | + padding: 5px 0px 0px 0px; |
63 | +} | ||
64 | +.msie .enterprises-block .block-footer-content, | ||
65 | +.msie .communities-block .block-footer-content { | ||
66 | + padding: 0px; | ||
67 | + margin-top: -5px; | ||
68 | +} | ||
69 | + | ||
70 | +.common-profile-list-block-none { | ||
71 | + font-style: italic; | ||
72 | + margin-bottom: -10px; | ||
73 | +} | ||
74 | +.msie .common-profile-list-block-none { | ||
75 | + margin-bottom: 0px; | ||
76 | + padding-bottom: 10px; | ||
63 | } | 77 | } |
64 | 78 |
public/stylesheets/blocks/tags-block.css
1 | .tags-block { | 1 | .tags-block { |
2 | } | 2 | } |
3 | 3 | ||
4 | -.tags-block .help_tags { | ||
5 | - position: absolute; | ||
6 | - top: 10px; | ||
7 | - right: 2px; | ||
8 | -} | ||
9 | - | ||
10 | -.tag_cloud a { | 4 | +.tags-block .tag_cloud a { |
11 | text-decoration: none; | 5 | text-decoration: none; |
12 | padding: 0px 4px; | 6 | padding: 0px 4px; |
13 | } | 7 | } |
14 | 8 | ||
15 | -.tag_cloud a:hover { | 9 | +.tags-block .tag_cloud a:hover { |
16 | color: red; | 10 | color: red; |
17 | - background: #f0f0f0; | ||
18 | } | 11 | } |
public/stylesheets/common.css
@@ -332,8 +332,7 @@ body.category4 #content h1, body.category4 #content h2, body.category4 #content | @@ -332,8 +332,7 @@ body.category4 #content h1, body.category4 #content h2, body.category4 #content | ||
332 | body.category4 #content h4, body.category4 #content h5, body.category4 #content h6 | 332 | body.category4 #content h4, body.category4 #content h5, body.category4 #content h6 |
333 | { color: #B80000 } | 333 | { color: #B80000 } |
334 | 334 | ||
335 | -.block-title { | ||
336 | - color: red; | 335 | +#content .block-title { |
337 | margin: 0px 0px 10px 0px; | 336 | margin: 0px 0px 10px 0px; |
338 | } | 337 | } |
339 | 338 |