From eb239843aafd8bd499a740faa3bc6f542f138de7 Mon Sep 17 00:00:00 2001 From: acognet Date: Mon, 4 Oct 2021 15:56:21 +0200 Subject: [PATCH] =?UTF-8?q?N=C2=B04347=20-=20Fix=20JS=20errors=20in=20cust?= =?UTF-8?q?om=20dashboards=20for=20list=20dahslets?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/dataTables.main.js | 4 +- .../components/datatable/layout.live.js.twig | 10 +- .../components/datatable/layout.ready.js.twig | 110 ++++++++++-------- 3 files changed, 66 insertions(+), 58 deletions(-) diff --git a/js/dataTables.main.js b/js/dataTables.main.js index 2685f4297..1ea483a2e 100644 --- a/js/dataTables.main.js +++ b/js/dataTables.main.js @@ -10,7 +10,7 @@ function checkAllDataTable(tableId, value, listId) { if (value) { selectionMode = 'negative'; } - window['oSelectedItems'+listId] = []; + window['oSelectedItems'+listId.replace(/[^a-zA-Z0-9_]/, '')] = []; // Mark all the displayed items as check or unchecked depending on the value tableSelector.find(':checkbox[name^=selectObj]:not([disabled])').each(function () { let currentCheckbox = $(this); @@ -40,7 +40,7 @@ function updateDataTableSelection(listId, tableId) { let selectionMode = $('#'+listId+' [name=selectionMode]').val(); selectionContainer.html(''); - let currentSelection = window['oSelectedItems'+listId]; + let currentSelection = window['oSelectedItems'+listId.replace(/[^a-zA-Z0-9_]/, '')]; for (let i in currentSelection) { let value = currentSelection[i]; selectionContainer.append(''); diff --git a/templates/base/components/datatable/layout.live.js.twig b/templates/base/components/datatable/layout.live.js.twig index fff532809..c1ed8fb41 100644 --- a/templates/base/components/datatable/layout.live.js.twig +++ b/templates/base/components/datatable/layout.live.js.twig @@ -1,9 +1,9 @@ {% if oUIBlock.GetOption("select_mode") is not empty %} - var oSelectedItems{{ oUIBlock.GetOption('sListId') }} = []; - {% if oUIBlock.GetOption("sSelectedRows") is not empty %} - oSelectedItems{{ oUIBlock.GetOption('sListId') }} = {{ oUIBlock.GetOption('sSelectedRows')|raw }}; - {% endif %} +var oSelectedItems{{ oUIBlock.GetOption('sListId') |sanitize(constant('utils::ENUM_SANITIZATION_FILTER_VARIABLE_NAME')) }} = []; +{% if oUIBlock.GetOption("sSelectedRows") is not empty %} +oSelectedItems{{ oUIBlock.GetOption('sListId') |sanitize(constant('utils::ENUM_SANITIZATION_FILTER_VARIABLE_NAME')) }} = {{ oUIBlock.GetOption('sSelectedRows')|raw }}; +{% endif %} {% endif %} -var bSelectAllowed{{ oUIBlock.GetId() }} = false; +var bSelectAllowed{{ oUIBlock.GetId()|sanitize(constant('utils::ENUM_SANITIZATION_FILTER_VARIABLE_NAME')) }} = false; diff --git a/templates/base/components/datatable/layout.ready.js.twig b/templates/base/components/datatable/layout.ready.js.twig index d4c2c6dee..c48713710 100644 --- a/templates/base/components/datatable/layout.ready.js.twig +++ b/templates/base/components/datatable/layout.ready.js.twig @@ -66,7 +66,7 @@ var oTable{{ sListIDForVarSuffix }} = $('#{{ oUIBlock.GetId() }}').DataTable({ rowCallback: function (oRow, oData) { if ($(this).closest('.ibo-panel--body').find('[name=selectionMode]').val() === "negative") { - if (oSelectedItems{{ sListId }}.indexOf(oData.id) === -1) + if (oSelectedItems{{ sListIDForVarSuffix }}.indexOf(oData.id) === -1) { this.api().row($(oRow)).select(); // $(oRow).addClass('selected'); @@ -75,42 +75,50 @@ var oTable{{ sListIDForVarSuffix }} = $('#{{ oUIBlock.GetId() }}').DataTable({ } else { - if (oSelectedItems{{ sListId }}.indexOf(oData.id) > -1) { - this.api().row($(oRow)).select(); - $(oRow).find('td:first-child input').prop('checked', true); - } + if (oSelectedItems{{ sListIDForVarSuffix }}.indexOf(oData.id) > -1) + { + this.api().row($(oRow)).select(); + $(oRow).find('td:first-child input').prop('checked', true); } - }, - drawCallback: function () { - if ($(this).closest('.ibo-panel--body').find('[name=selectionMode]').val() === "negative") { - $(this).closest('.dataTables_wrapper').find('.checkAll')[0].checked = true; - } - bSelectAllowed{{ oUIBlock.GetId() }} = true; + } + }, + drawCallback: function () { + if ($(this).closest('.ibo-panel--body').find('[name=selectionMode]').val() === "negative") + { + $(this).closest('.dataTables_wrapper').find('.checkAll')[0].checked = true; + } + bSelectAllowed{{ sListIDForVarSuffix }} = true; - // Hiding pagination if only one page - if ($(this).closest('.dataTables_wrapper').find('.dataTables_paginate:last .paginate_button:not(.previous):not(.next)').length < 2) { - $(this).closest('.dataTables_wrapper').find('.dataTables_paginate, .dataTables_info').hide(); - } else { - $(this).closest('.dataTables_wrapper').find('.dataTables_paginate, .dataTables_info').show(); - } + // Hiding pagination if only one page + if ($(this).closest('.dataTables_wrapper').find('.dataTables_paginate:last .paginate_button:not(.previous):not(.next)').length < 2) + { + $(this).closest('.dataTables_wrapper').find('.dataTables_paginate, .dataTables_info').hide(); + } + else + { + $(this).closest('.dataTables_wrapper').find('.dataTables_paginate, .dataTables_info').show(); + } - $(this).closest('.dataTables_wrapper').unblock(); - $("#{{ oUIBlock.GetId() }} a").on('click', function (e) { - //disable select action when there is a link - e.stopPropagation(); - }); - }, + $(this).closest('.dataTables_wrapper').unblock(); + $("#{{ oUIBlock.GetId() }} a").on('click', function (e) { + //disable select action when there is a link + e.stopPropagation(); + }); + }, {% else %} - drawCallback: function () { - $(this).closest('.dataTables_wrapper').unblock(); - // Hiding pagination if only one page - if ($(this).closest('.dataTables_wrapper').find('.dataTables_paginate:last .paginate_button:not(.previous):not(.next)').length < 2) { - $(this).closest('.dataTables_wrapper').find('.dataTables_paginate, .dataTables_info').hide(); - } else { - $(this).closest('.dataTables_wrapper').find('.dataTables_paginate, .dataTables_info').show(); - } - }, - {% endif %} + drawCallback: function () { + $(this).closest('.dataTables_wrapper').unblock(); + // Hiding pagination if only one page + if ($(this).closest('.dataTables_wrapper').find('.dataTables_paginate:last .paginate_button:not(.previous):not(.next)').length < 2) + { + $(this).closest('.dataTables_wrapper').find('.dataTables_paginate, .dataTables_info').hide(); + } + else + { + $(this).closest('.dataTables_wrapper').find('.dataTables_paginate, .dataTables_info').show(); + } + }, + {% endif %} rowId: "id", filter: false, retrieve: true, @@ -196,8 +204,8 @@ var oTable{{ sListIDForVarSuffix }} = $('#{{ oUIBlock.GetId() }}').DataTable({ {% if oUIBlock.GetOption("select_mode") is not empty %} updateDataTableSelection('{{ sListId }}', '{{ oUIBlock.GetId() }}'); {% if oUIBlock.GetOption("select_mode") != "single" %} - this.api().on('select', function (oEvent, dt, type, indexes) { - if (bSelectAllowed{{ oUIBlock.GetId() }}) + this.api().on('select', function (oEvent, dt, type, indexes) { + if (bSelectAllowed{{ sListIDForVarSuffix }}) { let aData = oTable{{ sListIDForVarSuffix }}.rows(indexes).data().toArray(); if ($(this).closest('.ibo-panel--body').find('[name=selectionMode]').val() === "negative") @@ -208,9 +216,9 @@ var oTable{{ sListIDForVarSuffix }} = $('#{{ oUIBlock.GetId() }}').DataTable({ for (let i in aData) { let iItemId = aData[i].id; - if (oSelectedItems{{ sListId }}.indexOf(iItemId) > -1) + if (oSelectedItems{{ sListIDForVarSuffix }}.indexOf(iItemId) > -1) { - oSelectedItems{{ sListId }}.splice(oSelectedItems{{ sListId }}.indexOf(iItemId), 1); + oSelectedItems{{ sListIDForVarSuffix }}.splice(oSelectedItems{{ sListIDForVarSuffix }}.indexOf(iItemId), 1); updateDataTableSelection('{{ sListId }}', '{{ oUIBlock.GetId() }}'); } } @@ -223,9 +231,9 @@ var oTable{{ sListIDForVarSuffix }} = $('#{{ oUIBlock.GetId() }}').DataTable({ for (let i in aData) { let iItemId = aData[i].id; - if (oSelectedItems{{ sListId }}.indexOf(iItemId) === -1) + if (oSelectedItems{{ sListIDForVarSuffix }}.indexOf(iItemId) === -1) { - oSelectedItems{{ sListId }}.push(iItemId); + oSelectedItems{{ sListIDForVarSuffix }}.push(iItemId); updateDataTableSelection('{{ sListId }}', '{{ oUIBlock.GetId() }}'); } } @@ -234,7 +242,7 @@ var oTable{{ sListIDForVarSuffix }} = $('#{{ oUIBlock.GetId() }}').DataTable({ }); this.api().off('deselect').on('deselect', function (oEvent, dt, type, indexes) { - if (bSelectAllowed{{ oUIBlock.GetId() }} ) + if (bSelectAllowed{{ sListIDForVarSuffix }} ) { let aData = oTable{{ sListIDForVarSuffix }}.rows(indexes).data().toArray(); // Checking input @@ -245,9 +253,9 @@ var oTable{{ sListIDForVarSuffix }} = $('#{{ oUIBlock.GetId() }}').DataTable({ for (let i in aData) { let iItemId = aData[i].id; - if (oSelectedItems{{ sListId }}.indexOf(iItemId) === -1) + if (oSelectedItems{{ sListIDForVarSuffix }}.indexOf(iItemId) === -1) { - oSelectedItems{{ sListId }}.push(iItemId); + oSelectedItems{{ sListIDForVarSuffix }}.push(iItemId); updateDataTableSelection('{{ sListId }}', '{{ oUIBlock.GetId() }}'); } } @@ -257,9 +265,9 @@ var oTable{{ sListIDForVarSuffix }} = $('#{{ oUIBlock.GetId() }}').DataTable({ for (let i in aData) { let iItemId = aData[i].id; - if (oSelectedItems{{ sListId }}.indexOf(iItemId) > -1) + if (oSelectedItems{{ sListIDForVarSuffix }}.indexOf(iItemId) > -1) { - oSelectedItems{{ sListId }}.splice(oSelectedItems{{ sListId }}.indexOf(iItemId), 1); + oSelectedItems{{ sListIDForVarSuffix }}.splice(oSelectedItems{{ sListIDForVarSuffix }}.indexOf(iItemId), 1); updateDataTableSelection('{{ sListId }}', '{{ oUIBlock.GetId() }}'); } } @@ -268,7 +276,7 @@ var oTable{{ sListIDForVarSuffix }} = $('#{{ oUIBlock.GetId() }}').DataTable({ }); {% else %} this.api().off('select').on('select', function (oEvent, dt, type, indexes) { - if (bSelectAllowed{{ oUIBlock.GetId() }} ) + if (bSelectAllowed{{ sListIDForVarSuffix }} ) { let aData = oTable{{ sListIDForVarSuffix }}.rows(indexes).data().toArray(); // Checking input @@ -277,9 +285,9 @@ var oTable{{ sListIDForVarSuffix }} = $('#{{ oUIBlock.GetId() }}').DataTable({ for (let i in aData) { let iItemId = aData[i].id; - if (oSelectedItems{{ sListId }}.indexOf(iItemId) === -1) + if (oSelectedItems{{ sListIDForVarSuffix }}.indexOf(iItemId) === -1) { - oSelectedItems{{ sListId }}.push(iItemId); + oSelectedItems{{ sListIDForVarSuffix }}.push(iItemId); updateDataTableSelection('{{ sListId }}', '{{ oUIBlock.GetId() }}'); } } @@ -287,7 +295,7 @@ var oTable{{ sListIDForVarSuffix }} = $('#{{ oUIBlock.GetId() }}').DataTable({ }); this.api().off('deselect').on('deselect', function (oEvent, dt, type, indexes) { - if (bSelectAllowed{{ oUIBlock.GetId() }} ) + if (bSelectAllowed{{ sListIDForVarSuffix }} ) { let aData = oTable{{ sListIDForVarSuffix }}.rows(indexes).data().toArray(); @@ -297,9 +305,9 @@ var oTable{{ sListIDForVarSuffix }} = $('#{{ oUIBlock.GetId() }}').DataTable({ for (let i in aData) { let iItemId = aData[i].id; - if (oSelectedItems{{ sListId }}.indexOf(iItemId) > -1) + if (oSelectedItems{{ sListIDForVarSuffix }}.indexOf(iItemId) > -1) { - oSelectedItems{{ sListId }}.splice(oSelectedItems{{ sListId }}.indexOf(iItemId), 1); + oSelectedItems{{ sListIDForVarSuffix }}.splice(oSelectedItems{{ sListIDForVarSuffix }}.indexOf(iItemId), 1); updateDataTableSelection('{{ sListId }}', '{{ oUIBlock.GetId() }}'); } } @@ -348,7 +356,7 @@ var aOptions{{ sListIDForVarSuffix }} = { sListId: '{{ oUIBlock.GetId() }}', oColumns: {{ oUIBlock.GetResultColumnsAsJson()|raw }}, sSelectMode: "{{ oUIBlock.GetOption("select_mode") }}", - sSelectedItemsName: "oSelectedItems{{ sListId }}", + sSelectedItemsName: "oSelectedItems{{ sListIDForVarSuffix }}", sViewLink: '{{ oUIBlock.GetOption("bViewLink") }}', iPageSize: ' {{ iPageSize }}', oClassAliases: JSON.parse('{{ oUIBlock.GetOption("oClassAliases") |raw }}'),