FEATURE: move categories into own repository
This commit is contained in:
Executable
+12
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'name' => 'Categories',
|
||||
'translatedName' => 'categories::module.name',
|
||||
'translatedDescription' => 'categories::module.description',
|
||||
'alias' => 'categories',
|
||||
'handler' => \Modules\Categories\Handlers\Categories::class,
|
||||
'providers' => [\Modules\Categories\Providers\CategoriesServiceProvider::class],
|
||||
'files' => ['start.php'],
|
||||
'order' => 0,
|
||||
];
|
||||
Executable
+9
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
namespace Modules\Categories\Contracts\Repositories;
|
||||
|
||||
use App\CMS\Contracts\Repositories\BaseRepository;
|
||||
use App\Models\Module;
|
||||
|
||||
interface Category {
|
||||
public function getForModule(Module $module);
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class CreateCategoriesTable extends Migration
|
||||
{
|
||||
public function up()
|
||||
{
|
||||
|
||||
Schema::create('categories', function (Blueprint $table) {
|
||||
$table->increments('id');
|
||||
$table->timestamps();
|
||||
$table->softDeletes();
|
||||
$table->integer('parent_id')
|
||||
->unsigned()
|
||||
->nullable();
|
||||
$table->integer('position', false, true);
|
||||
$table->integer('real_depth', false, true);
|
||||
$table->integer('user_id')
|
||||
->comment('Author of this category');
|
||||
$table->integer('module_id')
|
||||
->comment('ID of module, where this category is used');
|
||||
$table->string('name')
|
||||
->comment('Human readable name of category');
|
||||
$table->string('url')
|
||||
->index()
|
||||
->comment('URL slug of category');
|
||||
$table->text('description');
|
||||
|
||||
$table->unique(['url', 'module_id']);
|
||||
});
|
||||
|
||||
Schema::table('categories', function (Blueprint $table) {
|
||||
$table->foreign('parent_id')
|
||||
->references('id')
|
||||
->on('categories')
|
||||
->onDelete('set null');
|
||||
|
||||
$table->foreign('user_id')
|
||||
->references('id')
|
||||
->on('users')
|
||||
->onDelete('cascade')
|
||||
->onUpdate('cascade');
|
||||
|
||||
$table->foreign('module_id')
|
||||
->references('id')
|
||||
->on('modules')
|
||||
->onDelete('cascade')
|
||||
->onUpdate('cascade');
|
||||
});
|
||||
}
|
||||
|
||||
public function down()
|
||||
{
|
||||
Schema::table('categories', function (Blueprint $table) {
|
||||
Schema::dropIfExists('categories');
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
class CreateCategoryClosuresTable extends Migration
|
||||
{
|
||||
public function up()
|
||||
{
|
||||
Schema::create('category_closure', function (Blueprint $table) {
|
||||
$table->increments('closure_id');
|
||||
|
||||
$table->integer('ancestor', false, true);
|
||||
$table->integer('descendant', false, true);
|
||||
$table->integer('depth', false, true);
|
||||
|
||||
$table->foreign('ancestor')
|
||||
->references('id')
|
||||
->on('categories')
|
||||
->onDelete('cascade');
|
||||
$table->foreign('descendant')
|
||||
->references('id')
|
||||
->on('categories')
|
||||
->onDelete('cascade');
|
||||
});
|
||||
}
|
||||
|
||||
public function down()
|
||||
{
|
||||
Schema::table('category_closure', function (Blueprint $table) {
|
||||
Schema::dropIfExists('category_closure');
|
||||
});
|
||||
}
|
||||
}
|
||||
Executable
+20
@@ -0,0 +1,20 @@
|
||||
<?php namespace Modules\Categories\Database\Seeders;
|
||||
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class CategoriesDatabaseSeeder extends Seeder {
|
||||
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
Model::unguard();
|
||||
|
||||
// $this->call("OthersTableSeeder");
|
||||
}
|
||||
|
||||
}
|
||||
Executable
+33
@@ -0,0 +1,33 @@
|
||||
<?php
|
||||
namespace Modules\Categories\Entities;
|
||||
|
||||
use App\Models\Content\Content;
|
||||
use App\Models\Module;
|
||||
use Franzose\ClosureTable\Models\Entity;
|
||||
|
||||
class Category extends Entity
|
||||
{
|
||||
/**
|
||||
* The table associated with the model.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $table = 'categories';
|
||||
public $timestamps = true;
|
||||
/**
|
||||
* ClosureTable model instance.
|
||||
*
|
||||
* @var categoryClosure
|
||||
*/
|
||||
protected $closure = 'Modules\Categories\Entities\CategoryClosure';
|
||||
|
||||
public function module()
|
||||
{
|
||||
return $this->belongsTo(Module::class);
|
||||
}
|
||||
|
||||
public function content()
|
||||
{
|
||||
return $this->hasMany(Content::class, 'categoryId');
|
||||
}
|
||||
}
|
||||
Executable
+14
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
namespace Modules\Categories\Entities;
|
||||
|
||||
use Franzose\ClosureTable\Models\ClosureTable;
|
||||
|
||||
class CategoryClosure extends ClosureTable
|
||||
{
|
||||
/**
|
||||
* The table associated with the model.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $table = 'category_closure';
|
||||
}
|
||||
Executable
+26
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
namespace Modules\Categories\Handlers;
|
||||
|
||||
use App\CMS\Contracts\Modules\BaseModuleHandler;
|
||||
use App\Models\User;
|
||||
|
||||
class Categories implements BaseModuleHandler
|
||||
{
|
||||
/**
|
||||
* Register admin menu (or multiple ones)
|
||||
*
|
||||
* This cannot be in ServiceProvider because Session is started at middleware. And ServiceProvider is called before
|
||||
* starting any middleware..
|
||||
*
|
||||
* @param User $user model of logged user
|
||||
*/
|
||||
public static function registerAdminMenu(User $user)
|
||||
{
|
||||
// register links in admin menu
|
||||
$menu = \Menu::instance('mainMenu');
|
||||
$menu->dropdown(trans('categories::categories.name'), function ($sub) {
|
||||
$sub->route('categories.new', trans('categories::categories.new'), [], 10, ['icon' => 'fa fa-fw fa-plus']);
|
||||
$sub->route('categories.overview', trans('categories::categories.overview'), [], 30, ['icon' => 'fa fa-fw fa-tags']);
|
||||
}, 55, ['icon' => 'fa fa-fw fa-tags']);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
<?php namespace Modules\Categories\Http\Controllers;
|
||||
|
||||
use App\CMS\Enumerations\ModuleNamesWithIds;
|
||||
use App\Http\Controllers\Admin\Controller;
|
||||
use Modules\Categories\Entities\Category;
|
||||
|
||||
class CategoriesOverview extends Controller
|
||||
{
|
||||
public function getOverview()
|
||||
{
|
||||
// get list of all categories
|
||||
$categories = Category::getTree()
|
||||
->toArray();
|
||||
|
||||
$modules = ModuleNamesWithIds::getWithTranslations();
|
||||
|
||||
return view('categories::admin.overview', [
|
||||
'categories' => $categories,
|
||||
'modules' => $modules
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
<?php namespace Modules\Categories\Http\Controllers;
|
||||
|
||||
use App\Http\Controllers\Admin\Controller;
|
||||
use App\Http\Requests\Request;
|
||||
use App\Models\Module;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Str;
|
||||
use Modules\Categories\Entities\Category;
|
||||
|
||||
class CreateNewCategory extends Controller
|
||||
{
|
||||
/**
|
||||
* Display form for new category
|
||||
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
|
||||
*/
|
||||
public function getNew()
|
||||
{
|
||||
// get list of all categories
|
||||
$categories = Category::getTree()
|
||||
->toArray();
|
||||
|
||||
// get list of modules which supports categories
|
||||
$modules = Module::where('enabled', true)
|
||||
->where('support_categories', true)
|
||||
->get();
|
||||
|
||||
return view('categories::admin.new', [
|
||||
'category' => new Category(),
|
||||
'categories' => $categories,
|
||||
'modules' => $modules
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create new category
|
||||
*
|
||||
* @param Request $request
|
||||
*
|
||||
* @return \Illuminate\Http\RedirectResponse
|
||||
*/
|
||||
public function postNew(Request $request)
|
||||
{
|
||||
$category = new Category();
|
||||
$category->user_id = Auth::user()->id;
|
||||
$category->module_id = $request->moduleId;
|
||||
$category->name = $request->name;
|
||||
$category->url = Str::slug($request->url);
|
||||
$category->description = $request->description;
|
||||
|
||||
if ((int)$request->parentCategory) {
|
||||
$category->parent_id = $request->parentCategory;
|
||||
}
|
||||
|
||||
$category->save();
|
||||
|
||||
return redirect()
|
||||
->route('categories.overview')
|
||||
->with('success', trans('categories::categories.saveSuccessfull'));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
<?php namespace Modules\Categories\Http\Controllers;
|
||||
|
||||
use App\Http\Controllers\Admin\Controller;
|
||||
use App\Http\Requests\Request;
|
||||
use App\Models\Module;
|
||||
use Illuminate\Support\Str;
|
||||
use Modules\Categories\Entities\Category;
|
||||
|
||||
class EditCategory extends Controller
|
||||
{
|
||||
/**
|
||||
* Display form for editing category
|
||||
*
|
||||
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
|
||||
*/
|
||||
public function getEdit($id)
|
||||
{
|
||||
$category = Category::findOrFail($id);
|
||||
|
||||
// get list of all categories
|
||||
$categories = Category::getTree()
|
||||
->toArray();
|
||||
|
||||
// get list of modules which supports categories
|
||||
$modules = Module::where('enabled', true)
|
||||
->where('support_categories', true)
|
||||
->get();
|
||||
|
||||
return view('categories::admin.edit', [
|
||||
'category' => $category,
|
||||
'categories' => $categories,
|
||||
'modules' => $modules
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create new category
|
||||
*
|
||||
* @param Request $request
|
||||
* @param $id
|
||||
*
|
||||
* @return \Illuminate\Http\RedirectResponse
|
||||
*/
|
||||
public function postEdit(Request $request, $id)
|
||||
{
|
||||
$category = Category::findOrFail($id);
|
||||
|
||||
$category->name = $request->name;
|
||||
$category->url = Str::slug($request->url);
|
||||
$category->description = $request->description;
|
||||
|
||||
$category->save();
|
||||
|
||||
if ($category->parent_id !== $request->parentCategory) {
|
||||
$category->parent_id = empty($request->parentCategory) ? null : $request->parentCategory;
|
||||
$category->save();
|
||||
|
||||
if (empty($request->parentCategory)) {
|
||||
$category->makeRoot($category->position);
|
||||
}
|
||||
}
|
||||
|
||||
return redirect()
|
||||
->route('categories.edit', ['id' => $id])
|
||||
->with('success', trans('categories::categories.saveSuccessfull'));
|
||||
}
|
||||
|
||||
public function delete($id) {
|
||||
$category = Category::findOrFail($id);
|
||||
|
||||
$category->delete();
|
||||
|
||||
return redirect()
|
||||
->route('categories.overview')
|
||||
->with('success', trans('categories::categories.deleteSuccessfull'));
|
||||
}
|
||||
}
|
||||
Executable
Executable
Executable
+23
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
Route::group([
|
||||
'prefix' => LaravelLocalization::setLocale() . '/admin/categories',
|
||||
'middleware' => ['admin'],
|
||||
'namespace' => 'Modules\Categories\Http\Controllers'
|
||||
], function () {
|
||||
Route::get('/', 'CategoriesOverview@getOverview')
|
||||
->name('categories.overview');
|
||||
|
||||
Route::get('/new', 'CreateNewCategory@getNew')
|
||||
->name('categories.new');
|
||||
Route::post('/new', 'CreateNewCategory@postNew')
|
||||
->name('categories.postNew');
|
||||
|
||||
Route::get('/edit/{id}', 'EditCategory@getEdit')
|
||||
->name('categories.edit');
|
||||
Route::post('/edit/{id}', 'EditCategory@postEdit')
|
||||
->name('categories.postEdit');
|
||||
|
||||
Route::get('/delete/{id}', 'EditCategory@delete')
|
||||
->name('categories.delete');
|
||||
});
|
||||
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
namespace Modules\Categories\Providers;
|
||||
|
||||
use App\CMS\Modules\ServiceProviders\ServiceProvider;
|
||||
use Modules\Categories\Contracts\Repositories\Category as ICategory;
|
||||
use Modules\Categories\Repositories\Category as Category;
|
||||
|
||||
class CategoriesServiceProvider extends ServiceProvider
|
||||
{
|
||||
protected function setModuleAlias()
|
||||
{
|
||||
$this->alias = 'categories';
|
||||
}
|
||||
|
||||
public function boot()
|
||||
{
|
||||
parent::boot();
|
||||
|
||||
$this->app->bind(ICategory::class, Category::class);
|
||||
}
|
||||
|
||||
protected function setModulePath()
|
||||
{
|
||||
$this->path = __DIR__;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
namespace Modules\Categories\Repositories;
|
||||
|
||||
use App\Models\Module;
|
||||
use Modules\Categories\Entities\Category as CategoryModel;
|
||||
use Modules\Categories\Contracts\Repositories\Category as ICategory;
|
||||
|
||||
class Category implements ICategory
|
||||
{
|
||||
public function getForModule(Module $module)
|
||||
{
|
||||
$categoryModule = Module::where('alias', 'categories')->first();
|
||||
$categories = [];
|
||||
if ($module->support_categories && !is_null($categoryModule) && $categoryModule->enabled) {
|
||||
$categories = CategoryModel::where('module_id', $module->id)
|
||||
->get();
|
||||
}
|
||||
|
||||
return $categories;
|
||||
}
|
||||
}
|
||||
Executable
+20
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
return [
|
||||
"actions" => "Akce",
|
||||
"deleteSuccessfull" => "Kategorie úspěšně smazána",
|
||||
"description" => "Modul pro správu a kategorizaci obsahu.",
|
||||
"edit" => "Úprava kategorie",
|
||||
"fields" => ["description" => "Popis",
|
||||
"module" => "Modul",
|
||||
"name" => "Jméno",
|
||||
"parentCategory" => "Rodičovská kategorie",
|
||||
"save" => "Uložit",
|
||||
"url" => "URL",
|
||||
],
|
||||
"module" => "Modul",
|
||||
"name" => "Kategorie",
|
||||
"new" => "Nová kategorie",
|
||||
"noCategories" => "Žádná vytvořená kategorie.",
|
||||
"overview" => "Všechny kategorie",
|
||||
"saveSuccessfull" => "Kategorie úspěšně uložena",
|
||||
];
|
||||
Executable
+21
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
return [
|
||||
'name' => 'Categories',
|
||||
'description' => 'Module for category management and content categorization.',
|
||||
'new' => 'New category',
|
||||
'overview' => 'All categories',
|
||||
'fields' => [
|
||||
'name' => 'Name',
|
||||
'description' => 'Description',
|
||||
'url' => 'URL',
|
||||
'module' => 'Module',
|
||||
'parentCategory' => 'Parent category',
|
||||
'save' => 'Save category'
|
||||
],
|
||||
'edit' => 'Edit category',
|
||||
'saveSuccessfull' => 'Category successfully saved',
|
||||
'deleteSuccessfull' => 'Category successfully deleted',
|
||||
'module' => 'Module',
|
||||
'actions' => 'Actions',
|
||||
'noCategories' => 'No categories available'
|
||||
];
|
||||
Executable
+20
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
return [
|
||||
"actions" => "Akcie",
|
||||
"deleteSuccessfull" => "Kategória úspešne zmazaná.",
|
||||
"description" => "Modul pre správu kategórií a kategorizovanie obsahu",
|
||||
"edit" => "Upraviť kategóriu",
|
||||
"fields" => ["description" => "Popis",
|
||||
"module" => "Modul",
|
||||
"name" => "Názov",
|
||||
"parentCategory" => "Rodičovská kategória",
|
||||
"save" => "Uložiť kategóriu",
|
||||
"url" => "URL",
|
||||
],
|
||||
"module" => "Modul",
|
||||
"name" => "Kategórie",
|
||||
"new" => "Nová kategória",
|
||||
"noCategories" => "Žiadne kategórie nie sú dostupné.",
|
||||
"overview" => "Všetky kategórie",
|
||||
"saveSuccessfull" => "Kategória úspešne uložená.",
|
||||
];
|
||||
Executable
+7
@@ -0,0 +1,7 @@
|
||||
@extends('admin.layoutWithNavigation')
|
||||
|
||||
@section('pageHeading', trans('categories::categories.edit'))
|
||||
|
||||
@section('content')
|
||||
@include('categories::admin.form', ['action' => route('categories.postEdit', ['id' => $category->id])])
|
||||
@endsection
|
||||
Executable
+67
@@ -0,0 +1,67 @@
|
||||
<form action="{{$action}}" method="post">
|
||||
{!! csrf_field() !!}
|
||||
<div class="row">
|
||||
<div class="col-lg-5">
|
||||
<label class="label-control">
|
||||
@lang('categories::categories.fields.name')
|
||||
</label>
|
||||
|
||||
<input type="text" name="name" class="form-control slug-source" value="{{old('name', $category->name)}}">
|
||||
</div>
|
||||
<div class="col-lg-5">
|
||||
<label>
|
||||
@lang('categories::categories.fields.url')
|
||||
</label>
|
||||
|
||||
<input type="text" name="url" class="form-control slug-target" value="{{old('url', $category->url)}}">
|
||||
|
||||
</div>
|
||||
<div class="col-lg-2 text-center">
|
||||
<div>
|
||||
<label>
|
||||
<input class="checkbox" value="1" id="lockUrl"
|
||||
@if(old('lockUrl') || ($category->id > 0 && \Illuminate\Support\Str::slug($category->name) != $category->url)) checked
|
||||
@endif name="lockUrl" type="checkbox">
|
||||
<span>@lang('admin/contents.lockUrl')</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<label class="label-control">
|
||||
@lang('categories::categories.fields.description')
|
||||
</label>
|
||||
|
||||
<textarea class="form-control" name="description">{{old('description', $category->description)}}</textarea>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-6">
|
||||
<label class="label-control">
|
||||
@lang('categories::categories.fields.module')
|
||||
</label>
|
||||
|
||||
<select class="form-control" name="moduleId" @if($category->id) disabled @endif>
|
||||
@foreach($modules as $module)
|
||||
<option @if($module->id == $category->module_id) selected
|
||||
@endif value="{{$module->id}}">{{trans($module->name)}}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
@if(count($categories))
|
||||
<label class="label-control">
|
||||
@lang('categories::categories.fields.parentCategory')
|
||||
</label>
|
||||
|
||||
<select class="form-control" name="parentCategory">
|
||||
<option value="">@lang('admin/contents.noCategory')</option>
|
||||
@foreach($categories as $parentCategory)
|
||||
@include('categories::admin.snippets.optionParentCategories', ['level' => 0, 'selectedCategory' => $category, 'currentCategory' => $parentCategory])
|
||||
@endforeach
|
||||
</select>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-primary">@lang('categories::categories.fields.save')</button>
|
||||
</form>
|
||||
Executable
+7
@@ -0,0 +1,7 @@
|
||||
@extends('admin.layoutWithNavigation')
|
||||
|
||||
@section('pageHeading', trans('categories::categories.new'))
|
||||
|
||||
@section('content')
|
||||
@include('categories::admin.form', ['action' => route('categories.postNew')])
|
||||
@endsection
|
||||
@@ -0,0 +1,35 @@
|
||||
@extends('admin.layoutWithNavigation')
|
||||
|
||||
@section('pageHeading', trans('categories::categories.overview'))
|
||||
|
||||
@section('content')
|
||||
|
||||
<div class="card items">
|
||||
<div class="card-block">
|
||||
|
||||
@if(count($categories))
|
||||
<div class="item-list striped rows-striped">
|
||||
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>@lang('categories::categories.name')</th>
|
||||
<th>@lang('categories::categories.module')</th>
|
||||
<th>@lang('categories::categories.actions')</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($categories as $category)
|
||||
@include('categories::admin.snippets.overviewRow', ['level' => 0, 'currentCategory' => $category])
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
@else
|
||||
<div class="alert alert-info">
|
||||
@lang('categories::categories.noCategories')
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@stop
|
||||
@@ -0,0 +1,9 @@
|
||||
<option @if($currentCategory['id'] == $selectedCategory->parent_id) selected @endif value="{{$currentCategory['id']}}">
|
||||
{{str_repeat('-', $level)}} {{$currentCategory['name']}}
|
||||
</option>
|
||||
|
||||
@if(isset($currentCategory['children']))
|
||||
@foreach($currentCategory['children'] as $category)
|
||||
@include('categories::admin.snippets.optionParentCategories', ['selectedCategory' => $selectedCategory, 'currentCategory' => $category, 'level' => $level+1])
|
||||
@endforeach
|
||||
@endif
|
||||
@@ -0,0 +1,39 @@
|
||||
<tr>
|
||||
<td>
|
||||
{{str_repeat('-', $level)}} <a href="{{route('categories.edit', ['id' => $currentCategory['id']])}}">{{$currentCategory['name']}}</a>
|
||||
</td>
|
||||
<td>@lang($modules[$currentCategory['module_id']])</td>
|
||||
<td>
|
||||
<div class="item-actions-dropdown">
|
||||
<a class="item-actions-toggle-btn">
|
||||
<span class="inactive">
|
||||
<i class="fa fa-cog"></i>
|
||||
</span>
|
||||
<span class="active">
|
||||
<i class="fa fa-chevron-circle-right"></i>
|
||||
</span>
|
||||
</a>
|
||||
<div class="item-actions-block">
|
||||
<ul class="item-actions-list">
|
||||
|
||||
<li>
|
||||
<a href="{{route('categories.edit', ['id' => $currentCategory['id']])}}"><i
|
||||
class="fa fa-fw fa-pencil"></i></a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="confirm remove"
|
||||
href="{{route('categories.delete', ['id' => $currentCategory['id']])}}"><i
|
||||
class="fa fa-fw fa-trash"></i></a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
|
||||
@if(isset($currentCategory['children']))
|
||||
@foreach($currentCategory['children'] as $category)
|
||||
@include('categories::admin.snippets.overviewRow', ['currentCategory' => $category, 'level' => $level+1])
|
||||
@endforeach
|
||||
@endif
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Register Namespaces And Routes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| When a module starting, this file will executed automatically. This helps
|
||||
| to register some namespaces like translator or view. Also this file
|
||||
| will load the routes file for each module. You may also modify
|
||||
| this file as you want.
|
||||
|
|
||||
*/
|
||||
|
||||
require __DIR__ . DIRECTORY_SEPARATOR.'Http'.DIRECTORY_SEPARATOR.'routes.php';
|
||||
Reference in New Issue
Block a user