diff --git a/addons/default/visiosoft/cats-module/migrations/2019_04_01_161009_visiosoft.module.cats__create_category_stream.php b/addons/default/visiosoft/cats-module/migrations/2019_04_01_161009_visiosoft.module.cats__create_category_stream.php index 483147d50..80fc91a73 100644 --- a/addons/default/visiosoft/cats-module/migrations/2019_04_01_161009_visiosoft.module.cats__create_category_stream.php +++ b/addons/default/visiosoft/cats-module/migrations/2019_04_01_161009_visiosoft.module.cats__create_category_stream.php @@ -15,7 +15,7 @@ class VisiosoftModuleCatsCreateCategoryStream extends Migration 'title_column' => 'name', 'translatable' => true, 'versionable' => false, - 'trashable' => false, + 'trashable' => true, 'searchable' => false, 'sortable' => true, ]; diff --git a/addons/default/visiosoft/cats-module/resources/views/table/categories.twig b/addons/default/visiosoft/cats-module/resources/views/table/categories.twig index 702f2cba1..ce728b2fd 100644 --- a/addons/default/visiosoft/cats-module/resources/views/table/categories.twig +++ b/addons/default/visiosoft/cats-module/resources/views/table/categories.twig @@ -14,10 +14,15 @@ {% else %} {% set parent_url = url('admin/cats?cat='~parent.parent_category_id) %} {% endif %} +
- Go To Parent ../{{ parent.name }} + Go To Parent
diff --git a/addons/default/visiosoft/cats-module/src/Category/CategoryCollection.php b/addons/default/visiosoft/cats-module/src/Category/CategoryCollection.php index cb3856c6c..179cd9692 100644 --- a/addons/default/visiosoft/cats-module/src/Category/CategoryCollection.php +++ b/addons/default/visiosoft/cats-module/src/Category/CategoryCollection.php @@ -1,33 +1,7 @@ find($id); - $adv->deleted_at = Carbon::now(); - $adv->save(); - } - - public function subCatDelete($id) - { - $counter = 0; - - for ($i = 0; $i <= $counter; $i++) { - $data = CategoryModel::query() - ->where('cats_category.parent_category_id', $id) - ->where('cats_category.deleted_at', null) - ->select('cats_category.id', 'cats_category.parent_category_id') - ->first(); - if ($data != "") { - $id = $data['id']; - $counter++; - } - } - $delete = new CategoryCollection(); - $delete = $delete->deleteCat($id); - } } diff --git a/addons/default/visiosoft/cats-module/src/Category/CategoryModel.php b/addons/default/visiosoft/cats-module/src/Category/CategoryModel.php index 849cd2a44..ae8053411 100644 --- a/addons/default/visiosoft/cats-module/src/Category/CategoryModel.php +++ b/addons/default/visiosoft/cats-module/src/Category/CategoryModel.php @@ -12,7 +12,7 @@ class CategoryModel extends CatsCategoryEntryModel implements CategoryInterface return CategoryModel::query()->where('cats_category.id', $id)->first(); } - public function getParentCats($id, $type = null, $subCatDeepCount = 7) + public function getParentCats($id, $type = null) { $cat = $this->getCat($id); $catNames = array(); @@ -24,6 +24,8 @@ class CategoryModel extends CatsCategoryEntryModel implements CategoryInterface for ($i = 0; $i < 7; $i++) { $parCat = $this->getCat($subCat); if ($parCat->parent_category_id == "") { + if ($type == "add_main") + $catNames[] = $parCat->name; break; } $catNames[] = $parCat->name; @@ -44,7 +46,7 @@ class CategoryModel extends CatsCategoryEntryModel implements CategoryInterface public function getCatLevel($id) { //count parent and itself - return count($this->getParentCats($id))+1; + return count($this->getParentCats($id)) + 1; } public function getSubCategories($id, $get = null) @@ -96,12 +98,12 @@ class CategoryModel extends CatsCategoryEntryModel implements CategoryInterface $join->on('cats_category.id', '=', 'cats_category_translations.entry_id'); $join->where('cats_category_translations.locale', '=', Request()->session()->get('_locale')); }); - $cats = $cats->select('cats_category.*','cats_category_translations.name as name'); + $cats = $cats->select('cats_category.*', 'cats_category_translations.name as name'); $cats = $cats->orderBy('id', 'DESC') ->get(); foreach ($cats as $cat) { $link = ''; - $parents = $this->getParentCats($cat->id, null, 2); + $parents = $this->getParentCats($cat->id, null); krsort($parents); foreach ($parents as $key => $parent) { if ($key == 0) { diff --git a/addons/default/visiosoft/cats-module/src/Category/CategoryRepository.php b/addons/default/visiosoft/cats-module/src/Category/CategoryRepository.php index b0fc13185..1d1bfe7e2 100644 --- a/addons/default/visiosoft/cats-module/src/Category/CategoryRepository.php +++ b/addons/default/visiosoft/cats-module/src/Category/CategoryRepository.php @@ -63,4 +63,15 @@ class CategoryRepository extends EntryRepository implements CategoryRepositoryIn { return $this->model->get(); } + + public function DeleteCategories($id) + { + $sub_categories = $this->model->getAllSubCategories($id); + if (count($sub_categories)) { + $this->model + ->whereIn('id', array_merge($sub_categories, [$id])) + ->delete(); + } else + $this->model->find($id)->delete(); + } } diff --git a/addons/default/visiosoft/cats-module/src/Category/Contract/CategoryRepositoryInterface.php b/addons/default/visiosoft/cats-module/src/Category/Contract/CategoryRepositoryInterface.php index f4c8c8bfb..38d128225 100644 --- a/addons/default/visiosoft/cats-module/src/Category/Contract/CategoryRepositoryInterface.php +++ b/addons/default/visiosoft/cats-module/src/Category/Contract/CategoryRepositoryInterface.php @@ -19,4 +19,6 @@ interface CategoryRepositoryInterface extends EntryRepositoryInterface public function findBySlug($slug); public function getCategories(); + + public function DeleteCategories($id); } diff --git a/addons/default/visiosoft/cats-module/src/Category/Table/CategoryTableBuilder.php b/addons/default/visiosoft/cats-module/src/Category/Table/CategoryTableBuilder.php index c9e73e775..8d38cc343 100644 --- a/addons/default/visiosoft/cats-module/src/Category/Table/CategoryTableBuilder.php +++ b/addons/default/visiosoft/cats-module/src/Category/Table/CategoryTableBuilder.php @@ -36,7 +36,9 @@ class CategoryTableBuilder extends TableBuilder * @var array|string */ protected $buttons = [ - 'edit', + 'edit' => [ + 'href' => '/admin/cats/edit/{entry.id}?parent={entry.parent_category_id}' + ], 'add_sub_category' => [ 'icon' => 'fa fa-caret-square-o-down', 'type' => 'success', @@ -50,7 +52,7 @@ class CategoryTableBuilder extends TableBuilder 'delete' => [ 'icon' => 'fa fa-trash', 'type' => 'danger', - 'href' => '/admin/cats/category/delete/{entry.id}' + 'href' => '/admin/cats/category/delete/{entry.id}?parent={entry.parent_category_id}' ] ]; diff --git a/addons/default/visiosoft/cats-module/src/CatsModulePlugin.php b/addons/default/visiosoft/cats-module/src/CatsModulePlugin.php index ed8df9a3e..0b98b7b7c 100644 --- a/addons/default/visiosoft/cats-module/src/CatsModulePlugin.php +++ b/addons/default/visiosoft/cats-module/src/CatsModulePlugin.php @@ -1,6 +1,7 @@ getParentCats($id,'add_main'); + } ) ]; } diff --git a/addons/default/visiosoft/cats-module/src/CatsModuleServiceProvider.php b/addons/default/visiosoft/cats-module/src/CatsModuleServiceProvider.php index 0a880c0f8..aaa63322a 100644 --- a/addons/default/visiosoft/cats-module/src/CatsModuleServiceProvider.php +++ b/addons/default/visiosoft/cats-module/src/CatsModuleServiceProvider.php @@ -184,4 +184,31 @@ class CatsModuleServiceProvider extends AddonServiceProvider // Use method injection or commands to bring in services. } + public function getOverrides() + { + $request = app('Illuminate\Http\Request'); + $view = $request->get('view'); + + if ($request->segment(2) === $this->addon->getSlug() && $view !== 'table' and $request->path() == "admin/cats") { + $sections = [ + 'category' => [ + 'buttons' => [ + 'new_category' => [ + 'href' => '/admin/cats/create?parent='.$request->cat + ], + ], + ], + 'placeholderforsearch' => [ + 'buttons' => [ + 'new_placeholderforsearch', + ], + ], + ]; + $this->addon->setSections($sections); + } + + return parent::getOverrides(); + } + + } diff --git a/addons/default/visiosoft/cats-module/src/Http/Controller/Admin/CategoryController.php b/addons/default/visiosoft/cats-module/src/Http/Controller/Admin/CategoryController.php index edbd28f14..553782903 100644 --- a/addons/default/visiosoft/cats-module/src/Http/Controller/Admin/CategoryController.php +++ b/addons/default/visiosoft/cats-module/src/Http/Controller/Admin/CategoryController.php @@ -6,6 +6,7 @@ use Illuminate\Http\Request; use Sunra\PhpSimple\HtmlDomParser; use Visiosoft\CatsModule\Category\CategoryCollection; use Visiosoft\CatsModule\Category\CategoryModel; +use Visiosoft\CatsModule\Category\Contract\CategoryRepositoryInterface; use Visiosoft\CatsModule\Category\Form\CategoryFormBuilder; use Visiosoft\CatsModule\Category\Table\CategoryTableBuilder; use Anomaly\Streams\Platform\Http\Controller\AdminController; @@ -58,9 +59,8 @@ class CategoryController extends AdminController if ($form->hasFormErrors()) { return $this->redirect->to('/admin/cats/create'); } - if($parent_id != "") - { - return $this->redirect->to('/admin/cats?cat='.$parent_id); + if ($parent_id != "") { + return $this->redirect->to('/admin/cats?cat=' . $parent_id); } return $this->redirect->to('/admin/cats'); @@ -89,6 +89,12 @@ class CategoryController extends AdminController if ($form->hasFormErrors()) { return $this->redirect->back(); } + $parent = $request->parent_category; + if ($parent != "") { + return $this->redirect->to('/admin/cats?cat=' . $parent); + die; + } + return $this->redirect->to('/admin/cats'); } else { $form->setFields(['name']); $nameField = HTMLDomParser::str_get_html($form->render($id)->getContent()); @@ -103,26 +109,25 @@ class CategoryController extends AdminController return $this->view->make('visiosoft.module.cats::cats/admin-cat', compact('nameField'))->with('id', $id); } - public function delete(CategoryCollection $categoryCollection, CategoryModel $categoryModel, $id) + public function delete(CategoryRepositoryInterface $categoryRepository, Request $request, CategoryModel $categoryModel, $id) { + ini_set('max_execution_time', 0); echo "
url() . "); background-repeat:no-repeat; background-size: 300px; background-position:center; text-align:center; width:98%; - height:100%; + height:100%; padding-left: 20px;'>

" . trans('visiosoft.module.cats::field.please_wait') . "

"; - $Find_Categories = $categoryModel - ->where('deleted_at', null) - ->find($id); - if ($Find_Categories != "") { - $categoryCollection->subCatDelete($id); - header("Refresh:0"); - } else { - $categoryModel->find($id)->delete(); - return redirect('admin/cats')->with('success', ['Category and related sub-categories deleted successfully.']); - } + $categoryRepository->DeleteCategories($id); + + if ($request->parent == "") + return redirect('admin/cats')->with('success', ['Category and related sub-categories deleted successfully.']); + else + return redirect('admin/cats?cat=' . $request->parent)->with('success', ['Category and related sub-categories deleted successfully.']); } + + }