Commit Graph
96 Commits
Author SHA1 Message Date
mirivladandQwen-Coder fefe12367d Feat: Назначения с несколькими курсами
✅ tags-input для курсов (чёрные бейджи)
✅ CourseSearchController API
✅ Массовое создание назначений (курсы × получатели)
✅ Обновлён create.blade.php

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 16:31:02 +08:00
mirivladandQwen-Coder 81828de9a3 Feat: Назначения курсов с tags-input
✅ CourseAssignmentController (index, create, store)
✅ create.blade.php с тремя tags-input (пользователи/группы/организации)
✅ Разные цвета бейджей (зелёный/голубой/синий)
✅ UserSearchController API
✅ index.blade.php список назначений

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 16:06:02 +08:00
mirivladandQwen-Coder 064778b8aa Feat: Поддержка разных цветов бейджей в tags-input
✅ Параметр badge_color (primary, success, info, warning, danger, secondary, dark)
✅ CSS классы для всех цветов Bootstrap
✅ Обновлены addTag и загрузка существующих тегов

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 15:46:04 +08:00
mirivladandQwen-Coder 2e1fdee017 Feat: searchable-select для организации в пользователях
✅ edit.blade.php — выбор организации через searchable-select
✅ create.blade.php — выбор организации через searchable-select
✅ Контроллер не передаёт $organizations

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 15:43:14 +08:00
mirivladandQwen-Coder f8fc503177 Feat: Упрощён просмотр групп пользователя
✅ Только бейджи с названиями групп
✅ Без поля поиска и удаления
✅ Отображение организации в скобках

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 14:32:40 +08:00
mirivladandQwen-Coder 0c35e31d4c Fix: Исправлено добавление существующих тегов
✅ Создаём бейджи напрямую без addTag()
✅ selectedTags.add() перед созданием бейджа

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 14:30:41 +08:00
mirivladandQwen-Coder b848b69294 Feat: Добавлена подробная отладка tags-input
✅ console.log для всех этапов инициализации
✅ Логирование загрузки существующих тегов
✅ Логирование API запросов и ответов

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 14:28:00 +08:00
mirivladandQwen-Coder 3b390c8358 Fix: Загрузка существующих групп при инициализации
✅ API возвращает группы при пустом запросе с user_id
✅ Фильтрация по названию только если query не пустой
✅ Компонент передаёт user_id при загрузке тегов

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 14:18:11 +08:00
mirivladandQwen-Coder 3dfe1e5a2c Fix: Сохранение и загрузка групп пользователя
✅ $user->load('groups') для eager loading
✅ Проверка !empty(trim()) для groups поля
✅ Не очищаем группы если поле пустое
✅ Загрузка существующих тегов при инициализации

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 14:12:16 +08:00
mirivladandQwen-Coder df8172070a Fix: TomSelect addOption для загруженных групп
✅ this.addOption(item) для каждой группы из API
✅ Опции теперь доступны в this.options

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 14:08:58 +08:00
mirivladandQwen-Coder 964a0fd9e1 Fix: Убран @can('update', Group::class) из show.blade.php
✅ Исправлена ошибка Policy
✅ Обновлён show.blade.php с tags-input
✅ Полная очистка кэша

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 13:42:30 +08:00
mirivladandQwen-Coder c5a5280f56 Fix: Tags Input - полное исправление
✅ API не возвращает группы при пустом запросе
✅ onItemAdd вместо onChange для добавления тегов
✅ Очистка поля после добавления тега
✅ Фильтрация по организации пользователя

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 13:14:53 +08:00
mirivladandQwen-Coder 5689604004 Fix: onChange + фильтрация групп
✅ this.options[value] вместо select.options[value]
✅ Проверка data перед addTag
✅ Исправлена группировка whereNull + orWhere в API

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 13:08:11 +08:00
mirivladandQwen-Coder 6a725d27de Fix: JSON экранирование в tags-input
✅ {!! json_encode() !!} вместо {{ json_encode() }}
✅ Правильный JavaScript формат Set

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 13:05:06 +08:00
mirivladandQwen-Coder 244dcdb5c9 Fix: Blade директива на одной строке с JS
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 13:01:13 +08:00
mirivladandQwen-Coder 74c115b7f5 Fix: Исправлена Blade директива в tags-input
✅ @if() → @if(isset() && )
✅ Очистка view кэша

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 12:47:30 +08:00
mirivladandQwen-Coder be44d09169 Fix: Фильтрация групп + исправление GroupPolicy
✅ API groups/search принимает user_id параметр
✅ Фильтр: общие + группы организации ИЛИ только общие
✅ tags-input передаёт user_id в API
✅ Очистка кэша для GroupPolicy

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 12:44:47 +08:00
mirivladandQwen-Coder 11c5dcaf48 Feat: Tags Input компонент для групп (WordPress style)
✅ Новый компонент x-tags-input
✅ Поле ввода + бейджи ниже
✅ Typeahead поиск групп
✅ Крестик для удаления
✅ Синие бейджи как в WordPress
✅ Отдельный компонент (не влияет на searchable-select)

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 12:23:05 +08:00
mirivladandQwen-Coder 4b84528e52 Feat: Теги групп как в WordPress
✅ Синие бейджи с названиями групп
✅ Крестик для удаления (краснеет при наведении)
✅ CSS стили для TomSelect
✅ Компонент для мультивыбора

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 12:15:52 +08:00
mirivladandQwen-Coder 44aa50fc18 Fix: Исправлено имя маршрута api.groups.search
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 12:10:02 +08:00
mirivladandQwen-Coder 1f99664d19 Feat: Searchable Select для групп пользователя
✅ TomSelect с мультивыбором (теги как в WordPress)
✅ API /api/groups/search для поиска групп
✅ Обновлён edit.blade.php пользователя
✅ Обновлён show.blade.php пользователя
✅ Компонент поддерживает multiple=true

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 12:07:07 +08:00
mirivladandQwen-Coder 7782c59f5b Fix: UX улучшения по замечаниям
✅ 1. Ссылка 'Все пользователи' в просмотре организации
✅ 2. Кнопка '+' для группы с предустановленной организацией
✅ 3. Упрощён выбор типа группы (по умолчанию организация)
✅ 4. Исправлена ошибка GroupPolicy::update()
✅ 5. Управление группами в редактировании пользователя
✅ Показ всех доступных групп (общие + организации)

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 11:28:03 +08:00
mirivladandQwen-Coder 00229fc4ea Fix: organization_id nullable в groups table
✅ Миграция для изменения колонки на NULLABLE
✅ Применено к БД

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 11:17:25 +08:00
mirivladandQwen-Coder c3ed5a0edb Fix: Общая группа теперь создаётся
✅ required_if валидация для organization_id
✅ JavaScript убирает required при выборе общей группы
✅ Очищает значение при переключении на общую группу

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 11:12:50 +08:00
mirivladandQwen-Coder f1f1f4edde Fix: Добавлен middleware auth для API поиска
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 10:37:57 +08:00
mirivladandQwen-Coder 4503c217eb Feat: Универсальный компонент Searchable Select
✅ TomSelect библиотека (15KB vs 100KB у Select2)
✅ Blade компонент x-searchable-select
✅ API endpoint /api/organizations/search
✅ Поиск по названию и ИНН
✅ AJAX загрузка данных
✅ Используется в create.blade.php для групп
✅ Модульная архитектура - можно использовать для других полей

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 10:36:02 +08:00
mirivladandQwen-Coder f198afd8a0 Feat: Управление группами пользователей
✅ Modal добавления в группу на странице пользователя
✅ Метод addUser — добавление пользователя в группу
✅ Метод removeUser — удаление пользователя из группы
✅ Фильтр доступных групп (общие + группы организации)
✅ Проверка: нельзя добавить в группу другой организации
✅ Маршруты: POST /users/{user}/groups/add, DELETE /groups/{group}/users/{user}/remove

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 10:25:10 +08:00
mirivladandQwen-Coder 6599b8d5b6 Feat: CRUD групп с типами (организация/общие)
✅ create.blade.php — форма создания с выбором типа группы
✅ store метод — сохранение группы
✅ index.blade.php — кнопка создать, фильтр по пользователю
✅ edit метод — фильтр пользователей по организации
✅ Ссылка Группы в сайдбаре для Admin/Manager
✅ Полные маршруты для groups

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 10:21:17 +08:00
mirivladandQwen-Coder d27b631c8f Feat: CRUD групп пользователей
✅ GroupUserController (index, show, edit, update, destroy)
✅ Маршруты: /admin/groups
✅ Blade шаблоны: index, show, edit
✅ Управление пользователями в группах
✅ Исправлена подсветка сайдбара (Курсы/Тесты)
✅ Ссылка на Группы в сайдбаре для Curator

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 09:28:53 +08:00
mirivladandQwen-Coder 5da8134eae Fix: Работающие ссылки в сайдбаре для всех ролей
✅ Administrator/Manager: Тесты, Назначения — рабочие ссылки
✅ Curator: Пользователи, Группы, Курсы, Назначения — рабочие ссылки
✅ Student: Мои курсы, Тесты — рабочие ссылки
✅ Active state для всех разделов

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 09:05:41 +08:00
mirivladandQwen-Coder be66e30a85 Feat: Назначения курсов — Blade шаблоны
✅ index.blade.php — список с фильтрами
✅ create.blade.php — форма создания (individual/group/organization)
✅ edit.blade.php — форма редактирования
✅ show.blade.php — просмотр назначения
✅ JavaScript для динамического переключения полей

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 08:51:30 +08:00
mirivladandQwen-Coder 0fd33076ab Feat: Назначения курсов — Controller + Policy + Routes
✅ CourseAssignmentController (resource)
✅ CourseAssignmentPolicy
✅ Маршруты: /admin/course-assignments
✅ Регистрация в AuthServiceProvider

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 08:47:02 +08:00
mirivladandQwen-Coder 2cb7d9346a Fix: Убран disabled с form-check-input в превью
✅ opacity: 1 вместо 0.5
✅ Элементы формы неактивны по умолчанию (нет обработчиков)

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-30 08:36:48 +08:00
mirivladandQwen-Coder be502f7bac Fix: z-index для modal чтобы убрать белый фон
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-27 17:32:14 +08:00
mirivladandQwen-Coder 965eb593db Fix: UTF-8 кодировка в modal + исправлен backdrop
✅ urlencode/decodeURIComponent вместо base64
✅ modal-dialog-scrollable для прокрутки
✅ Обработка null для matching/ordering
✅ aria-hidden='true' для accessibility

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-27 17:25:34 +08:00
mirivladandQwen-Coder 26eabf0cfa Fix: Base64 encoding для JSON данных в modal
✅ Используем base64_encode() в Blade
✅ Используем atob() + JSON.parse() в JavaScript
✅ Обработка null значений для matching/ordering

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-27 17:16:57 +08:00
mirivladandQwen-Coder 4201f92476 Feat: Модальное окно предпросмотра вопросов
✅ Клик на текст вопроса открывает modal
✅ Отображение текста вопроса с HTML форматированием
✅ multiple_choice: radio/checkbox в зависимости от кол-ва правильных
✅ matching: таблица с парами
✅ ordering: нумерованный список в правильном порядке
✅ Картинки + текст в ответах

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-27 16:40:18 +08:00
mirivladandQwen-Coder d1d7eecb69 Fix: Сохранение существующих картинок при редактировании
✅ edit.blade.php передаёт existing_image
✅ update() сохраняет existing_image если новый файл не загружен
✅ update() удаляет старую картинку если загружена новая

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-27 16:33:14 +08:00
mirivladandQwen-Coder 523e8912af Fix: Добавлен 'image' в $fillable модели Answer
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-27 16:22:06 +08:00
mirivladandQwen-Coder 95850ca342 Fix: Полный дебаг QuestionController
✅ Логирование каждого шага
✅ Валидация картинок вручную
✅ Проверка hasFile для каждого ответа
✅ Логирование сохранения

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-27 13:34:31 +08:00
mirivladandQwen-Coder 71cb31f784 Fix: Сохранение is_correct и картинок
✅ Используем $request->input('answers') вместо $validated['answers']
✅ is_correct проверяем как строку '1'
✅ Картинки загружаются через $request->file()
✅ Обновлены store и update методы

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-27 12:40:11 +08:00
mirivladandQwen-Coder 729e39bd78 Fix: Добавлен $request в use() closure
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-27 12:27:49 +08:00
mirivladandQwen-Coder be1ba308c9 Fix: Картинки в ответах + toggleCorrect иконка
✅ store/update используют $request->file() для загрузки
✅ toggleCorrect работает с icon.classList вместо innerHTML
✅ Исправлено наследование цвета иконки от кнопки

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-27 11:54:48 +08:00
mirivladandQwen-Coder eefd5fc5da Fix: Сохранение картинок в ответах
✅ Исправлена проверка hasText/hasImage в контроллере
✅ answer_text сохраняется как null если пустой
✅ Картинки отображаются в edit.blade.php в input-group-text
✅ Обновлены store и update методы

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-27 11:48:59 +08:00
mirivladandQwen-Coder 8dc9e59a68 Feat: Обновлён edit.blade.php + strip_tags в index
✅ edit.blade.php полностью переписан под create.blade.php
✅ TinyMCE для текста вопроса и пояснения
✅ Картинки в ответах (просмотр + загрузка новых)
✅ Поддержка matching и ordering
✅ index.blade.php: strip_tags для текста вопроса
✅ tests/show.blade.php: strip_tags для текста вопроса

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-27 11:14:09 +08:00
mirivladandQwen-Coder 20ccc70092 Fix: answer_text nullable - миграция применена
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-27 11:08:57 +08:00
mirivladandQwen-Coder 7f10576181 Fix: TinyMCE skin + toggleCorrect исправлен
✅ TinyMCE: добавлены skin: 'oxide' и content_css: 'default'
✅ toggleCorrect: использует querySelector вместо previousElementSibling
✅ Добавлено переключение классов btn-success/btn-outline-success

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-27 10:58:30 +08:00
mirivladandQwen-Coder ba4a16c7f9 Fix: Добавлен license_key: 'gpl' для TinyMCE
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-27 10:54:58 +08:00
mirivladandQwen-Coder ea4d4df43d Fix: answer_text nullable + TinyMCE локально
✅ Миграция: answer_text теперь nullable
✅ TinyMCE 8.3.2 распакован в public/tinymce/
✅ Русский язык установлен
✅ Используется локальная версия вместо CDN

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-27 10:53:00 +08:00
mirivladandQwen-Coder ffcdd86712 Fix: Исправления для вопросов
✅ Ответы с картинками без текста теперь сохраняются
✅ TinyMCE инициализируется после DOMContentLoaded
✅ Валидация: хотя бы текст ИЛИ картинка в ответе
✅ Обновлены store и update методы

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-27 10:41:14 +08:00
mirivladandQwen-Coder 1c94812f7d Feat: Обновлён create.blade.php для вопросов
✅ TinyMCE WYSIWYG редактор (HTML + картинки)
✅ Поддержка ordering типа (сортировка)
✅ Картинки в ответах (загрузка файлов)
✅ Обновлён QuestionController (store/update)
✅ Валидация изображений (max 2MB)

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-27 09:58:35 +08:00
mirivladandQwen-Coder 025b03c94b Refactor: Убран single_choice (частный случай multiple_choice)
✅ Все single_choice конвертированы в multiple_choice
✅ Отображение (radio/checkbox) зависит от кол-ва правильных ответов:
   - 1 правильный → radio (bi-circle)
   - 2+ правильных → checkbox (bi-check2-square)
