From 3dda2ca00e4b0a59af54b5db739da3c4f3d9cb02 Mon Sep 17 00:00:00 2001 From: Oláh István Gergely <olah.istvan.gergely@cloud.bme.hu> Date: Fri, 7 Mar 2014 12:05:35 +0100 Subject: [PATCH] dashboard: fix group-details member-removing ajax --- circle/dashboard/static/dashboard/group-details.js | 42 +++++++++++++++++++++++++++++++++++++++++- circle/dashboard/templates/dashboard/confirm/ajax-remove.html | 22 ++++++++++++++++++++++ circle/dashboard/templates/dashboard/group-detail.html | 6 +++--- circle/dashboard/urls.py | 6 +++--- circle/dashboard/views.py | 10 +++++----- 5 files changed, 74 insertions(+), 12 deletions(-) create mode 100644 circle/dashboard/templates/dashboard/confirm/ajax-remove.html diff --git a/circle/dashboard/static/dashboard/group-details.js b/circle/dashboard/static/dashboard/group-details.js index 19b2f15..8a6be48 100644 --- a/circle/dashboard/static/dashboard/group-details.js +++ b/circle/dashboard/static/dashboard/group-details.js @@ -1,4 +1,3 @@ - /* rename */ $("#group-details-h1-name, .group-details-rename-button").click(function() { $("#group-details-h1-name").hide(); @@ -25,3 +24,44 @@ }); return false; }); + + /* for Node removes buttons */ + $('.delete-from-group').click(function() { + var href = $(this).attr('href'); + var group = $(this).data('group_pk'); + var member = $(this).data('member_pk'); + var dir = window.location.pathname.indexOf('list') == -1; + addModalConfirmation(removeMember, + { 'url': href, + 'data': [], + 'group_pk': group, + 'member_pk': member, + 'type': "user", + 'redirect': dir}); + + return false; + }); + +function removeMember(data) { + $.ajax({ + type: 'POST', + url: data['url'], + headers: {"X-CSRFToken": getCookie('csrftoken')}, + success: function(re, textStatus, xhr) { + if(!data['redirect']) { + selected = []; + addMessage(re['message'], 'success'); + $('a[data-'+data['type']+'-pk="' + data['pk'] + '"]').closest('tr').fadeOut(function() { + $(this).remove(); + }); + } else { + window.location.replace('/dashboard'); + } + }, + error: function(xhr, textStatus, error) { + addMessage('Uh oh :(', 'danger') + } + }); +} + + diff --git a/circle/dashboard/templates/dashboard/confirm/ajax-remove.html b/circle/dashboard/templates/dashboard/confirm/ajax-remove.html new file mode 100644 index 0000000..794b1fd --- /dev/null +++ b/circle/dashboard/templates/dashboard/confirm/ajax-remove.html @@ -0,0 +1,22 @@ +{% load i18n %} +<div class="modal fade" id="confirmation-modal" tabindex="-1" role="dialog"> + <div class="modal-dialog"> + <div class="modal-content"> + <div class="modal-body"> + {% if text %} + {{ text }} + {% else %} + {%blocktrans with object=object%} + Are you sure you want to remove <strong>{{ member }}</strong> from <strong>{{ object }}</strong>? + {%endblocktrans%} + {% endif %} + <br /> + <div class="pull-right" style="margin-top: 15px;"> + <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button> + <button id="confirmation-modal-button" type="button" class="btn btn-warning">Remove</button> + </div> + <div class="clearfix"></div> + </div> + </div><!-- /.modal-content --> + </div><!-- /.modal-dialog --> +</div> diff --git a/circle/dashboard/templates/dashboard/group-detail.html b/circle/dashboard/templates/dashboard/group-detail.html index b334606..b220ab7 100644 --- a/circle/dashboard/templates/dashboard/group-detail.html +++ b/circle/dashboard/templates/dashboard/group-detail.html @@ -40,7 +40,7 @@ <thead><tr><th></th><th>{% trans "Who" %}</th><th></th><th></th></tr></thead> {% for i in users %} <tr><td><i class="icon-user"></i></td><td>{{i.username}}</td> - <td><a data-groupmember-pk="{{i.pk}}" href="{% url "dashboard.views.remove-user" user_pk=i.pk group_pk=group.pk %}?next={{ request.path }}" class="real-link groupmember-delete btn btn-link btn-xs"><i class="icon-remove"><span class="sr-only">{% trans "remove" %}</span></i></a></td></tr> + <td><a data-group_pk="{{ group.pk }}" data-member_pk="{{i.pk}}" href="{% url "dashboard.views.remove-user" member_pk=i.pk group_pk=group.pk %}?next={{ request.path }}" class="real-link delete-from-group btn btn-link btn-xs"><i class="icon-remove"><span class="sr-only">{% trans "remove" %}</span></i></a></td></tr> {% endfor %} <tr><td><i class="icon-plus"></i></td> <td><input type="text" class="form-control" name="list-new-name" @@ -66,7 +66,7 @@ <option{%if id = i.level%} selected="selected"{%endif%} value="{{id}}">{{name}}</option> {% endfor %} </select></td> - <td class="user-remove"><a data-groupaclmember-pk="{{i.user.id}}" href="{% url "dashboard.views.remove-acluser" user_pk=i.user.pk group_pk=group.pk %}?next={{ request.path }}" class="real-link groupacl-delete btn btn-link btn-xs"><i class="icon-remove"><span class="sr-only">{% trans "remove" %}</span></i></a></td></tr> + <td class="user-remove"><a data-group_pk="{{ group.pk }}" data-member_pk="{{i.user.pk }}" href="{% url "dashboard.views.remove-acluser" member_pk=i.user.pk group_pk=group.pk %}?next={{ request.path }}" class="real-link delete-from-group btn btn-link btn-xs"><i class="icon-remove"><span class="sr-only">{% trans "remove" %}</span></i></a></td></tr> {% endfor %} {% for i in acl.groups %} <tr><td><i class="icon-user"></i></td><td>{{ i.group }}</td> @@ -75,7 +75,7 @@ <option{%if id = i.level%} selected="selected"{%endif%} value="{{id}}">{{name}}</option> {% endfor %} </select></td> - <td class="user-remove"><a data-groupaclmember-pk="{{i.group.pk }}" href="{% url "dashboard.views.remove-aclgroup" user_pk=i.group.pk group_pk=group.pk %}?next={{ request.path }}" class="real-link groupacl-delete btn btn-link btn-xs"><i class="icon-remove"><span class="sr-only">{% trans "remove" %}</span></i></a></td></tr> + <td class="user-remove"><a data-group_pk="{{ i.pk }}"data-member_pk="{{i.group.pk }}" href="{% url "dashboard.views.remove-aclgroup" member_pk=i.group.pk group_pk=group.pk %}?next={{ request.path }}" class="real-link delete-from-group btn btn-link btn-xs"><i class="icon-remove"><span class="sr-only">{% trans "remove" %}</span></i></a></td></tr> {% endfor %} <tr><td><i class="icon-plus"></i></td> <td><input type="text" class="form-control" name="perm-new-name" diff --git a/circle/dashboard/urls.py b/circle/dashboard/urls.py index bc6c25b..c1bd39b 100644 --- a/circle/dashboard/urls.py +++ b/circle/dashboard/urls.py @@ -103,13 +103,13 @@ urlpatterns = patterns( name="dashboard.views.disk-add"), url(r'^profile/$', MyPreferencesView.as_view(), name="dashboard.views.profile"), - url(r'^group/(?P<group_pk>\d+)/remove/acl/user/(?P<user_pk>\d+)/$', + url(r'^group/(?P<group_pk>\d+)/remove/acl/user/(?P<member_pk>\d+)/$', GroupRemoveAclUserView.as_view(), name="dashboard.views.remove-acluser"), - url(r'^group/(?P<group_pk>\d+)/remove/acl/group/(?P<user_pk>\d+)/$', + url(r'^group/(?P<group_pk>\d+)/remove/acl/group/(?P<member_pk>\d+)/$', GroupRemoveAclGroupView.as_view(), name="dashboard.views.remove-aclgroup"), - url(r'^group/(?P<group_pk>\d+)/remove/user/(?P<user_pk>\d+)/$', + url(r'^group/(?P<group_pk>\d+)/remove/user/(?P<member_pk>\d+)/$', GroupRemoveUserView.as_view(), name="dashboard.views.remove-user"), url(r'^group/create/$', GroupCreate.as_view(), diff --git a/circle/dashboard/views.py b/circle/dashboard/views.py index 7adc300..62b7ae7 100644 --- a/circle/dashboard/views.py +++ b/circle/dashboard/views.py @@ -1012,7 +1012,7 @@ class GroupRemoveUserView(LoginRequiredMixin, DeleteView): def get_context_data(self, **kwargs): context = super(GroupRemoveUserView, self).get_context_data(**kwargs) try: - context['member'] = User.objects.get(pk=self.user_pk) + context['member'] = User.objects.get(pk=self.member_pk) except User.DoesNotExist: raise Http404() return context @@ -1024,8 +1024,8 @@ class GroupRemoveUserView(LoginRequiredMixin, DeleteView): else: return reverse_lazy('dashboard.views.group-list') - def get(self, request, user_pk, *args, **kwargs): - self.user_pk = user_pk + def get(self, request, member_pk, *args, **kwargs): + self.member_pk = member_pk return super(GroupRemoveUserView, self).get(request, *args, **kwargs) def get_template_names(self): @@ -1042,7 +1042,7 @@ class GroupRemoveUserView(LoginRequiredMixin, DeleteView): return _("Member successfully removed from group!") def delete(self, request, *args, **kwargs): - self.remove_member(kwargs["user_pk"]) + self.remove_member(kwargs["member_pk"]) success_url = self.get_success_url() success_message = self.get_success_message() @@ -1071,7 +1071,7 @@ class GroupRemoveAclGroupView(GroupRemoveUserView): def get_context_data(self, **kwargs): context = super(GroupRemoveUserView, self).get_context_data(**kwargs) try: - context['member'] = Group.objects.get(pk=self.user_pk) + context['member'] = Group.objects.get(pk=self.member_pk) except User.DoesNotExist: raise Http404() return context -- libgit2 0.26.0