From 04ac5b69acc3b851f399a5b1af917593032a5ed2 Mon Sep 17 00:00:00 2001 From: Ozzie Isaacs Date: Sun, 18 Apr 2021 12:01:11 +0200 Subject: [PATCH] Further improvements on user list #1938 --- cps/static/js/table.js | 177 +++++++++++++++++----------------- cps/templates/user_table.html | 19 ++-- 2 files changed, 100 insertions(+), 96 deletions(-) diff --git a/cps/static/js/table.js b/cps/static/js/table.js index d5a070c9..3f3b431f 100644 --- a/cps/static/js/table.js +++ b/cps/static/js/table.js @@ -177,7 +177,6 @@ $(function() { }, }); - $("#domain_allow_submit").click(function(event) { event.preventDefault(); $("#domain_add_allow").ajaxForm(); @@ -388,7 +387,6 @@ $(function() { var target = $(e.relatedTarget).attr('id'); var dataId; $(e.relatedTarget).one('focus', function(e){$(this).blur();}); - //$(e.relatedTarget).blur(); if ($(e.relatedTarget).hasClass("button_head")) { dataId = $('#user-table').bootstrapTable('getSelections').map(a => a.id); } else { @@ -454,18 +452,28 @@ $(function() { $(this).next().text(elText); }); }, - onLoadSuccess: function () { - var guest = $(".editable[data-name='name'][data-value='Guest']"); - guest.editable("disable"); - $(".editable[data-name='locale'][data-pk='"+guest.data("pk")+"']").editable("disable"); - $("input[data-name='admin_role'][data-pk='"+guest.data("pk")+"']").prop("disabled", true); - $("input[data-name='passwd_role'][data-pk='"+guest.data("pk")+"']").prop("disabled", true); - $("input[data-name='edit_shelf_role'][data-pk='"+guest.data("pk")+"']").prop("disabled", true); - $("input[data-name='sidebar_read_and_unread'][data-pk='"+guest.data("pk")+"']").prop("disabled", true); - $(".user-remove[data-pk='"+guest.data("pk")+"']").hide(); + onPostHeader () { + deactivateHeaderButtons(); }, - onSort: function(a, b) { - console.log("huh"); + onLoadSuccess: function () { + loadSuccess(); + var element = $(".header_select"); + element.each(function() { + var item = $(this).parent(); + var parent = item.parent().parent(); + if (parent.prop('nodeName') === "TH") { + item.prependTo(parent); + } + }); + var element = $(".form-check"); + element.each(function() { + var item = $(this).parent(); + var parent = item.parent().parent(); + if (parent.prop('nodeName') === "TH") { + item.prependTo(parent); + } + }); + }, onColumnSwitch: function () { var visible = $("#user-table").bootstrapTable("getVisibleColumns"); @@ -491,7 +499,18 @@ $(function() { $("#user_delete_selection").click(function() { $("#user-table").bootstrapTable("uncheckAll"); }); - + $("#select_locale").on("change",function() { + selectHeader(this, "locale"); + }); + $("#select_default_language").on("change",function() { + selectHeader(this, "default_language"); + }); + $(".check_head").on("change",function() { + var val = $(this).val() === "on"; + var name = $(this).data("name"); + var data = $(this).data("val"); + checkboxHeader(val, name, data); + }); function user_handle (userId) { $.ajax({ method:"post", @@ -505,6 +524,7 @@ $(function() { timeout: 900, success:function(data) { $("#user-table").bootstrapTable("load", data); + loadSuccess(); } }); } @@ -560,10 +580,6 @@ function TableActions (value, row) { ].join(""); } -function editEntry(param) -{ - console.log(param); -} /* Function for deleting domain restrictions */ function RestrictionActions (value, row) { return [ @@ -582,7 +598,7 @@ function EbookActions (value, row) { ].join(""); } -/* Function for deleting books */ +/* Function for deleting Users */ function UserActions (value, row) { return [ "
", @@ -610,33 +626,55 @@ function checkboxFormatter(value, row, index){ return ''; } +function loadSuccess() { + var guest = $(".editable[data-name='name'][data-value='Guest']"); + guest.editable("disable"); + $(".editable[data-name='locale'][data-pk='"+guest.data("pk")+"']").editable("disable"); + $(".editable[data-name='locale'][data-pk='"+guest.data("pk")+"']").hide(); + $("input[data-name='admin_role'][data-pk='"+guest.data("pk")+"']").prop("disabled", true); + $("input[data-name='passwd_role'][data-pk='"+guest.data("pk")+"']").prop("disabled", true); + $("input[data-name='edit_shelf_role'][data-pk='"+guest.data("pk")+"']").prop("disabled", true); + $("input[data-name='sidebar_read_and_unread'][data-pk='"+guest.data("pk")+"']").prop("disabled", true); + $(".user-remove[data-pk='"+guest.data("pk")+"']").hide(); +} + +function handleListServerResponse (data, disableButtons) { + $("#flash_success").remove(); + $("#flash_danger").remove(); + if (!jQuery.isEmptyObject(data)) { + $( ".navbar" ).after( '
' + + '
'+data.message+'
' + + '
'); + } + $.ajax({ + method: "get", + url: window.location.pathname + "/../../ajax/listusers", + async: true, + timeout: 900, + success: function (data) { + $("#user-table").bootstrapTable("load", data); + if (disableButtons) { + deactivateHeaderButtons(); + } + loadSuccess(); + } + }); +} + + function checkboxChange(checkbox, userId, field, field_index) { $.ajax({ method: "post", url: window.location.pathname + "/../../ajax/editlistusers/" + field, data: {"pk": userId, "field_index": field_index, "value": checkbox.checked}, - success: function (data) { - if (!jQuery.isEmptyObject(data)) { - $("#flash_success").remove(); - $("#flash_danger").remove(); - $( ".navbar" ).after( '
' + - '
'+data.message+'
' + - '
'); - } - $.ajax({ - method: "get", - url: window.location.pathname + "/../../ajax/listusers", - async: true, - timeout: 900, - success: function (data) { - $("#user-table").bootstrapTable("load", data); - } - }); - } + error: function(data) { + handleListServerResponse({type:"danger", message:data.responseText}) + }, + success: handleListServerResponse }); } -function deactivateHeaderButtons(e) { +function deactivateHeaderButtons() { $("#user_delete_selection").addClass("disabled"); $("#user_delete_selection").attr("aria-disabled", true); $(".check_head").attr("aria-disabled", true); @@ -655,18 +693,10 @@ function selectHeader(element, field) { method: "post", url: window.location.pathname + "/../../ajax/editlistusers/" + field, data: {"pk": result, "value": element.value}, - success: function () { - $.ajax({ - method: "get", - url: window.location.pathname + "/../../ajax/listusers", - async: true, - timeout: 900, - success: function (data) { - $("#user-table").bootstrapTable("load", data); - deactivateHeaderButtons(); - } - }); - } + error: function (data) { + handleListServerResponse({type:"danger", message:data.responseText}) + }, + success: handleListServerResponse, }); }); } @@ -679,25 +709,12 @@ function checkboxHeader(CheckboxState, field, field_index) { method: "post", url: window.location.pathname + "/../../ajax/editlistusers/" + field, data: {"pk": result, "field_index": field_index, "value": CheckboxState}, - success: function () { - $.ajax({ - method: "get", - url: window.location.pathname + "/../../ajax/listusers", - async: true, - timeout: 900, - success: function (data) { - $("#user-table").bootstrapTable("load", data); - $("#user_delete_selection").addClass("disabled"); - $("#user_delete_selection").attr("aria-disabled", true); - $(".check_head").attr("aria-disabled", true); - $(".check_head").attr("disabled", true); - $(".check_head").prop('checked', false); - $(".button_head").attr("aria-disabled", true); - $(".button_head").addClass("disabled"); - $(".header_select").attr("disabled", true); - } - }); - } + error: function (data) { + handleListServerResponse({type:"danger", message:data.responseText}, true) + }, + success: function (data) { + handleListServerResponse (data, true) + }, }); }); } @@ -712,24 +729,10 @@ function deleteUser(a,b){ method:"post", url: window.location.pathname + "/../../ajax/deleteuser", data: {"userid":b}, - success:function(data) { - $("#flash_success").remove(); - $("#flash_danger").remove(); - if (!jQuery.isEmptyObject(data)) { - $( ".navbar" ).after( '
' + - '
'+data.message+'
' + - '
'); - } - $.ajax({ - method: "get", - url: window.location.pathname + "/../../ajax/listusers", - async: true, - timeout: 900, - success: function (data) { - $("#user-table").bootstrapTable("load", data); - } - }); - } + success: handleListServerResponse, + error: function (data) { + handleListServerResponse({type:"danger", message:data.responseText}) + }, }); } ); diff --git a/cps/templates/user_table.html b/cps/templates/user_table.html index c538dfa4..6cfa09cf 100644 --- a/cps/templates/user_table.html +++ b/cps/templates/user_table.html @@ -23,16 +23,18 @@ data-visible="{{element.get(array_field)}}" data-column="{{value.get(array_field)}}" data-formatter="checkboxFormatter"> -
+
+
-
+
+
{{show_text}} {%- endmacro %} @@ -48,14 +50,13 @@ data-editable-source={{url}} {% if validate %}data-edit-validate="{{ _('This Field is Required') }}"{% endif %}>
- {% for language in languages %} {% endfor %} -

- +
{{ show_text }} {%- endmacro %} @@ -71,13 +72,13 @@ data-editable-source={{url}} {% if validate %}data-edit-validate="{{ _('This Field is Required') }}"{% endif %}>
- {% for translation in translations %} {% endfor %} -

+
{{ show_text }} {%- endmacro %}