';
- $oSet = new DBObjectSet($oBMSearch);
+ $oSet = new DBObjectSet($oShortcutsFilter);
if ($oSet->Count() > 0) {
- $sButtons = '
';
- $sButtons .= '';
- $sButtons .= '';
+ $oShortcutsToolBar = new UIContentBlock(null, 'ibo-datatable--selection-validation-buttons-toolbar');
+ $oShortcutsBlock->AddSubBlock($oShortcutsToolBar);
+ // - Rename button
+ $oShortcutsRenameButton = ButtonFactory::MakeForSecondaryAction(Dict::S('UI:Button:Rename'), null, null, false, "shortcut_btn_rename");
+ $oShortcutsToolBar->AddSubBlock($oShortcutsRenameButton);
+ // - Delete button
+ $oShortcutsDeleteButton = ButtonFactory::MakeForSecondaryAction(Dict::S('UI:Button:Delete'), null, null, false, "shortcut_btn_delete");
+ $oShortcutsToolBar->AddSubBlock($oShortcutsDeleteButton);
- // Selection count updated by the pager, and used to enable buttons
- $sShortcutsHtml .= '';
- $sConfirmDelete = addslashes(Dict::S('UI:ShortcutDelete:Confirm'));
-
- $oP->add_ready_script(
-<< $sButtons ');
-$('#shortcut_selection_count').bind('change', OnSelectionCountChange);
-$('#shortcut_btn_rename').bind('click', OnShortcutBtnRename);
-$('#shortcut_btn_delete').bind('click', OnShortcutBtnDelete);
-OnSelectionCountChange();
-EOF
- );
} // if count > 0
- $oShortcutsHtmlBlock = new Html($sShortcutsHtml);
- $oShortcutsBlock->AddSubBlock($oShortcutsHtmlBlock);
$oContentLayout->AddMainBlock($oShortcutsBlock);
//////////////////////////////////////////////////////////////////////////
diff --git a/sources/application/UI/Base/Component/DataTable/DataTable.php b/sources/application/UI/Base/Component/DataTable/DataTable.php
index dacf291da..68ede8aec 100644
--- a/sources/application/UI/Base/Component/DataTable/DataTable.php
+++ b/sources/application/UI/Base/Component/DataTable/DataTable.php
@@ -49,6 +49,9 @@ class DataTable extends UIContentBlock
{
parent::__construct($sId);
$this->AddDeferredBlock(new DataTableConfig($this));
+ $this->aDisplayColumns = [];
+ $this->aOptions = [];
+ $this->aResultColumns = [];
}
/**
diff --git a/sources/application/UI/Base/Component/DataTable/DataTableFactory.php b/sources/application/UI/Base/Component/DataTable/DataTableFactory.php
index d05369695..d0427a655 100644
--- a/sources/application/UI/Base/Component/DataTable/DataTableFactory.php
+++ b/sources/application/UI/Base/Component/DataTable/DataTableFactory.php
@@ -355,6 +355,12 @@ class DataTableFactory
$aOptions['bViewLink'] = $bViewLink;
$aOptions['sListId'] = $sListId;
$aOptions['oClassAliases'] = json_encode($aClassAliases);
+ if (isset($aExtraParams['selected_rows']) && !empty($aExtraParams['selected_rows'])){
+ $aOptions['sSelectedRows'] = json_encode($aExtraParams['selected_rows']);
+ } else {
+ $aOptions['sSelectedRows'] = '[]';
+ }
+
$oDataTable->SetOptions($aOptions);
$oDataTable->SetAjaxUrl(utils::GetAbsoluteUrlAppRoot()."pages/ajax.render.php");
diff --git a/sources/application/UI/Base/Component/DataTable/DataTableSettings.php b/sources/application/UI/Base/Component/DataTable/DataTableSettings.php
index 02b269b5d..3abdd49bc 100644
--- a/sources/application/UI/Base/Component/DataTable/DataTableSettings.php
+++ b/sources/application/UI/Base/Component/DataTable/DataTableSettings.php
@@ -136,10 +136,9 @@ class DataTableSettings implements Serializable
if (array_key_exists($sNormalizedFName, $aSortOrder)) {
$sSort = $aSortOrder[$sNormalizedFName] ? 'asc' : 'desc';
}
-
- $aColumns[$sAlias]['_key_'] = $oSettings->GetFieldData($sAlias, '_key_', null, true /* bChecked */, $sSort);
}
- foreach ($aList as $sAttCode) {
+ $aColumns[$sAlias]['_key_'] = $oSettings->GetFieldData($sAlias, '_key_', null, true /* bChecked */, "none");
+ foreach ($aList as $sAttCode) {
$sSort = 'none';
if (array_key_exists($sAttCode, $aSortOrder)) {
$sSort = $aSortOrder[$sAttCode] ? 'asc' : 'desc';
@@ -324,7 +323,7 @@ class DataTableSettings implements Serializable
$sLabel = Dict::Format('UI:ExtKey_AsLink', MetaModel::GetName($this->aClassAliases[$sAlias]));
$ret = array(
'label' => $sLabel,
- 'checked' => true,
+ 'checked' => $bChecked,
'disabled' => true,
'alias' => $sAlias,
'code' => $sAttCode,
diff --git a/sources/application/search/searchform.class.inc.php b/sources/application/search/searchform.class.inc.php
index 4a0f133bf..44b0514af 100644
--- a/sources/application/search/searchform.class.inc.php
+++ b/sources/application/search/searchform.class.inc.php
@@ -81,7 +81,7 @@ class SearchForm
// Simple search form
if (isset($aExtraParams['currentId']))
{
- $sSearchFormId = $aExtraParams['currentId'];
+ $sSearchFormId = 'sf_'.$aExtraParams['currentId'];
}
else
{
diff --git a/templates/base/components/datatable/layout.js.twig b/templates/base/components/datatable/layout.js.twig
index 90f77eb98..1f1d377dc 100644
--- a/templates/base/components/datatable/layout.js.twig
+++ b/templates/base/components/datatable/layout.js.twig
@@ -1,7 +1,11 @@
{# @copyright Copyright (C) 2010-2020 Combodo SARL #}
{# @license http://opensource.org/licenses/AGPL-3.0 #}
{% set sListId = oUIBlock.GetOption('sListId') %}
-{% set iPageSize = oUIBlock.GetOptions()["iPageSize"] %}
+{% if oUIBlock.GetOption("iPageSize") is not empty %}
+ {% set iPageSize = oUIBlock.GetOption("iPageSize") %}
+{% else %}
+ {% set iPageSize = 10 %}
+{% endif %}
$('#{{ oUIBlock.GetId() }}').closest("[role=dialog]").on("dialogbeforeclose", function () {
$('#{{ oUIBlock.GetId() }}').DataTable().clear();
@@ -61,8 +65,8 @@ var oTable{{ oUIBlock.GetId() }} = $('#{{ oUIBlock.GetId() }}').DataTable({
},
drawCallback: function () {
if ($(this).closest('.ibo-panel--body').find('[name=selectionMode]').val() === "negative") {
- $(this).find('[name=selectAll]').checked();
- $(table).DataTable().rows({page: 'current'}).select();
+ $(this).find('[name=selectAll]').prop('checked', true);
+ $(this).DataTable().rows({page: 'current'}).select();
} else {
$(this).closest('.dataTables_wrapper').find('.dataTables_paginate, .dataTables_info').show();
}
diff --git a/templates/base/components/datatable/layout.live.js.twig b/templates/base/components/datatable/layout.live.js.twig
index fc78c6fa6..853cf8f9f 100644
--- a/templates/base/components/datatable/layout.live.js.twig
+++ b/templates/base/components/datatable/layout.live.js.twig
@@ -1,5 +1,8 @@
{% 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 %}
{% endif %}