diff --git a/application/ui.extkeywidget.class.inc.php b/application/ui.extkeywidget.class.inc.php index cd4e007e3..a3d2b04d0 100644 --- a/application/ui.extkeywidget.class.inc.php +++ b/application/ui.extkeywidget.class.inc.php @@ -419,7 +419,7 @@ EOF $oValuesSet->SetModifierProperty('UserRightsGetSelectFilter', 'bSearchMode', $this->bSearchMode); $aValuesEquals = $oValuesSet->GetValues(array('this' => $oObj, 'current_extkey_id' => $iCurrentExtKeyId), $sContains, 'equals_start_with'); - asort($aValuesEquals); + //asort($aValuesEquals); foreach($aValuesEquals as $sKey => $sFriendlyName) { $oP->add(trim($sFriendlyName)."\t".$sKey."\n"); diff --git a/application/ui.linksdirectwidget.class.inc.php b/application/ui.linksdirectwidget.class.inc.php index e62729f8b..14b9572d4 100644 --- a/application/ui.linksdirectwidget.class.inc.php +++ b/application/ui.linksdirectwidget.class.inc.php @@ -272,7 +272,10 @@ class UILinksWidgetDirect $sJSONLabels = json_encode($aLabels); $sJSONButtons = json_encode($aButtons); $sWizHelper = 'oWizardHelper'.$sFormPrefix; - $oPage->add_ready_script("$('#{$this->sInputid}').directlinks({class_name: '$this->sClass', att_code: '$this->sAttCode', input_name:'$sInputName', labels: $sJSONLabels, submit_to: '$sSubmitUrl', buttons: $sJSONButtons, oWizardHelper: $sWizHelper });"); + // Don't automatically launch the search if the table is huge + $bDoSearch = !utils::IsHighCardinality($this->sLinkedClass); + $sJSDoSearch = $bDoSearch ? 'true' : 'false'; + $oPage->add_ready_script("$('#{$this->sInputid}').directlinks({class_name: '$this->sClass', att_code: '$this->sAttCode', input_name:'$sInputName', labels: $sJSONLabels, submit_to: '$sSubmitUrl', buttons: $sJSONButtons, oWizardHelper: $sWizHelper, do_search: $sJSDoSearch});"); } /** @@ -302,7 +305,7 @@ class UILinksWidgetDirect { $this->SetSearchDefaultFromContext($oCurrentObj, $oFilter); } - $bOpen = MetaModel::GetConfig()->Get('legacy_search_drawer_open'); + $bOpen = MetaModel::GetConfig()->Get('legacy_search_drawer_open') || utils::IsHighCardinality($this->sLinkedClass); $oBlock = new DisplayBlock($oFilter, 'search', false); $sHtml .= $oBlock->GetDisplay($oPage, "SearchFormToAdd_{$this->sInputid}", array('open' => $bOpen)); $sHtml .= "
sInputid}\">\n"; diff --git a/application/ui.linkswidget.class.inc.php b/application/ui.linkswidget.class.inc.php index 60a746dc8..0253d50fe 100644 --- a/application/ui.linkswidget.class.inc.php +++ b/application/ui.linkswidget.class.inc.php @@ -344,9 +344,12 @@ EOF } $sHtmlValue .= $this->DisplayFormTable($oPage, $this->m_aTableConfig, $aForm); $sDuplicates = ($this->m_bDuplicatesAllowed) ? 'true' : 'false'; + // Don't automatically launch the search if the table is huge + $bDoSearch = !utils::IsHighCardinality($this->m_sRemoteClass); + $sJSDoSearch = $bDoSearch ? 'true' : 'false'; $sWizHelper = 'oWizardHelper'.$sFormPrefix; $oPage->add_ready_script(<<m_iInputId} = new LinksWidget('{$this->m_sAttCode}{$this->m_sNameSuffix}', '{$this->m_sClass}', '{$this->m_sAttCode}', '{$this->m_iInputId}', '{$this->m_sNameSuffix}', $sDuplicates, $sWizHelper, '{$this->m_sExtKeyToRemote}'); + oWidget{$this->m_iInputId} = new LinksWidget('{$this->m_sAttCode}{$this->m_sNameSuffix}', '{$this->m_sClass}', '{$this->m_sAttCode}', '{$this->m_iInputId}', '{$this->m_sNameSuffix}', $sDuplicates, $sWizHelper, '{$this->m_sExtKeyToRemote}', $sJSDoSearch); oWidget{$this->m_iInputId}.Init(); EOF ); @@ -389,7 +392,7 @@ EOF */ public function GetObjectPickerDialog($oPage, $oCurrentObj) { - $bOpen = MetaModel::GetConfig()->Get('legacy_search_drawer_open'); + $bOpen = MetaModel::GetConfig()->Get('legacy_search_drawer_open') || utils::IsHighCardinality($this->m_sRemoteClass); $sHtml = "
\n"; $oFilter = new DBObjectSearch($this->m_sRemoteClass); $this->SetSearchDefaultFromContext($oCurrentObj, $oFilter); diff --git a/js/extkeywidget.js b/js/extkeywidget.js index 51066363f..7f429ffe3 100644 --- a/js/extkeywidget.js +++ b/js/extkeywidget.js @@ -92,14 +92,14 @@ function ExtKeyWidget(id, sTargetClass, sFilter, sTitle, bSelectMode, oWizHelper { $('#ac_dlg_'+me.id).html(data); $('#ac_dlg_'+me.id).dialog('open'); - me.UpdateSizes(); me.UpdateButtons(); me.ajax_request = null; - FixSearchFormsDisposition(); if (me.bDoSearch) { me.DoSearchObjects(); } + FixSearchFormsDisposition(); + me.UpdateSizes(); }, 'html' ); diff --git a/js/linksdirectwidget.js b/js/linksdirectwidget.js index 7af1d3b69..051a0fc15 100644 --- a/js/linksdirectwidget.js +++ b/js/linksdirectwidget.js @@ -11,6 +11,7 @@ $(function() input_name: '', class_name: '', att_code: '', + do_search: true, submit_to: '../pages/ajax.render.php', submit_parameters: {}, labels: { 'delete': 'Delete', @@ -211,7 +212,14 @@ $(function() }); me.indicator.html(''); me.oButtons['add'].removeAttr('disabled'); - me._onSearchToAdd(); + if (me.options.do_search) + { + me._onSearchToAdd(); + } + else + { + FixSearchFormsDisposition(); + } me._updateDlgPosition(); me._onSearchDlgUpdateSize(); }); diff --git a/js/linkswidget.js b/js/linkswidget.js index 4eb277aaa..2db991c1c 100644 --- a/js/linkswidget.js +++ b/js/linkswidget.js @@ -1,5 +1,5 @@ // JavaScript Document -function LinksWidget(id, sClass, sAttCode, iInputId, sSuffix, bDuplicates, oWizHelper, sExtKeyToRemote) +function LinksWidget(id, sClass, sAttCode, iInputId, sSuffix, bDuplicates, oWizHelper, sExtKeyToRemote, bDoSearch) { this.id = id; this.iInputId = iInputId; @@ -13,6 +13,7 @@ function LinksWidget(id, sClass, sAttCode, iInputId, sSuffix, bDuplicates, oWizH this.aAdded = []; this.aRemoved = []; this.aModified = {}; + this.bDoSearch = bDoSearch; // false if the search is not launched var me = this; this.Init = function() @@ -107,7 +108,14 @@ function LinksWidget(id, sClass, sAttCode, iInputId, sSuffix, bDuplicates, oWizH $('#dlg_'+me.id).html(data); $('#dlg_'+me.id).dialog('open'); me.UpdateSizes(null, null); - me.SearchObjectsToAdd(); + if (me.bDoSearch) + { + me.SearchObjectsToAdd(); + } + else + { + FixSearchFormsDisposition(); + } $('#'+me.id+'_indicatorAdd').html(''); }, 'html'