✅ Обновлены миграции
✅ Обновлены view файлы

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-27 09:55:33 +08:00
mirivladandQwen-Coder acf616fc08 Feat: Обновление вопросов
✅ Удалён input тип (не имеет смысла без автопроверки)
✅ Добавлен ordering тип (сортировка элементов)
✅ Добавлено поле image для ответов
✅ Миграции применены
✅ QuestionOrderingItem модель

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-27 09:51:17 +08:00
mirivladandQwen-Coder e730cd4856 Feat: Улучшен UI списка вопросов
✅ Таблица вместо списка (удобно для 40-50+ вопросов)
✅ Иконки для типов вопросов:
   - single_choice: 📻 (radio button)
   - multiple_choice: ✅ (checkbox)
   - input: 📝 (textarea)
   - matching: ↔️ (arrows)
✅ Purple badge для matching
✅ Номер вопроса, баллы, кол-во ответов в таблице

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 17:26:30 +08:00
mirivladandQwen-Coder 54e13c7c96 Feat: Добавлены show и edit шаблоны для вопросов
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 17:13:59 +08:00
mirivladandQwen-Coder 89e72895c8 Fix: Исправлены все маршруты admin.tests.* на admin.courses.tests.*
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 17:07:00 +08:00
mirivladandQwen-Coder 6ed7654773 Fix: QuestionPolicy возвращал false - исправлен на проверку ролей
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 16:50:27 +08:00
mirivladandQwen-Coder 1ac09e6889 Fix: QuestionController не был обновлён - перезаписан полный контроллер
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 16:47:31 +08:00
mirivladandQwen-Coder d73fbf3050 Fix: Исправлен маршрут admin.tests.show на admin.courses.tests.show
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 16:21:57 +08:00
mirivladandQwen-Coder dc5418fdfe Fix: Исправлены ссылки на тесты и вопросы
✅ show.blade.php теста - ссылки на вопросы работают
✅ show.blade.php курса - ссылки на тесты работают
✅ Сайдбар - ссылка Тесты ведёт на список курсов
✅ Вопросы кликабельны в списке

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 16:18:55 +08:00
mirivladandQwen-Coder 4235f913d3 Fix: Исправлены маршруты вопросов на admin.tests.questions.*
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 16:01:58 +08:00
mirivladandQwen-Coder 464f1baa01 Fix: Исправлены маршруты в шаблонах вопросов
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 15:57:39 +08:00
mirivladandQwen-Coder a34c2e2812 Feat: CRUD вопросов (начало)
✅ QuestionController (resource)
✅ QuestionPolicy
✅ Маршруты: /admin/tests/{test}/questions
✅ Blade-шаблоны: index, create (с JS для динамических ответов)
✅ Поддержка типов: single_choice, multiple_choice, input, matching
✅ Интеграция в show теста

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 15:45:14 +08:00
mirivladandQwen-Coder fe61dcf4b7 Fix: Исправлены имена маршрутов в show и edit для тестов
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 14:49:11 +08:00
mirivladandQwen-Coder 563fc1157f Fix: Убран shallow routing для тестов
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 14:47:02 +08:00
mirivladandQwen-Coder 895789cabf Feat: Добавлены show и edit шаблоны для тестов
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 14:33:18 +08:00
mirivladandQwen-Coder 7bfa1af596 Fix: Исправлены имена маршрутов в create.blade.php
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 14:27:41 +08:00
mirivladandQwen-Coder 8f02084d3a Fix: Исправлен TestPolicy - возвращать true для ролей
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 13:54:02 +08:00
mirivladandQwen-Coder eeb0628e51 Feat: TestPolicy для управления правами доступа к тестам
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 13:48:42 +08:00
mirivladandQwen-Coder 8ab423607c Fix: Исправлены имена маршрутов для тестов
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 13:37:30 +08:00
mirivladandQwen-Coder 32c9df5453 Feat: CRUD тестов (начало)
✅ TestController (resource controller)
✅ Маршруты: /admin/courses/{course}/tests
✅ Blade-шаблоны: index, create
✅ Интеграция в show курса

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 13:17:44 +08:00
mirivladandQwen-Coder 68439932a8 Fix: Убрано ограничение на максимальные размеры обложки
✅ Оставлен только мин. размер 400x300px
✅ Макс. размеры сняты (поддержка 4K, 8K)
✅ Обновлены сообщения об ошибках
✅ Обновлены подсказки в формах

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 12:57:56 +08:00
mirivladandQwen-Coder 0ac72cadc5 Feat: Улучшен интерфейс загрузки обложки
✅ Показ превью thumbnail при редактировании
✅ Убраны технические подробности о размерах
✅ Оставлена только важная информация (10MB, форматы)

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 12:50:43 +08:00
mirivladandQwen-Coder 0196ec2c12 Fix: Index использует thumbnail, show использует оригинал
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 12:46:07 +08:00
mirivladandQwen-Coder f48c22f75a Fix: Исправлен путь к файлу в generateThumbnail()
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 12:41:06 +08:00
mirivladandQwen-Coder b3d1daeea6 Feat: Генерация thumbnail для обложек курсов
✅ Intervention Image установлен
✅ generateThumbnail() - создаёт копию 400x300px с crop по центру
✅ deleteThumbnails() - удаляет оригинал и thumb
✅ Обновлены store, update, destroy методы
✅ View используют оригиналы для show, thumb для списка

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 12:39:10 +08:00
mirivladandQwen-Coder 65cb891658 Feat: Увеличены лимиты для обложек курсов
✅ Мин. размеры: 400x300px
✅ Макс. размеры: 3000x2000px
✅ Макс. размер файла: 10MB
✅ Обновлены подсказки в формах

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 12:34:25 +08:00
mirivladandQwen-Coder 5ee549fbd1 Feat: Добавлена валидация обложки курса
✅ Минимальные размеры: 400x300px
✅ Максимальный размер: 2MB
✅ Форматы: JPEG, PNG, WebP
✅ Подсказки в формах
✅ Кастомные сообщения об ошибках

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 12:24:28 +08:00
mirivladandQwen-Coder 731eb48537 Feat: CRUD курсов
✅ CourseController (resource)
✅ CoursePolicy
✅ Маршруты: /admin/courses
✅ Blade-шаблоны:
  - index.blade.php (список с карточками)
  - create.blade.php (форма создания)
  - edit.blade.php (форма редактирования)
  - show.blade.php (просмотр)
