Commit 94f8b51cb39ccad5dc5031688c4b87a93227fe1b
Exists in
master
and in
4 other branches
Merge branch 'feature/leave_project' of /home/git/repositories/gitlab/gitlabhq
Showing
5 changed files
with
29 additions
and
3 deletions
Show diff stats
app/controllers/projects/team_members_controller.rb
1 | class Projects::TeamMembersController < Projects::ApplicationController | 1 | class Projects::TeamMembersController < Projects::ApplicationController |
2 | # Authorize | 2 | # Authorize |
3 | - before_filter :authorize_admin_project! | 3 | + before_filter :authorize_admin_project!, except: :leave |
4 | 4 | ||
5 | layout "project_settings" | 5 | layout "project_settings" |
6 | 6 | ||
@@ -45,6 +45,15 @@ class Projects::TeamMembersController < Projects::ApplicationController | @@ -45,6 +45,15 @@ class Projects::TeamMembersController < Projects::ApplicationController | ||
45 | end | 45 | end |
46 | end | 46 | end |
47 | 47 | ||
48 | + def leave | ||
49 | + project.users_projects.find_by_user_id(current_user).destroy | ||
50 | + | ||
51 | + respond_to do |format| | ||
52 | + format.html { redirect_to :back } | ||
53 | + format.js { render nothing: true } | ||
54 | + end | ||
55 | + end | ||
56 | + | ||
48 | def apply_import | 57 | def apply_import |
49 | giver = Project.find(params[:source_project_id]) | 58 | giver = Project.find(params[:source_project_id]) |
50 | status = @project.team.import(giver) | 59 | status = @project.team.import(giver) |
app/models/project.rb
@@ -317,7 +317,7 @@ class Project < ActiveRecord::Base | @@ -317,7 +317,7 @@ class Project < ActiveRecord::Base | ||
317 | mrs = self.merge_requests.opened.by_branch(branch_name).all | 317 | mrs = self.merge_requests.opened.by_branch(branch_name).all |
318 | # Update code for merge requests between project and project fork | 318 | # Update code for merge requests between project and project fork |
319 | mrs += self.fork_merge_requests.opened.by_branch(branch_name).all | 319 | mrs += self.fork_merge_requests.opened.by_branch(branch_name).all |
320 | - | 320 | + |
321 | mrs.each { |merge_request| merge_request.reload_code; merge_request.mark_as_unchecked } | 321 | mrs.each { |merge_request| merge_request.reload_code; merge_request.mark_as_unchecked } |
322 | 322 | ||
323 | # Close merge requests | 323 | # Close merge requests |
@@ -447,4 +447,8 @@ class Project < ActiveRecord::Base | @@ -447,4 +447,8 @@ class Project < ActiveRecord::Base | ||
447 | order('id DESC').limit(100). | 447 | order('id DESC').limit(100). |
448 | update_all(updated_at: Time.now) | 448 | update_all(updated_at: Time.now) |
449 | end | 449 | end |
450 | + | ||
451 | + def project_member(user) | ||
452 | + users_projects.where(user_id: user).first | ||
453 | + end | ||
450 | end | 454 | end |
app/models/user.rb
app/views/dashboard/projects.html.haml
@@ -54,7 +54,7 @@ | @@ -54,7 +54,7 @@ | ||
54 | .span9 | 54 | .span9 |
55 | %ul.bordered-list.my-projects.top-list | 55 | %ul.bordered-list.my-projects.top-list |
56 | - @projects.each do |project| | 56 | - @projects.each do |project| |
57 | - %li | 57 | + %li.my-project-row |
58 | %h4.project-title | 58 | %h4.project-title |
59 | = link_to project_path(project), class: dom_class(project) do | 59 | = link_to project_path(project), class: dom_class(project) do |
60 | = project.name_with_namespace | 60 | = project.name_with_namespace |
@@ -63,6 +63,12 @@ | @@ -63,6 +63,12 @@ | ||
63 | = public_icon | 63 | = public_icon |
64 | Public | 64 | Public |
65 | 65 | ||
66 | + - if current_user.can_leave_project?(project) | ||
67 | + .pull-right | ||
68 | + = link_to leave_project_team_members_path(project), confirm: "Leave project?", method: :delete, remote: true, class: "btn-tiny btn remove-row", title: 'Leave project' do | ||
69 | + %i.icon-signout | ||
70 | + Leave | ||
71 | + | ||
66 | - if project.forked_from_project | 72 | - if project.forked_from_project |
67 | %small.pull-right | 73 | %small.pull-right |
68 | %i.icon-code-fork | 74 | %i.icon-code-fork |
@@ -80,6 +86,7 @@ | @@ -80,6 +86,7 @@ | ||
80 | %span.light Last activity: | 86 | %span.light Last activity: |
81 | %span.date= project_last_activity(project) | 87 | %span.date= project_last_activity(project) |
82 | 88 | ||
89 | + | ||
83 | - if @projects.blank? | 90 | - if @projects.blank? |
84 | %li | 91 | %li |
85 | %h3.nothing_here_message There are no projects here. | 92 | %h3.nothing_here_message There are no projects here. |
config/routes.rb
@@ -288,6 +288,7 @@ Gitlab::Application.routes.draw do | @@ -288,6 +288,7 @@ Gitlab::Application.routes.draw do | ||
288 | 288 | ||
289 | resources :team_members, except: [:index, :edit], constraints: { id: /[a-zA-Z.\/0-9_\-#%+]+/ } do | 289 | resources :team_members, except: [:index, :edit], constraints: { id: /[a-zA-Z.\/0-9_\-#%+]+/ } do |
290 | collection do | 290 | collection do |
291 | + delete :leave | ||
291 | 292 | ||
292 | # Used for import team | 293 | # Used for import team |
293 | # from another project | 294 | # from another project |