summaryrefslogtreecommitdiff
path: root/app/views
diff options
context:
space:
mode:
Diffstat (limited to 'app/views')
-rw-r--r--app/views/layouts/nav/_project.html.haml18
-rw-r--r--app/views/notify/project_request_access_accepted_email.html.haml4
-rw-r--r--app/views/notify/project_request_access_accepted_email.text.erb3
-rw-r--r--app/views/notify/project_request_access_denied_email.html.haml4
-rw-r--r--app/views/notify/project_request_access_denied_email.text.erb3
-rw-r--r--app/views/projects/project_members/_pending.html.haml21
-rw-r--r--app/views/projects/project_members/_project_member.html.haml15
-rw-r--r--app/views/projects/project_members/index.html.haml3
8 files changed, 68 insertions, 3 deletions
diff --git a/app/views/layouts/nav/_project.html.haml b/app/views/layouts/nav/_project.html.haml
index 53d1fcc30a6..1336191bc5e 100644
--- a/app/views/layouts/nav/_project.html.haml
+++ b/app/views/layouts/nav/_project.html.haml
@@ -8,6 +8,19 @@
= icon('caret-down')
%ul.dropdown-menu.dropdown-menu-align-right
= render 'layouts/nav/project_settings'
+
+ - if access
+ %li
+ = link_to leave_namespace_project_project_members_path(@project.namespace, @project),
+ data: { confirm: leave_project_message(@project) }, method: :delete, title: 'Leave project' do
+ Leave Project
+ - else
+ = link_to request_access_namespace_project_project_members_path(@project.namespace, @project),
+ class: 'btn btn-gray', style: 'margin-left: 10px', method: :post, title: 'Request access' do
+ Request Access
+
+
+
%li.divider
- if can_edit
%li
@@ -18,6 +31,11 @@
= link_to leave_namespace_project_project_members_path(@project.namespace, @project),
data: { confirm: leave_project_message(@project) }, method: :delete, title: 'Leave project' do
Leave Project
+ - else
+ %li
+ = link_to request_access_namespace_project_project_members_path(@project.namespace, @project),
+ class: 'btn btn-gray', style: 'margin-left: 10px', method: :post, title: 'Request access' do
+ Request Access
%div{ class: nav_control_class }
%ul.nav-links.scrolling-tabs
diff --git a/app/views/notify/project_request_access_accepted_email.html.haml b/app/views/notify/project_request_access_accepted_email.html.haml
new file mode 100644
index 00000000000..dfdf82e70a5
--- /dev/null
+++ b/app/views/notify/project_request_access_accepted_email.html.haml
@@ -0,0 +1,4 @@
+%p
+ Your request to join project
+ #{link_to @project.name_with_namespace, namespace_project_url(@project.namespace, @project)}
+ has been granted with #{@project_member.human_access} access.
diff --git a/app/views/notify/project_request_access_accepted_email.text.erb b/app/views/notify/project_request_access_accepted_email.text.erb
new file mode 100644
index 00000000000..9fb68874494
--- /dev/null
+++ b/app/views/notify/project_request_access_accepted_email.text.erb
@@ -0,0 +1,3 @@
+Your request to join project <%= @project.name_with_namespace %> has been granted with <%= @project_member.human_access %> access.
+
+<%= namespace_project_url(@project.namespace, @project) %>
diff --git a/app/views/notify/project_request_access_denied_email.html.haml b/app/views/notify/project_request_access_denied_email.html.haml
new file mode 100644
index 00000000000..8ad75b96cf9
--- /dev/null
+++ b/app/views/notify/project_request_access_denied_email.html.haml
@@ -0,0 +1,4 @@
+%p
+ Your request to join project
+ #{link_to @project.name_with_namespace, namespace_project_url(@project.namespace, @project)}
+ has been denied.
diff --git a/app/views/notify/project_request_access_denied_email.text.erb b/app/views/notify/project_request_access_denied_email.text.erb
new file mode 100644
index 00000000000..a9c57e4cab4
--- /dev/null
+++ b/app/views/notify/project_request_access_denied_email.text.erb
@@ -0,0 +1,3 @@
+Your request to join project <%= @project.name_with_namespace %> has been denied.
+
+<%= namespace_project_url(@project.namespace, @project) %>
diff --git a/app/views/projects/project_members/_pending.html.haml b/app/views/projects/project_members/_pending.html.haml
new file mode 100644
index 00000000000..88ac36937ac
--- /dev/null
+++ b/app/views/projects/project_members/_pending.html.haml
@@ -0,0 +1,21 @@
+.panel.panel-default
+ .panel-heading
+ %strong #{@project.name}
+ candidates
+ %small
+ (#{members.count})
+ .controls
+ = form_tag namespace_project_project_members_path(@project.namespace, @project), method: :get, class: 'form-inline member-search-form' do
+ .form-group
+ = search_field_tag :search, params[:search], { placeholder: 'Find existing member by name', class: 'form-control', spellcheck: false }
+ = button_tag class: 'btn', title: 'Search' do
+ = icon("search")
+ %ul.content-list
+ - members.each do |project_member|
+ = render 'project_member', member: project_member
+
+:javascript
+ $('form.member-search-form').on('submit', function (event) {
+ event.preventDefault();
+ Turbolinks.visit(this.action + '?' + $(this).serialize());
+ });
diff --git a/app/views/projects/project_members/_project_member.html.haml b/app/views/projects/project_members/_project_member.html.haml
index 268f140d7db..3faf5dba8a2 100644
--- a/app/views/projects/project_members/_project_member.html.haml
+++ b/app/views/projects/project_members/_project_member.html.haml
@@ -13,6 +13,9 @@
- if user.blocked?
%label.label.label-danger
%strong Blocked
+ - if member.request?
+ %span.label.label-info
+ Pending Approval
- else
= image_tag avatar_icon(member.invite_email, 24), class: "avatar s24", alt: ''
%strong
@@ -27,7 +30,6 @@
- if can?(current_user, :admin_project_member, @project)
= link_to resend_invite_namespace_project_project_member_path(@project.namespace, @project, member), method: :post, class: "btn-xs btn", title: 'Resend invite' do
Resend invite
-
- if can?(current_user, :admin_project_member, @project)
.pull-right
%strong= member.human_access
@@ -35,10 +37,19 @@
= button_tag class: "btn-xs btn-grouped inline btn js-toggle-button",
title: 'Edit access level', type: 'button' do
= icon('pencil')
+ - if member.request?
+ &nbsp;
+ = link_to approval_namespace_project_project_member_path(@project.namespace, @project, member),
+ class: "btn-xs btn btn-success",
+ title: 'Grant access', type: 'button' do
+ %i.fa.fa-check.fa-inverse
- if can?(current_user, :destroy_project_member, member)
&nbsp;
- - if current_user == user
+ - if member.request?
+ = link_to namespace_project_project_member_path(@project.namespace, @project, member), data: { confirm: remove_from_project_team_message(@project, member) }, method: :delete, class: "btn-xs btn btn-remove", title: 'Deny access' do
+ %i.fa.fa-times.fa-inverse
+ - elsif current_user == user
= link_to leave_namespace_project_project_members_path(@project.namespace, @project), data: { confirm: leave_project_message(@project) }, method: :delete, class: "btn-xs btn btn-remove", title: 'Leave project' do
= icon("sign-out")
Leave
diff --git a/app/views/projects/project_members/index.html.haml b/app/views/projects/project_members/index.html.haml
index 15dc064e7ea..d5a19799c49 100644
--- a/app/views/projects/project_members/index.html.haml
+++ b/app/views/projects/project_members/index.html.haml
@@ -12,8 +12,9 @@
%p.light
Users with access to this project are listed below.
= render "new_project_member"
+ = render "pending", members: @project_members.request
- = render "team", members: @project_members
+ = render "team", members: @project_members.non_request
- if @group
= render "group_members", members: @group_members