ДОКУМЕНТАЦИЯ
Руководство по разработке бэкенда сайта educate.
1. Размещаем фреймворк
размещаем пустой фреймворк на домене educate.q-pax.ru
В папке old_structure размещены все файлы домена education.q-pax.ru чтобы у вас была возможность смотреть не только данные, но и код, где он есть.
2. Перенос данных в БД
Большая часть данных education размещена статично в html. Эту информацию нужно корректно перенести в бд.
Там где идёт информация о группах - занести эту информацию в существующую таблицу групп, добавить поля учебного года (начало и конец).
Информацию статистики брать из бд.
3. Перенос каталогов
quality перенести в папку groups groups переименовать в work
в хтаксесс исключить из обработки папку work
4. Контроллеры
создать контроллеры:
- forum
- library
- practice
- visits
- auth - для авторизации и смены пароля (регистрация не нужна)
5. Представления
Размещаем вёрстку в представлениях.
Для представления visits нужно добавить скрипты которые есть на этой странице в оригинале. Возможно их придётся немного поменять - так как элементы к которым они обращаются - ячейки таблицы станут доступны по немного другим селекторам из-за изменения вёрстки.
Но в целом вроде должно и так работать, так как селекторы там начинаются от таблицы посещаемости. Главное перенести все классы и data-аттрибуты используемые js
6. Методы
Переносим функционал в методы контроллеров
- forum
- visits (здесь на стороне фронтенда есть js скрипты, которые отправляют изменения в ячейках таблиц)
- library
- practice
Создаём функционал контроллеров, работающих одинаково.
Разница library и practice будет только в том, к каким таблицам они обращаются, и в practice данные будут размещаться по авторам. В будущем с возможностью редактирования в отличии от library.
Выглядят, как свёрстанные страницы задач, но работают с разными таблицами бд. Одна - таблица для лекций, вторая таблица для описания тз задач.
7. Рендер
Там где нужно рендерим данные на представления.
Дописываем логику представлений для вывода переданных данных циклами. Или подстановку необходимых данных на детальных страницах.
8. Тестирование
Проверяем есть ли неработающий запланированный функционал
Дописываем недостающие методы и их код
Тестируем
Исправляем ошибки
1. Выполнение работ на парах
1.1 Добавить в посещаемости ещё один цвет - выполнил работу.
1.2 Добавляем в бд между статусами присутствовал и опоздал, статус выполнил работу. (скорее всего это просто число, тогда добавлять в бд ничего не надо)
1.3 меняем легенду, цвета статусов(тон такой же мягкий не яркий) и порядок статусов:
- присутствовал - зелёный
- выполнил работу - синий
- опоздал - жёлтый
- болел - оранжевый
- перевод - красный
2. Оценки
Добавить возможность выставлять оценки за занятия.
2.1 В таблице посещаемости БД добавить поле оценки.
2.2 При двойном клике в ячейке должно появляться числовое поле ввода, в которое можно поставить оценку по пятибальной шкале.
2.3 При клике мимо ячейки или нажатии клавиши энтер на клавиатуре, значение оценки сохраняется в таблицу посещаемости БД в ту же строку посещения, которой соответствует данная ячейка таблицы представления.
2.4 Если в таблице посещаемости бд стсоит оценка - она должна отображаться в ячейке таблицы посещаемости представления.
3. Управление задачами
добавить возможность создавать задачи и их описание всем зарегистрированным пользователям.
3.1 Добавить в таблицу поля - "владелец задачи".
3.2 На верхнем уровне задачи разбиты по пользователям - владельцам.
3.3 В списке задач авторизованному пользователю отображается кнопка добавить задачу.
3.4 При нажатии на кнопку появляется форма с полями для заполнения данных задачи.
3.5 Владелец созданной задачи имеет доступ к кнопке редактировать задачу
3.6 При нажатии перекидывает на ту же форму, что и при создании задачи, но с заполненными полями, и скрытым полем для id.
3.7 В форме при нажатии кнопки сохранить, данные записываются в БД
3.8 на самом верхнем уровне отображать две вкладки "мои задачи", "другие авторы"
3.9 при переходе на других авторов отобразить тех авторов, у которых есть задачи и при клике переходить к списку задач указанного автора
4. Приватность задач
4.1 Добавить в таблицу поля - "приватность задачи".
4.2 Статусы приватности: публичная, защищённая, приватная, личная
4.3 Публичные задачи могут просматривать все.
4.4 Защищённые в списке видят все, но деталку могут просмотреть только авторизованные.
4.5 Приватные задачи в списке и на деталке видят только владелец и те, кто внесён в список исполнителей. Добавляем таблицу связи исполнитель: пользователь - задача
4.6 Личные задачи в списке и на деталке видит только владелец.
4.7 При создании и редактировании задач добавить поле приватности задачи.
5. Шифрование паролей
После того как заработает функционал смены или восстановления пароля
Авторизацию переделать на пароли с шифрованием с солью
Те пароли, которые есть - зашифровать.
1. Только после того, как сайт заработает штатно. Пробуем переделать на spa.
1.1 загружаем шаблон, создаём пустые вкладки всех страниц, скрываем все и делаем видимой только вкладку главной
1.2 загружаем список блоков текущей страницы в js.
1.3 js проходит по списку блоков необходимых для страницы, которые должны быть загружены для формирования страницы.
1.4 js для каждого блока создаёт блок div с соответствующим id во вкладке текущей страницы. отображаем в каждом блоке gif загрузки данных. Отсылает запросы для каждого из блоков.
1.5 при получении ответа от сервера, js скрывает gif загрузки (только этого блока) и размещает полученную информацию в соответствующий блок.
1.6 при переходе на другую страницу - перехватываем ссылку js, отменяем переход, меняем активность меню, скрываем вкладку текущей страницы, отображаем вкладку страницы на которую перешли.
1.7 Для открытой страницы проверяем была ли она загружена и изменились ли параметры её загрузки (постраничник, фильтры, иные get параметры, состояние на сервере для страницы форума, например появление нового комментария)
1.8 Если изменений нет - просто открываем вкладку страницы, если изменения есть, повторяем пункты 1.2-1.5.
2. Учебники
2.2 skillfactory spa
2.4 habr Создание микросервисной архитектуры
2.5 Как работает Single Page Application
2.6 Skypro Разработка одностраничных приложений
2.7 fortech Комплексное руководство по разработке и архитектуре
0. Тема
0. Тема