✅ Ссылка в сайдбаре
✅ Загрузка изображений (thumbnail)
✅ Типы курсов: standard, scorm, h5p

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 11:31:40 +08:00
mirivladandQwen-Coder ca95621856 Fix: Изменено $category на $courseCategory для соответствия route model binding
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 11:23:26 +08:00
mirivladandQwen-Coder 381c31c686 Fix: Исправлена ссылка в edit.blade.php
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 10:59:51 +08:00
mirivladandQwen-Coder 4436a6b2b3 Feat: Добавлены show и edit шаблоны для категорий
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 10:53:58 +08:00
mirivladandQwen-Coder 5c1306d6e5 Fix: Указан правильный foreign key в CourseCategory::courses()
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 10:50:16 +08:00
mirivladandQwen-Coder 8ce35370a9 Fix: Удалена дублирующая миграция category_id
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 10:45:54 +08:00
mirivladandQwen-Coder ca2be7a926 Fix: Добавлен namespace для CourseCategoryController в routes/web.php
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 10:42:33 +08:00
mirivladandQwen-Coder dacff2dd1c Feat: CRUD категорий курсов
✅ CourseCategoryController (resource)
✅ CourseCategoryPolicy
✅ Маршруты: /admin/course-categories
✅ Blade-шаблоны:
  - index.blade.php (древовидный список)
  - create.blade.php
  - _row.blade.php (partial для дерева)
✅ Ссылка в сайдбаре
✅ Вложенность категорий (parent/children)
✅ Scope tree() для древовидной структуры

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 10:39:14 +08:00
mirivladandQwen-Coder 3bec82a991 Feat: CRUD пользователей
✅ UserController (resource controller)
✅ UserPolicy
✅ Маршруты: /admin/users (resource)
✅ Blade-шаблоны:
  - admin/users/index.blade.php (с фильтрами)
  - admin/users/create.blade.php
  - admin/users/edit.blade.php (с группами)
  - admin/users/show.blade.php
✅ Ссылка в сайдбаре
✅ Привязка к организациям
✅ Распределение по группам
✅ Управление ролями

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 10:29:24 +08:00
mirivladandQwen-Coder 2561807e3b Feat: Добавлен просмотр группы (show)
✅ GroupController@show метод
✅ admin/groups/show.blade.php шаблон
✅ Исправлена ссылка на просмотр в admin/organizations/show.blade.php
✅ Загрузка пользователей группы через load('users')

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 09:56:50 +08:00
mirivladandQwen-Coder 193d1efc50 Fix: Исправлен маршрут admin.groups.edit -> admin.organizations.groups.edit в show.blade.php
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 09:47:50 +08:00
mirivladandQwen-Coder 052ac71e9d Fix: Убраны shallow routes для групп. Теперь все маршруты используют organization
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 09:44:57 +08:00
mirivladandQwen-Coder 0f3bfc087d Fix: Исправлены маршруты в шаблонах групп (store, update)
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 09:41:23 +08:00
mirivladandQwen-Coder e793b377d7 Fix:
- Исправлены маршруты групп (admin.organizations.groups.*)
- Вынесен сайдбар в partial (_sidebar.blade.php)
- Добавлена ссылка на Отчёты в сайдбар
- Обновлены все шаблоны для использования partial

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 09:03:19 +08:00
mirivladandQwen-Coder 4f5a615860 CRUD групп - Этап 2
✅ GroupController (index, create, store, edit, update, destroy)
✅ GroupPolicy (viewAny, view, create, update, delete)
✅ Маршруты: /admin/organizations/{organization}/groups (shallow resource)
✅ Blade-шаблоны:
  - admin/groups/index.blade.php (список групп организации)
  - admin/groups/create.blade.php (форма создания)
  - admin/groups/edit.blade.php (форма редактирования)
✅ Обновлён admin/organizations/show.blade.php (управление группами)
✅ Обновлён AuthServiceProvider (регистрация GroupPolicy)

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 08:53:48 +08:00
mirivladandQwen-Coder 32fed5d4b6 Fix: Добавлен метод courses() в Organization model
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 08:51:27 +08:00
mirivladandQwen-Coder 2271abf732 CRUD организаций - Этап 2
✅ OrganizationController (index, create, store, show, edit, update, destroy)
✅ OrganizationPolicy (viewAny, view, create, update, delete)
✅ Маршруты: /admin/organizations (resource)
✅ Blade-шаблоны:
  - admin/organizations/index.blade.php (список с пагинацией)
  - admin/organizations/create.blade.php (форма создания)
  - admin/organizations/show.blade.php (просмотр + статистика)
  - admin/organizations/edit.blade.php (форма редактирования)
✅ Обновлённое меню в dashboard/admin.blade.php

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-26 08:41:45 +08:00
mirivladandQwen-Coder 244c56df39 LMS Этап 1 MVP - Laravel 13
✅ Базовая функциональность:
- Аутентификация (вход/выход/регистрация)
- Роли и разрешения (Administrator, Manager, Curator, Student)
- Панель управления (dashboard) для разных ролей

✅ База данных (23 миграции):
- users, organizations, groups, user_groups
- course_categories, courses, course_modules
- tests, questions, answers, question_matching_pairs
- test_attempts, test_responses
- course_requests, course_request_items, course_assignments
- scorm_data, user_course_progress, logs
- permission tables

✅ Модели (15 моделей с отношениями):
- User, Organization, Group
- CourseCategory, Course, CourseModule
- Test, Question, Answer, QuestionMatchingPair
- TestAttempt, TestResponse
- CourseRequest, CourseRequestItem, CourseAssignment
- ScormData, UserCourseProgress, Log

✅ Seeders:
- RoleSeeder (роли и разрешения)
- UserSeeder (тестовые пользователи)

✅ Контроллеры:
- LoginController, RegisterController, DashboardController

✅ Blade-шаблоны:
- layouts/app.blade.php
- auth/login.blade.php, auth/register.blade.php
- dashboard/admin.blade.php, dashboard/curator.blade.php, dashboard/student.blade.php

📦 Пакеты:
- Laravel 13 (dev-master)
- spatie/laravel-permission
- laravel/sanctum

🔧 Инфраструктура:
- Nginx конфигурация
- PHP 8.4-FPM
- MariaDB

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-03-25 17:30:37 +08:00