Skip to content

About

GLPI 11 plugin that asks users to rate their recently closed tickets through a modal banner, with recursive entity filtering, configurable display pages and admin-only diagnostics.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

Repository files navigation

Оценка заявок для GLPI 11

Плагин показывает пользователю модальный баннер на настраиваемых страницах GLPI, если у него есть закрытые и ещё не оценённые заявки не старше 19 дней. По умолчанию добавлены /Helpdesk, /ServiceCatalog и /front/central.php. Для кастомных шаблонов и произвольных страниц используются автоматическая загрузка очереди через AJAX и самостоятельное подключение стилей.

Баннер оценки закрытой заявки на Self-Service

Что делает

  • показывает каждую заявку отдельным баннером, начиная с самой старой;
  • выводит ID, тему, дату закрытия и ссылку на заявку;
  • принимает оценку от 1 до 5 звёзд и сохраняет её только после кнопки «Оценить»;
  • сохраняет результат штатно через TicketSatisfaction;
  • учитывает настраиваемую в GLPI максимальную оценку и обязательный комментарий для низких оценок;
  • поддерживает заявки, где пользователь указан как заявитель напрямую или через группу;
  • позволяет администратору выбрать страницы показа и организации заявок;
  • если штатный опрос для закрытой заявки ещё не создан, создаёт его только в момент отправки оценки;
  • не создаёт собственных таблиц и не меняет файлы ядра GLPI.

Интерфейс использует фирменную палитру: #283A97, #005DAC, #00AEEF и #6ACFF6, а звёзды выделены жёлтым #F5B301. Базовая типографика и светлая/тёмная тема GLPI сохраняются.

«Напомнить позже» откладывает текущую заявку до следующего открытия одной из целевых страниц и сразу переходит к следующей заявке в очереди. Никакие cookie или записи об отсрочке не создаются, поэтому неоценённая заявка снова появится при следующем заходе.

Настройка показа

После активации откройте Администрирование → Оценка качества. На странице можно:

  • добавлять и удалять страницы, указывая понятное название и ссылку;
  • разрешить баннер для всех организаций;
  • выбирать конкретные организации в прокручиваемом списке с поиском и массовым выделением;
  • у каждой организации отдельно включать «включая дочерние».

Галочка «включая дочерние» распространяет выбор на всё поддерево организации: отмеченная так организация разрешает заявки самой организации, её дочерних, внучатых и так далее на любую глубину. Без этой галочки сравнение остаётся строгим — разрешена только сама организация. Галочка недоступна, пока не отмечена сама организация, и игнорируется на сервере, если организация не выбрана. Поддерево разворачивается штатным механизмом GLPI getSonsOf() один раз на запрос, поэтому число SQL-запросов не растёт вместе с числом заявок.

Можно вставить полный адрес или только путь внутри GLPI. При сохранении домен, fragment и параметры после ? отбрасываются, поэтому настройка не зависит от адреса тестового или рабочего сервера. По умолчанию добавлены три стандартные страницы и включены все организации. Фильтр проверяет организацию самой заявки (entities_id), а не выбранную в данный момент организацию пользователя. Настройки хранятся в штатной таблице glpi_configs; отдельная таблица плагина не создаётся. Настройки организаций из версий до 1.3.0 читаются как «выбраны без дочерних», поэтому обновление не меняет текущее поведение.

Установка

  1. Распаковать каталог stars в каталог плагинов GLPI: GLPI_ROOT/plugins/stars.
  2. В GLPI открыть Настройка → Плагины.
  3. Установить и активировать Оценка заявок.

Важно: имя каталога должно быть именно stars — GLPI использует его как системный идентификатор плагина.

При обновлении поверх старой версии замените весь каталог plugins/stars, затем очистите кэш GLPI и сделайте жёсткое обновление страницы в браузере (Ctrl+F5).

Диагностика администратора

Добавьте ?stars_debug=1 к адресу любой настроенной страницы, например /ServiceCatalog?stars_debug=1. Панель покажет состояние PHP-хука, AJAX fallback, загрузку CSS/JS, число строк после фильтра и число заявок в конфигурации баннера. Чтобы проверить конкретную заявку, укажите её ID в поле панели или добавьте &stars_ticket_id=123.

Начиная с 1.3.0 панель доступна только пользователю с правом на настройку GLPI (config, право «Обновление») — тем же, которое открывает страницу Администрирование → Оценка качества. Обычному пользователю параметр stars_debug=1 ничего не даёт: он получает штатный ответ без блока diagnostics, без отчёта по заявке и без текста исключений, а панель не рисуется ни PHP-хуком, ни JavaScript. Панель не выводит тему заявки, комментарии, группы или токены.

Учтите ограничение самого GLPI: страницу /Helpdesk он отдаёт только профилям с интерфейсом «Упрощённый», а право config в такой сессии не активируется, даже если оно прописано профилю в базе. Поэтому на /Helpdesk панель не появится ни у кого, включая администратора, — это ограничение упрощённого интерфейса, а не ошибка плагина. На страницах центрального интерфейса, например /front/central.php?stars_debug=1, панель работает штатно. Чтобы получить диагностику именно по /Helpdesk, запросите из сессии администратора /plugins/stars/ajax/pending.php?page_url=/Helpdesk&stars_debug=1: адрес проверяемой страницы передаётся параметром page_url, а право config берётся из текущей сессии центрального интерфейса.

Требования

  • GLPI 11.0.x;
  • PHP 8.2+;
  • пользователь должен иметь право видеть соответствующую заявку.

Критерии показа

Заявка показывается, когда одновременно выполняются условия:

  • статус — Закрыта;
  • заявка не удалена;
  • с момента закрытия прошло не больше 19 суток;
  • оценка и дата ответа в glpi_ticketsatisfactions пустые либо запись опроса ещё не существует;
  • текущий пользователь является заявителем, входит в группу-заявителя либо является автором заявки с правом ответа на опрос;
  • заявка доступна в активной сущности пользователя.
  • организация заявки разрешена в Администрирование → Оценка качества: либо включён режим «Все организации», либо entities_id заявки совпадает с одной из выбранных организаций, либо заявка лежит в поддереве организации, отмеченной галочкой «включая дочерние».

Фильтр организаций работает только на сужение: рекурсия не расширяет права GLPI. Если пользователю недоступна дочерняя организация, её заявка не появится даже при включённой галочке «включая дочерние».

Срок меняется константой SurveyManager::MAX_AGE_DAYS в src/SurveyManager.php.

Удаление

Плагин не удаляет уже поставленные оценки: они являются штатными данными GLPI. При деактивации баннер просто перестаёт показываться. При удалении плагина удаляются только его настройки страниц и организаций.

About

GLPI 11 plugin that asks users to rate their recently closed tickets through a modal banner, with recursive entity filtering, configurable display pages and admin-only diagnostics.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages