Feature #17747 » private_role_redmine_4.2.patch
| app/controllers/reports_controller.rb (working copy) | ||
|---|---|---|
| 27 | 27 |
@versions = @project.shared_versions.sorted |
| 28 | 28 |
@priorities = IssuePriority.all.reverse |
| 29 | 29 |
@categories = @project.issue_categories |
| 30 |
@assignees = (Setting.issue_group_assignment? ? @project.principals : @project.users).sorted |
|
| 31 |
@authors = @project.users.sorted |
|
| 30 |
## begin patch private role |
|
| 31 |
#@assignees = (Setting.issue_group_assignment? ? @project.principals : @project.users).sorted |
|
| 32 |
@assignees = (Setting.issue_group_assignment? ? @project.principals : @project.users.visible).sorted |
|
| 33 |
#@authors = @project.users.sorted |
|
| 34 |
@authors = @project.users.visible.sorted |
|
| 35 |
## end patch private role |
|
| 32 | 36 |
@subprojects = @project.descendants.visible |
| 33 | 37 |
@issues_by_tracker = Issue.by_tracker(@project, with_subprojects) |
| 34 | 38 |
@issues_by_version = Issue.by_version(@project, with_subprojects) |
| ... | ... | |
| 66 | 70 |
@report_title = l(:field_category) |
| 67 | 71 |
when "assigned_to" |
| 68 | 72 |
@field = "assigned_to_id" |
| 69 |
@rows = (Setting.issue_group_assignment? ? @project.principals : @project.users).sorted |
|
| 73 |
## begin patch private role |
|
| 74 |
#@rows = (Setting.issue_group_assignment? ? @project.principals : @project.users).sorted |
|
| 75 |
@rows = (Setting.issue_group_assignment? ? @project.principals : @project.users).visible.sorted |
|
| 76 |
## end patch private role |
|
| 70 | 77 |
@data = Issue.by_assigned_to(@project, with_subprojects) |
| 71 | 78 |
@report_title = l(:field_assigned_to) |
| 72 | 79 |
when "author" |
| 73 | 80 |
@field = "author_id" |
| 74 |
@rows = @project.users.sorted |
|
| 81 |
## begin patch private role |
|
| 82 |
#@rows = @project.users.sorted |
|
| 83 |
@rows = @project.users.visible.sorted |
|
| 84 |
## end patch private role |
|
| 75 | 85 |
@data = Issue.by_author(@project, with_subprojects) |
| 76 | 86 |
@report_title = l(:field_author) |
| 77 | 87 |
when "subproject" |
| app/controllers/users_controller.rb (working copy) | ||
|---|---|---|
| 73 | 73 | |
| 74 | 74 |
def show |
| 75 | 75 |
unless @user.visible? |
| 76 |
render_404 |
|
| 76 |
## begin patch private role (revert revision 13584 - if user with private role (or non-member?) acts on issue, user should be visible) |
|
| 77 |
#render_404 |
|
| 78 |
render_403 |
|
| 79 |
## end patch private role |
|
| 77 | 80 |
return |
| 78 | 81 |
end |
| 79 | 82 | |
| app/models/principal.rb (working copy) | ||
|---|---|---|
| 59 | 59 |
else |
| 60 | 60 |
# self and members of visible projects |
| 61 | 61 |
active.where( |
| 62 |
"#{table_name}.id = ? OR #{table_name}.id IN (SELECT user_id FROM #{Member.table_name} WHERE project_id IN (?))",
|
|
| 62 |
## begin patch private role |
|
| 63 |
#"#{table_name}.id = ? OR #{table_name}.id IN (SELECT user_id FROM #{Member.table_name} WHERE project_id IN (?))",
|
|
| 64 |
"#{table_name}.id = ? OR #{table_name}.id IN (" +
|
|
| 65 |
"SELECT m.user_id FROM #{Member.table_name} m" +
|
|
| 66 |
" INNER JOIN #{MemberRole.table_name} mr ON m.id = mr.member_id" +
|
|
| 67 |
" INNER JOIN #{Role.table_name} r ON mr.role_id = r.id" +
|
|
| 68 |
" WHERE m.project_id IN (?) AND r.name NOT LIKE 'private.%')", |
|
| 69 |
## end patch private role |
|
| 63 | 70 |
user.id, user.visible_project_ids |
| 64 | 71 |
) |
| 65 | 72 |
end |
| app/models/project.rb (working copy) | ||
|---|---|---|
| 549 | 549 |
# Returns a hash of project users/groups grouped by role |
| 550 | 550 |
def principals_by_role |
| 551 | 551 |
memberships.includes(:principal, :roles).inject({}) do |h, m|
|
| 552 |
m.roles.each do |r| |
|
| 552 |
## begin patch private role |
|
| 553 |
#m.roles.each do |r| |
|
| 554 |
m.roles.non_private.each do |r| |
|
| 555 |
## end patch private role |
|
| 553 | 556 |
h[r] ||= [] |
| 554 | 557 |
h[r] << m.principal |
| 555 | 558 |
end |
| ... | ... | |
| 599 | 602 | |
| 600 | 603 |
scope = Principal. |
| 601 | 604 |
active. |
| 605 |
## begin patch private role |
|
| 606 |
visible. |
|
| 607 |
## end patch private role |
|
| 602 | 608 |
joins(:members => :roles). |
| 603 | 609 |
where(:type => types, :members => {:project_id => id}, :roles => {:assignable => true}).
|
| 604 | 610 |
distinct. |
| app/models/role.rb (working copy) | ||
|---|---|---|
| 54 | 54 |
] |
| 55 | 55 | |
| 56 | 56 |
scope :sorted, lambda {order(:builtin, :position)}
|
| 57 |
scope :givable, lambda {order(:position).where(:builtin => 0)}
|
|
| 57 |
## begin patch private role |
|
| 58 |
#scope :givable, lambda {order(:position).where(:builtin => 0)}
|
|
| 59 |
scope :givable, lambda {
|
|
| 60 |
if User.current.admin? |
|
| 61 |
order(:position).where(:builtin => 0) |
|
| 62 |
else |
|
| 63 |
order(:position).non_private.where(:builtin => 0) |
|
| 64 |
end |
|
| 65 |
} |
|
| 66 |
scope :non_private, lambda {
|
|
| 67 |
if User.current.admin? |
|
| 68 |
all |
|
| 69 |
else |
|
| 70 |
all.where("#{table_name}.name NOT LIKE 'private.%'")
|
|
| 71 |
end |
|
| 72 |
} |
|
| 73 |
## end patch private role |
|
| 58 | 74 |
scope :builtin, (lambda do |*args| |
| 59 | 75 |
compare = (args.first == true ? 'not' : '') |
| 60 | 76 |
where("#{compare} builtin = 0")
|
- « Previous
- 1
- …
- 3
- 4
- 5
- Next »