Início
NexoPOS

menus-do-ns-dashboard

Este filtro é usado para modificar o menu lateral do painel. Ele aceita um parâmetro, que é o menu no seu estado atual. Observe que o menu final pode ser diferente do resultado esperado, pois outros módulos podem sobrescrever o menu.

Usando uma prioridade mais alta, faça com que seu script seja executado após todos os outros. Veja como você registrará um menu personalizado.

<?php
namespace Modules\YourModuleNamespace\Providers;

use Illuminate\Support\ServiceProvider;
use App\Classes\Hook;

class ModuleSerivceProvider extends ServiceProvider
{
    public function register()
    {
        Hook::addFilter( 'ns-dashboard-menus', function( $menus ) {
            $menus[ 'my-menus' ]  =   [
                'label'   =>  __( 'Your Menu' ),
                'href'    =>  url( '/' ),
                'permissions'  =>  [], // accept an array of permissions
                'icon'    =>  'fa-icon', // use https://icons8.com/line-awesome icons.
                'childrens' =>  [
                    // sub menu having the same shape as the parent, excluding "childrens" and "icon".
                ]
            ];
          
            return $menus;
        });
    }
}

Você pode definir uma prioridade passando um parâmetro adicional para a função "addFilter".

Controlar a Visibilidade do Menu com Permissões

Se os seus menus exigirem certas permissões para ficarem visíveis para um utilizador, terá de usar o atributo “permissions”, que aceita um array de namespaces de “permissions” (identificadores).

[
    'permissions'   =>   [ 'see.in.dark' ]
]

Se forem fornecidas mais de uma permissão, o usuário deve ter essas permissões atribuídas ao seu perfil.

Fornecendo Submenus

O menu só pode aceitar uma hierarquia com um nível abaixo. Isso significa que um sub-menu não pode ter sub-menus. A estrutura de um sub-menu é semelhante à do menu pai, mas não inclui “icon” e “children”, que não se aplicam a sub-menus.

[
    //
    'childrens'  =>  [
        'submenu'  => [
            'label'   => 'Sub menu Label'
        ]
    ],
    // 
]

Cada submenu, assim como o pai, deve ser definido como um par chave-valor. Certifique-se de definir chaves exclusivas para evitar qualquer possível conflito.

<?php
namespace Modules\YourModuleNamespace\Providers;

use Illuminate\Support\ServiceProvider;
use App\Classes\Hook;

class ModuleSerivceProvider extends ServiceProvider
{
    public function register()
    {
        Hook::addFilter( 'ns-dashboard-menus', function( $menus ) {
            $menus[ 'my-menus' ]  =   [
                'label'   =>  __( 'Your Menu' ),
                'href'    =>  url( '/' ),
                'permissions'  =>  [], // accept an array of permissions
                'icon'    =>  'fa-icon', // use https://icons8.com/line-awesome icons.
                'childrens' =>  [
                    'submenu' =>  [
                        'label'   =>  __( 'First Submenu' ),
                        'href'    =>  url( '/url/to/page' ),
                        'permissions'  =>  [], // any permission to contro visibility.
                    ]
                ]
            ];
          
            return $menus;
        });
    }
}

Inserindo um menu em uma posição específica

Na maior parte do tempo, os menus são inseridos no final da lista. No entanto, é possível inserir um menu ou submenu antes ou depois de outro menu. O ponto principal aqui é saber o identificador do menu. Por exemplo, se quisermos adicionar um menu antes de “inventory”, vamos inspecionar o dashboard e obter o identificador do menu que exibe o menu de “inventory”.

inspect-menu

A partir daí, você deve conseguir identificar o identificador do menu.

menus-nexopos

No nosso exemplo, o identificador do menu que usaremos é “inventory” e não “menu-inventory”. Em seguida, usaremos esse identificador para inserir um menu antes de “inventory”.

<?php
namespace Modules\YourModuleNamespace\Providers;

use Illuminate\Support\ServiceProvider;
use App\Classes\Hook;

class ModuleSerivceProvider extends ServiceProvider
{
    public function register()
    {
        Hook::addFilter( 'ns-dashboard-menus', function( $menus ) {
            $menus  =   array_insert_after( $menus, 'inventory', [
                'my-menus'  =>  [
                    'label'   =>  __( 'Your Menu' ),
                    'href'    =>  url( '/' ),
                    'permissions'  =>  [], // accept an array of permissions
                    'icon'    =>  'fa-icon', // use https://icons8.com/line-awesome icons.
                    'childrens' =>  [
                        'submenu' =>  [
                            'label'   =>  __( 'First Submenu' ),
                            'href'    =>  url( '/url/to/page' ),
                            'permissions'  =>  [], // any permission to contro visibility.
                        ]
                    ]
                ]
            ]);
            
          
            return $menus;
        });
    }
}

A função “array_insert_before” pode ser usada para inserir um array antes de uma chave específica. A função “array_insert_after” pode ser usada para inserir um array após uma chave específica.