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

Commit a2ae73d

Browse files
committed
v3.3.7
1 parent 0c7e2bf commit a2ae73d

28 files changed

+239
-158
lines changed

README.md

+4
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ Create menus & pages that support (multiLocale "title, url, body, ...", nesting,
3535
+ if you are having issues [Check](https://ctf0.wordpress.com/2017/09/12/laravel-mix-es6/).
3636

3737
```js
38+
// app.js
39+
40+
window.Vue = require('vue')
41+
3842
require('../vendor/SimpleMenu/js/manager')
3943
4044
new Vue({

src/Controllers/Admin/MenusController.php

+1
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ public function update($id, Request $request)
103103

104104
// update and trigger events
105105
$menu->update($request->except('saveList'));
106+
$menu->touch();
106107

107108
return back()->with('status', trans('SimpleMenu::messages.model_updated'));
108109
}

src/Controllers/Admin/PagesController.php

+17-8
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,9 @@ public function store(Request $request)
5353

5454
$img = $this->getImage($request->cover);
5555
$page = $this->pageModel->create(array_merge(['cover'=>$img], $this->cleanEmptyTranslations($request)));
56-
$roles = $request->input('roles') ?: [];
57-
$permissions = $request->input('permissions') ?: [];
58-
$menus = $request->input('menus') ?: [];
56+
$roles = $request->roles ?: [];
57+
$permissions = $request->permissions ?: [];
58+
$menus = $request->menus ?: [];
5959

6060
$page->assignRole($roles);
6161
$page->givePermissionTo($permissions);
@@ -101,19 +101,28 @@ public function update($id, Request $request)
101101

102102
$img = $this->getImage($request->cover);
103103
$page = $this->getItem($id);
104-
$roles = $request->input('roles') ?: [];
105-
$permissions = $request->input('permissions') ?: [];
106-
$menus = $request->input('menus') ?: [];
104+
$roles = $request->roles;
105+
$permissions = $request->permissions;
106+
$menus = $request->menus ?: [];
107107

108108
$page->update(array_merge(['cover'=>$img], $this->cleanEmptyTranslations($request)));
109-
$page->syncRoles($roles);
110-
$page->syncPermissions($permissions);
109+
110+
if (!$this->checkBeforeAssign($page->roles, $roles)) {
111+
$page->syncRoles($roles ?: []);
112+
}
113+
114+
if (!$this->checkBeforeAssign($page->permissions, $permissions)) {
115+
$page->syncPermissions($permissions ?: []);
116+
}
117+
111118
$page->syncMenus($menus);
112119

113120
if (!is_null($request->controllerFile)) {
114121
$this->actionFileContent($request->action, 'update', $request->controllerFile);
115122
}
116123

124+
$page->touch();
125+
117126
return back()->with('status', trans('SimpleMenu::messages.model_updated'));
118127
}
119128

src/Controllers/Admin/PermissionsController.php

+1
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ public function update($id, Request $request)
8181
]);
8282

8383
$this->permissionModel->findOrFail($id)->update($request->all());
84+
$this->permissionModel->touch();
8485

8586
$this->clearCache();
8687

src/Controllers/Admin/RolesController.php

+3-2
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public function store(Request $request)
4848
]);
4949

5050
$role = $this->roleModel->create($request->except('permissions'));
51-
$permissions = $request->input('permissions') ?: [];
51+
$permissions = $request->permissions ?: [];
5252

5353
$role->givePermissionTo($permissions);
5454

@@ -87,10 +87,11 @@ public function update($id, Request $request)
8787
]);
8888

8989
$role = $this->roleModel->findOrFail($id);
90-
$permissions = $request->input('permissions') ?: [];
90+
$permissions = $request->permissions ?: [];
9191

9292
$role->update($request->except('permissions'));
9393
$role->syncPermissions($permissions);
94+
$role->touch();
9495

9596
$this->clearCache();
9697

src/Controllers/Admin/Traits/MenuOps.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public function getMenuPages($id)
2020
->sortBy('pivot_order')
2121
->each(function ($item) {
2222
$item['from'] = 'pages';
23-
});
23+
})->values()->all();
2424

2525
$allPages = $this->cache->tags('sm')->get('pages')->diff($pages)->each(function ($item) {
2626
$item['from'] = 'allPages';

src/Controllers/Admin/Traits/UserPageOps.php

+17
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,21 @@ protected function getImage($img)
88
{
99
return $img;
1010
}
11+
12+
/**
13+
* check if model items are the same as the request items.
14+
* fix spatie role & perm detach then attach model relation.
15+
*
16+
* @param [type] $item [description]
17+
* @param [type] $input [description]
18+
*
19+
* @return [type] [description]
20+
*/
21+
protected function checkBeforeAssign($item, $input)
22+
{
23+
$self = $item->pluck('name')->sort()->values()->all();
24+
$new = collect($input)->sort()->values()->all();
25+
26+
return $self === $new;
27+
}
1128
}

src/Controllers/Admin/UsersController.php

+14-6
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ public function store(Request $request)
5252

5353
$img = $this->getImage($request->avatar);
5454
$user = $this->userModel->create(array_merge(['avatar'=>$img], $request->except(['roles', 'permissions'])));
55-
$roles = $request->input('roles') ?: [];
56-
$permissions = $request->input('permissions') ?: [];
55+
$roles = $request->roles ?: [];
56+
$permissions = $request->permissions ?: [];
5757

5858
$user->assignRole($roles);
5959
$user->givePermissionTo($permissions);
@@ -95,13 +95,21 @@ public function update($id, Request $request)
9595
]);
9696

9797
$user = $this->userModel->findOrFail($id);
98-
$roles = $request->input('roles') ?: [];
99-
$permissions = $request->input('permissions') ?: [];
10098
$img = $this->getImage($request->avatar);
99+
$roles = $request->roles;
100+
$permissions = $request->permissions;
101101

102102
$user->update(array_merge(['avatar'=>$img], $request->except(['roles', 'permissions'])));
103-
$user->syncRoles($roles);
104-
$user->syncPermissions($permissions);
103+
104+
if (!$this->checkBeforeAssign($user->roles, $roles)) {
105+
$user->syncRoles($roles ?: []);
106+
}
107+
108+
if (!$this->checkBeforeAssign($user->permissions, $permissions)) {
109+
$user->syncPermissions($permissions ?: []);
110+
}
111+
112+
$user->touch();
105113

106114
return back()->with('status', trans('SimpleMenu::messages.model_updated'));
107115
}

src/Controllers/BaseController.php

+12-10
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,17 @@ public function __construct()
2525
parent::__construct();
2626
}
2727

28-
$config = config('simpleMenu');
29-
$this->cache = app('cache');
30-
$this->adminPath = 'SimpleMenu::admin';
31-
$this->crud_prefix = array_get($config, 'crud_prefix');
32-
$this->userModel = app(array_get($config, 'models.user'));
33-
$this->pageModel = app(array_get($config, 'models.page'));
34-
$this->menuModel = app(array_get($config, 'models.menu'));
35-
36-
$this->roleModel = app(config('permission.models.role'));
37-
$this->permissionModel = app(config('permission.models.permission'));
28+
$sm_config = config('simpleMenu');
29+
$sp_config = config('permission');
30+
31+
$this->cache = app('cache');
32+
$this->adminPath = 'SimpleMenu::admin';
33+
$this->crud_prefix = array_get($sm_config, 'crud_prefix');
34+
$this->userModel = app(array_get($sm_config, 'models.user'));
35+
$this->pageModel = app(array_get($sm_config, 'models.page'));
36+
$this->menuModel = app(array_get($sm_config, 'models.menu'));
37+
38+
$this->roleModel = app(array_get($sp_config, 'models.role'));
39+
$this->permissionModel = app(array_get($sp_config, 'models.permission'));
3840
}
3941
}

src/SimpleMenu.php

+9-4
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,19 @@
33
namespace ctf0\SimpleMenu;
44

55
use ctf0\SimpleMenu\Traits\Ops;
6-
use ctf0\SimpleMenu\Traits\MenusTrait;
7-
use ctf0\SimpleMenu\Traits\RoutesTrait;
8-
use ctf0\SimpleMenu\Traits\NavigationTrait;
6+
use ctf0\SimpleMenu\Traits\Menus;
7+
use ctf0\SimpleMenu\Traits\Routes;
8+
use ctf0\SimpleMenu\Traits\Navigation;
9+
use ctf0\SimpleMenu\Traits\PackageRoutes;
910
use Mcamara\LaravelLocalization\Facades\LaravelLocalization;
1011

1112
class SimpleMenu
1213
{
13-
use RoutesTrait, MenusTrait, NavigationTrait, Ops;
14+
use Routes,
15+
Menus,
16+
Navigation,
17+
Ops,
18+
PackageRoutes;
1419

1520
protected $listFileDir;
1621
protected $localeCodes;

src/Traits/MenusTrait.php renamed to src/Traits/Menus.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
namespace ctf0\SimpleMenu\Traits;
44

5-
trait MenusTrait
5+
trait Menus
66
{
77
/**
88
* register routes for menu pages.

src/Traits/NavigationTrait.php renamed to src/Traits/Navigation.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
use Mcamara\LaravelLocalization\Facades\LaravelLocalization;
66

7-
trait NavigationTrait
7+
trait Navigation
88
{
99
protected $urlRoute;
1010

src/Traits/Ops.php

-50
Original file line numberDiff line numberDiff line change
@@ -58,54 +58,4 @@ protected static function create_LFD($dir)
5858
}
5959
}
6060
}
61-
62-
/**
63-
* package routes.
64-
*
65-
* @return [type] [description]
66-
*/
67-
public function menuRoutes()
68-
{
69-
$prefix = config('simpleMenu.crud_prefix');
70-
$controllers = config('simpleMenu.controllers');
71-
72-
app('router')->group([
73-
'prefix'=> $prefix,
74-
], function () use ($prefix, $controllers) {
75-
/* Home */
76-
if (isset($controllers['admin'])) {
77-
app('router')->get('/', $controllers['admin'])->name($prefix);
78-
}
79-
80-
/* Everything Else */
81-
app('router')->group([
82-
'as'=> "$prefix.",
83-
], function () use ($controllers) {
84-
/* Roles */
85-
app('router')->resource('roles', $controllers['roles'], ['except'=>'show']);
86-
app('router')->post('roles/remove-multi', $controllers['roles'] . '@destroyMulti')->name('roles.destroy_multi');
87-
88-
/* Perms */
89-
app('router')->resource('permissions', $controllers['permissions'], ['except'=>'show']);
90-
app('router')->post('permissions/remove-multi', $controllers['permissions'] . '@destroyMulti')->name('permissions.destroy_multi');
91-
92-
/* Menus */
93-
app('router')->post('menus/removechild', $controllers['menus'] . '@removeChild')->name('menus.removeChild');
94-
app('router')->post('menus/removepage/{id}', $controllers['menus'] . '@removePage')->name('menus.removePage');
95-
app('router')->get('menus/getmenupages/{id}', $controllers['menus'] . '@getMenuPages')->name('menus.getMenuPages');
96-
app('router')->resource('menus', $controllers['menus'], ['except'=>'show']);
97-
app('router')->post('menus/remove-multi', $controllers['menus'] . '@destroyMulti')->name('menus.destroy_multi');
98-
99-
/* Users */
100-
app('router')->resource('users', $controllers['users'], ['except'=>'show']);
101-
app('router')->post('users/remove-multi', $controllers['users'] . '@destroyMulti')->name('users.destroy_multi');
102-
103-
/* Pages */
104-
app('router')->resource('pages', $controllers['pages'], ['except'=>'show']);
105-
app('router')->post('pages/remove-multi', $controllers['pages'] . '@destroyMulti')->name('pages.destroy_multi');
106-
app('router')->put('pages/{id}/restore', $controllers['pages'] . '@restore')->name('pages.restore');
107-
app('router')->delete('pages/{id}/remove-force', $controllers['pages'] . '@forceDelete')->name('pages.destroy_force');
108-
});
109-
});
110-
}
11161
}

src/Traits/PackageRoutes.php

+56
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
<?php
2+
3+
namespace ctf0\SimpleMenu\Traits;
4+
5+
trait PackageRoutes
6+
{
7+
/**
8+
* package routes.
9+
*
10+
* @return [type] [description]
11+
*/
12+
public function menuRoutes()
13+
{
14+
$prefix = config('simpleMenu.crud_prefix');
15+
$controllers = config('simpleMenu.controllers');
16+
17+
app('router')->group([
18+
'prefix'=> $prefix,
19+
], function () use ($prefix, $controllers) {
20+
/* Home */
21+
if (isset($controllers['admin'])) {
22+
app('router')->get('/', $controllers['admin'])->name($prefix);
23+
}
24+
25+
/* Everything Else */
26+
app('router')->group([
27+
'as'=> "$prefix.",
28+
], function () use ($controllers) {
29+
/* Roles */
30+
app('router')->resource('roles', $controllers['roles'], ['except'=>'show']);
31+
app('router')->post('roles/remove-multi', $controllers['roles'] . '@destroyMulti')->name('roles.destroy_multi');
32+
33+
/* Perms */
34+
app('router')->resource('permissions', $controllers['permissions'], ['except'=>'show']);
35+
app('router')->post('permissions/remove-multi', $controllers['permissions'] . '@destroyMulti')->name('permissions.destroy_multi');
36+
37+
/* Menus */
38+
app('router')->post('menus/removechild', $controllers['menus'] . '@removeChild')->name('menus.removeChild');
39+
app('router')->post('menus/removepage/{id}', $controllers['menus'] . '@removePage')->name('menus.removePage');
40+
app('router')->get('menus/getmenupages/{id}', $controllers['menus'] . '@getMenuPages')->name('menus.getMenuPages');
41+
app('router')->resource('menus', $controllers['menus'], ['except'=>'show']);
42+
app('router')->post('menus/remove-multi', $controllers['menus'] . '@destroyMulti')->name('menus.destroy_multi');
43+
44+
/* Users */
45+
app('router')->resource('users', $controllers['users'], ['except'=>'show']);
46+
app('router')->post('users/remove-multi', $controllers['users'] . '@destroyMulti')->name('users.destroy_multi');
47+
48+
/* Pages */
49+
app('router')->resource('pages', $controllers['pages'], ['except'=>'show']);
50+
app('router')->post('pages/remove-multi', $controllers['pages'] . '@destroyMulti')->name('pages.destroy_multi');
51+
app('router')->put('pages/{id}/restore', $controllers['pages'] . '@restore')->name('pages.restore');
52+
app('router')->delete('pages/{id}/remove-force', $controllers['pages'] . '@forceDelete')->name('pages.destroy_force');
53+
});
54+
});
55+
}
56+
}

src/Traits/RoutesTrait.php renamed to src/Traits/Routes.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
use Mcamara\LaravelLocalization\Facades\LaravelLocalization;
66

7-
trait RoutesTrait
7+
trait Routes
88
{
99
protected $allRoutes = [];
1010
protected $listFileFound = true;

src/resources/assets/js/index.vue

+8-4
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,14 @@ export default {
1414
sortableList: [
1515
'data-sort-name',
1616
'data-sort-email',
17-
'data-sort-roles',
18-
'data-sort-permissions',
17+
'data-sort-middlewares',
1918
'data-sort-route',
2019
'data-sort-url',
21-
'data-sort-menus',
22-
'data-sort-locals',
2320
'data-sort-template',
21+
{name: 'data-sort-permissions', attr: 'data-permissions'},
22+
{name: 'data-sort-roles', attr: 'data-roles'},
23+
{name: 'data-sort-menus', attr: 'data-menus'},
24+
{name: 'data-sort-locals', attr: 'data-locals'},
2425
{name: 'data-sort-ops', attr: 'data-ops'}
2526
]
2627
}
@@ -42,6 +43,9 @@ export default {
4243
document.getElementById(e.id) ? this.ids.push(e.value) : false
4344
})
4445
},
46+
clickOnCkBox(id) {
47+
document.querySelector(`#${id}`).click()
48+
},
4549
updateCounter(val) {
4650
return this.itemsCount = val
4751
},

src/resources/assets/js/manager.js

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
/* Packages */
2-
window.Vue = require('vue')
32
window.EventHub = require('vuemit')
43
Vue.use(require('vue-tippy'), {
54
arrow: true,

0 commit comments

Comments
 (0)