backend_entity_autocomplete

Срабатывает во время запуска поиска при добавлении метки с символом «#» в описание задачи или в комментарий к задаче. Позволяет корректировать текст и результаты поисковых запросов, а также добавлять поиск по данным приложений, не поддерживаемых «Задачами».

Доступно начиная с версии 2.9.0.

Задачи

Входящие параметры (передаются по ссылке)

$params['term'] string Текст, набранный пользователем после символа «#» и используемый для поиска объектов в установленных приложениях.
$params['limit'] int Максимальное количество результатов, которые может показать поиск объектов.
… код плагина …

Результат работы плагина

$return

Список элементов с результатами поиска. Каждый элемент списка — массив со следующими ключами:

  • []['app_id'] string Идентификатор приложения, с которым связан результат элемент результатов поиска.
  • []['entity_type'] string Обозначение типа элемента.
  • []['entity_title'] string Локализованное название элемента.
  • []['entity_url'] string Относительный URL на найденный поиском объект, соответствующий данному элементу.
Задачи

Пример кода плагина

PHP

public function backendEntityAutocomplete(&$params)
{
    $term = &$params['term'];
    // Modify the term here if necessary; e.g., correct typos.
    // tasksMyPluginHelper::fixTypo($term);

    // Enable access to Site app's classes.
    wa('site');

    // E.g., search for Site app pages by their names.
    $site_pages_model = new sitePageModel();

    $pages = $site_pages_model
        ->select('id, name')
        ->where(
            'name LIKE s:term',
            [
                'term' => sprintf(
                    '%%%s%%',
                    $site_pages_model->escape($term, 'like')
                )
            ]
        )
        ->fetchAll();

    if ($pages) {
        $backend_url = wa()->getConfig()->getBackendUrl();

        return array_map(
            function ($page) use ($backend_url) {
                return [
                    'app_id' => 'site',
                    'entity_type' => 'page',
                    'entity_url' => sprintf(
                        '/%s/site/#/pages/%d',
                        $backend_url,
                        $page['id']
                    ),
                    'entity_title' => $page['name'],
                ];
            },
            $pages
        );
    }
}