Feature #3187 » view_own_issues.patch
| app/models/query.rb (copie de travail) | ||
|---|---|---|
| 334 | 334 |
elsif project |
| 335 | 335 |
project_clauses << "#{Project.table_name}.id = %d" % project.id
|
| 336 | 336 |
end |
| 337 |
project_clauses << Project.allowed_to_condition(User.current, :view_issues) |
|
| 338 | 337 |
project_clauses.join(' AND ')
|
| 339 | 338 |
end |
| 340 | 339 | |
| ... | ... | |
| 375 | 374 |
|
| 376 | 375 |
end if filters and valid? |
| 377 | 376 |
|
| 377 |
permissions = '('
|
|
| 378 |
permissions << Project.allowed_to_condition(User.current, :view_issues) |
|
| 379 |
permissions << ' OR ('
|
|
| 380 |
permissions << Project.allowed_to_condition(User.current, :view_own_issues) |
|
| 381 |
permissions << ' AND ' |
|
| 382 |
permissions << "#{Issue.table_name}.author_id = #{User.current.id.to_s}"
|
|
| 383 |
permissions << '))' |
|
| 384 | ||
| 385 |
filters_clauses << permissions |
|
| 386 | ||
| 378 | 387 |
(filters_clauses << project_statement).join(' AND ')
|
| 379 | 388 |
end |
| 380 | 389 |
|
| app/controllers/issues_controller.rb (copie de travail) | ||
|---|---|---|
| 106 | 106 |
end |
| 107 | 107 |
|
| 108 | 108 |
def show |
| 109 |
@journals = @issue.journals.find(:all, :include => [:user, :details], :order => "#{Journal.table_name}.created_on ASC")
|
|
| 110 |
@journals.each_with_index {|j,i| j.indice = i+1}
|
|
| 111 |
@journals.reverse! if User.current.wants_comments_in_reverse_order? |
|
| 112 |
@changesets = @issue.changesets |
|
| 113 |
@changesets.reverse! if User.current.wants_comments_in_reverse_order? |
|
| 114 |
@allowed_statuses = @issue.new_statuses_allowed_to(User.current) |
|
| 115 |
@edit_allowed = User.current.allowed_to?(:edit_issues, @project) |
|
| 116 |
@priorities = Enumeration.priorities |
|
| 117 |
@time_entry = TimeEntry.new |
|
| 118 |
respond_to do |format| |
|
| 119 |
format.html { render :template => 'issues/show.rhtml' }
|
|
| 120 |
format.atom { render :action => 'changes', :layout => false, :content_type => 'application/atom+xml' }
|
|
| 121 |
format.pdf { send_data(issue_to_pdf(@issue), :type => 'application/pdf', :filename => "#{@project.identifier}-#{@issue.id}.pdf") }
|
|
| 109 |
if User.current.allowed_to?(:view_issues, @project) or (User.current.allowed_to?(:view_own_issues, @project) and User.current == @issue.author) |
|
| 110 |
@journals = @issue.journals.find(:all, :include => [:user, :details], :order => "#{Journal.table_name}.created_on ASC")
|
|
| 111 |
@journals.each_with_index {|j,i| j.indice = i+1}
|
|
| 112 |
@journals.reverse! if User.current.wants_comments_in_reverse_order? |
|
| 113 |
@changesets = @issue.changesets |
|
| 114 |
@changesets.reverse! if User.current.wants_comments_in_reverse_order? |
|
| 115 |
@allowed_statuses = @issue.new_statuses_allowed_to(User.current) |
|
| 116 |
@edit_allowed = User.current.allowed_to?(:edit_issues, @project) |
|
| 117 |
@priorities = Enumeration.priorities |
|
| 118 |
@time_entry = TimeEntry.new |
|
| 119 |
respond_to do |format| |
|
| 120 |
format.html { render :template => 'issues/show.rhtml' }
|
|
| 121 |
format.atom { render :action => 'changes', :layout => false, :content_type => 'application/atom+xml' }
|
|
| 122 |
format.pdf { send_data(issue_to_pdf(@issue), :type => 'application/pdf', :filename => "#{@project.identifier}-#{@issue.id}.pdf") }
|
|
| 123 |
end |
|
| 124 |
else |
|
| 125 |
render_403 |
|
| 122 | 126 |
end |
| 123 | 127 |
end |
| 124 | 128 | |
| app/views/issues/_sidebar.rhtml (copie de travail) | ||
|---|---|---|
| 1 | 1 |
<h3><%= l(:label_issue_plural) %></h3> |
| 2 |
<% if User.current.allowed_to?(:view_issues, @project) or User.current.allowed_to?(:view_own_issues, @project) %> |
|
| 2 | 3 |
<%= link_to l(:label_issue_view_all), { :controller => 'issues', :action => 'index', :project_id => @project, :set_filter => 1 } %><br />
|
| 3 |
<% if @project %> |
|
| 4 |
<% end %> |
|
| 5 |
<% if @project and User.current.allowed_to?(:view_issues, @project) %> |
|
| 4 | 6 |
<%= link_to l(:field_summary), :controller => 'reports', :action => 'issue_report', :id => @project %><br /> |
| 5 | 7 |
<%= link_to l(:label_change_log), :controller => 'projects', :action => 'changelog', :id => @project %><br /> |
| 6 | 8 |
<% end %> |
| lib/redmine.rb (copie de travail) | ||
|---|---|---|
| 34 | 34 |
:issues => [:index, :changes, :show, :context_menu], |
| 35 | 35 |
:versions => [:show, :status_by], |
| 36 | 36 |
:queries => :index, |
| 37 |
:reports => :issue_report}, :public => true |
|
| 37 |
:reports => :issue_report} |
|
| 38 |
map.permission :view_own_issues, {:issues => [:index, :changes, :show], :queries => :index}
|
|
| 38 | 39 |
map.permission :add_issues, {:issues => :new}
|
| 39 | 40 |
map.permission :edit_issues, {:issues => [:edit, :reply, :bulk_edit]}
|
| 40 | 41 |
map.permission :manage_issue_relations, {:issue_relations => [:new, :destroy]}
|