summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-08-06 18:45:45 +0300
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-08-06 18:45:45 +0300
commit6eabf90b804e199f6a9c2b96ac4b293405da9897 (patch)
tree131ea71ec9f6a2008ec6a0b3580ce9854ec496ca /app
parentf8137075d5a615e968a4b63af13e1c51c36153df (diff)
downloadgitlab-ce-6eabf90b804e199f6a9c2b96ac4b293405da9897.tar.gz
Ability to edit group member permissions
Diffstat (limited to 'app')
-rw-r--r--app/assets/javascripts/behaviors/toggler_behavior.coffee5
-rw-r--r--app/assets/javascripts/extensions/jquery.js.coffee4
-rw-r--r--app/controllers/users_groups_controller.rb3
-rw-r--r--app/views/users_groups/_users_group.html.haml14
-rw-r--r--app/views/users_groups/update.js.haml2
5 files changed, 22 insertions, 6 deletions
diff --git a/app/assets/javascripts/behaviors/toggler_behavior.coffee b/app/assets/javascripts/behaviors/toggler_behavior.coffee
index d2181e7b759..c01db203619 100644
--- a/app/assets/javascripts/behaviors/toggler_behavior.coffee
+++ b/app/assets/javascripts/behaviors/toggler_behavior.coffee
@@ -11,3 +11,8 @@ $ ->
container = $(".js-toggle-visibility-container")
container.toggleClass("hide")
e.preventDefault()
+
+ $("body").on "click", ".js-toggle-button", (e) ->
+ $(@).disableButton()
+ $(@).closest(".js-toggle-container").find(".js-toggle-content").show()
+ e.preventDefault()
diff --git a/app/assets/javascripts/extensions/jquery.js.coffee b/app/assets/javascripts/extensions/jquery.js.coffee
index 8a997fe318e..40fb6cb9fc3 100644
--- a/app/assets/javascripts/extensions/jquery.js.coffee
+++ b/app/assets/javascripts/extensions/jquery.js.coffee
@@ -7,3 +7,7 @@ $.fn.enableButton = ->
$(@).removeAttr('disabled').
removeClass('disabled')
+$.fn.disableButton = ->
+ $(@).attr('disabled', 'disabled').
+ addClass('disabled')
+
diff --git a/app/controllers/users_groups_controller.rb b/app/controllers/users_groups_controller.rb
index 36eb8dbbfa4..df13b86fdcd 100644
--- a/app/controllers/users_groups_controller.rb
+++ b/app/controllers/users_groups_controller.rb
@@ -13,7 +13,8 @@ class UsersGroupsController < ApplicationController
end
def update
- # TODO: implement
+ @member = @group.users_groups.find(params[:id])
+ @member.update_attributes(params[:users_group])
end
def destroy
diff --git a/app/views/users_groups/_users_group.html.haml b/app/views/users_groups/_users_group.html.haml
index d3d08dd5dea..c8d306838f7 100644
--- a/app/views/users_groups/_users_group.html.haml
+++ b/app/views/users_groups/_users_group.html.haml
@@ -1,6 +1,6 @@
- user = member.user
- return unless user
-%li{class: dom_class(member)}
+%li{class: "#{dom_class(member)} js-toggle-container", id: dom_id(member)}
= image_tag gravatar_icon(user.email, 16), class: "avatar s16"
%strong= user.name
%span.cgray= user.username
@@ -8,12 +8,16 @@
%span.label.label-success It's you
%span.pull-right
- - if @group.owners.include?(user)
- %span.label.label-info Group Owner
- - else
- = member.human_access
+ %strong= member.human_access
- if show_controls && user != @group.owner && user != current_user
+ = link_to '#', class: "btn-tiny btn js-toggle-button", title: 'Edit access level' do
+ %i.icon-edit
= link_to group_users_group_path(@group, member), confirm: remove_user_from_group_message(@group, user), method: :delete, remote: true, class: "btn-tiny btn btn-remove", title: 'Remove user from group' do
%i.icon-minus.icon-white
+ .edit-member.hide.js-toggle-content
+ = form_for [@group, member], remote: true do |f|
+ .alert.prepend-top-20
+ = f.select :group_access, options_for_select(UsersGroup.group_access_roles, member.group_access)
+ = f.submit 'Save', class: 'btn btn-save'
diff --git a/app/views/users_groups/update.js.haml b/app/views/users_groups/update.js.haml
new file mode 100644
index 00000000000..5bad48abafd
--- /dev/null
+++ b/app/views/users_groups/update.js.haml
@@ -0,0 +1,2 @@
+:plain
+ $("##{dom_id(@member)}").replaceWith('#{escape_javascript(render(@member, member: @member, show_controls: true))}');