From 6eabf90b804e199f6a9c2b96ac4b293405da9897 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Tue, 6 Aug 2013 18:45:45 +0300 Subject: [PATCH] Ability to edit group member permissions --- app/assets/javascripts/behaviors/toggler_behavior.coffee | 5 +++++ app/assets/javascripts/extensions/jquery.js.coffee | 4 ++++ app/controllers/users_groups_controller.rb | 3 ++- app/views/users_groups/_users_group.html.haml | 14 +++++++++----- app/views/users_groups/update.js.haml | 2 ++ 5 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 app/views/users_groups/update.js.haml diff --git a/app/assets/javascripts/behaviors/toggler_behavior.coffee b/app/assets/javascripts/behaviors/toggler_behavior.coffee index d2181e7..c01db20 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 8a997fe..40fb6cb 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 36eb8db..df13b86 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 d3d08dd..c8d3068 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 0000000..5bad48a --- /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))}'); -- libgit2 0.21.2