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);
}