Ver Fonte

[useradmin] Bulk delete groups frontend

Refactored templates to emulate the delete users files to pass names to
backend instead of individual group names.
Paul McCaughtry há 11 anos atrás
pai
commit
e2780ba9cd

+ 13 - 9
apps/useradmin/src/useradmin/templates/delete_group.mako

@@ -16,13 +16,17 @@
 <%!
 <%!
 from django.utils.translation import ugettext as _
 from django.utils.translation import ugettext as _
 %>
 %>
-<form id="deleteGroupForm" action="${path}" method="POST">
-<div class="modal-header">
-    <a href="#" class="close" data-dismiss="modal">&times;</a>
-    <h3 id="deleteGroupMessage">${_("Are you sure you want to delete")} ${groupname}${_("?")}</h3>
-</div>
-<div class="modal-footer">
-    <a href="javascript:void(0);" class="btn" data-dismiss="modal">${_('No')}</a>
-    <input type="submit" class="btn btn-danger" value="${_('Yes')}"/>
-</div>
+<form id="deleteGroupForm" action="${ url('useradmin.views.delete_group') }" method="POST">
+  <div class="modal-header">
+      <a href="#" class="close" data-dismiss="modal">&times;</a>
+      <h3 id="deleteGroupMessage">${_("Are you sure you want to delete the selected group(s)?")}</h3>
+  </div>
+  <div class="modal-footer">
+      <a href="javascript:void(0);" class="btn" data-dismiss="modal">${_('No')}</a>
+      <input type="submit" class="btn btn-danger" value="${_('Yes')}"/>
+  </div>
+  <div class="hide">
+    <select name="group_ids" data-bind="options: availableUsers, selectedOptions: chosenUsers"
+            multiple="true"></select>
+  </div>
 </form>
 </form>

+ 20 - 2
apps/useradmin/src/useradmin/templates/list_groups.mako

@@ -83,7 +83,7 @@ ${layout.menubar(section='groups')}
           <td>
           <td>
             %if user.is_superuser:
             %if user.is_superuser:
               <strong><a title="${_('Edit %(groupname)s') % dict(groupname=group.name)}"
               <strong><a title="${_('Edit %(groupname)s') % dict(groupname=group.name)}"
-                         href="${ url('useradmin.views.edit_group', name=urllib.quote(group.name)) }"
+                         href="${ url('useradmin.views.edit_group', name=urllib.quote(group.name))}"
                          data-row-selector="true">${group.name}</a></strong>
                          data-row-selector="true">${group.name}</a></strong>
             %else:
             %else:
               <strong>${group.name}</strong>
               <strong>${group.name}</strong>
@@ -109,8 +109,16 @@ ${layout.menubar(section='groups')}
 
 
 <div id="deleteGroup" class="modal hide fade groupModal"></div>
 <div id="deleteGroup" class="modal hide fade groupModal"></div>
 
 
+<script src="/static/ext/js/knockout-min.js" type="text/javascript" charset="utf-8"></script>
 <script type="text/javascript" charset="utf-8">
 <script type="text/javascript" charset="utf-8">
   $(document).ready(function () {
   $(document).ready(function () {
+    var viewModel = {
+      availableUsers: ko.observableArray(${ groups_json | n }),
+      chosenUsers: ko.observableArray([])
+    };
+
+    ko.applyBindings(viewModel);
+
     $(".datatables").dataTable({
     $(".datatables").dataTable({
       "bPaginate": false,
       "bPaginate": false,
       "bLengthChange": false,
       "bLengthChange": false,
@@ -172,7 +180,7 @@ ${layout.menubar(section='groups')}
     });
     });
 
 
     function toggleActions() {
     function toggleActions() {
-      if ($(".groupCheck[checked='checked']").length == 1) {
+      if ($(".groupCheck[checked='checked']").length > 0) {
         $("#deleteGroupBtn").removeAttr("disabled").data("confirmation-url", $(".groupCheck[checked='checked']").data("confirmation-url"));
         $("#deleteGroupBtn").removeAttr("disabled").data("confirmation-url", $(".groupCheck[checked='checked']").data("confirmation-url"));
       }
       }
       else {
       else {
@@ -180,6 +188,16 @@ ${layout.menubar(section='groups')}
       }
       }
     }
     }
 
 
+    $("#deleteGroupBtn").click(function () {
+      viewModel.chosenUsers.removeAll();
+
+      $(".hueCheckbox[checked='checked']").each(function (index) {
+        viewModel.chosenUsers.push($(this).data("id"));
+      });
+
+      $("#deleteGroup").modal("show");
+    });
+
     $("a[data-row-selector='true']").jHueRowSelector();
     $("a[data-row-selector='true']").jHueRowSelector();
   });
   });
 </script>
 </script>