Some bugfixes for category ordering
Former-commit-id: 9de74d77291d945df502383710a1b5cffbbc86e6pull/10/head
parent
f8d7da1fde
commit
086a8622de
|
|
@ -830,11 +830,19 @@ public class CategoriesController {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final String parentCategoryPath = categoryManager
|
||||||
|
.getCategoryPath(parentCategory);
|
||||||
|
final String pathFragment;
|
||||||
|
if ("/".equals(parentCategoryPath)) {
|
||||||
|
pathFragment = "";
|
||||||
|
} else {
|
||||||
|
pathFragment = parentCategoryPath;
|
||||||
|
}
|
||||||
return String.format(
|
return String.format(
|
||||||
"redirect:/%s/categorysystems/%s/categories/%s",
|
"redirect:/%s/categorysystems/%s/categories/%s#subcategories-section",
|
||||||
sectionIdentifier,
|
sectionIdentifier,
|
||||||
context,
|
context,
|
||||||
categoryManager.getCategoryPath(parentCategory)
|
pathFragment
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
return result.getResponseTemplate();
|
return result.getResponseTemplate();
|
||||||
|
|
|
||||||
|
|
@ -789,6 +789,8 @@ public class CategoryManager implements Serializable {
|
||||||
categoryRepo.save(subCategory);
|
categoryRepo.save(subCategory);
|
||||||
categoryRepo.save(nextCategory);
|
categoryRepo.save(nextCategory);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
fixSubCategoryOrder(parentCategory);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -864,6 +866,30 @@ public class CategoryManager implements Serializable {
|
||||||
categoryRepo.save(subCategory);
|
categoryRepo.save(subCategory);
|
||||||
categoryRepo.save(prevCategory);
|
categoryRepo.save(prevCategory);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
fixSubCategoryOrder(parentCategory);
|
||||||
|
}
|
||||||
|
|
||||||
|
@AuthorizationRequired
|
||||||
|
@Transactional(Transactional.TxType.REQUIRED)
|
||||||
|
public void fixSubCategoryOrder(final Category category) {
|
||||||
|
Objects.requireNonNull(category);
|
||||||
|
|
||||||
|
long order = 1;
|
||||||
|
final List<Category> subCategories = new ArrayList<>(
|
||||||
|
category.getSubCategories()
|
||||||
|
);
|
||||||
|
subCategories.sort(
|
||||||
|
(c1, c2) -> {
|
||||||
|
return Long.compare(c1.getCategoryOrder(), c2.getCategoryOrder());
|
||||||
|
});
|
||||||
|
for (final Category subCategory : subCategories) {
|
||||||
|
subCategory.setCategoryOrder(order);
|
||||||
|
shiro.getSystemUser().execute(() -> {
|
||||||
|
categoryRepo.save(subCategory);
|
||||||
|
});
|
||||||
|
order++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -888,7 +914,7 @@ public class CategoryManager implements Serializable {
|
||||||
"No category with ID %d in the database. Where did that ID come from?",
|
"No category with ID %d in the database. Where did that ID come from?",
|
||||||
ofCategory.getObjectId())));
|
ofCategory.getObjectId())));
|
||||||
|
|
||||||
while(current.getParentCategory() != null) {
|
while (current.getParentCategory() != null) {
|
||||||
categories.add(current);
|
categories.add(current);
|
||||||
current = current.getParentCategory();
|
current = current.getParentCategory();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue