refs #2662 - ( #39afx2h )
This commit is contained in:
parent
815faf82fa
commit
ea5ce7f02b
@ -146,14 +146,31 @@ class Categories extends Controller
|
||||
$categories[$type] = [];
|
||||
}
|
||||
|
||||
Category::enabled()->orderBy('name')->get()->each(function ($category) use (&$categories, $edited_category_id) {
|
||||
if ($edited_category_id != $category->id) {
|
||||
$skip_categories = [];
|
||||
$skip_categories[] = $edited_category_id;
|
||||
|
||||
foreach ($category->sub_categories as $sub_category) {
|
||||
$skip_categories[] = $sub_category->id;
|
||||
|
||||
if ($sub_category->sub_categories) {
|
||||
$skips = $this->getChildrenCategoryIds($sub_category);
|
||||
|
||||
foreach ($skips as $skip) {
|
||||
$skip_categories[] = $skip;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Category::enabled()->orderBy('name')->get()->each(function ($category) use (&$categories, &$skip_categories) {
|
||||
if (in_array($category->id, $skip_categories)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$categories[$category->type][] = [
|
||||
'id' => $category->id,
|
||||
'title' => $category->name,
|
||||
'level' => $category->level,
|
||||
];
|
||||
}
|
||||
});
|
||||
|
||||
return view('settings.categories.edit', compact('category', 'types', 'type_disabled', 'categories'));
|
||||
@ -167,10 +184,8 @@ class Categories extends Controller
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function update($category_id, Request $request)
|
||||
public function update(Category $category, Request $request)
|
||||
{
|
||||
$category = $this->getCategoryWithoutChildren($category_id);
|
||||
|
||||
$response = $this->ajaxDispatch(new UpdateCategory($category, $request));
|
||||
|
||||
if ($response['success']) {
|
||||
@ -197,10 +212,8 @@ class Categories extends Controller
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function enable($category_id)
|
||||
public function enable(Category $category)
|
||||
{
|
||||
$category = $this->getCategoryWithoutChildren($category_id);
|
||||
|
||||
$response = $this->ajaxDispatch(new UpdateCategory($category, request()->merge(['enabled' => 1])));
|
||||
|
||||
if ($response['success']) {
|
||||
@ -217,10 +230,8 @@ class Categories extends Controller
|
||||
*
|
||||
* @return Response
|
||||
*/
|
||||
public function disable($category_id)
|
||||
public function disable(Category $category)
|
||||
{
|
||||
$category = $this->getCategoryWithoutChildren($category_id);
|
||||
|
||||
$response = $this->ajaxDispatch(new UpdateCategory($category, request()->merge(['enabled' => 0])));
|
||||
|
||||
if ($response['success']) {
|
||||
|
@ -94,6 +94,7 @@ class Category extends Model
|
||||
{
|
||||
return $this->resolveRouteBindingQuery($this, $value, $field)
|
||||
->withoutGlobalScope(Scope::class)
|
||||
->getWithoutChildren()
|
||||
->first();
|
||||
}
|
||||
|
||||
|
@ -43,4 +43,19 @@ trait Categories
|
||||
|
||||
return $id == $this->getTransferCategoryId();
|
||||
}
|
||||
|
||||
public function getChildrenCategoryIds($category)
|
||||
{
|
||||
$ids = [];
|
||||
|
||||
foreach ($category->sub_categories as $sub_category) {
|
||||
$ids[] = $sub_category->id;
|
||||
|
||||
if ($sub_category->sub_categories) {
|
||||
$ids = array_merge($ids, $this->getChildrenCategoryIds($sub_category));
|
||||
}
|
||||
}
|
||||
|
||||
return $ids;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user