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

Commit

Permalink
v3.3.7
Browse files Browse the repository at this point in the history
  • Loading branch information
ctf0 committed Sep 4, 2018
1 parent 0c7e2bf commit a2ae73d
Show file tree
Hide file tree
Showing 28 changed files with 239 additions and 158 deletions.
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,10 @@ Create menus & pages that support (multiLocale "title, url, body, ...", nesting,
+ if you are having issues [Check](https://ctf0.wordpress.com/2017/09/12/laravel-mix-es6/).

```js
// app.js
window.Vue = require('vue')
require('../vendor/SimpleMenu/js/manager')
new Vue({
Expand Down
1 change: 1 addition & 0 deletions src/Controllers/Admin/MenusController.php
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ public function update($id, Request $request)

// update and trigger events
$menu->update($request->except('saveList'));
$menu->touch();

return back()->with('status', trans('SimpleMenu::messages.model_updated'));
}
Expand Down
25 changes: 17 additions & 8 deletions src/Controllers/Admin/PagesController.php
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,9 @@ public function store(Request $request)

$img = $this->getImage($request->cover);
$page = $this->pageModel->create(array_merge(['cover'=>$img], $this->cleanEmptyTranslations($request)));
$roles = $request->input('roles') ?: [];
$permissions = $request->input('permissions') ?: [];
$menus = $request->input('menus') ?: [];
$roles = $request->roles ?: [];
$permissions = $request->permissions ?: [];
$menus = $request->menus ?: [];

$page->assignRole($roles);
$page->givePermissionTo($permissions);
Expand Down Expand Up @@ -101,19 +101,28 @@ public function update($id, Request $request)

$img = $this->getImage($request->cover);
$page = $this->getItem($id);
$roles = $request->input('roles') ?: [];
$permissions = $request->input('permissions') ?: [];
$menus = $request->input('menus') ?: [];
$roles = $request->roles;
$permissions = $request->permissions;
$menus = $request->menus ?: [];

$page->update(array_merge(['cover'=>$img], $this->cleanEmptyTranslations($request)));
$page->syncRoles($roles);
$page->syncPermissions($permissions);

if (!$this->checkBeforeAssign($page->roles, $roles)) {
$page->syncRoles($roles ?: []);
}

if (!$this->checkBeforeAssign($page->permissions, $permissions)) {
$page->syncPermissions($permissions ?: []);
}

$page->syncMenus($menus);

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

$page->touch();

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

Expand Down
1 change: 1 addition & 0 deletions src/Controllers/Admin/PermissionsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ public function update($id, Request $request)
]);

$this->permissionModel->findOrFail($id)->update($request->all());
$this->permissionModel->touch();

$this->clearCache();

Expand Down
5 changes: 3 additions & 2 deletions src/Controllers/Admin/RolesController.php
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ public function store(Request $request)
]);

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

$role->givePermissionTo($permissions);

Expand Down Expand Up @@ -87,10 +87,11 @@ public function update($id, Request $request)
]);

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

$role->update($request->except('permissions'));
$role->syncPermissions($permissions);
$role->touch();

$this->clearCache();

Expand Down
2 changes: 1 addition & 1 deletion src/Controllers/Admin/Traits/MenuOps.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public function getMenuPages($id)
->sortBy('pivot_order')
->each(function ($item) {
$item['from'] = 'pages';
});
})->values()->all();

$allPages = $this->cache->tags('sm')->get('pages')->diff($pages)->each(function ($item) {
$item['from'] = 'allPages';
Expand Down
17 changes: 17 additions & 0 deletions src/Controllers/Admin/Traits/UserPageOps.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,21 @@ protected function getImage($img)
{
return $img;
}

/**
* check if model items are the same as the request items.
* fix spatie role & perm detach then attach model relation.
*
* @param [type] $item [description]
* @param [type] $input [description]
*
* @return [type] [description]
*/
protected function checkBeforeAssign($item, $input)
{
$self = $item->pluck('name')->sort()->values()->all();
$new = collect($input)->sort()->values()->all();

return $self === $new;
}
}
20 changes: 14 additions & 6 deletions src/Controllers/Admin/UsersController.php
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@ public function store(Request $request)

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

$user->assignRole($roles);
$user->givePermissionTo($permissions);
Expand Down Expand Up @@ -95,13 +95,21 @@ public function update($id, Request $request)
]);

$user = $this->userModel->findOrFail($id);
$roles = $request->input('roles') ?: [];
$permissions = $request->input('permissions') ?: [];
$img = $this->getImage($request->avatar);
$roles = $request->roles;
$permissions = $request->permissions;

$user->update(array_merge(['avatar'=>$img], $request->except(['roles', 'permissions'])));
$user->syncRoles($roles);
$user->syncPermissions($permissions);

if (!$this->checkBeforeAssign($user->roles, $roles)) {
$user->syncRoles($roles ?: []);
}

if (!$this->checkBeforeAssign($user->permissions, $permissions)) {
$user->syncPermissions($permissions ?: []);
}

$user->touch();

return back()->with('status', trans('SimpleMenu::messages.model_updated'));
}
Expand Down
22 changes: 12 additions & 10 deletions src/Controllers/BaseController.php
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,17 @@ public function __construct()
parent::__construct();
}

$config = config('simpleMenu');
$this->cache = app('cache');
$this->adminPath = 'SimpleMenu::admin';
$this->crud_prefix = array_get($config, 'crud_prefix');
$this->userModel = app(array_get($config, 'models.user'));
$this->pageModel = app(array_get($config, 'models.page'));
$this->menuModel = app(array_get($config, 'models.menu'));

$this->roleModel = app(config('permission.models.role'));
$this->permissionModel = app(config('permission.models.permission'));
$sm_config = config('simpleMenu');
$sp_config = config('permission');

$this->cache = app('cache');
$this->adminPath = 'SimpleMenu::admin';
$this->crud_prefix = array_get($sm_config, 'crud_prefix');
$this->userModel = app(array_get($sm_config, 'models.user'));
$this->pageModel = app(array_get($sm_config, 'models.page'));
$this->menuModel = app(array_get($sm_config, 'models.menu'));

$this->roleModel = app(array_get($sp_config, 'models.role'));
$this->permissionModel = app(array_get($sp_config, 'models.permission'));
}
}
13 changes: 9 additions & 4 deletions src/SimpleMenu.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,19 @@
namespace ctf0\SimpleMenu;

use ctf0\SimpleMenu\Traits\Ops;
use ctf0\SimpleMenu\Traits\MenusTrait;
use ctf0\SimpleMenu\Traits\RoutesTrait;
use ctf0\SimpleMenu\Traits\NavigationTrait;
use ctf0\SimpleMenu\Traits\Menus;
use ctf0\SimpleMenu\Traits\Routes;
use ctf0\SimpleMenu\Traits\Navigation;
use ctf0\SimpleMenu\Traits\PackageRoutes;
use Mcamara\LaravelLocalization\Facades\LaravelLocalization;

class SimpleMenu
{
use RoutesTrait, MenusTrait, NavigationTrait, Ops;
use Routes,
Menus,
Navigation,
Ops,
PackageRoutes;

protected $listFileDir;
protected $localeCodes;
Expand Down
2 changes: 1 addition & 1 deletion src/Traits/MenusTrait.php → src/Traits/Menus.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

namespace ctf0\SimpleMenu\Traits;

trait MenusTrait
trait Menus
{
/**
* register routes for menu pages.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

use Mcamara\LaravelLocalization\Facades\LaravelLocalization;

trait NavigationTrait
trait Navigation
{
protected $urlRoute;

Expand Down
50 changes: 0 additions & 50 deletions src/Traits/Ops.php
Original file line number Diff line number Diff line change
Expand Up @@ -58,54 +58,4 @@ protected static function create_LFD($dir)
}
}
}

/**
* package routes.
*
* @return [type] [description]
*/
public function menuRoutes()
{
$prefix = config('simpleMenu.crud_prefix');
$controllers = config('simpleMenu.controllers');

app('router')->group([
'prefix'=> $prefix,
], function () use ($prefix, $controllers) {
/* Home */
if (isset($controllers['admin'])) {
app('router')->get('/', $controllers['admin'])->name($prefix);
}

/* Everything Else */
app('router')->group([
'as'=> "$prefix.",
], function () use ($controllers) {
/* Roles */
app('router')->resource('roles', $controllers['roles'], ['except'=>'show']);
app('router')->post('roles/remove-multi', $controllers['roles'] . '@destroyMulti')->name('roles.destroy_multi');

/* Perms */
app('router')->resource('permissions', $controllers['permissions'], ['except'=>'show']);
app('router')->post('permissions/remove-multi', $controllers['permissions'] . '@destroyMulti')->name('permissions.destroy_multi');

/* Menus */
app('router')->post('menus/removechild', $controllers['menus'] . '@removeChild')->name('menus.removeChild');
app('router')->post('menus/removepage/{id}', $controllers['menus'] . '@removePage')->name('menus.removePage');
app('router')->get('menus/getmenupages/{id}', $controllers['menus'] . '@getMenuPages')->name('menus.getMenuPages');
app('router')->resource('menus', $controllers['menus'], ['except'=>'show']);
app('router')->post('menus/remove-multi', $controllers['menus'] . '@destroyMulti')->name('menus.destroy_multi');

/* Users */
app('router')->resource('users', $controllers['users'], ['except'=>'show']);
app('router')->post('users/remove-multi', $controllers['users'] . '@destroyMulti')->name('users.destroy_multi');

/* Pages */
app('router')->resource('pages', $controllers['pages'], ['except'=>'show']);
app('router')->post('pages/remove-multi', $controllers['pages'] . '@destroyMulti')->name('pages.destroy_multi');
app('router')->put('pages/{id}/restore', $controllers['pages'] . '@restore')->name('pages.restore');
app('router')->delete('pages/{id}/remove-force', $controllers['pages'] . '@forceDelete')->name('pages.destroy_force');
});
});
}
}
56 changes: 56 additions & 0 deletions src/Traits/PackageRoutes.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
<?php

namespace ctf0\SimpleMenu\Traits;

trait PackageRoutes
{
/**
* package routes.
*
* @return [type] [description]
*/
public function menuRoutes()
{
$prefix = config('simpleMenu.crud_prefix');
$controllers = config('simpleMenu.controllers');

app('router')->group([
'prefix'=> $prefix,
], function () use ($prefix, $controllers) {
/* Home */
if (isset($controllers['admin'])) {
app('router')->get('/', $controllers['admin'])->name($prefix);
}

/* Everything Else */
app('router')->group([
'as'=> "$prefix.",
], function () use ($controllers) {
/* Roles */
app('router')->resource('roles', $controllers['roles'], ['except'=>'show']);
app('router')->post('roles/remove-multi', $controllers['roles'] . '@destroyMulti')->name('roles.destroy_multi');

/* Perms */
app('router')->resource('permissions', $controllers['permissions'], ['except'=>'show']);
app('router')->post('permissions/remove-multi', $controllers['permissions'] . '@destroyMulti')->name('permissions.destroy_multi');

/* Menus */
app('router')->post('menus/removechild', $controllers['menus'] . '@removeChild')->name('menus.removeChild');
app('router')->post('menus/removepage/{id}', $controllers['menus'] . '@removePage')->name('menus.removePage');
app('router')->get('menus/getmenupages/{id}', $controllers['menus'] . '@getMenuPages')->name('menus.getMenuPages');
app('router')->resource('menus', $controllers['menus'], ['except'=>'show']);
app('router')->post('menus/remove-multi', $controllers['menus'] . '@destroyMulti')->name('menus.destroy_multi');

/* Users */
app('router')->resource('users', $controllers['users'], ['except'=>'show']);
app('router')->post('users/remove-multi', $controllers['users'] . '@destroyMulti')->name('users.destroy_multi');

/* Pages */
app('router')->resource('pages', $controllers['pages'], ['except'=>'show']);
app('router')->post('pages/remove-multi', $controllers['pages'] . '@destroyMulti')->name('pages.destroy_multi');
app('router')->put('pages/{id}/restore', $controllers['pages'] . '@restore')->name('pages.restore');
app('router')->delete('pages/{id}/remove-force', $controllers['pages'] . '@forceDelete')->name('pages.destroy_force');
});
});
}
}
2 changes: 1 addition & 1 deletion src/Traits/RoutesTrait.php → src/Traits/Routes.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

use Mcamara\LaravelLocalization\Facades\LaravelLocalization;

trait RoutesTrait
trait Routes
{
protected $allRoutes = [];
protected $listFileFound = true;
Expand Down
12 changes: 8 additions & 4 deletions src/resources/assets/js/index.vue
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,14 @@ export default {
sortableList: [
'data-sort-name',
'data-sort-email',
'data-sort-roles',
'data-sort-permissions',
'data-sort-middlewares',
'data-sort-route',
'data-sort-url',
'data-sort-menus',
'data-sort-locals',
'data-sort-template',
{name: 'data-sort-permissions', attr: 'data-permissions'},
{name: 'data-sort-roles', attr: 'data-roles'},
{name: 'data-sort-menus', attr: 'data-menus'},
{name: 'data-sort-locals', attr: 'data-locals'},
{name: 'data-sort-ops', attr: 'data-ops'}
]
}
Expand All @@ -42,6 +43,9 @@ export default {
document.getElementById(e.id) ? this.ids.push(e.value) : false
})
},
clickOnCkBox(id) {
document.querySelector(`#${id}`).click()
},
updateCounter(val) {
return this.itemsCount = val
},
Expand Down
1 change: 0 additions & 1 deletion src/resources/assets/js/manager.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
/* Packages */
window.Vue = require('vue')
window.EventHub = require('vuemit')
Vue.use(require('vue-tippy'), {
arrow: true,
Expand Down
Loading

0 comments on commit a2ae73d

Please sign in to comment.