Дедлайн: 2.02.24 включно.
-- Функціональні вимоги:
З погляду функціональності, застосунок може бути розбито на кілька частин: список статей, деталізація статей і редагування статей. У застосунку не розглядається синхронізація даних для кількох користувачів/клієнтів.
--Список статей
Список статей доступний за адресою URL ./articles і охоплює в основному такі функції:
1) Користувач може переглянути посторінковий список статей, звернувшись до URL ./articles. Кожна сторінка містить не більше 10 статей.
2) Користувач може переміщатися по сторінках за допомогою кнопок Next і Previous.
3) Якщо користувач перебуває на першій/останній сторінці, кнопка " Previous/Next" ховається.
4) На сторінці відображається поточна кількість сторінок.
5) Для кожної статті в списку відображається її назва.
6) Для кожної статті в списку відображається посилання з текстом Show. Коли користувач натискає на посилання, відображається детальна інформація про статтю - URL ./article/{id}.
7) Для кожної статті в списку відображається посилання з текстом Edit. При натисканні на посилання користувачеві відображається редагування статті - URL ./article-edit/{id}.
8) Для кожної статті в списку відображається посилання з текстом Delete. При натисканні на нього стаття видаляється, а список статей оновлюється. Після оновлення користувач залишається на тій самій сторінці списку, якщо це неможливо, то відображається остання сторінка. Видалення має бути виконано за допомогою технології AJAX з HTTP-методом DELETE. Оновлення має здійснюватися тільки за допомогою JavaScript, сторінка не повинна перезавантажуватися з сервера.
9) На сторінці відображається кнопка з текстом Create article.
10) Після натискання на кнопку Create article відображається діалог. У діалозі є текстове поле з написом Name, у якому користувач може ввести назву нової статті. Коли діалог відображається, текстове поле порожнє, а його довжина обмежена 32 символами. Діалог містить кнопки Create і Cancel.
11) При натисканні кнопки Cancel діалог закривається, і зміни не вносяться.
12) Кнопка Create може бути натиснута тільки в тому разі, якщо заповнено назву статті.
13) При натисканні кнопки Create створюється нова стаття із заданим ім'ям і порожнім вмістом. Потім користувач перенаправляється на редагування створеної статті.
-- Детальна інформація про статтю
Детальна інформація про статтю доступна за URL ./article/{id}, де {id} - ідентифікатор статті. Детальна інформація про статтю включає в себе такі функції:
14) Користувач може переглянути подробиці статті, звернувшись до URL ./article/{id}, де {id} - дійсний ідентифікатор статті.
15) Якщо стаття із заданим {id} не існує, повертається порожній документ із кодом 404.
16) Якщо стаття існує, відображаються заголовок статті, опис статті, кнопка "Edit" і кнопка "Back to articles".
17) При натисканні кнопки Edit користувач перенаправляється на редагування статті - URL ./article-edit/{id}.
18) ....
Далі в файлі.