Разработать на 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 - Разработать алгоритм отображения блоков == Извлекать не все блоки, а только те, которые будут отображаться ---- Потом: * Ссылки на блоки * Хранении истории изменений * Возможность отмены изменений * Разные цвета блоков * Хранение в блоках изображений и файлов * Поддержка смартфонов