Overwrite Menu Entries
Closed this issue · 1 comments
Hi,
I have extended the bauhaususer and would now use my own admin classes in the backend.
I'm using also laravel-modules (which work very well.. anyway).
By default, the bauhaususer packages has a config file, where the menu entries
'menu' => [
'title' => trans('bauhaususer::admin.menu'),
'children' => [
[
'title' => trans('bauhaususer::admin.users.menu'),
'class' => 'KraftHaus\BauhausUser\User'
], [
'title' => trans('bauhaususer::admin.groups.menu'),
'class' => 'KraftHaus\BauhausUser\Group'
], [
'title' => trans('bauhaususer::admin.permissions.menu'),
'class' => 'KraftHaus\BauhausUser\Permission'
]
]
]
are defined.
My structure is the following:
app
- modules
-- users
--- admin
---- PermissionAdmin.php
--- models
---- Permission.php
--- migrations
---- 2014_10_05_132835_add_permission_group.php
--- menu.php
The PermissionAdmin.php
<?php
#namespace KraftHaus\BauhausUser;
/**
* This file is part of the KraftHaus BauhausUser package.
*
* (c) KraftHaus <hello@krafthaus.nl>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
use KraftHaus\Bauhaus\Admin;
/**
* Class PermissionAdmin
* @package KraftHaus\BauhausUser
*/
class PermissionAdmin extends KraftHaus\BauhausUser\PermissionAdmin
{
/**
* Public constructor override to set translatable names (singular, plural).
*
* @access public
* @return void
*/
public function __construct()
{
Debugbar::info('own Permission admin - from modules');
parent::__construct();
}
/**
* Configure the PermissionAdmin list.
*
* @param \KraftHaus\Bauhaus\Mapper\ListMapper $mapper
*
* @access public
* @return void
*/
public function configureList($mapper) {
$mapper->identifier('group')
->label(trans('bauhaususer::admin.permissions.list.group'));
parent::configureList($mapper);
}
/**
* Configure the UserAdmin form.
*
* @param \KraftHaus\Bauhaus\Mapper\FormMapper $mapper
*
* @access public
* @return void
*/
public function configureForm($mapper) {
$mapper->text('group')
->label(trans('bauhaususer::admin.permissions.form.group.label'))
->placeholder(trans('bauhaususer::admin.permissions.form.group.placeholder'));
parent::configureForm($mapper);
}
/**
* Configure the PermissionAdmin filters.
* @param \KraftHaus\Bauhaus\Mapper\FilterMapper $mapper
*
* @access public
* @return void
*/
public function configureFilters($mapper) {
$mapper->text('group')
->label(trans('bauhaususer::admin.permissions.filter.group'));
parent::configureFilters($mapper);
}
}
Permission.php
<?php
/**
* Class Permission
* @package KraftHaus\BauhausUser
*/
class Permission extends KraftHaus\BauhausUser\Permission
{
function __construct() {
parent::__construct();
}
}
2014_10_05_132835_add_permission_group.php
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddPermissionGroup extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('permissions', function($table) {
$table->string('group');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('permissions', function($table) {
$table->dropColumn('group');
});
}
}
menu.php (in this file, I store the addMenu() function - can be executed whereever you want)
app('krafthaus.bauhaus.menu')->addMenu('left', [
'title' => trans('bauhaususer::admin.menu'),
'children' => [
[
'title' => trans('bauhaususer::admin.permissions.menu'),
'class' => 'Permission'
]
]
]);
The Result in HTML is:
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Users<b class="caret"></b></a>
<ul class="dropdown-menu">
<li>
<a href="/admin/KraftHaus%255CBauhausUser%255CUser">Overview</a>
</li>
<li>
<a href="/admin/KraftHaus%255CBauhausUser%255CGroup">Groups</a>
</li>
<li>
<a href="/admin/KraftHaus%255CBauhausUser%255CPermission">Permissions</a>
</li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Users<b class="caret"></b></a>
<ul class="dropdown-menu">
<li>
<a href="/admin/Permission">Permissions</a>
</li>
</ul>
</li>
My problem is now, that i can't overwrite the existing records, because the menu builder will add the entries from the addMenu() into an array.
What I need, is the following:
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Users<b class="caret"></b></a>
<ul class="dropdown-menu">
<li>
<a href="/admin/KraftHaus%255CBauhausUser%255CUser">Overview</a>
</li>
<li>
<a href="/admin/KraftHaus%255CBauhausUser%255CGroup">Groups</a>
</li>
<!--Replaced
<li>
<a href="/admin/KraftHaus%255CBauhausUser%255CPermission">Permissions</a>
</li>
-->
<li>
<a href="/admin/Permission">Permissions</a>
</li>
</ul>
</li>
Any idea?
Thanks!
Got the solution :)
Here is my menu example: https://github.com/noxify/Bauhaus-Menu-Overwrite
Known Issues:
The defined menus, which exists in the Bauhaus and Bauhaus User Package are not shown.