Добавить к сайту Laravel интерактивные уведомления
7 000 руб. за проект
К существующему сайту на Laravel с bootstrap, jquery, livewire нужно добавить функционал уведомлений.
Использовать livewire для интерактивности на фронте и Laravel Notifications для создания/управления уведомлениями.
Уведомления должны создаваться системой из различных контроллеров и job'ов. Храниться в БД.
Появляться должны в ~ реальном времени если у пользователя открыт сайт:
1) в меню уведомлений и
2) в всплывающем окне через pNotify (уже встроен)
Интерактивность появления уведомлений и подгрузку данных в меню уведомлений реализовать через livewire, обращаться к серверу раз в 5 секунд.
Меню уведомлений:
В верхнем меню сайта добавить кнопку уведомлений - Колокольчик.
На кнопке уведомлений показывать badge с количеством непрочитанных сообщений (интерактивно меняется если кол-во изменилось).
По нажатию на кнопку появляется выпадающее окно/меню с непрочитанными уведомлениями.
Важно: livewire не должен грузить список непрочитанных уведомлений каждые 5 секунд при обращении к серверу, только кнопку с кол-вом уведомлений. Подгрузка списка уведомлений осуществляется при наведении мыши на кнопку. Показ списка (меню уведомлений) тоже при наведении на кнопку. Вот тут пример реализации https://otus.ru/notifications/.
Показываются последние 10 непрочитанных уведомлений.
У каждого уведомления в списке показывается дата создания (через Carbon в формате "3 часа назад") и текст уведомления. Текст уведомления может содержать ссылку куда либо. Справа от уведомления кнопка X по нажатию на которую уведомление скрывается из списка и становится прочтенным.
Внизу списка уведомлений ссылка "Еще", ведущая на страницу уведомлений /notifications
Вверху списка кнопка "Пометить все как прочитанное", отмечающая все показанные в окне уведомления как прочитанные и подгружающая новые непрочитанные уведомления. Если непрочитанных уведомлений больше нет - окно скрывается.
Выглядеть появляющееся окно с уведомлениями должно примерно так:
![](data:image/png;base64,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)
Создание уведомления
Должна быть возможность создания уведомлений с заданным текстом из любого контроллера или выполняемой по расписанию задачи laravel. Что то вроде notification::add($user_id, $text).
Страница уведомлений
На странице /notifications выводить список всех уведомлений пользователя с pagination и 2 чекбоксами readed/unread чтобы пользователь по умолчанию видел только непрочитанные уведомления но мог посмотреть так же прочитанные. Так же добавить кнопки "Пометить все как прочитанное" и "Прочитано" у каждого уведомления.
Подгрузка данных, пагинация и все кнопки реализуются через livewire без перезагрузки страницы.
Прочтение уведомления:
Уведомление становится прочитанным если
1. Пользователь нажал "Отметить все как прочитанное" или "Прочитано" для конкретного уведомления в окне с списком уведомлений или на странице /notifications
2. Если пользователь перешел по ссылке в уведомлении (добавлять что то вроде ?notify=12354 к ссылке)
В приложении есть модели/контроллеры/CRUD для 2 видов объектов - posts и products
Для демонстрации работы настроить появление уведомлений при создании объектов в posts и products с ссылками на созданные объекты.
Даем доступ к репозиторию на github и, если надо, VDS серверу с приложением.
Результаты нужно будет оформить коммитом в репозиторий.
Использовать livewire для интерактивности на фронте и Laravel Notifications для создания/управления уведомлениями.
Уведомления должны создаваться системой из различных контроллеров и job'ов. Храниться в БД.
Появляться должны в ~ реальном времени если у пользователя открыт сайт:
1) в меню уведомлений и
2) в всплывающем окне через pNotify (уже встроен)
Интерактивность появления уведомлений и подгрузку данных в меню уведомлений реализовать через livewire, обращаться к серверу раз в 5 секунд.
Меню уведомлений:
В верхнем меню сайта добавить кнопку уведомлений - Колокольчик.
На кнопке уведомлений показывать badge с количеством непрочитанных сообщений (интерактивно меняется если кол-во изменилось).
По нажатию на кнопку появляется выпадающее окно/меню с непрочитанными уведомлениями.
Важно: livewire не должен грузить список непрочитанных уведомлений каждые 5 секунд при обращении к серверу, только кнопку с кол-вом уведомлений. Подгрузка списка уведомлений осуществляется при наведении мыши на кнопку. Показ списка (меню уведомлений) тоже при наведении на кнопку. Вот тут пример реализации https://otus.ru/notifications/.
Показываются последние 10 непрочитанных уведомлений.
У каждого уведомления в списке показывается дата создания (через Carbon в формате "3 часа назад") и текст уведомления. Текст уведомления может содержать ссылку куда либо. Справа от уведомления кнопка X по нажатию на которую уведомление скрывается из списка и становится прочтенным.
Внизу списка уведомлений ссылка "Еще", ведущая на страницу уведомлений /notifications
Вверху списка кнопка "Пометить все как прочитанное", отмечающая все показанные в окне уведомления как прочитанные и подгружающая новые непрочитанные уведомления. Если непрочитанных уведомлений больше нет - окно скрывается.
Выглядеть появляющееся окно с уведомлениями должно примерно так:
Создание уведомления
Должна быть возможность создания уведомлений с заданным текстом из любого контроллера или выполняемой по расписанию задачи laravel. Что то вроде notification::add($user_id, $text).
Страница уведомлений
На странице /notifications выводить список всех уведомлений пользователя с pagination и 2 чекбоксами readed/unread чтобы пользователь по умолчанию видел только непрочитанные уведомления но мог посмотреть так же прочитанные. Так же добавить кнопки "Пометить все как прочитанное" и "Прочитано" у каждого уведомления.
Подгрузка данных, пагинация и все кнопки реализуются через livewire без перезагрузки страницы.
Прочтение уведомления:
Уведомление становится прочитанным если
1. Пользователь нажал "Отметить все как прочитанное" или "Прочитано" для конкретного уведомления в окне с списком уведомлений или на странице /notifications
2. Если пользователь перешел по ссылке в уведомлении (добавлять что то вроде ?notify=12354 к ссылке)
В приложении есть модели/контроллеры/CRUD для 2 видов объектов - posts и products
Для демонстрации работы настроить появление уведомлений при создании объектов в posts и products с ссылками на созданные объекты.
Даем доступ к репозиторию на github и, если надо, VDS серверу с приложением.
Результаты нужно будет оформить коммитом в репозиторий.
Отзывы
В заказе есть исполнитель
При переводе заказа из архивного в актуальный, текущий исполнитель будет снят с задачи.
Выберите тип сделки
С безопасной сделкой вы всегда сможете вернуть средства, если что-то пойдет не так. С простой сделкой вы самостоятельно договариваетесь с исполнителем об оплате и берете на себя решение конфликтов.