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 |