Enhance categories, add tags, parent
This commit is contained in:
@@ -5,6 +5,7 @@ namespace App\Http\Controllers\Admin\Shop;
|
|||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
use App\Repositories\Shop\Categories;
|
use App\Repositories\Shop\Categories;
|
||||||
|
use App\Repositories\Shop\TagGroups;
|
||||||
use App\Datatables\Shop\CategoriesDataTable;
|
use App\Datatables\Shop\CategoriesDataTable;
|
||||||
|
|
||||||
class CategoryController extends Controller
|
class CategoryController extends Controller
|
||||||
@@ -24,6 +25,7 @@ class CategoryController extends Controller
|
|||||||
$data = [];
|
$data = [];
|
||||||
$data['category_id'] = 0;
|
$data['category_id'] = 0;
|
||||||
$data['categories'] = Categories::getOptions();
|
$data['categories'] = Categories::getOptions();
|
||||||
|
$data['tags_list'] = TagGroups::getTreeTags();
|
||||||
return view('Admin.Shop.Categories.create', $data);
|
return view('Admin.Shop.Categories.create', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -41,8 +43,9 @@ class CategoryController extends Controller
|
|||||||
|
|
||||||
public function edit($id)
|
public function edit($id)
|
||||||
{
|
{
|
||||||
$data = Categories::get($id)->toArray();
|
$data['category'] = Categories::get($id)->toArray();
|
||||||
$data['categories'] = Categories::getOptions();
|
$data['categories'] = Categories::getOptions();
|
||||||
|
$data['tags_list'] = TagGroups::getTreeTags();
|
||||||
return view('Admin.Shop.Categories.edit', $data);
|
return view('Admin.Shop.Categories.edit', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -24,4 +24,15 @@ class Category extends Model
|
|||||||
{
|
{
|
||||||
return $this->morphedByMany('App\Models\Shop\Article', 'categorizable');
|
return $this->morphedByMany('App\Models\Shop\Article', 'categorizable');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function Shelves()
|
||||||
|
{
|
||||||
|
return $this->morphedByMany('App\Models\Shop\Category', 'categorizable');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function CategoryTree()
|
||||||
|
{
|
||||||
|
return $this->belongsTo(app('rinvex.categories.category'),'category_id');
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -130,13 +130,17 @@ class Articles
|
|||||||
public static function storeFull($data)
|
public static function storeFull($data)
|
||||||
{
|
{
|
||||||
$images = isset($data['images']) ? $data['images'] : false;
|
$images = isset($data['images']) ? $data['images'] : false;
|
||||||
$categories = isset($data['categories']) ? $data['categories'] : false;
|
|
||||||
$tags = isset($data['tags']) ? $data['tags'] : false;
|
|
||||||
$prices = isset($data['prices']) ? $data['prices'] : false;
|
|
||||||
unset($data['images']);
|
unset($data['images']);
|
||||||
|
|
||||||
|
$categories = isset($data['categories']) ? $data['categories'] : false;
|
||||||
unset($data['categories']);
|
unset($data['categories']);
|
||||||
|
|
||||||
|
$tags = isset($data['tags']) ? $data['tags'] : false;
|
||||||
unset($data['tags']);
|
unset($data['tags']);
|
||||||
|
|
||||||
|
$prices = isset($data['prices']) ? $data['prices'] : false;
|
||||||
unset($data['prices']);
|
unset($data['prices']);
|
||||||
|
|
||||||
$article = self::store($data);
|
$article = self::store($data);
|
||||||
self::storeImages($article, $images);
|
self::storeImages($article, $images);
|
||||||
self::storeCategories($article, $categories);
|
self::storeCategories($article, $categories);
|
||||||
|
|||||||
@@ -2,18 +2,10 @@
|
|||||||
|
|
||||||
namespace App\Repositories\Shop;
|
namespace App\Repositories\Shop;
|
||||||
|
|
||||||
use Yajra\DataTables\DataTables;
|
|
||||||
|
|
||||||
use App\Models\Shop\Category;
|
use App\Models\Shop\Category;
|
||||||
|
|
||||||
class Categories
|
class Categories
|
||||||
{
|
{
|
||||||
public static function getDatatable()
|
|
||||||
{
|
|
||||||
$model = Category::orderBy('name');
|
|
||||||
return Datatables::of($model)->make(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function getAll()
|
public static function getAll()
|
||||||
{
|
{
|
||||||
return Category::orderBy('name', 'asc')->get();
|
return Category::orderBy('name', 'asc')->get();
|
||||||
@@ -21,7 +13,7 @@ class Categories
|
|||||||
|
|
||||||
public static function get($id)
|
public static function get($id)
|
||||||
{
|
{
|
||||||
return Category::find($id);
|
return Category::with('CategoryTree')->find($id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getTree()
|
public static function getTree()
|
||||||
@@ -37,12 +29,14 @@ class Categories
|
|||||||
public static function storeFull($data)
|
public static function storeFull($data)
|
||||||
{
|
{
|
||||||
$images = isset($data['images']) ? $data['images'] : false;
|
$images = isset($data['images']) ? $data['images'] : false;
|
||||||
// $tags = isset($data['tags']) ? $data['tags'] : false;
|
|
||||||
unset($data['images']);
|
unset($data['images']);
|
||||||
// unset($data['tags']);
|
|
||||||
|
$tags = isset($data['tags']) ? $data['tags'] : false;
|
||||||
|
unset($data['tags']);
|
||||||
|
|
||||||
$category = self::store($data);
|
$category = self::store($data);
|
||||||
self::storeImages($category, $images);
|
self::storeImages($category, $images);
|
||||||
// self::storeTags($category, $tags);
|
self::storeTags($category, $tags);
|
||||||
return $category;
|
return $category;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -126,8 +120,8 @@ class Categories
|
|||||||
|
|
||||||
public static function destroy($id)
|
public static function destroy($id)
|
||||||
{
|
{
|
||||||
// $category = self::get($id);
|
$category = self::get($id);
|
||||||
// self::deleteNode($category->category_id);
|
self::deleteNode($category->category_id);
|
||||||
return Category::destroy($id);
|
return Category::destroy($id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,8 +2,6 @@
|
|||||||
|
|
||||||
namespace App\Repositories\Shop;
|
namespace App\Repositories\Shop;
|
||||||
|
|
||||||
use App\Models\Shop\Category;
|
|
||||||
|
|
||||||
class CategoryTrees
|
class CategoryTrees
|
||||||
{
|
{
|
||||||
public static function getTree()
|
public static function getTree()
|
||||||
@@ -50,7 +48,7 @@ class CategoryTrees
|
|||||||
|
|
||||||
public static function create($data)
|
public static function create($data)
|
||||||
{
|
{
|
||||||
$parent = (isset($data['category_id']) && $data['category_id']) ? self::getNode($data['category_id']) : self::getRoot();
|
$parent = (isset($data['parent_id']) && $data['parent_id']) ? self::getNode($data['parent_id']) : self::getRoot();
|
||||||
$category = app('rinvex.categories.category')->create(['name' => $data['name']]);
|
$category = app('rinvex.categories.category')->create(['name' => $data['name']]);
|
||||||
$category->appendToNode($parent)->save();
|
$category->appendToNode($parent)->save();
|
||||||
return $category;
|
return $category;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
@extends('layout.index', [
|
@extends('layout.index', [
|
||||||
'title' => __('shop.categories.title'),
|
'title' => __('shop.shelves.title'),
|
||||||
'subtitle' => __('shop.categories.add'),
|
'subtitle' => __('shop.shelves.add'),
|
||||||
'breadcrumb' => [__('shop.categories.title'), __('shop.categories.list')]
|
'breadcrumb' => [__('shop.shelves.title'), __('shop.shelves.list')]
|
||||||
])
|
])
|
||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
@extends('layout.index', [
|
@extends('layout.index', [
|
||||||
'title' => __('shop.categories.title'),
|
'title' => __('shop.shelves.title'),
|
||||||
'subtitle' => __('shop.categories.edit'),
|
'subtitle' => __('shop.shelves.edit'),
|
||||||
'breadcrumb' => [__('shop.categories.title'), __('shop.categories.list')]
|
'breadcrumb' => [__('shop.shelves.title'), __('shop.shelves.list')]
|
||||||
])
|
])
|
||||||
|
|
||||||
@section('content')
|
@section('content')
|
||||||
|
|
||||||
{{ Form::open(['route' => 'Admin.Shop.Categories.store', 'id' => 'form', 'autocomplete' => 'off']) }}
|
{{ Form::open(['route' => 'Admin.Shop.Categories.store', 'id' => 'form', 'autocomplete' => 'off']) }}
|
||||||
<input type="hidden" name="id" value="{{ $id }}">
|
<input type="hidden" name="id" value="{{ $category['id'] }}">
|
||||||
@include('Admin.Shop.Categories.form')
|
@include('Admin.Shop.Categories.form')
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
|||||||
@@ -1,44 +1,50 @@
|
|||||||
<input type="hidden" name="category_id" value="{{ $category_id }}">
|
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-8">
|
<div class="col-9">
|
||||||
<div class="row">
|
<div class="row mb-3">
|
||||||
<div class="col-8">
|
<div class="col-6">
|
||||||
{{ Form::label('name', 'Nom') }}
|
{{ Form::label('name', 'Nom') }}
|
||||||
@include('components.input', ['name' => 'name', 'value' => isset($name) ? $name : null, 'required' => true])
|
@include('components.input', ['name' => 'name', 'value' => $category['name'] ?? null, 'required' => true])
|
||||||
</div>
|
</div>
|
||||||
<div class="col-4 text-right">
|
<div class="col-5">
|
||||||
|
{{ Form::label('parent', 'Rubrique parente') }}
|
||||||
|
@include('components.select', ['name' => 'parent_id', 'list' => $categories ?? [], 'value' => $category['category_tree']['parent_id'] ?? null, 'required' => true, 'with_empty' => ''])
|
||||||
|
</div>
|
||||||
|
<div class="col-1 text-right">
|
||||||
{{ Form::label('visible', 'Visible') }}<br/>
|
{{ Form::label('visible', 'Visible') }}<br/>
|
||||||
@include('components.toggle', ['name' => 'visible', 'value' => isset($visible) ? $visible : null])
|
@include('components.toggle', ['name' => 'visible', 'value' => $category['visible'] ?? null])
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row mb-3">
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
{{ Form::label('tags', 'Tags') }}
|
{{ Form::label('tags', 'Tags') }}
|
||||||
@include('components.select', ['name' => 'tags', 'value' => isset($tags) ? $tags : null, 'class' => 'select2 form-control', 'multiple' => true])
|
@include('components.select-tree', ['name' => 'tags[]', 'list' => $tags_list, 'values' => $category['tags'] ?? null, 'class' => 'select2', 'multiple' => true])
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row mb-3">
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
{{ Form::label('description', 'Description') }}
|
{{ Form::label('description', 'Description') }}
|
||||||
@include('components.textarea', ['name' => 'description', 'value' => isset($description) ? $description : null, 'class' => 'editor', 'required' => true])
|
@include('components.textarea', ['name' => 'description', 'value' => $category['description'] ?? null, 'class' => 'editor', 'required' => true])
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-md-4">
|
<div class="col-3">
|
||||||
|
<!--
|
||||||
{{ Form::label('photo', 'Photos') }}
|
{{ Form::label('photo', 'Photos') }}
|
||||||
@include('components.uploader.widget', ['load_url' => route('Admin.Shop.Categories.getImages', ['id' => (isset($id)) ? $id : false]), 'delete_url' => route('Admin.Shop.Categories.deleteImage') ])
|
@include('components.uploader.widget', ['load_url' => route('Admin.Shop.Categories.getImages', ['id' => $category['id'] ?? false]), 'delete_url' => route('Admin.Shop.Categories.deleteImage') ])
|
||||||
|
-->
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@include('components.save')
|
@include('components.save')
|
||||||
|
|
||||||
@include('boilerplate::load.select2')
|
@include('load.form.select2')
|
||||||
|
@include('load.form.editor')
|
||||||
|
|
||||||
@push('js')
|
@push('js')
|
||||||
<script>
|
<script>
|
||||||
$(function() {
|
$(function() {
|
||||||
initSelect2();
|
initSelect2();
|
||||||
|
initEditor();
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
@endpush
|
@endpush
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
@include('boilerplate::load.fileinput')
|
@include('boilerplate::load.fileinput')
|
||||||
|
|
||||||
@component('components.layout.box-collapse', ['id' => ($prefix ?? '') . $name ?? 'images', 'title' => $title ?? 'Photos', 'collapsed' => $collapsed ?? false])
|
@component('components.layout.box-collapse', ['id' => ($prefix ?? '') . ($name ?? 'images'), 'title' => $title ?? 'Photos', 'collapsed' => $collapsed ?? false])
|
||||||
|
|
||||||
@include('components.uploader.mini-gallery')
|
@include('components.uploader.mini-gallery')
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user