Skip to content
This repository was archived by the owner on Jan 3, 2023. It is now read-only.

Commit a80dfe9

Browse files
committed
cleanup
- make models configurable add soft delete support for pages …
1 parent 2aba15e commit a80dfe9

26 files changed

+203
-138
lines changed

README.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,13 @@ return [
101101
'unFoundLocalizedRoute' => 'home',
102102

103103
/*
104-
* the user model we are going to use for the admin page
104+
* package models
105105
*/
106-
'userModel' => App\User::class,
106+
'models'=> [
107+
'user' => App\User::class,
108+
'page' => \ctf0\SimpleMenu\Models\Page::class,
109+
'menu' => \ctf0\SimpleMenu\Models\Menu::class,
110+
],
107111

108112
/*
109113
* when adding a page which is a nest of a nother to a menu, ex.

logs/v3.2.2.txt

Lines changed: 0 additions & 5 deletions
This file was deleted.

logs/v3.2.3.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
- more cleanup
2+
- pages now have soft delete support
3+
- models are now dynamic incase you want to add support for something like “https://github.com/ctf0/Odin”
4+
- update wiki
5+
- update readme
6+
- update resources

src/Controllers/Admin/MenusController.php

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
namespace ctf0\SimpleMenu\Controllers\Admin;
44

55
use Illuminate\Http\Request;
6-
use ctf0\SimpleMenu\Models\Menu;
7-
use ctf0\SimpleMenu\Models\Page;
86
use ctf0\SimpleMenu\Controllers\BaseController;
97
use ctf0\SimpleMenu\Controllers\Admin\Traits\MenuOps;
108

@@ -47,7 +45,7 @@ public function store(Request $request)
4745
'name' => 'required|unique:menus,name',
4846
]);
4947

50-
$menu = Menu::create($request->all());
48+
$menu = $this->menuModel->create($request->all());
5149

5250
return redirect()
5351
->route($this->crud_prefix . '.menus.index')
@@ -63,7 +61,7 @@ public function store(Request $request)
6361
*/
6462
public function edit($id)
6563
{
66-
$menu = $this->cache->tags('sm')->get('menus')->find($id);
64+
$menu = $this->cache->tags('sm')->get('menus')->find($id) ?: abort(404);
6765

6866
return view("{$this->adminPath}.menus.edit", compact('menu'));
6967
}
@@ -82,7 +80,7 @@ public function update($id, Request $request)
8280
'name' => 'required|unique:menus,name,' . $id,
8381
]);
8482

85-
$menu = Menu::find($id);
83+
$menu = $this->menuModel->find($id) ?: abort(404);
8684

