Здесь показаны различия между двумя версиями данной страницы.
— |
матрешка [2021/10/17 19:37] (текущий) keremet создано |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | Разработать на 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 - Разработать алгоритм отображения блоков == | ||
+ | Извлекать не все блоки, а только те, которые будут отображаться | ||
+ | |||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | Потом: | ||
+ | * Ссылки на блоки | ||
+ | * Хранении истории изменений | ||
+ | * Возможность отмены изменений | ||
+ | * Разные цвета блоков | ||
+ | * Хранение в блоках изображений и файлов | ||
+ | * Поддержка смартфонов | ||