@@ -48,8 +48,8 module WatchersHelper | |||
|
48 | 48 | # Returns a comma separated list of users watching the given object |
|
49 | 49 | def watchers_list(object) |
|
50 | 50 | remove_allowed = User.current.allowed_to?("delete_#{object.class.name.underscore}_watchers".to_sym, object.project) |
|
51 | object.watcher_users.collect do |user| | |
|
52 |
s = |
|
|
51 | lis = object.watcher_users.collect do |user| | |
|
52 | s = avatar(user, :size => "16").to_s + link_to_user(user, :class => 'user').to_s | |
|
53 | 53 | if remove_allowed |
|
54 | 54 | url = {:controller => 'watchers', |
|
55 | 55 | :action => 'destroy', |
@@ -59,9 +59,11 module WatchersHelper | |||
|
59 | 59 | s += ' ' + link_to_remote(image_tag('delete.png'), |
|
60 | 60 | {:url => url}, |
|
61 | 61 | :href => url_for(url), |
|
62 |
:style => "vertical-align: middle" |
|
|
62 | :style => "vertical-align: middle", | |
|
63 | :class => "delete") | |
|
63 | 64 | end |
|
64 | s | |
|
65 | end.join(",\n") | |
|
65 | "<li>#{ s }</li>" | |
|
66 | end | |
|
67 | lis.empty? ? "" : "<ul>#{ lis.join("\n") }</ul>" | |
|
66 | 68 | end |
|
67 | 69 | end |
@@ -77,14 +77,6 | |||
|
77 | 77 | </div> |
|
78 | 78 | <% end %> |
|
79 | 79 | |
|
80 | <% if User.current.allowed_to?(:add_issue_watchers, @project) || | |
|
81 | (@issue.watchers.any? && User.current.allowed_to?(:view_issue_watchers, @project)) %> | |
|
82 | <hr /> | |
|
83 | <div id="watchers"> | |
|
84 | <%= render :partial => 'watchers/watchers', :locals => {:watched => @issue} %> | |
|
85 | </div> | |
|
86 | <% end %> | |
|
87 | ||
|
88 | 80 | </div> |
|
89 | 81 | |
|
90 | 82 | <% if @changesets.any? %> |
@@ -121,7 +113,14 | |||
|
121 | 113 | <% html_title "#{@issue.tracker.name} ##{@issue.id}: #{@issue.subject}" %> |
|
122 | 114 | |
|
123 | 115 | <% content_for :sidebar do %> |
|
124 |
|
|
|
116 | <%= render :partial => 'issues/sidebar' %> | |
|
117 | ||
|
118 | <% if User.current.allowed_to?(:add_issue_watchers, @project) || | |
|
119 | (@issue.watchers.any? && User.current.allowed_to?(:view_issue_watchers, @project)) %> | |
|
120 | <div id="watchers"> | |
|
121 | <%= render :partial => 'watchers/watchers', :locals => {:watched => @issue} %> | |
|
122 | </div> | |
|
123 | <% end %> | |
|
125 | 124 | <% end %> |
|
126 | 125 | |
|
127 | 126 | <% content_for :header_tags do %> |
@@ -6,20 +6,21 | |||
|
6 | 6 | :object_id => watched} if User.current.allowed_to?(:add_issue_watchers, @project) %> |
|
7 | 7 | </div> |
|
8 | 8 | |
|
9 | <p><strong><%= l(:label_issue_watchers) %></strong></p> | |
|
10 | <%= watchers_list(watched) %> | |
|
9 | <h3><%= l(:label_issue_watchers) %> (<%= watched.watcher_users.size %>)</h3> | |
|
11 | 10 | |
|
12 | 11 | <% unless @watcher.nil? %> |
|
13 | <% remote_form_for(:watcher, @watcher, | |
|
14 | :url => {:controller => 'watchers', | |
|
15 | :action => 'new', | |
|
16 | :object_type => watched.class.name.underscore, | |
|
17 | :object_id => watched}, | |
|
18 | :method => :post, | |
|
19 | :html => {:id => 'new-watcher-form'}) do |f| %> | |
|
20 | <p><%= f.select :user_id, (watched.addable_watcher_users.collect {|m| [m.name, m.id]}), :prompt => "--- #{l(:actionview_instancetag_blank_option)} ---" %> | |
|
12 | <% remote_form_for(:watcher, @watcher, | |
|
13 | :url => {:controller => 'watchers', | |
|
14 | :action => 'new', | |
|
15 | :object_type => watched.class.name.underscore, | |
|
16 | :object_id => watched}, | |
|
17 | :method => :post, | |
|
18 | :html => {:id => 'new-watcher-form'}) do |f| %> | |
|
19 | <p><%= f.select :user_id, (watched.addable_watcher_users.collect {|m| [m.name, m.id]}), :prompt => "--- #{l(:actionview_instancetag_blank_option)} ---" %> | |
|
21 | 20 | |
|
22 | <%= submit_tag l(:button_add) %> | |
|
23 | <%= toggle_link l(:button_cancel), 'new-watcher-form'%></p> | |
|
24 | <% end %> | |
|
21 | <%= submit_tag l(:button_add) %> | |
|
22 | <%= toggle_link l(:button_cancel), 'new-watcher-form'%></p> | |
|
23 | <% end %> | |
|
25 | 24 | <% end %> |
|
25 | ||
|
26 | <%= watchers_list(watched) %> |
@@ -195,6 +195,13 div.members h3 { background: url(../images/group.png) no-repeat 0% 50%; padding- | |||
|
195 | 195 | div.news h3 { background: url(../images/news.png) no-repeat 0% 50%; padding-left: 20px; } |
|
196 | 196 | div.projects h3 { background: url(../images/projects.png) no-repeat 0% 50%; padding-left: 20px; } |
|
197 | 197 | |
|
198 | #watchers ul {margin: 0; padding: 0;} | |
|
199 | #watchers li {list-style-type:none;margin: 0px 2px 0px 0px; padding: 0px 0px 0px 0px;} | |
|
200 | #watchers select {width: 95%; display: block;} | |
|
201 | #watchers a.delete {opacity: 0.4;} | |
|
202 | #watchers a.delete:hover {opacity: 1;} | |
|
203 | #watchers img.gravatar {vertical-align: middle;margin-right: 4px;} | |
|
204 | ||
|
198 | 205 | .highlight { background-color: #FCFD8D;} |
|
199 | 206 | .highlight.token-1 { background-color: #faa;} |
|
200 | 207 | .highlight.token-2 { background-color: #afa;} |
General Comments 0
You need to be logged in to leave comments.
Login now