8785
// clear prev records
8886
$menu->pages()->detach();
@@ -118,7 +116,7 @@ public function update($id, Request $request)
118116
*/
119117
public function destroy($id, Request $request)
120118
{
121-
$menu = Menu::find($id);
119+
$menu = $this->menuModel->find($id) ?: abort(404);
122120
$menu->pages()->detach();
123121
$menu->delete();
124122

@@ -136,7 +134,7 @@ public function destroyMulti(Request $request)
136134
$ids = explode(',', $request->ids);
137135

138136
foreach ($ids as $one) {
139-
$menu = Menu::find($one);
137+
$menu = $this->menuModel->find($one);
140138
$menu->pages()->detach();
141139
$menu->delete();
142140
}

src/Controllers/Admin/PagesController.php

Lines changed: 50 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
namespace ctf0\SimpleMenu\Controllers\Admin;
44

55
use Illuminate\Http\Request;
6-
use ctf0\SimpleMenu\Models\Page;
76
use Spatie\Permission\Models\Role;
87
use Spatie\Permission\Models\Permission;
98
use ctf0\SimpleMenu\Controllers\BaseController;
@@ -53,7 +52,7 @@ public function store(Request $request)
5352
$this->sT_uP_Validaiton($request);
5453

5554
$img = $this->getImage($request->cover);
56-
$page = Page::create(array_merge(['cover'=>$img], $this->cleanEmptyTranslations($request)));
55+
$page = $this->pageModel->create(array_merge(['cover'=>$img], $this->cleanEmptyTranslations($request)));
5756
$roles = $request->input('roles') ?: [];
5857
$permissions = $request->input('permissions') ?: [];
5958
$menus = $request->input('menus') ?: [];
@@ -78,7 +77,7 @@ public function edit($id)
7877
{
7978
$roles = Role::pluck('name', 'name');
8079
$permissions = Permission::pluck('name', 'name');
81-
$page = $this->cache->tags('sm')->get('pages')->find($id);
80+
$page = $this->cache->tags('sm')->get('pages')->find($id) ?: abort(404);
8281
$menus = $this->cache->tags('sm')->get('menus')->pluck('name', 'id');
8382
$templates = array_unique($this->cache->tags('sm')->get('pages')->pluck('template')->filter()->all());
8483

@@ -98,7 +97,7 @@ public function update($id, Request $request)
9897
$this->sT_uP_Validaiton($request, $id);
9998

10099
$img = $this->getImage($request->cover);
101-
$page = Page::find($id);
100+
$page = $this->getItem($id);
102101
$roles = $request->input('roles') ?: [];
103102
$permissions = $request->input('permissions') ?: [];
104103
$menus = $request->input('menus') ?: [];
@@ -112,15 +111,15 @@ public function update($id, Request $request)
112111
}
113112

114113
/**
115-
* Remove Page from storage.
114+
* Remove Page.
116115
*
117116
* @param int $id
118117
*
119118
* @return \Illuminate\Http\Response
120119
*/
121120
public function destroy($id, Request $request)
122121
{
123-
Page::destroy($id);
122+
$this->pageModel->destroy($id);
124123

125124
if ($request->expectsJson()) {
126125
return response()->json(['done'=>true]);
@@ -135,12 +134,54 @@ public function destroyMulti(Request $request)
135134
{
136135
$ids = explode(',', $request->ids);
137136

138-
foreach ($ids as $one) {
139-
Page::destroy($one);
140-
}
137+
$this->pageModel->destroy($ids);
141138

142139
return redirect()
143140
->route($this->crud_prefix . '.pages.index')
144141
->with('status', trans('SimpleMenu::messages.models_deleted'));
145142
}
143+
144+
/**
145+
* restore model.
146+
*
147+
* @param [type] $id [description]
148+
*
149+
* @return [type] [description]
150+
*/
151+
public function restore($id)
152+
{
153+
$this->getItem($id)->restore();
154+
155+
return redirect()
156+
->route($this->crud_prefix . '.pages.index')
157+
->with('status', trans('SimpleMenu::messages.model_updated'));
158+
}
159+
160+
/**
161+
* Remove Page Permanently.
162+
*
163+
* @param [type] $id [description]
164+
*
165+
* @return [type] [description]
166+
*/
167+
public function forceDelete($id)
168+
{
169+
$this->getItem($id)->forceDelete();
170+
171+
return redirect()
172+
->route($this->crud_prefix . '.pages.index')
173+
->with('status', trans('SimpleMenu::messages.model_deleted_perm'));
174+
}
175+
176+
/**
177+
* helper.
178+
*
179+
* @param [type] $id [description]
180+
*
181+
* @return [type] [description]
182+
*/
183+
protected function getItem($id)
184+
{
185+
return $this->pageModel->withTrashed()->find($id) ?: abort(404);
186+
}
146187
}

src/Controllers/Admin/PermissionsController.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,9 +114,7 @@ public function destroyMulti(Request $request)
114114
{
115115
$ids = explode(',', $request->ids);
116116

117-
foreach ($ids as $one) {
118-
Permission::destroy($one);
119-
}
117+
Permission::destroy($ids);
120118

121119
return redirect()
122120
->route($this->crud_prefix . '.permissions.index')

src/Controllers/Admin/RolesController.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,9 +125,7 @@ public function destroyMulti(Request $request)
125125
{
126126
$ids = explode(',', $request->ids);
127127

128-
foreach ($ids as $one) {
129-
Role::destroy($one);
130-
}
128+
Role::destroy($ids);
131129

132130
return redirect()
133131
->route($this->crud_prefix . '.roles.index')

src/Controllers/Admin/Traits/MenuOps.php

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
namespace ctf0\SimpleMenu\Controllers\Admin\Traits;
44

55
use Illuminate\Http\Request;
6-
use ctf0\SimpleMenu\Models\Menu;
7-
use ctf0\SimpleMenu\Models\Page;
86

97
trait MenuOps
108
{
@@ -17,7 +15,8 @@ trait MenuOps
1715
*/
1816
public function getMenuPages($id)
1917
{
20-
$pages = collect($this->cache->tags('sm')->get('menus')->find($id)->pages)
18+
$menu = $this->cache->tags('sm')->get('menus')->find($id) ?: abort(404);
19+
$pages = collect($menu->pages)
2120
->sortBy('pivot_order')
2221
->each(function ($item) {
2322
$item['from'] = 'pages';
@@ -41,7 +40,7 @@ public function getMenuPages($id)
4140
public function removePage($id, Request $request)
4241
{
4342
// remove page from menu
44-
$menu = Menu::find($id);
43+
$menu = $this->menuModel->find($id) ?: abort(404);
4544
$menu->pages()->detach($request->page_id);
4645
$menu->touch();
4746

@@ -122,6 +121,6 @@ protected function clearSelfAndNests($id)
122121

123122
protected function findPage($id)
124123
{
125-
return Page::find($id);
124+
return $this->pageModel->find($id) ?: abort(404);
126125
}
127126
}

src/Controllers/Admin/UsersController.php

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
namespace ctf0\SimpleMenu\Controllers\Admin;
44

5-
use App\User;
65
use Illuminate\Http\Request;
76
use Spatie\Permission\Models\Role;
87
use Spatie\Permission\Models\Permission;
@@ -75,7 +74,7 @@ public function store(Request $request)
7574
*/
7675
public function edit($id)
7776
{
78-
$user = $this->cache->get('sm-users')->find($id);
77+
$user = $this->cache->get('sm-users')->find($id) ?: abort(404);
7978
$roles = Role::pluck('name', 'name');
8079
$permissions = Permission::pluck('name', 'name');
8180

@@ -97,7 +96,7 @@ public function update($id, Request $request)
9796
'email' => 'required|email|unique:users,email,' . $id,
9897
]);
9998

100-
$user = $this->userModel->find($id);
99+
$user = $this->userModel->find($id) ?: abort(404);
101100
$roles = $request->input('roles') ?: [];
102101
$permissions = $request->input('permissions') ?: [];
103102
$img = $this->getImage($request->avatar);
@@ -118,9 +117,10 @@ public function update($id, Request $request)
118117
*/
119118
public function destroy($id, Request $request)
120119
{
121-
if (auth()->user()->id == $id) {
122-
abort(403);
123-
}
120+
// dont remove self
121+
// if (auth()->user()->id == $id) {
122+
// abort(403);
123+
// }
124124

125125
$this->userModel->destroy($id);
126126

@@ -137,9 +137,7 @@ public function destroyMulti(Request $request)
137137
{
138138
$ids = explode(',', $request->ids);
139139

140-
foreach ($ids as $one) {
141-
User::destroy($one);
142-
}
140+
$this->userModel->destroy($ids);
143141

144142
return redirect()
145143
->route($this->crud_prefix . '.users.index')

src/Controllers/BaseController.php

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,20 @@ class BaseController extends Controller
1010
protected $adminPath;
1111
protected $crud_prefix;
1212
protected $userModel;
13+
protected $pageModel;
14+
protected $menuModel;
1315

1416
public function __construct()
1517
{
1618
if (is_callable('parent::__construct')) {
1719
parent::__construct();
1820
}
1921

20-
$this->cache = app('cache');
21-
$this->adminPath = 'SimpleMenu::admin.' . config('simpleMenu.framework');
22-
$this->crud_prefix = config('simpleMenu.crud_prefix');
23-
$this->userModel = app(config('simpleMenu.userModel'));
22+
$this->cache = app('cache');
23+
$this->adminPath = 'SimpleMenu::admin.' . config('simpleMenu.framework');
24+
$this->crud_prefix = config('simpleMenu.crud_prefix');
25+
$this->userModel = app(config('simpleMenu.models.user'));
26+
$this->pageModel = app(config('simpleMenu.models.page'));
27+
$this->menuModel = app(config('simpleMenu.models.menu'));
2428
}
2529
}

0 commit comments

Comments
 (0)