summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJose Ivan Vargas <jvargas@gitlab.com>2016-12-23 16:29:00 -0600
committerJose Ivan Vargas <jvargas@gitlab.com>2017-01-03 10:52:14 -0600
commitad58dec2e1564e9c2d23dd32e5da8b12eeba965d (patch)
tree2d0877f1244b492a57c780aabd425b2a253ed4d9
parentdef6c43da15a38e1211cf733442efe01824e5150 (diff)
downloadgitlab-ce-ad58dec2e1564e9c2d23dd32e5da8b12eeba965d.tar.gz
Added groups to members section, added a members finder
-rw-r--r--app/assets/javascripts/dispatcher.js.es67
-rw-r--r--app/assets/javascripts/member_expiration_date.js10
-rw-r--r--app/controllers/projects/group_links_controller.rb7
-rw-r--r--app/controllers/projects/settings/members_controller.rb13
-rw-r--r--app/finders/members_finder.rb13
-rw-r--r--app/views/projects/group_links/_index.html.haml (renamed from app/views/projects/group_links/index.html.haml)2
-rw-r--r--app/views/projects/settings/members/show.html.haml3
7 files changed, 35 insertions, 20 deletions
diff --git a/app/assets/javascripts/dispatcher.js.es6 b/app/assets/javascripts/dispatcher.js.es6
index 75e048cd7f8..496fa9903cc 100644
--- a/app/assets/javascripts/dispatcher.js.es6
+++ b/app/assets/javascripts/dispatcher.js.es6
@@ -215,8 +215,9 @@
new gl.Members();
new UsersSelect();
break;
- case 'projects:project_members:index':
case 'projects:members:show':
+ new gl.MemberExpirationDate('.js-access-expiration-date-groups');
+ new GroupsSelect();
new gl.MemberExpirationDate();
new gl.Members();
new UsersSelect();
@@ -262,10 +263,6 @@
case 'projects:artifacts:browse':
new BuildArtifacts();
break;
- case 'projects:group_links:index':
- new gl.MemberExpirationDate();
- new GroupsSelect();
- break;
case 'search:show':
new Search();
break;
diff --git a/app/assets/javascripts/member_expiration_date.js b/app/assets/javascripts/member_expiration_date.js
index 7741cd29793..fded0881343 100644
--- a/app/assets/javascripts/member_expiration_date.js
+++ b/app/assets/javascripts/member_expiration_date.js
@@ -5,12 +5,16 @@
// `js-clear-input` element, then show that element when there is a value in the
// datepicker, and make clicking on that element clear the field.
//
- gl.MemberExpirationDate = function() {
+ gl.MemberExpirationDate = function(newSelector) {
function toggleClearInput() {
$(this).closest('.clearable-input').toggleClass('has-value', $(this).val() !== '');
}
- var inputs = $('.js-access-expiration-date');
+ var selector = '.js-access-expiration-date';
+ if (typeof newSelector !== 'undefined' && newSelector !== '') {
+ selector = newSelector;
+ }
+ var inputs = $(selector);
inputs.datepicker({
dateFormat: 'yy-mm-dd',
@@ -24,7 +28,7 @@
inputs.next('.js-clear-input').on('click', function(event) {
event.preventDefault();
- var input = $(this).closest('.clearable-input').find('.js-access-expiration-date');
+ var input = $(this).closest('.clearable-input').find(selector);
input.datepicker('setDate', null)
.trigger('change');
toggleClearInput.call(input);
diff --git a/app/controllers/projects/group_links_controller.rb b/app/controllers/projects/group_links_controller.rb
index 9eaf26a0dbf..4296283cd64 100644
--- a/app/controllers/projects/group_links_controller.rb
+++ b/app/controllers/projects/group_links_controller.rb
@@ -4,10 +4,7 @@ class Projects::GroupLinksController < Projects::ApplicationController
before_action :authorize_admin_project_member!, only: [:update]
def index
- @group_links = project.project_group_links.all
-
- @skip_groups = @group_links.pluck(:group_id)
- @skip_groups << project.namespace_id unless project.personal?
+ redirect_to namespace_project_settings_members_path
end
def create
@@ -19,7 +16,7 @@ class Projects::GroupLinksController < Projects::ApplicationController
project.project_group_links.create(
group: group,
group_access: params[:link_group_access],
- expires_at: params[:expires_at]
+ expires_at: params[:expires_at] || params[:expires_at_groups]
)
else
flash[:alert] = 'Please select a group.'
diff --git a/app/controllers/projects/settings/members_controller.rb b/app/controllers/projects/settings/members_controller.rb
index ee6be33c701..766a01ba5e1 100644
--- a/app/controllers/projects/settings/members_controller.rb
+++ b/app/controllers/projects/settings/members_controller.rb
@@ -2,7 +2,7 @@ module Projects
module Settings
class MembersController < Projects::ApplicationController
include SortingHelper
-
+
def show
@sort = params[:sort].presence || sort_value_name
@group_links = @project.project_group_links
@@ -12,15 +12,18 @@ module Projects
group = @project.group
+ # group links
+ @group_links = @project.project_group_links.all
+
+ @skip_groups = @group_links.pluck(:group_id)
+ @skip_groups << @project.namespace_id unless project.personal?
+
if group
# We need `.where.not(user_id: nil)` here otherwise when a group has an
# invitee, it would make the following query return 0 rows since a NULL
# user_id would be present in the subquery
# See http://stackoverflow.com/questions/129077/not-in-clause-and-null-values
- # FIXME: This whole logic should be moved to a finder!
- non_null_user_ids = @project_members.where.not(user_id: nil).select(:user_id)
- group_members = group.group_members.where.not(user_id: non_null_user_ids)
- group_members = group_members.non_invite unless can?(current_user, :admin_group, @group)
+ group_members = MembersFinder.new(@project, @group)
end
if params[:search].present?
diff --git a/app/finders/members_finder.rb b/app/finders/members_finder.rb
new file mode 100644
index 00000000000..b476b0bc184
--- /dev/null
+++ b/app/finders/members_finder.rb
@@ -0,0 +1,13 @@
+class MembersFinder < Projects::ApplicationController
+ def initialize(project_members, group)
+ @project_members = project_members
+ @group = group
+ end
+
+ def execute
+ non_null_user_ids = @project_members.where.not(user_id: nil).select(:user_id)
+ group_members = @group.group_members.where.not(user_id: non_null_user_ids)
+ group_members = group_members.non_invite unless can?(current_user, :admin_group, @group)
+ group_members
+ end
+end
diff --git a/app/views/projects/group_links/index.html.haml b/app/views/projects/group_links/_index.html.haml
index 1b0dbbb8111..585e8299c6b 100644
--- a/app/views/projects/group_links/index.html.haml
+++ b/app/views/projects/group_links/_index.html.haml
@@ -20,7 +20,7 @@
.form-group
= label_tag :expires_at, 'Access expiration date', class: 'label-light'
.clearable-input
- = text_field_tag :expires_at, nil, class: 'form-control js-access-expiration-date', placeholder: 'Select access expiration date'
+ = text_field_tag :expires_at_groups, nil, class: 'form-control js-access-expiration-date-groups', placeholder: 'Select access expiration date'
%i.clear-icon.js-clear-input
.help-block
On this date, all users in the group will automatically lose access to this project.
diff --git a/app/views/projects/settings/members/show.html.haml b/app/views/projects/settings/members/show.html.haml
index 36236b97236..78d6293b76b 100644
--- a/app/views/projects/settings/members/show.html.haml
+++ b/app/views/projects/settings/members/show.html.haml
@@ -1,3 +1,4 @@
- page_title "Members"
-=render "projects/project_members/index"
+= render "projects/project_members/index"
+= render "projects/group_links/index"