Commit ae069d09be61f18e42e3ccdab7081e631d880e11
1 parent
e8085d8d
Exists in
master
and in
28 other branches
ActionItem1044: better profile page
Showing
6 changed files
with
114 additions
and
43 deletions
Show diff stats
app/helpers/profile_helper.rb
1 | 1 | module ProfileHelper |
2 | 2 | |
3 | + def display_field(title, object, field) | |
4 | + value = object.send(field) | |
5 | + if !value.blank? | |
6 | + if block_given? | |
7 | + value = yield(value) | |
8 | + end | |
9 | + content_tag('tr', content_tag('td', title, :class => 'field-name') + content_tag('td', value)) | |
10 | + else | |
11 | + '' | |
12 | + end | |
13 | + end | |
14 | + | |
3 | 15 | end | ... | ... |
app/helpers/tags_helper.rb
... | ... | @@ -30,10 +30,10 @@ module TagsHelper |
30 | 30 | def tag_cloud(tags, tagname_option, url, options = {}) |
31 | 31 | |
32 | 32 | |
33 | - return _('No tags yet.') + '<br/>' + | |
34 | - '<a href="' + _('http://en.wikipedia.org/wiki/Tag_%28metadata%29') + | |
35 | - '" class="button with-text icon-help" target="wptags"><span>' + | |
36 | - _('What are tags?') + '</span></a>' if tags.empty? | |
33 | + return content_tag('em', _('No tags yet.')) + | |
34 | + ' <a href="' + _('http://en.wikipedia.org/wiki/Tag_%28metadata%29') + | |
35 | + '" target="wptags"><span>(' + | |
36 | + _('What are tags?') + ')</span></a>' if tags.empty? | |
37 | 37 | |
38 | 38 | max_size = options[:max_size] || Cloud::MAX_SIZE |
39 | 39 | min_size = options[:min_size] || Cloud::MIN_SIZE | ... | ... |
... | ... | @@ -0,0 +1,16 @@ |
1 | +<tr> | |
2 | + <th colspan='2'><%= _('Basic information')%></th> | |
3 | +</tr> | |
4 | +<%= display_field(_('Name:'), profile, :name) { |name| link_to name, profile.url } %> | |
5 | +<tr> | |
6 | + <td colspan='2'> | |
7 | + <%= link_to _('Members'), :action => 'members' %></li> | |
8 | + </td> | |
9 | +</tr> | |
10 | +<% if profile.kind_of?(Enterprise) && !profile.environment.enabled?('disable_products_for_enterprises') %> | |
11 | + <tr> | |
12 | + <td colspan='2'> | |
13 | + <%= link_to _('Products/Services'), :controller => 'catalog', :action => 'index' %> | |
14 | + </td> | |
15 | + </tr> | |
16 | +<% end %> | ... | ... |
... | ... | @@ -0,0 +1,38 @@ |
1 | +<tr> | |
2 | + <th colspan='2'><%= _('Basic information')%></th> | |
3 | +</tr> | |
4 | +<%= display_field(_('Name:'), profile, :name) { |name| link_to name, profile.url } %> | |
5 | +<%= display_field(_('Gender:'), profile, :sex) { |gender| { 'male' => _('Male'), 'female' => _('Female') }[gender] } %> | |
6 | +<%= display_field(_('Date of birth:'), profile, :birth_date) { |date| show_date(date) }%> | |
7 | + | |
8 | +<tr> | |
9 | + <th colspan='2'><%= _('Contact')%></th> | |
10 | +</tr> | |
11 | +<% if profile == user || profile.friends.include?(user) %> | |
12 | + <%= display_field(_('Address:'), profile, :address) %> | |
13 | + <%= display_field(_('ZIP code:'), profile, :zip_code) %> | |
14 | + <%= display_field(_('Contact phone:'), profile, :contact_phone) %> | |
15 | + <%= display_field(_('e-Mail:'), profile, :email) { |email| link_to email, 'mailto:'+email } %> | |
16 | +<% end %> | |
17 | +<%= display_field(_('Location:'), profile, :location) %> | |
18 | + | |
19 | +<tr> | |
20 | + <th colspan='2'><%= _('Work')%></th> | |
21 | +</tr> | |
22 | +<%= display_field(_('Organization:'), profile, :organization) %> | |
23 | +<%= display_field(_('Organization website:'), profile, :organization_website) { |url| link_to(url, url) }%> | |
24 | +</tr> | |
25 | + | |
26 | +<tr> | |
27 | + <th colspan='2'><%= _('Network')%></th> | |
28 | +</tr> | |
29 | +<tr> | |
30 | + <td colspan='2'> | |
31 | + <%= link_to __('Friends'), :action => 'friends' %> | |
32 | + — <%= link_to __('Communities'), :action => 'communities' %> | |
33 | + <% if !environment.enabled?('disable_asset_enterprises') %> | |
34 | + — <%= link_to __('Enterprises'), :action => 'enterprises' %> | |
35 | + <% end %> | |
36 | + </td> | |
37 | +</tr> | |
38 | + | ... | ... |
app/views/profile/index.rhtml
... | ... | @@ -4,43 +4,29 @@ |
4 | 4 | </div> |
5 | 5 | <% end %> |
6 | 6 | |
7 | -<h2><%= _("%s's profile") % profile.identifier %></h2> | |
7 | +<h1><%= _("%s's profile") % profile.identifier %></h1> | |
8 | 8 | |
9 | -<ul> | |
10 | - <li> | |
11 | - <strong><%= _('Name:') %></strong> | |
12 | - <%= profile.name %> | |
13 | - </li> | |
14 | - <li> | |
15 | - <strong><%= _('Homepage:') %></strong> | |
16 | - <%= link_to url_for(profile.url), profile.url %> | |
17 | - </li> | |
18 | - | |
19 | - <%# FIXME %> | |
20 | - <% if profile.kind_of? Person %> | |
21 | - <% if profile.friends.include?(user) %> | |
22 | - <li> | |
23 | - <strong><%= _('e-Mail:') %></strong> | |
24 | - <%= content_tag 'a', profile.email, :href => 'mailto:'+profile.email %> | |
25 | - </li> | |
26 | - <% end %> | |
27 | - <li><%= link_to __('Friends'), :action => 'friends' %></li> | |
28 | - <li><%= link_to __('Communities'), :action => 'communities' %></li> | |
29 | - <li><%= link_to __('Enterprises'), :action => 'enterprises' %></li> | |
30 | - <% end %> | |
31 | - <% if profile.kind_of? Organization %> | |
32 | - <li><%= link_to _('Members'), :action => 'members' %></li> | |
33 | - <% end %> | |
34 | - <% if profile.kind_of?(Enterprise) && !profile.environment.enabled?('disable_products_for_enterprises') %> | |
35 | - <li><%= link_to _('Products/Services'), :controller => 'catalog', :action => 'index' %></li> | |
36 | - <% end %> | |
37 | - | |
38 | - <li> | |
39 | - <%= link_to _('Site map'), :action => 'sitemap' %> | |
40 | - </li> | |
41 | - | |
42 | - <li> | |
43 | - <%= _('Tags:') %> | |
44 | - <%= tag_cloud @tags, :id, { :action => 'tag' }, :max_size => 18, :min_size => 10%> | |
45 | - </li> | |
46 | -</ul> | |
9 | +<table class='profile'> | |
10 | + <%= render :partial => partial_for_class(profile.class) %> | |
11 | + <tr> | |
12 | + <th colspan='2'> | |
13 | + <%= _('Content') %> | |
14 | + </th> | |
15 | + </tr> | |
16 | + <tr> | |
17 | + <td> | |
18 | + <%= _('Content published:') %> | |
19 | + </td> | |
20 | + <td> | |
21 | + <%= link_to _('Site map'), :action => 'sitemap' %> | |
22 | + </td> | |
23 | + </tr> | |
24 | + <tr> | |
25 | + <td> | |
26 | + <%= _('Tags:') %> | |
27 | + </td> | |
28 | + <td> | |
29 | + <%= tag_cloud @tags, :id, { :action => 'tag' }, :max_size => 18, :min_size => 10%> | |
30 | + </td> | |
31 | + </tr> | |
32 | +</table> | ... | ... |
public/stylesheets/common.css
... | ... | @@ -276,6 +276,25 @@ td .button { |
276 | 276 | background-color: transparent; |
277 | 277 | } |
278 | 278 | |
279 | +td.field-name { | |
280 | + color: #888; | |
281 | + width: 150px; | |
282 | + text-align: left; | |
283 | +} | |
284 | + | |
285 | +table.profile th { | |
286 | + border-bottom: 2px solid #eeeeec; | |
287 | + padding: 10px 0px 0px 0px; | |
288 | +} | |
289 | +table.profile td { | |
290 | + border: none; | |
291 | + padding-left: 0px; | |
292 | +} | |
293 | +table.profile tr:hover td { | |
294 | + background: none; | |
295 | +} | |
296 | + | |
297 | + | |
279 | 298 | /* for fields with auto-completion */ |
280 | 299 | div.auto-complete { |
281 | 300 | display: block; | ... | ... |