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

Commit 0a65dd7

Browse files
committed
updates
* add models clearing events * add support for “app\controllers\controller” __cons * more cleanup and optimize * remove the caret from the menu items * create "routeListPath" if not found * remove `role/perms` require validation from "page & user" * update rdme
1 parent 91f70e9 commit 0a65dd7

File tree

16 files changed

+73
-45
lines changed

16 files changed

+73
-45
lines changed

README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,3 +130,17 @@ return [
130130

131131
### Crud Views
132132
[Wiki](https://github.com/ctf0/SimpleMenu/wiki/Crud-Views)
133+
134+
### Events
135+
- in case you are using some package that caches the response and you need to invalidate the cache when any of the package **CRUD** operations is fired, you can listen to
136+
+ `sm-menus.cleared`
137+
+ `sm-pages.cleared`
138+
+ `sm-users.cleared`
139+
+ `sm-perms.cleared`
140+
141+
and you can listen to all through
142+
```php
143+
Event::listen('sm-*', function () {
144+
// do something
145+
});
146+
```

src/Controllers/Admin/Traits/PageOps.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,6 @@ protected function sT_uP_Validaiton($request, $id = null)
2626
$validator = Validator::make($request->all(), [
2727
'template' => 'required_without:action',
2828
'route_name' => $routename,
29-
'roles' => 'required',
30-
'permissions' => 'required',
3129
]);
3230

3331
// because laravel still pretty fucked up when it comes to showing array input errors

src/Controllers/Admin/Traits/RolePermOps.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,7 @@ trait RolePermOps
77
protected function clearCache()
88
{
99
$this->cache->tags('sm')->flush();
10+
11+
event('sm-perms.cleared');
1012
}
1113
}

src/Controllers/Admin/UsersController.php

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,6 @@ public function store(Request $request)
4747
'name' => 'required',
4848
'email' => 'required|email|unique:users,email',
4949
'password' => 'required',
50-
'roles' => 'required',
51-
'permissions' => 'required',
5250
]);
5351

5452
$user = $this->userModel->create($request->except(['roles', 'permissions']));
@@ -90,8 +88,6 @@ public function update($id, Request $request)
9088
$this->validate($request, [
9189
'name' => 'required',
9290
'email' => 'required|email|unique:users,email,' . $id,
93-
'roles' => 'required',
94-
'permissions' => 'required',
9591
]);
9692

9793
$user = $this->userModel->find($id);

src/Controllers/BaseController.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,11 @@ class BaseController extends Controller
1414

