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 | 1 | class Projects::TeamMembersController < Projects::ApplicationController |
2 | 2 | # Authorize |
3 | - before_filter :authorize_admin_project! | |
3 | + before_filter :authorize_admin_project!, except: :leave | |
4 | 4 | |
5 | 5 | layout "project_settings" |
6 | 6 | |
... | ... | @@ -45,6 +45,15 @@ class Projects::TeamMembersController < Projects::ApplicationController |
45 | 45 | end |
46 | 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 | 57 | def apply_import |
49 | 58 | giver = Project.find(params[:source_project_id]) |
50 | 59 | status = @project.team.import(giver) | ... | ... |
app/models/project.rb
... | ... | @@ -317,7 +317,7 @@ class Project < ActiveRecord::Base |
317 | 317 | mrs = self.merge_requests.opened.by_branch(branch_name).all |
318 | 318 | # Update code for merge requests between project and project fork |
319 | 319 | mrs += self.fork_merge_requests.opened.by_branch(branch_name).all |
320 | - | |
320 | + | |
321 | 321 | mrs.each { |merge_request| merge_request.reload_code; merge_request.mark_as_unchecked } |
322 | 322 | |
323 | 323 | # Close merge requests |
... | ... | @@ -447,4 +447,8 @@ class Project < ActiveRecord::Base |
447 | 447 | order('id DESC').limit(100). |
448 | 448 | update_all(updated_at: Time.now) |
449 | 449 | end |
450 | + | |
451 | + def project_member(user) | |
452 | + users_projects.where(user_id: user).first | |
453 | + end | |
450 | 454 | end | ... | ... |
app/models/user.rb
app/views/dashboard/projects.html.haml
... | ... | @@ -54,7 +54,7 @@ |
54 | 54 | .span9 |
55 | 55 | %ul.bordered-list.my-projects.top-list |
56 | 56 | - @projects.each do |project| |
57 | - %li | |
57 | + %li.my-project-row | |
58 | 58 | %h4.project-title |
59 | 59 | = link_to project_path(project), class: dom_class(project) do |
60 | 60 | = project.name_with_namespace |
... | ... | @@ -63,6 +63,12 @@ |
63 | 63 | = public_icon |
64 | 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 | 72 | - if project.forked_from_project |
67 | 73 | %small.pull-right |
68 | 74 | %i.icon-code-fork |
... | ... | @@ -80,6 +86,7 @@ |
80 | 86 | %span.light Last activity: |
81 | 87 | %span.date= project_last_activity(project) |
82 | 88 | |
89 | + | |
83 | 90 | - if @projects.blank? |
84 | 91 | %li |
85 | 92 | %h3.nothing_here_message There are no projects here. | ... | ... |
config/routes.rb