Files
F4ilji d6c0f48d48 feat(analytics): add site analytics with grouped navigation sections
- Add Analytics container: models, tasks, jobs, controllers, routes, services
- Add analytics config with section groups (structure, institute, content, services)
- Add database tables: analytics_sessions, analytics_hits, analytics_daily_stats
- Add frontend: Analytics page, section detail, chart, overview, navigation components
- Add consent banner and JS tracking service (sendBeacon + Inertia listener)
- Add permission sync for view_analytics, view_any_analytic
- Fix trailing slash URL matching in GetNavigationSectionsTask
- Fix event propagation on expand arrows in navigation sections
- Fix RecordVisitJob to not depend on dropped analytics_geo_cache table
- Replace plain text views/visitors with badge-style icons
- Group navigation sections by category with separate blocks
- Add config-driven non-CMS sections (faculties, divisions, DPO, journals)
- Remove Events, TV, Sveden from analytics sections
2026-09-18 22:18:04 +05:00

89 lines
2.6 KiB
PHP

<?php
return [
'group_labels' => [
'structure' => 'Структура сайта',
'institute' => 'Институт',
'content' => 'Контент',
'services' => 'Сервисы',
],
'sections' => [
'/' => [
'label' => 'Главная',
'icon' => 'home',
'order' => 0,
],
'/faculties' => [
'label' => 'Факультеты',
'icon' => 'academic-cap',
'order' => 1,
'group' => 'institute',
'children' => [
'model' => \App\Containers\InstituteStructure\Models\Faculty::class,
'name_key' => 'title',
'slug_key' => 'slug',
],
],
'/divisions' => [
'label' => 'Подразделения',
'icon' => 'building',
'order' => 2,
'group' => 'institute',
'children' => [
'model' => \App\Containers\InstituteStructure\Models\Division::class,
'name_key' => 'title',
'slug_key' => 'slug',
],
],
'/news' => [
'label' => 'Новости',
'icon' => 'document',
'order' => 3,
'group' => 'content',
],
'/program' => [
'label' => 'Программы',
'icon' => 'book-open',
'order' => 4,
'group' => 'content',
],
'/schedule' => [
'label' => 'Расписание',
'icon' => 'clock',
'order' => 6,
'group' => 'services',
],
'/additional-education' => [
'label' => 'ДПО',
'icon' => 'academic-cap',
'order' => 7,
'group' => 'content',
'children' => [
'model' => \App\Containers\AdditionalEducation\Models\AdditionalEducation::class,
'name_key' => 'title',
'slug_key' => 'slug',
],
],
'/academic-journals' => [
'label' => 'Журналы',
'icon' => 'beaker',
'order' => 8,
'group' => 'content',
'children' => [
'model' => \App\Containers\Science\Models\AcademicJournal::class,
'name_key' => 'title',
'slug_key' => 'slug',
],
],
'/persons' => [
'label' => 'Сотрудники',
'icon' => 'user',
'order' => 9,
'group' => 'institute',
],
],
];