Skip to content

Latest commit

 

History

History
23 lines (20 loc) · 7.04 KB

task.md

File metadata and controls

23 lines (20 loc) · 7.04 KB

Необходимо реализовать Web-приложения для управления личными коллекциями (книги, марки, монеты, и т.д. — в тексте ниже это называется айтемы). Неаутентифицированные пользователи имеют доступ только в режиме чтения (они могут использовать поиск, но не могут создавать коллекции и айтемы, не могут оставлять комментарии и лайки). Аутентифицированные пользователи не-админы имеют доступ ко всему, за исключением админки.

Админка позволяет управлять пользователя — просматривать, блокировать, разблокировать, удалять, добавлять в админы, удалять из админов (АДМИН МОЖЕТ ЗАБРАТЬ У СЕБЯ ПРАВА АДМИНА, это важно). Админ видит все страницы как их автор (например, админ может открыть коллекцию другого пользователя и добавить в нее айтемы; по сути, админ является владельцем всех коллекций и всех айтемов). Только админ или создатель коллекции или айтемов может ими манипулировать (редактировать, добавлять, удалять). Все доступно для просмотра всем (кроме админки). Пользователи могут зарегистрироваться и аутентифицироваться через сайт. Каждая страниц (в хидере сверху) предоставляет доступ по полнотектстовому поиску. Результаты — всегда айтемы (т.е. если текст найден в комментарии, вы показываете ссылку на айтем с комментариями, а не отдельный комментарий). Если результат коллекция, вы можете или показать любой айтем или же сгенерировать ссылку на коллекцию.

Каждый пользователь имеет личную страницу для управления списком коллекций (создать, удалить, отредактировать) — каждая коллекция в таблице — это ссылка на страницу коллекции, которая содержит таблицу айтемов с сортировками/фильтрами и возможностью создать новый айтем и удалить или отредактировать существующий. Каждая коллекция имеет название, описание (с поддержкой форматировать markdown), тему/категорию (одно значение из фиксированного справочника, например, “Books”, “Signs”, “Silverware” и, конечно, “Other”), опционального изображения (загружается пользователем в облако). Дополнительно коллеуия позволяет указать поля, которые будут у каждого айтема. Плюс у айтемов есть фиксированные поля (id, название, тэги). На уровне коллекции для айтемов можно выбрать любой набор из следующих доступных: 3 целочисленных поля, 3 строковый поля, 3 многострочных текста, 3 логических да/нет чекбокса, 3 поля даты. Для каждого из выбранных полей пользователь задает название. Для примера, пусть я коллекционирую книги. Я могу выбрать (добавить к стандартному набору id, название, тэги) дополнительное строковое поле “Автор”, дополнительный текст “Содержание”, дополнительную дату “Год издания”. Все поля должные рендериться на странице айтема И некоторые из них (строки, даты) в таблице всех айтемов на странице коллекции. Все айтемы должны иметь тэги ( пользователь может ввести несколько тэгов; необходимо поддерживать автодополнние — когда пользователь начинает что-то вводить, ему показывается список из тэгов с соответствующими начальными буквами из тех, что уже есть в базе данных). На главной странице: Список последних добавленных айтемов (имя, коллекция, автор); Список 5 самых больших коллекций; Облако тэгов (когда пользователь кликает на тэг, отображается список айтемов — в общем, лучше всего заюзать страницу результатов поиска).

Когда айтем открыт для просмотра (автором или другим пользователем) внизу отображаются комментарии. Комментарии линейные, добавляются всегда только в конец (нельзя откомментить комментарий в середине). Комментарии обновляются автоматически — когда страница открыта и кто-то другой добавил комментарий, он должен появиться автомагически (возможна задержка в 2-5 секунд). Каждый айтем также содержит лайки (не более одного от одного пользователя на каждый айтем). Сайт должен поддерживать два языка: английский и еще один — польский, узбекский, грузинский, на выбор (пользователь выбирает и выбор сохраняется для пользователя). Сайт должен поддерживать две визуальные темы (skins): светлую и темную (пользователь выбирает и выбор сохраняется).