1515
public function __construct()
1616
{
17-
$this->cache = app()['cache'];
17+
if (is_callable('parent::__construct')) {
18+
parent::__construct();
19+
}
20+
21+
$this->cache = app('cache');
1822
$fw = config('simpleMenu.framework');
1923
$this->adminPath = "SimpleMenu::admin.{$fw}";
2024
$this->templatePath = config('simpleMenu.templatePath');

src/Models/Page.php

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

55
use Baum\Node;
6-
use Illuminate\Support\Facades\Cache;
76
use Spatie\Permission\Traits\HasRoles;
87
use Spatie\Translatable\HasTranslations;
98
use Mcamara\LaravelLocalization\Facades\LaravelLocalization;
@@ -76,15 +75,15 @@ public function syncMenus($menus)
7675
*/
7776
public function getAncestors($columns = ['*'])
7877
{
79-
return Cache::tags('sm')->rememberForever($this->getCrntLocale() . "-{$this->route_name}_ancestors", function () use ($columns) {
78+
return app('cache')->tags('sm')->rememberForever($this->getCrntLocale() . "-{$this->route_name}_ancestors", function () use ($columns) {
8079
return $this->ancestors()->get($columns);
8180
});
8281
}
8382

8483
public function getNestsAttribute()
8584
{
86-
return Cache::tags('sm')->rememberForever($this->getCrntLocale() . "-{$this->route_name}_nests", function () {
87-
return $childs = array_flatten(current($this->getDescendants()->toHierarchy()));
85+
return app('cache')->tags('sm')->rememberForever($this->getCrntLocale() . "-{$this->route_name}_nests", function () {
86+
return array_flatten(current($this->getDescendants()->toHierarchy()));
8887
});
8988
}
9089

src/Observers/BaseObserver.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,6 @@ class BaseObserver
88

99
public function __construct()
1010
{
11-
$this->cache = app()['cache'];
11+
$this->cache = app('cache');
1212
}
1313
}

src/Observers/MenuObserver.php

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,36 +2,33 @@
22

33
namespace ctf0\SimpleMenu\Observers;
44

5-
use ctf0\SimpleMenu\Models\Menu;
6-
75
class MenuObserver extends BaseObserver
86
{
97
/**
10-
* Listen to the User saved event.
8+
* Listen to the Menu saved event.
119
*/
12-
public function saved(Menu $menu)
10+
public function saved()
1311
{
14-
return $this->cleanData($menu);
12+
return $this->cleanData();
1513
}
1614

1715
/**
18-
* Listen to the User deleted event.
16+
* Listen to the Menu deleted event.
1917
*/
20-
public function deleted(Menu $menu)
18+
public function deleted()
2119
{
22-
return $this->cleanData($menu);
20+
return $this->cleanData();
2321
}
2422

2523
/**
2624
* helpers.
2725
*
28-
* @param [type] $menu [description]
29-
* @param mixed $page
30-
*
3126
* @return [type] [description]
3227
*/
33-
protected function cleanData($menu)
28+
protected function cleanData()
3429
{
3530
$this->cache->tags('sm')->flush();
31+
32+
event('sm-menus.cleared');
3633
}
3734
}

src/Observers/PageObserver.php

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,15 @@
88
class PageObserver extends BaseObserver
99
{
1010
/**
11-
* Listen to the User saved event.
11+
* Listen to the Page saved event.
1212
*/
1313
public function saved(Page $page)
1414
{
1515
return $this->cleanData($page);
1616
}
1717

1818
/**
19-
* Listen to the User deleted event.
19+
* Listen to the Page deleted event.
2020
*/
2121
public function deleted(Page $page)
2222
{
@@ -26,8 +26,7 @@ public function deleted(Page $page)
2626
/**
2727
* helpers.
2828
*
29-
* @param [type] $menu [description]
30-
* @param mixed $page
29+
* @param [type] $page [description]
3130
*
3231
* @return [type] [description]
3332
*/
@@ -43,5 +42,7 @@ protected function cleanData($page)
4342

4443
// clear all cache
4544
$this->cache->tags('sm')->flush();
45+
46+
event('sm-pages.cleared');
4647
}
4748
}

src/Observers/UserObserver.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@ public function deleted()
2323
/**
2424
* helpers.
2525
*
26-
* @param [type] $menu [description]
27-
*
2826
* @return [type] [description]
2927
*/
3028
protected function cleanData()
3129
{
3230
$this->cache->forget('sm-users');
31+
32+
event('sm-users.cleared');
3333
}
3434
}

src/SimpleMenu.php

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
use ctf0\SimpleMenu\Models\Menu;
66
use ctf0\SimpleMenu\Models\Page;
7+
use Illuminate\Support\Facades\File;
78
use ctf0\SimpleMenu\Traits\MenusTrait;
89
use ctf0\SimpleMenu\Traits\RoutesTrait;
910
use ctf0\SimpleMenu\Traits\NavigationTrait;
@@ -20,10 +21,12 @@ class SimpleMenu
2021

2122
public function __construct()
2223
{
23-
$this->cache = app()['cache'];
24+
$this->cache = app('cache');
2425
$this->listFileDir = config('simpleMenu.routeListPath');
2526
$this->localeCodes = array_keys(LaravelLocalization::getSupportedLocales());
2627

28+
static::create_LFD($this->listFileDir);
29+
2730
if (!app()->runningInConsole()) {
2831
// create caches
2932
$this->createCaches();
@@ -36,6 +39,9 @@ public function __construct()
3639
}
3740
}
3841

42+
/**
43+
* locales.
44+
*/
3945
public function AppLocales()
4046
{
4147
return $this->localeCodes;
@@ -46,6 +52,11 @@ protected function getCrntLocale()
4652
return LaravelLocalization::getCurrentLocale();
4753
}
4854

55+
/**
56+
* cacheing.
57+
*
58+
* @return [type] [description]
59+
*/
4960
protected function createCaches()
5061
{
5162
$this->cache->tags('sm')->rememberForever('menus', function () {
@@ -60,4 +71,19 @@ protected function createCaches()
6071
return app(config('simpleMenu.userModel'))->get();
6172
});
6273
}
74+
75+
/**
76+
* route list dir.
77+
*
78+
* @param mixed $dir
79+
*/
80+
protected static function create_LFD($dir)
81+
{
82+
$file_name = substr(strrchr($dir, '/'), 1);
83+
$dir_only = str_replace($file_name, '', $dir);
84+
85+
if (!File::exists($dir_only)) {
86+
return File::makeDirectory($dir_only, 0755, true);
87+
}
88+
}
6389
}

src/resources/assets/js/components/menu-comp_childs.vue

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
<li v-for="item in childs" :key="item.id">
1010
<!-- main -->
1111
<div class="notification is-dark menu-item" :class="classObj(item)">
12-
<span class="icon is-small"><i class="fa" :class="arrowObj(item)"></i></span>
1312
<span>{{ getTitle(item.title) }}</span>
1413

1514
<!-- ops -->

src/resources/assets/js/components/mixins/menu.js

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,13 +39,6 @@ export default {
3939
return 'is-danger'
4040
}
4141
},
42-
arrowObj(item) {
43-
if (this.hasChilds(item)) {
44-
return 'fa-caret-down'
45-
}
46-
47-
return 'fa-caret-right'
48-
},
4942

5043
// nests
5144
dragStart() {

src/resources/assets/sass/style.scss

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,14 @@
3737
// nest
3838
.menu-item {
3939
padding: 0.5em;
40+
padding-left: 1em;
4041
margin-bottom: 0.5em !important;
4142
}
4243
.menu-list {
4344
line-height: inherit;
4445
}
4546
.dragArea {
46-
min-height: 35px;
47+
min-height: 25px;
4748
display: block;
4849
}
4950
.notification > .delete {

src/resources/views/admin/bulma/menus/edit.blade.php

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ class="column is-4 menu-list"
4545
<li v-for="item in pages" :key="item.id">
4646
{{-- main --}}
4747
<div class="notification is-info menu-item" :class="classObj(item)">
48-
<span class="icon is-small"><i class="fa" :class="arrowObj(item)"></i></span>
4948
<span>@{{ getTitle(item.title) }}</span>
5049

5150
{{-- ops --}}
@@ -72,7 +71,6 @@ class="column"
7271
@start="dragStart"
7372
@end="dragEnd">
7473
<li v-for="item in allPages" :key="item.id" class="notification is-info menu-item">
75-
<span class="icon is-small"><i class="fa fa-caret-right"></i></span>
7674
<span>@{{ getTitle(item.title) }}</span>
7775
</li>
7876
</draggable>

src/resources/views/admin/bulma/shared.blade.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
<li>
4949
<a class="{{ URL::is($crud_prefix.'.menus.index') ? 'is-active' : '' }}" href="{{ route($crud_prefix.'.menus.index') }}">Menus</a>
5050
<ul>
51-
@foreach (app()['cache']->tags('sm')->get('menus') as $menu)
51+
@foreach (app('cache')->tags('sm')->get('menus') as $menu)
5252
<li data-id="menu-{{ $menu->id }}">
5353
<a class="{{ URL::is($crud_prefix.'.menus.edit',['id'=>$menu->id]) ? 'is-active' : '' }}" href="{{ route($crud_prefix.'.menus.edit',[$menu->id]) }}">{{ $menu->name }}</a>
5454
</li>
@@ -80,8 +80,8 @@
8080
tinymce.overrideDefaults({
8181
menubar: false,
8282
branding: false,
83-
height : "120",
84-
plugins: "lists link image spellchecker fullscreen media table preview contextmenu autoresize",
83+
height : '120',
84+
plugins: 'lists link image spellchecker fullscreen media table preview contextmenu autoresize',
8585
toolbar: 'undo redo | link unlink | media image | styleselect removeformat | outdent indent | numlist bullist table | spellchecker preview fullscreen'
8686
})
8787
</script>

0 commit comments

Comments
 (0)