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