diff --git a/admin.php b/admin.php
index cbd5c27..a6c80f9 100644
--- a/admin.php
+++ b/admin.php
@@ -58,8 +58,8 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
try {
if ($action === 'create_section') {
$name = trim((string)($_POST['name'] ?? ''));
- $sort = (int)($_POST['sort_order'] ?? 1000);
if ($name === '') throw new RuntimeException('Название раздела пустое');
+ $sort = nextSectionSortOrder();
sectionCreate($name, $sort);
$message = 'Раздел создан';
}
@@ -82,7 +82,6 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if ($action === 'create_topic') {
$name = trim((string)($_POST['name'] ?? ''));
- $sort = (int)($_POST['sort_order'] ?? 1000);
$parentId = (int)($_POST['parent_id'] ?? 0);
$parent = null;
if ($name === '') throw new RuntimeException('Название тематики пустое');
@@ -95,6 +94,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
}
}
+ $sort = nextTopicSortOrder($parentId > 0 ? $parentId : null);
topicCreate($name, $parentId > 0 ? $parentId : null, $sort);
$message = 'Тематика создана';
}
@@ -486,6 +486,21 @@ function buildTopicTree(array $topics): array
return $roots;
}
+function nextSectionSortOrder(): int
+{
+ $sort = (int)db()->query('SELECT COALESCE(MAX(sort_order), 990) + 10 FROM sections')->fetchColumn();
+ return max(10, $sort);
+}
+
+function nextTopicSortOrder(?int $parentId): int
+{
+ $st = db()->prepare('SELECT COALESCE(MAX(sort_order), 990) + 10 FROM topics WHERE parent_id <=> :pid');
+ $st->bindValue('pid', $parentId, $parentId === null ? PDO::PARAM_NULL : PDO::PARAM_INT);
+ $st->execute();
+ $sort = (int)$st->fetchColumn();
+ return max(10, $sort);
+}
+
function saveBulkBefore(array $files, int $sectionId): array
{
$ok = 0;
@@ -844,34 +859,42 @@ function nextUniqueCodeName(string $base): string
- Нет разделов для редактирования. Разделов пока нет. Фото: = (int)$section['photos_count'] ?>Редактировать выбранный раздел
-
-
-
-
- Создать раздел
Список разделов
+
+