AddUiBlock($this->GetSearchFormUIBlock($oPage, $oSet, $aExtraParams)); return ''; } public function GetSearchFormUIBlock(WebPage $oPage, DBObjectSet $oSet, $aExtraParams = []) { $oUiBlock = new UIContentBlock(); $oUiBlock->AddMultipleJsFilesRelPaths([ 'node_modules/scrollmagic/scrollmagic/minified/ScrollMagic.min.js', 'js/searchformforeignkeys.js', 'js/search/search_form_handler.js', 'js/search/search_form_handler_history.js', 'js/search/search_form_criteria.js', 'js/search/search_form_criteria_raw.js', 'js/search/search_form_criteria_string.js', 'js/search/search_form_criteria_external_field.js', 'js/search/search_form_criteria_numeric.js', 'js/search/search_form_criteria_enum.js', 'js/search/search_form_criteria_tag_set.js', 'js/search/search_form_criteria_external_key.js', 'js/search/search_form_criteria_hierarchical_key.js', 'js/search/search_form_criteria_date_abstract.js', 'js/search/search_form_criteria_date.js', 'js/search/search_form_criteria_date_time.js', ]); $oAppContext = new ApplicationContext(); $sClassName = $oSet->GetFilter()->GetClass(); $aListParams = []; foreach ($aExtraParams as $key => $value) { $aListParams[$key] = $value; } // Simple search form if (isset($aExtraParams['currentId'])) { $sSearchFormId = 'sf_'.$aExtraParams['currentId']; } else { $iSearchFormId = utils::GetUniqueId(); $sSearchFormId = 'SimpleSearchForm'.$iSearchFormId; $oUiBlock->AddHtml("
"); $aListParams['currentId'] = "$iSearchFormId"; } // Check if the current class has some sub-classes if (isset($aExtraParams['baseClass'])) { $sRootClass = $aExtraParams['baseClass']; } else { $sRootClass = $sClassName; } //should the search be opened on load? if (isset($aExtraParams['open'])) { $bOpen = $aExtraParams['open']; } else { $bOpen = true; } $sJson = utils::ReadParam('json', '', false, 'raw_data'); if (!empty($sJson)) { $aListParams['json'] = json_decode($sJson, true); } if (!isset($aExtraParams['result_list_outer_selector'])) { if (isset($aExtraParams['table_id'])) { $aExtraParams['result_list_outer_selector'] = $aExtraParams['table_id']; } else { $aExtraParams['result_list_outer_selector'] = "search_form_result_{$sSearchFormId}"; } } $sContext = $oAppContext->GetForLink(); $sJsonExtraParams = utils::EscapeHtml(json_encode($aListParams)); $sOuterSelector = $aExtraParams['result_list_outer_selector']; if (isset($aExtraParams['search_header_force_dropdown'])) { $sClassesCombo = $aExtraParams['search_header_force_dropdown']; } else { $aSubClasses = MetaModel::GetSubclasses($sRootClass); if (count($aSubClasses) > 0) { $aOptions = []; $aOptions[MetaModel::GetName($sRootClass)] = "