Разработать на HTML, JS и PHP движок сайта для создания баз знаний, имеющих иерархическую упорядоченность.
База данных - MySQL. Взаимодействие PHP и MySQL должно быть реализовано через PDO (https://www.php.net/manual/ru/pdo.connections.php)
Изменение содержимого страницы должно происходить через AJAX, то есть без полной перезагрузки после каждого действия
== Этап 1 - Реализовать добавление блоков и их первичное отображение ==
Каждый блок хранит только содержимое в текстовом виде и ссылку на вышестоящий блок. Таблица блоков:
CREATE TABLE `block` (
`id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`content` text COLLATE utf8_unicode_ci,
`id_hi` int(11),
CONSTRAINT `block_id_hi` FOREIGN KEY (`id_hi`) REFERENCES `block` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
В исходном состоянии существует единственный блок с id_hi = NULL и content = NULL. Этот блок отображается на всю страницу.
Каждый блок имеет контекстное меню, вызываемое по щелчку правой кнопкой мыши. В этом меню должен быть пункт "Добавить дочерний блок". При выборе этого пункта открывается окно для текста с кнопками "Ок" и "Отмена". При нажатии "Ок" происходит добавление дочернего блока с введенным текстом.
Так как на этом этапе база знаний небольшая, то можно извлекать и отображать все блоки сразу
== Этап 2 - Реализовать удаление и редактирование блоков ==
Добавить в контекстное меню пункты "Удалить" и "Редактировать"
== Этап 3 - Реализовать перемещение блоков мышью ==
Аналогично http://mhrj.orv.org.ru/FILES/ddUI/
== Этап 4 - Разработать алгоритм отображения блоков ==
Извлекать не все блоки, а только те, которые будут отображаться
----
Потом:
* Ссылки на блоки
* Хранении истории изменений
* Возможность отмены изменений
* Разные цвета блоков
* Хранение в блоках изображений и файлов
* Поддержка смартфонов