Проект Panda
Проект Panda - это пример создания новостной ленты, где пользователи сами смогут добавлять ссылки на новости, определять категорию новости, голосовать за новость и комментировать её. Цель проекта - познакомиться с основами Eaze.
Задание
-
Спроектировать базу данных, взяв за основу объектную модель и предоставленный шаблон (Panda.dm2) для Toad Data Modeller.
Реализовать административный интерфейс (VT) для управления новостями, категориями новостей и комментариями.
Донастройка – улучшить шаблоны, проверка ошибок.
Реализовать основную часть сайта (FE).
Структура сайта
Объектная модель (Panda.News)
Новость (news)
Свойства новости
Заголовок* – заголовок новости (title, varchar 255)
Преамбула* – краткое описание новости (foreword, varchar 1024)
Текст – полный текст новости (content, text)
Картинка – маленькая картинка 100х100 (fileId, int)
Ссылка на источник* – url новости (url, varchar 2048)
Email* – почтовый адрес автора, создавшего новость (email, varchar 255)
Дата* – дата добавления комментария (createdAt, timestamp, default now)
Рейтинг* – кол-во проголосовавших за новость (rating, int)
Категория* – категория новости (categoryId, int)
Статус* – (statusId, int)
Категория новости (categories)
Свойства категории
Название* – название категории (title,varchar 255)
Системное имя* – английское название (alias, varchar 32, [a-z0-9-])
Статус* – (statusId, int)
Комментарий (comments)
Свойства комментария
Автор* – автор комментария (author, varchar 16)
Email* – почтовый адрес автора (email, varchar 255)
Текст* – комментарий (comment, varchar 1024)
Дата* – дата добавления комментария (createdAt, timestamp, default now)
IP* – IP адрес отправителя (ip, inet)
Родительский комментарий – (parentCommentId, int)
Флаг постмодерации* (isPostModerated, bool, default false).
Новость* – (newsId, int)
Статус* – (statusId, int)
Рейтинг новости (newsRatings)
Свойства рейтинга новости
IP* – IP адрес оценившего (ip, inet)
Дата* – дата голосования (createdAt, timestamp, default now)
Новость* – (newsId, int)
Основные требования
Полная проверка пользовательского ввода (включая проверку на существование email [mx] или url [http 200])
Проверка уникальности url
Комментарии к шаблону базы данных
Base.Common
statuses – системная таблица со статусами. Служит для логического удаления объектов из базы или снятия их с публикации. По умолчанию статусов в ней 3, но можно расширять своими.
1 – опубликован
2 – не опубликован
3 – удален
users – пользователи административной части.
daemonLocks – таблица блокировок для демонов. Существует возможность вызова любого статического метода и создания блокировки для него на какое-то время. После завершения метода блокировка снимается. Если метод выпал в Fatal, то следующий запуск метода возможен только после истечения интервала maxExecutionTime от runAt.
Base.VFS
Пакет Base.VFS – это виртуальная файловая система. Все интерфейсы для работы с ней уже написаны (выбор файла, загрузка файла и т.д.)
vfsFolders – древовидный список папок.
vfsFoldersTree – реализация деревьев для списка папок.
vfsFiles – список файлов.
Panda.Common
Пакет Panda.Common позволяет решить стандартные задачи по наполнению и структуре сайта.
siteParams – таблица, в которой удобно хранить различные параметры, например Email, кому нужно отправлять письмо или идентификатор счетчика для Google Analytics. В шаблонном проекте на основе Eaze уже есть следующие параметры: Google.Meta, Google.
API, Google.Analytics, Yandex.Meta, Yandex.
API (.Meta – инструменты для веб-мастеров, .
API – ключи для карт).
staticPages – поддержка обычных статических страниц.
metaDetails – переопределение meta-информации по url для поисковой оптимизации.
navigationTypes – типы навигации (например, нижнее меню или верхнее меню).
navigations – элементы навигации.
Постарайтесь спроектировать в TDM базу данных, после этого перейти к следующему этапу и проверить то, что у Вас получилось.