Index: core/admin_templates/incs/grid_blocks.tpl =================================================================== --- core/admin_templates/incs/grid_blocks.tpl +++ core/admin_templates/incs/grid_blocks.tpl @@ -339,25 +339,30 @@ - - " - name="" - id="" - value="" - onkeypress="search_keydown(event, '', '', '')"/> - + } + }); + + + + + Index: core/kernel/db/db_event_handler.php =================================================================== --- core/kernel/db/db_event_handler.php +++ core/kernel/db/db_event_handler.php @@ -3359,8 +3359,10 @@ */ protected function getAutoCompleteSuggestions(kEvent $event, $term) { + $event->setPseudoClass('_List'); + + /** @var kDBList $object */ $object = $event->getObject(); - /* @var $object kDBItem */ $field = $this->Application->GetVar('field'); @@ -3374,11 +3376,20 @@ $limit = 20; } - $sql = 'SELECT DISTINCT ' . $field . ' - FROM ' . $this->Application->getUnitOption($event->Prefix, 'TableName') . ' - WHERE ' . $field . ' LIKE ' . $this->Conn->qstr($term . '%') . ' - ORDER BY ' . $field . ' - LIMIT 0,' . $limit; + $calculated_fields = $object->getCalculatedFields(); + $calculated_field = array_key_exists($field, $calculated_fields); + $filter_type = $calculated_field ? kDBList::HAVING_FILTER : kDBList::WHERE_FILTER; + + $object->addFilter( + 'search_filter', + $field . ' LIKE ' . $this->Conn->qstr('%' . $term . '%'), + $filter_type + ); + $object->ClearOrderFields(); + $object->AddOrderField($field, 'asc', $calculated_field); + + $sql = $object->GetSelectSQL(true) . ' LIMIT 0,' . $limit; + $sql = str_replace($object->TableName . '.*', $calculated_fields[$field] . ' AS ' . $field, $sql); return $this->Conn->GetCol($sql); }