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

Commit bf9f5ca

Browse files
committed
better cacheing
1 parent 0452a86 commit bf9f5ca

File tree

14 files changed

+55
-37
lines changed

14 files changed

+55
-37
lines changed

src/Controllers/Admin/MenusController.php

+1-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
use ctf0\SimpleMenu\Models\Menu;
88
use ctf0\SimpleMenu\Models\Page;
99
use Illuminate\Http\Request;
10-
use Illuminate\Support\Facades\DB;
1110

1211
class MenusController extends BaseController
1312
{
@@ -86,7 +85,7 @@ public function update($id, Request $request)
8685
$menu = Menu::find($id);
8786

8887
// clear prev records
89-
DB::table('menu_page')->where('menu_id', $menu->id)->delete();
88+
$menu->pages()->detach();
9089

9190
foreach (json_decode($request->saveList) as $item) {
9291
// make sure page is not included under any other pages

src/Models/Page.php

+20-3
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@
33
namespace ctf0\SimpleMenu\Models;
44

55
use Baum\Node;
6-
use Mcamara\LaravelLocalization\Facades\LaravelLocalization;
6+
use Illuminate\Support\Facades\Cache;
77
use Spatie\Permission\Traits\HasRoles;
88
use Spatie\Translatable\HasTranslations;
9+
use Mcamara\LaravelLocalization\Facades\LaravelLocalization;
910

1011
class Page extends Node
1112
{
@@ -54,16 +55,32 @@ public function syncMenus($menus)
5455
return $this->menuNames()->sync($menus);
5556
}
5657

58+
/**
59+
* Get all the ancestor chain from the database excluding the current node.
60+
*
61+
* @param array $columns
62+
*
63+
* @return \Illuminate\Database\Eloquent\Collection
64+
*/
65+
public function getAncestors($columns = ['*'])
66+
{
67+
return Cache::rememberForever(LaravelLocalization::getCurrentLocale()."-{$this->route_name}_ancestors", function () use ($columns) {
68+
return $this->ancestors()->get($columns);
69+
});
70+
}
71+
5772
/**
5873
* eager load page Descendants.
5974
*
6075
* @return [type] [description]
6176
*/
6277
public function getNestsAttribute()
6378
{
64-
$childs = array_flatten(current($this->getDescendants()->toHierarchy()));
79+
return Cache::rememberForever(LaravelLocalization::getCurrentLocale()."-{$this->route_name}_nests", function () {
80+
$childs = array_flatten(current($this->getDescendants()->toHierarchy()));
6581

66-
return count($childs) ? $childs : null;
82+
return count($childs) ? $childs : null;
83+
});
6784
}
6885

6986
/**

src/Observers/PageObserver.php

+6-2
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
namespace ctf0\SimpleMenu\Observers;
44

5-
use ctf0\SimpleMenu\Facade\SimpleMenu;
65
use ctf0\SimpleMenu\Models\Menu;
76
use ctf0\SimpleMenu\Models\Page;
8-
use Illuminate\Support\Facades\Cache;
97
use Illuminate\Support\Facades\File;
8+
use Illuminate\Support\Facades\Cache;
9+
use ctf0\SimpleMenu\Facade\SimpleMenu;
1010

1111
class PageObserver
1212
{
@@ -54,6 +54,10 @@ protected function cleanData($page)
5454

5555
// clear page cache
5656
Cache::forget("$code-$route_name");
57+
58+
// clear ancestors & nests cache
59+
Cache::forget("$code-{$route_name}_ancestors");
60+
Cache::forget("$code-{$route_name}_nests");
5761
}
5862
}
5963
}

src/Traits/MenusTrait.php

+1-3
Original file line numberDiff line numberDiff line change
@@ -57,14 +57,12 @@ public function query($name)
5757
{
5858
$locale = LaravelLocalization::getCurrentLocale();
5959

60-
Cache::rememberForever("{$name}Menu-{$locale}Pages", function () use ($name) {
60+
return Cache::rememberForever("{$name}Menu-{$locale}Pages", function () use ($name) {
6161
return cache('sm-menus')
6262
->where('name', $name)
6363
->first()->pages()
6464
->orderBy('pivot_order', 'asc')
6565
->get();
6666
});
67-
68-
return cache("{$name}Menu-{$locale}Pages");
6967
}
7068
}

src/Traits/RoutesTrait.php

+5-5
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
namespace ctf0\SimpleMenu\Traits;
44

55
use ctf0\SimpleMenu\Models\Page;
6-
use Illuminate\Support\Facades\Cache;
76
use Illuminate\Support\Facades\File;
7+
use Illuminate\Support\Facades\Cache;
88
use Illuminate\Support\Facades\Route;
99
use Mcamara\LaravelLocalization\Facades\LaravelLocalization;
10-
use Mcamara\LaravelLocalization\Middleware\LaravelLocalizationRedirectFilter;
1110
use Mcamara\LaravelLocalization\Middleware\LocaleSessionRedirect;
11+
use Mcamara\LaravelLocalization\Middleware\LaravelLocalizationRedirectFilter;
1212

1313
trait RoutesTrait
1414
{
@@ -51,7 +51,7 @@ protected function utilCheck()
5151
protected function utilLoop()
5252
{
5353
Cache::rememberForever('sm-pages', function () {
54-
return Page::get();
54+
return Page::with(['roles','permissions'])->get();
5555
});
5656

5757
foreach (cache('sm-pages') as $page) {
@@ -75,8 +75,8 @@ protected function pageComp($page)
7575
$routeName = $page->route_name;
7676

7777
// middlewares
78-
$roles = 'role:'.implode(',', $page->roles()->pluck('name')->toArray());
79-
$permissions = 'perm:'.implode(',', $page->permissions()->pluck('name')->toArray());
78+
$roles = 'role:'.implode(',', $page->roles->pluck('name')->toArray());
79+
$permissions = 'perm:'.implode(',', $page->permissions->pluck('name')->toArray());
8080

8181
// make route
8282
$this->routeGen($routeName, $url, $prefix, $action, $roles, $permissions, $template, $title, $body, $desc, $breadCrumb);

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<a href="{{ route('admin.menus.create') }}" class="button is-success">@lang('SimpleMenu::messages.app_add_new')</a>
88
</h3>
99

10-
<table class="table is-bordered">
10+
<table class="table is-narrow is-fullwidth is-bordered">
1111
<thead>
1212
<tr>
1313
<th>@lang('SimpleMenu::messages.menus.fields.name')</th>

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

+3-3
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
<div class="field">
6060
{{ Form::label('roles', 'Roles', ['class' => 'label']) }}
6161
<div class="control">
62-
{{ Form::select('roles[]', $roles, $page->roles()->pluck('name', 'name'), ['class' => 'select2', 'multiple' => 'multiple']) }}
62+
{{ Form::select('roles[]', $roles, $page->roles->pluck('name', 'name'), ['class' => 'select2', 'multiple' => 'multiple']) }}
6363
</div>
6464
@if($errors->has('roles'))
6565
<p class="help is-danger">
@@ -72,7 +72,7 @@
7272
<div class="field">
7373
{{ Form::label('permissions', 'Permissions', ['class' => 'label']) }}
7474
<div class="control">
75-
{{ Form::select('permissions[]', $permissions, $page->permissions()->pluck('name', 'name'), ['class' => 'select2', 'multiple' => 'multiple']) }}
75+
{{ Form::select('permissions[]', $permissions, $page->permissions->pluck('name', 'name'), ['class' => 'select2', 'multiple' => 'multiple']) }}
7676
</div>
7777
@if($errors->has('permissions'))
7878
<p class="help is-danger">
@@ -85,7 +85,7 @@
8585
<div class="field">
8686
{{ Form::label('menus', 'Menus', ['class' => 'label']) }}
8787
<div class="control">
88-
{{ Form::select('menus[]', $menus, $page->menuNames()->pluck('id', 'name'), ['class' => 'select2', 'multiple' => 'multiple']) }}
88+
{{ Form::select('menus[]', $menus, $page->menuNames->pluck('id', 'name'), ['class' => 'select2', 'multiple' => 'multiple']) }}
8989
</div>
9090
@if($errors->has('menus'))
9191
<p class="help is-danger">

src/resources/views/admin/bulma/pages/index.blade.php

+4-4
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<a href="{{ route('admin.pages.create') }}" class="button is-success">@lang('SimpleMenu::messages.app_add_new')</a>
88
</h3>
99

10-
<table class="table is-bordered">
10+
<table class="table is-narrow is-fullwidth is-bordered">
1111
<thead>
1212
<tr>
1313
<th>@lang('SimpleMenu::messages.pages.fields.title')</th>
@@ -33,17 +33,17 @@
3333
@endif
3434
</td>
3535
<td>
36-
@foreach ($page->roles()->pluck('name') as $role)
36+
@foreach ($page->roles->pluck('name') as $role)
3737
<span class="tag is-medium is-info">{{ $role }}</span>
3838
@endforeach
3939
</td>
4040
<td>
41-
@foreach ($page->permissions()->pluck('name') as $perm)
41+
@foreach ($page->permissions->pluck('name') as $perm)
4242
<span class="tag is-medium is-info">{{ $perm }}</span>
4343
@endforeach
4444
</td>
4545
<td>
46-
@foreach ($page->menuNames()->pluck('name') as $menu)
46+
@foreach ($page->menuNames->pluck('name') as $menu)
4747
<span class="tag is-medium is-info">{{ $menu }}</span>
4848
@endforeach
4949
</td>

src/resources/views/admin/bulma/permissions/index.blade.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<a href="{{ route('admin.permissions.create') }}" class="button is-success">@lang('SimpleMenu::messages.app_add_new')</a>
88
</h3>
99

10-
<table class="table is-bordered">
10+
<table class="table is-narrow is-fullwidth is-bordered">
1111
<thead>
1212
<tr>
1313
<th>@lang('SimpleMenu::messages.permissions.fields.name')</th>

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
<div class="field">
2626
{{ Form::label('permissions', 'Permissions', ['class' => 'label']) }}
2727
<div class="control">
28-
{{ Form::select('permissions[]', $permissions, $role->permissions()->pluck('name', 'name'), ['class' => 'select2', 'multiple' => 'multiple']) }}
28+
{{ Form::select('permissions[]', $permissions, $role->permissions->pluck('name', 'name'), ['class' => 'select2', 'multiple' => 'multiple']) }}
2929
</div>
3030
@if($errors->has('permissions'))
3131
<p class="help is-danger">

src/resources/views/admin/bulma/roles/index.blade.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<a href="{{ route('admin.roles.create') }}" class="button is-success">@lang('SimpleMenu::messages.app_add_new')</a>
88
</h3>
99

10-
<table class="table is-bordered">
10+
<table class="table is-narrow is-fullwidth is-bordered">
1111
<thead>
1212
<tr>
1313
<th>@lang('SimpleMenu::messages.roles.fields.name')</th>
@@ -22,7 +22,7 @@
2222
<tr>
2323
<td>{{ $role->name }}</td>
2424
<td>
25-
@foreach ($role->permissions()->pluck('name') as $permission)
25+
@foreach ($role->permissions->pluck('name') as $permission)
2626
<span class="tag is-medium is-medium is-info">{{ $permission }}</span>
2727
@endforeach
2828
</td>
@@ -43,4 +43,4 @@
4343
@endif
4444
</tbody>
4545
</table>
46-
@stop
46+
@stop

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

+3-3
Original file line numberDiff line numberDiff line change
@@ -68,16 +68,16 @@
6868
placeholder: 'Select an option',
6969
allowClear: true,
7070
tag: true
71-
});
71+
})
7272
7373
// body & desc
7474
tinymce.overrideDefaults({
7575
menubar: false,
7676
branding: false,
7777
height : "120",
7878
plugins: "lists link image spellchecker fullscreen media table preview contextmenu autoresize",
79-
toolbar: 'undo redo | link unlink | media image | styleselect removeformat | outdent indent | numlist bullist table | spellchecker preview fullscreen',
80-
});
79+
toolbar: 'undo redo | link unlink | media image | styleselect removeformat | outdent indent | numlist bullist table | spellchecker preview fullscreen'
80+
})
8181
</script>
8282
</body>
8383
</html>

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

+2-2
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
<div class="field">
5151
{{ Form::label('roles', 'Roles', ['class' => 'label']) }}
5252
<div class="control">
53-
{{ Form::select('roles[]', $roles, $user->roles()->pluck('name', 'name'), ['class' => 'select2', 'multiple' => 'multiple']) }}
53+
{{ Form::select('roles[]', $roles, $user->roles->pluck('name', 'name'), ['class' => 'select2', 'multiple' => 'multiple']) }}
5454
</div>
5555
@if($errors->has('roles'))
5656
<p class="help is-danger">
@@ -63,7 +63,7 @@
6363
<div class="field">
6464
{{ Form::label('permissions', 'Permissions', ['class' => 'label']) }}
6565
<div class="control">
66-
{{ Form::select('permissions[]', $permissions, $user->permissions()->pluck('name', 'name'), ['class' => 'select2', 'multiple' => 'multiple']) }}
66+
{{ Form::select('permissions[]', $permissions, $user->permissions->pluck('name', 'name'), ['class' => 'select2', 'multiple' => 'multiple']) }}
6767
</div>
6868
@if($errors->has('permissions'))
6969
<p class="help is-danger">

src/resources/views/admin/bulma/users/index.blade.php

+4-4
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<a href="{{ route('admin.users.create') }}" class="button is-success">@lang('SimpleMenu::messages.app_add_new')</a>
88
</h3>
99

10-
<table class="table is-bordered">
10+
<table class="table is-narrow is-fullwidth is-bordered">
1111
<thead>
1212
<tr>
1313
<th>@lang('SimpleMenu::messages.users.fields.name')</th>
@@ -25,12 +25,12 @@
2525
<td>{{ $user->name }}</td>
2626
<td>{{ $user->email }}</td>
2727
<td>
28-
@foreach ($user->roles()->pluck('name') as $role)
28+
@foreach ($user->roles->pluck('name') as $role)
2929
<span class="tag is-medium is-info">{{ $role }}</span>
3030
@endforeach
3131
</td>
3232
<td>
33-
@foreach ($user->permissions()->pluck('name') as $perm)
33+
@foreach ($user->permissions->pluck('name') as $perm)
3434
<span class="tag is-medium is-info">{{ $perm }}</span>
3535
@endforeach
3636
</td>
@@ -51,4 +51,4 @@
5151
@endif
5252
</tbody>
5353
</table>
54-
@stop
54+
@stop

0 commit comments

Comments
 (0)