From 8c7fa5369689b795c58c5b5ea0bfe7c2a3dea796 Mon Sep 17 00:00:00 2001 From: Stephen Abello Date: Fri, 29 Jul 2022 09:59:00 +0200 Subject: [PATCH] =?UTF-8?q?N=C2=B05335=20Disable=20datatables=20hyperlinks?= =?UTF-8?q?=20when=20rows=20are=20selectable?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- application/ui.linksdirectwidget.class.inc.php | 2 +- application/ui.linkswidget.class.inc.php | 2 +- .../components/datatable/layout.ready.js.twig | 17 ++++++++++++++--- .../static/formtable/layout.ready.js.twig | 7 +++++++ .../datatable/static/layout.ready.js.twig | 7 +++++++ 5 files changed, 30 insertions(+), 5 deletions(-) diff --git a/application/ui.linksdirectwidget.class.inc.php b/application/ui.linksdirectwidget.class.inc.php index 1a750e327..2bd2d1646 100644 --- a/application/ui.linksdirectwidget.class.inc.php +++ b/application/ui.linksdirectwidget.class.inc.php @@ -255,7 +255,7 @@ class UILinksWidgetDirect $oDiv = UIContentBlockUIBlockFactory::MakeStandard($this->sInputid, ['listContainer']); $oPage->AddSubBlock($oDiv); $oDatatable = DataTableUIBlockFactory::MakeForForm($this->sInputid, $aAttribs, $aData); - $oDatatable->SetOptions(['select_mode' => 'custom']); + $oDatatable->SetOptions(['select_mode' => 'custom', 'disable_hyperlinks' => true]); $oDiv->AddSubBlock($oDatatable); $sInputName = $sFormPrefix.'attr_'.$this->sAttCode; $aLabels = array( diff --git a/application/ui.linkswidget.class.inc.php b/application/ui.linkswidget.class.inc.php index 1f4e63da5..ebd6f2b52 100644 --- a/application/ui.linkswidget.class.inc.php +++ b/application/ui.linkswidget.class.inc.php @@ -403,7 +403,7 @@ JS $oBlock->iMaxAddedId = (int) $iMaxAddedId; $oDataTable = DataTableUIBlockFactory::MakeForForm("{$this->m_sAttCode}{$this->m_sNameSuffix}", $this->m_aTableConfig, $aForm); - $oDataTable->SetOptions(['select_mode' => 'custom']); + $oDataTable->SetOptions(['select_mode' => 'custom', 'disable_hyperlinks' => true]); $oBlock->AddSubBlock($oDataTable); $oBlock->AddControls(); diff --git a/templates/base/components/datatable/layout.ready.js.twig b/templates/base/components/datatable/layout.ready.js.twig index 3b753c6c8..2ba11e844 100644 --- a/templates/base/components/datatable/layout.ready.js.twig +++ b/templates/base/components/datatable/layout.ready.js.twig @@ -104,10 +104,14 @@ var oTable{{ sListIDForVarSuffix }} = $('#{{ oUIBlock.GetId() }}').DataTable({ } $(this).closest('.dataTables_wrapper').unblock(); + + // Disable hyperlinks if necessary + {% if oUIBlock.GetOption("disable_hyperlinks") is not same as false %} $("#{{ oUIBlock.GetId() }} a").on('click', function (e) { - //disable select action when there is a link - e.stopPropagation(); - }); + e.preventDefault(); + }); + {% endif %} + }, {% else %} drawCallback: function (settings) { @@ -125,6 +129,13 @@ var oTable{{ sListIDForVarSuffix }} = $('#{{ oUIBlock.GetId() }}').DataTable({ { $(this).closest('.dataTables_wrapper').find('.dataTables_paginate, .dataTables_info').show(); } + + // Disable hyperlinks if necessary + {% if oUIBlock.GetOption("disable_hyperlinks") is same as true %} + $("#{{ oUIBlock.GetId() }} a").on('click', function (e) { + e.preventDefault(); + }); + {% endif %} }, {% endif %} rowId: "id", diff --git a/templates/base/components/datatable/static/formtable/layout.ready.js.twig b/templates/base/components/datatable/static/formtable/layout.ready.js.twig index 0560a9ba7..5f2a103da 100644 --- a/templates/base/components/datatable/static/formtable/layout.ready.js.twig +++ b/templates/base/components/datatable/static/formtable/layout.ready.js.twig @@ -37,6 +37,13 @@ var oTable{{ sListIDForVarSuffix }} = $('#{{ oUIBlock.GetId() }}').DataTable({ { $(this).closest('.dataTables_wrapper').find('.dataTables_paginate, .dataTables_info').show(); } + + // Disable hyperlinks if necessary + {% if oUIBlock.GetOption("disable_hyperlinks") is same as true or (oUIBlock.GetOption("select_mode") is not empty and oUIBlock.GetOption("disable_hyperlinks") is not same as false) %} + $("#{{ oUIBlock.GetId() }} a").on('click', function (e) { + e.preventDefault(); + }); + {% endif %} }, createdRow: function (row, data, dataIndex) { if (data['@class'] !== undefined) diff --git a/templates/base/components/datatable/static/layout.ready.js.twig b/templates/base/components/datatable/static/layout.ready.js.twig index 30f94e0ee..2be637ea0 100644 --- a/templates/base/components/datatable/static/layout.ready.js.twig +++ b/templates/base/components/datatable/static/layout.ready.js.twig @@ -73,6 +73,13 @@ var oTable{{ sListIDForVarSuffix }} = $('#{{ oUIBlock.GetId() }}').DataTable({ { $(this).closest('.dataTables_wrapper').find('.checkAll')[0].checked = true; } + + // Disable hyperlinks if necessary + {% if oUIBlock.GetOption("disable_hyperlinks") is same as true or (oUIBlock.GetOption("select_mode") is not empty and oUIBlock.GetOption("disable_hyperlinks") is not same as false) %} + $("#{{ oUIBlock.GetId() }} a").on('click', function (e) { + e.preventDefault(); + }); + {% endif %} }, initComplete: function () { if (this.api().page.info().pages < 2)