Commit f6f414ce3b8c252779e78cfd1a6470dc03e2e374
Committed by
Dmitriy Zaporozhets
1 parent
ccf8fa4f
Exists in
master
and in
4 other branches
refactoring project team members controller (corresponding mental model)
Showing
8 changed files
with
45 additions
and
40 deletions
Show diff stats
app/controllers/team_members_controller.rb
... | ... | @@ -7,12 +7,12 @@ class TeamMembersController < ProjectResourceController |
7 | 7 | end |
8 | 8 | |
9 | 9 | def show |
10 | - @team_member = project.users_projects.find(params[:id]) | |
11 | - @events = @team_member.user.recent_events.where(:project_id => @project.id).limit(7) | |
10 | + @user_project_relation = project.users_projects.find_by_user_id(member) | |
11 | + @events = member.recent_events.in_projects(project).limit(7) | |
12 | 12 | end |
13 | 13 | |
14 | 14 | def new |
15 | - @team_member = project.users_projects.new | |
15 | + @user_project_relation = project.users_projects.new | |
16 | 16 | end |
17 | 17 | |
18 | 18 | def create |
... | ... | @@ -28,18 +28,18 @@ class TeamMembersController < ProjectResourceController |
28 | 28 | end |
29 | 29 | |
30 | 30 | def update |
31 | - @team_member = project.users_projects.find(params[:id]) | |
32 | - @team_member.update_attributes(params[:team_member]) | |
31 | + @user_project_relation = project.users_projects.find_by_user_id(member) | |
32 | + @user_project_relation.update_attributes(params[:team_member]) | |
33 | 33 | |
34 | - unless @team_member.valid? | |
34 | + unless @user_project_relation.valid? | |
35 | 35 | flash[:alert] = "User should have at least one role" |
36 | 36 | end |
37 | 37 | redirect_to project_team_index_path(@project) |
38 | 38 | end |
39 | 39 | |
40 | 40 | def destroy |
41 | - @team_member = project.users_projects.find(params[:id]) | |
42 | - @team_member.destroy | |
41 | + @user_project_relation = project.users_projects.find_by_user_id(params[:id]) | |
42 | + @user_project_relation.destroy | |
43 | 43 | |
44 | 44 | respond_to do |format| |
45 | 45 | format.html { redirect_to project_team_index_path(@project) } |
... | ... | @@ -54,4 +54,10 @@ class TeamMembersController < ProjectResourceController |
54 | 54 | |
55 | 55 | redirect_to project_team_members_path(project), notice: notice |
56 | 56 | end |
57 | + | |
58 | + protected | |
59 | + | |
60 | + def member | |
61 | + @member ||= User.find(params[:id]) | |
62 | + end | |
57 | 63 | end | ... | ... |
app/helpers/projects_helper.rb
... | ... | @@ -3,8 +3,8 @@ module ProjectsHelper |
3 | 3 | @project.users_projects.sort_by(&:project_access).reverse.group_by(&:project_access) |
4 | 4 | end |
5 | 5 | |
6 | - def remove_from_team_message(project, member) | |
7 | - "You are going to remove #{member.user_name} from #{project.name}. Are you sure?" | |
6 | + def remove_from_project_team_message(project, user) | |
7 | + "You are going to remove #{user.name} from #{project.name} project team. Are you sure?" | |
8 | 8 | end |
9 | 9 | |
10 | 10 | def link_to_project project | ... | ... |
app/views/team_members/_form.html.haml
1 | 1 | %h3.page_title |
2 | 2 | = "New Team member(s)" |
3 | 3 | %hr |
4 | -= form_for @team_member, as: :team_member, url: project_team_members_path(@project, @team_member) do |f| | |
5 | - -if @team_member.errors.any? | |
4 | += form_for @user_project_relation, as: :team_member, url: project_team_members_path(@project) do |f| | |
5 | + -if @user_project_relation.errors.any? | |
6 | 6 | .alert-message.block-message.error |
7 | 7 | %ul |
8 | - - @team_member.errors.full_messages.each do |msg| | |
8 | + - @user_project_relation.errors.full_messages.each do |msg| | |
9 | 9 | %li= msg |
10 | 10 | |
11 | 11 | %h6 1. Choose people you want in the team |
... | ... | @@ -16,7 +16,7 @@ |
16 | 16 | %h6 2. Set access level for them |
17 | 17 | .clearfix |
18 | 18 | = f.label :project_access, "Project Access" |
19 | - .input= select_tag :project_access, options_for_select(Project.access_options, @team_member.project_access), class: "project-access-select chosen" | |
19 | + .input= select_tag :project_access, options_for_select(Project.access_options, @user_project_relation.project_access), class: "project-access-select chosen" | |
20 | 20 | |
21 | 21 | .actions |
22 | 22 | = f.submit 'Save', class: "btn save-btn" | ... | ... |
app/views/team_members/_show.html.haml
1 | 1 | - user = member.user |
2 | 2 | - allow_admin = can? current_user, :admin_project, @project |
3 | -%li{id: dom_id(member), class: "team_member_row user_#{user.id}"} | |
3 | +%li{id: dom_id(user), class: "team_member_row user_#{user.id}"} | |
4 | 4 | .row |
5 | 5 | .span6 |
6 | - = link_to project_team_member_path(@project, member), title: user.name, class: "dark" do | |
6 | + = link_to project_team_member_path(@project, user), title: user.name, class: "dark" do | |
7 | 7 | = image_tag gravatar_icon(user.email, 40), class: "avatar s32" |
8 | - = link_to project_team_member_path(@project, member), title: user.name, class: "dark" do | |
8 | + = link_to project_team_member_path(@project, user), title: user.name, class: "dark" do | |
9 | 9 | %strong= truncate(user.name, lenght: 40) |
10 | 10 | %br |
11 | 11 | %small.cgray= user.email |
... | ... | @@ -13,7 +13,7 @@ |
13 | 13 | .span5.right |
14 | 14 | - if allow_admin |
15 | 15 | .left |
16 | - = form_for(member, as: :team_member, url: project_team_member_path(@project, member)) do |f| | |
16 | + = form_for(member, as: :team_member, url: project_team_member_path(@project, member.user)) do |f| | |
17 | 17 | = f.select :project_access, options_for_select(UsersProject.access_roles, member.project_access), {}, class: "medium project-access-select span2" |
18 | 18 | .right |
19 | 19 | - if current_user == user |
... | ... | @@ -23,6 +23,6 @@ |
23 | 23 | - elsif user.blocked |
24 | 24 | %span.btn.disabled.blocked Blocked |
25 | 25 | - elsif allow_admin |
26 | - = link_to project_team_member_path(project_id: @project, id: member.id), confirm: remove_from_team_message(@project, member), method: :delete, class: "very_small btn danger" do | |
26 | + = link_to project_team_member_path(@project, user), confirm: remove_from_project_team_message(@project, user), method: :delete, class: "very_small btn danger" do | |
27 | 27 | %i.icon-minus.icon-white |
28 | 28 | ... | ... |
app/views/team_members/create.js.haml
app/views/team_members/index.html.haml
app/views/team_members/show.html.haml
1 | 1 | - allow_admin = can? current_user, :admin_project, @project |
2 | -- user = @team_member.user | |
3 | 2 | |
4 | 3 | .team_member_show |
5 | 4 | - if can? current_user, :admin_project, @project |
6 | - = link_to 'Remove from team', project_team_member_path(project_id: @project, id: @team_member.id), confirm: 'Are you sure?', method: :delete, class: "right btn danger" | |
5 | + = link_to 'Remove from team', project_team_member_path(@project, @member), confirm: 'Are you sure?', method: :delete, class: "right btn danger" | |
7 | 6 | .profile_avatar_holder |
8 | - = image_tag gravatar_icon(user.email, 60), class: "borders" | |
7 | + = image_tag gravatar_icon(@member.email, 60), class: "borders" | |
9 | 8 | %h3.page_title |
10 | - = user.name | |
11 | - %small (@#{user.username}) | |
9 | + = @member.name | |
10 | + %small (@#{@member.username}) | |
12 | 11 | |
13 | 12 | %hr |
14 | 13 | .back_link |
... | ... | @@ -21,34 +20,34 @@ |
21 | 20 | %table.lite |
22 | 21 | %tr |
23 | 22 | %td Email |
24 | - %td= mail_to user.email | |
23 | + %td= mail_to @member.email | |
25 | 24 | %tr |
26 | 25 | %td Skype |
27 | - %td= user.skype | |
28 | - - unless user.linkedin.blank? | |
26 | + %td= @member.skype | |
27 | + - unless @member.linkedin.blank? | |
29 | 28 | %tr |
30 | 29 | %td LinkedIn |
31 | - %td= user.linkedin | |
32 | - - unless user.twitter.blank? | |
30 | + %td= @member.linkedin | |
31 | + - unless @member.twitter.blank? | |
33 | 32 | %tr |
34 | 33 | %td Twitter |
35 | - %td= user.twitter | |
36 | - - unless user.bio.blank? | |
34 | + %td= @member.twitter | |
35 | + - unless @member.bio.blank? | |
37 | 36 | %tr |
38 | 37 | %td Bio |
39 | - %td= user.bio | |
38 | + %td= @member.bio | |
40 | 39 | .span6 |
41 | 40 | %table.lite |
42 | 41 | %tr |
43 | 42 | %td Member since |
44 | - %td= @team_member.created_at.stamp("Aug 21, 2011") | |
43 | + %td= @user_project_relation.created_at.stamp("Aug 21, 2011") | |
45 | 44 | %tr |
46 | 45 | %td |
47 | 46 | Project Access: |
48 | 47 | %small (#{link_to "read more", help_permissions_path, class: "vlink"}) |
49 | 48 | %td |
50 | - = form_for(@team_member, as: :team_member, url: project_team_member_path(@project, @team_member)) do |f| | |
51 | - = f.select :project_access, options_for_select(Project.access_options, @team_member.project_access), {}, class: "project-access-select", disabled: !allow_admin | |
49 | + = form_for(@user_project_relation, as: :team_member, url: project_team_member_path(@project, @member)) do |f| | |
50 | + = f.select :project_access, options_for_select(Project.access_options, @user_project_relation.project_access), {}, class: "project-access-select", disabled: !allow_admin | |
52 | 51 | %hr |
53 | 52 | = render @events |
54 | 53 | :javascript | ... | ... |
app/views/team_members/update.js.haml
1 | -- if @team_member.valid? | |
1 | +- if @user_project_relation.valid? | |
2 | 2 | :plain |
3 | - $("##{dom_id(@team_member)}").effect("highlight", {color: "#529214"}, 1000);; | |
3 | + $("##{dom_id(@user_project_relation)}").effect("highlight", {color: "#529214"}, 1000);; | |
4 | 4 | - else |
5 | 5 | :plain |
6 | - $("##{dom_id(@team_member)}").effect("highlight", {color: "#D12F19"}, 1000);; | |
6 | + $("##{dom_id(@user_project_relation)}").effect("highlight", {color: "#D12F19"}, 1000);; | ... | ... |