Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
peripherad
/
app
/
Http
/
Controllers
/
Admin
:
CategoryController.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php namespace App\Http\Controllers\Admin; use App\Http\Controllers\Controller; use App\Http\Controllers\Traits\MediaUploadingTrait; use App\Http\Requests\Admin\MassDestroyCategoryRequest; use App\Http\Requests\Admin\StoreCategoryRequest; use App\Http\Requests\Admin\UpdateCategoryRequest; use App\Models\Category; use Gate; use Illuminate\Http\Request; use Spatie\MediaLibrary\MediaCollections\Models\Media; use Symfony\Component\HttpFoundation\Response; use Yajra\DataTables\Facades\DataTables; class CategoryController extends Controller { use MediaUploadingTrait; public function index(Request $request) { abort_if(Gate::denies('category_access'), Response::HTTP_FORBIDDEN, '403 Forbidden'); if ($request->ajax()) { $query = Category::with(['parent'])->select(sprintf('%s.*', (new Category())->table)); $table = Datatables::of($query); $table->addColumn('placeholder', ' '); $table->addColumn('actions', ' '); $table->editColumn('actions', function ($row) { $viewGate = 'category_show'; $editGate = 'category_edit'; $deleteGate = 'category_delete'; $crudRoutePart = 'categories'; return view('partials.datatablesActions', compact( 'viewGate', 'editGate', 'deleteGate', 'crudRoutePart', 'row' )); }); $table->editColumn('id', function ($row) { return $row->id ? $row->id : ''; }); $table->editColumn('name', function ($row) { return $row->name ? $row->name : ''; }); $table->editColumn('slug', function ($row) { return $row->slug ? $row->slug : ''; }); $table->editColumn('featured_image', function ($row) { if ($photo = $row->featured_image) { return sprintf( '<a href="%s" target="_blank"><img src="%s" width="50px" height="50px"></a>', $photo->url, $photo->thumbnail ); } return ''; }); $table->addColumn('parent_name', function ($row) { return $row->parent ? $row->parent->name : ''; }); $table->editColumn('status', function ($row) { return $row->status ? Category::STATUS_RADIO[$row->status] : ''; }); $table->rawColumns(['actions', 'placeholder', 'featured_image', 'parent']); return $table->make(true); } $categories = Category::get(); return view('admin.categories.index', compact('categories')); } public function create() { abort_if(Gate::denies('category_create'), Response::HTTP_FORBIDDEN, '403 Forbidden'); $parents = Category::pluck('name', 'id')->prepend(trans('global.pleaseSelect'), ''); return view('admin.categories.create', compact('parents')); } public function store(StoreCategoryRequest $request) { $category = Category::create($request->all()); if ($request->input('featured_image', false)) { $category->addMedia(storage_path('tmp/uploads/' . basename($request->input('featured_image'))))->toMediaCollection('featured_image'); } if ($media = $request->input('ck-media', false)) { Media::whereIn('id', $media)->update(['model_id' => $category->id]); } return redirect()->route('admin.categories.index'); } public function edit(Category $category) { abort_if(Gate::denies('category_edit'), Response::HTTP_FORBIDDEN, '403 Forbidden'); $parents = Category::pluck('name', 'id')->prepend(trans('global.pleaseSelect'), ''); $category->load('parent'); return view('admin.categories.edit', compact('category', 'parents')); } public function update(UpdateCategoryRequest $request, Category $category) { $category->update($request->all()); if ($request->input('featured_image', false)) { if (!$category->featured_image || $request->input('featured_image') !== $category->featured_image->file_name) { if ($category->featured_image) { $category->featured_image->delete(); } $category->addMedia(storage_path('tmp/uploads/' . basename($request->input('featured_image'))))->toMediaCollection('featured_image'); } } elseif ($category->featured_image) { $category->featured_image->delete(); } return redirect()->route('admin.categories.index'); } public function show(Category $category) { abort_if(Gate::denies('category_show'), Response::HTTP_FORBIDDEN, '403 Forbidden'); $category->load('parent'); return view('admin.categories.show', compact('category')); } public function destroy(Category $category) { abort_if(Gate::denies('category_delete'), Response::HTTP_FORBIDDEN, '403 Forbidden'); $category->delete(); return back(); } public function massDestroy(MassDestroyCategoryRequest $request) { Category::whereIn('id', request('ids'))->delete(); return response(null, Response::HTTP_NO_CONTENT); } public function storeCKEditorImages(Request $request) { abort_if(Gate::denies('category_create') && Gate::denies('category_edit'), Response::HTTP_FORBIDDEN, '403 Forbidden'); $model = new Category(); $model->id = $request->input('crud_id', 0); $model->exists = true; $media = $model->addMediaFromRequest('upload')->toMediaCollection('ck-media'); return response()->json(['id' => $media->id, 'url' => $media->getUrl()], Response::HTTP_CREATED); } }