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