sc_appmenu_add_item("Menu_Nome", "Id_Item", "Id_Pai", "Label", "Aplicação", "Parâmetro", "Icone", "Hint", "Target", "mega menu")

A macro sc_appmenu_add_item adiciona, dinamicamente, itens na aplicação de menu iniciada pela macro sc_appmenu_create.

Importante destacar que para a criação de um menu dinâmico, com as macros, a aplicação não deve possuir qualquer item criado na interface Menu itens.

Sintaxe

// Inicializa o menu dinâmico. Esta chamada é obrigatória antes de usar sc_appmenu_add_item
sc_appmenu_create("nome_app_menu");

// Adiciona um item no menu dinâmico já inicializado
sc_appmenu_add_item(
  "nome_app_menu",
  "id_item",
  "id_item_pai",
  "label",
  "aplicacao",
  "parametros",
  "icone",
  "hint",
  "target",
  "megamenu"
);

Parâmetros

Parâmetro Obrigatório Aceita Vazio Descrição e exemplo
nome_app_menu Sim Não Recebe o nome da aplicação de menu onde os itens serão criados. Aceita texto fixo entre aspas duplas, variável local ou variável global.

Exemplo:
• "menu"
• $variavel_local
• [var_global]
id_item Sim Não Define o ID do item criado. Este parâmetro aceita texto fixo entre aspas duplas ou variável.

Exemplo:
• "item_01"
• "item_" . $array[0]
id_item_pai Sim Sim Deve ser informado apenas se o item for um subitem. Nesse caso, utilize o ID do item pai.

Exemplo:
• "item_01"
• "item_" . $array[0]
label Sim Não Recebe o nome do item que será exibido na aplicação. O valor pode ser informado com texto fixo, variável ou lang.

Exemplo:
• "nome do Item"
• $nomeItem
• {lang_nome_item}
nome_aplicacao Condicional¹ Sim Define a aplicação que será exibida ao clicar no item. Pode ser deixado em branco caso o item possua subitens.

¹ Pode ser deixado em branco caso o item seja um agrupador (item pai), sem ação de clique para abertura de aplicação.
parametros Não Sim String de parâmetros que serão definidos ao acionar o item. Os parâmetros informados devem ser recuperados como variável global.

Exemplo:
• parm1="valor";parm2=$variavel;parm3={campo}
hint Não Sim Texto que será exibido ao posicionar o mouse sobre o item. Pode ser texto fixo, variável ou lang.

Exemplo:
• "nome do Item"
• $nomeItem
• {lang_nome_item}
icone Não Sim Define o ícone Font Awesome (ou imagem) para o item do menu. O valor deve ser passado entre aspas duplas.

Exemplo:
• "fa fa-user"
target Não Sim Define a forma como o link será aberto.

Exemplo:
• "_self" - Para a mesma janela
• "_blank" - Para nova aba
• "_parent" - Abre no contexto da janela pai
megamenu Não Sim Define se o item será exibido como um mega menu. Para que funcione corretamente:
- O item deve ser um menu de nível superior (pai), ou seja, id_item_pai deve estar em branco.
- O item deve conter pelo menos dois níveis de subitens.

Exemplo:
• "S" – O item será exibido como mega menu
• "" – O item será exibido como menu comum

 

Exemplos

1. Menu fixo com valores diretos

sc_appmenu_create("menu");

// Item principal fixo
sc_appmenu_add_item("menu", "item_0", "", "Home", "app_home", "", "fa fa-home", "Página inicial", "_self", "");

// Grupo: Cadastros
sc_appmenu_add_item("menu", "item_1", "", "Cadastros", "", "", "fa fa-folder", "", "", "");
sc_appmenu_add_item("menu", "item_2", "item_1", "Clientes", "app_clientes", "", "fa fa-users", "", "_self", "");
sc_appmenu_add_item("menu", "item_3", "item_1", "Fornecedores", "app_fornecedores", "", "fa fa-truck", "", "_self", "");
sc_appmenu_add_item("menu", "item_4", "item_1", "Produtos", "app_produtos", "", "fa fa-box", "", "_self", "");

// Grupo: Relatórios
sc_appmenu_add_item("menu", "item_5", "", "Relatórios", "", "", "fa fa-file", "", "", "");
sc_appmenu_add_item("menu", "item_6", "item_5", "Faturamento", "app_rel_fat", "", "fa fa-chart-line", "", "_self", "");
sc_appmenu_add_item("menu", "item_7", "item_5", "Estoque", "app_rel_estoque", "", "fa fa-warehouse", "", "_self", "");
sc_appmenu_add_item("menu", "item_8", "item_5", "Clientes", "app_rel_clientes", "", "fa fa-address-book", "", "_self", "");

2. Utilizando Array e foreach

sc_appmenu_create("menu");

// Home
sc_appmenu_add_item("menu", "item_0", "", "Home", "app_home", "", "fa fa-home", "Página inicial", "_self", "");

$grupos = array(
  array(
    "id"     => "item_1",
    "label"  => "Cadastros",
    "icone"  => "fa fa-folder",
    "itens"  => array(
      array("label" => "Clientes",     "app" => "app_clientes",     "icone" => "fa fa-users"),
      array("label" => "Fornecedores", "app" => "app_fornecedores", "icone" => "fa fa-truck"),
      array("label" => "Produtos",     "app" => "app_produtos",     "icone" => "fa fa-box")
    )
  ),
  array(
    "id"     => "item_5",
    "label"  => "Relatórios",
    "icone"  => "fa fa-file",
    "itens"  => array(
      array("label" => "Faturamento", "app" => "app_rel_fat",     "icone" => "fa fa-chart-line"),
      array("label" => "Estoque",     "app" => "app_rel_estoque", "icone" => "fa fa-warehouse"),
      array("label" => "Clientes",    "app" => "app_rel_clientes","icone" => "fa fa-address-book")
    )
  )
);

$id_counter = 2;

foreach ($grupos as $grupo) {
  sc_appmenu_add_item("menu", $grupo["id"], "", $grupo["label"], "", "", $grupo["icone"], "", "", "");

  foreach ($grupo["itens"] as $item) {
    $id = "item_" . $id_counter++;
    sc_appmenu_add_item("menu", $id, $grupo["id"], $item["label"], $item["app"], "", $item["icone"], "", "_self", "");
  }
}

3. Utilizando foreach e consulta no banco de dados

sc_appmenu_create("menu");

// Home
sc_appmenu_add_item("menu", "item_0", "", "Home", "app_home", "", "fa fa-home", "Página inicial", "_self", "");

// Consulta com JOIN
sc_lookup(menu_data, "
  SELECT
    g.id AS grupo_id,
    g.nome AS grupo_nome,
    i.id AS item_id,
    i.nome AS item_nome,
    i.app AS app,
    i.icone AS icone
  FROM grupos g
  JOIN itens i ON i.grupo_id = g.id
  WHERE g.ativo = 'S' AND i.ativo = 'S'
  ORDER BY g.id, i.id
");

$grupos_criados = array();

if (isset({menu_data[0][0]})) {
  foreach ({menu_data} as $linha) {
    $grupo_id   = "item_" . $linha[0];
    $grupo_nome = $linha[1];
    $item_id    = "item_" . $linha[2];
    $item_nome  = $linha[3];
    $item_app   = $linha[4];
    $item_icone = $linha[5];

    if (!in_array($grupo_id, $grupos_criados)) {
      sc_appmenu_add_item("menu", $grupo_id, "", $grupo_nome, "", "", "fa fa-folder", "", "", "");
      $grupos_criados[] = $grupo_id;
    }

    sc_appmenu_add_item("menu", $item_id, $grupo_id, $item_nome, $item_app, "", $item_icone, "", "_self", "");
  }
}

4. Exemplo com a opção de mega menu

sc_appmenu_create("menu");

// Mega menu raiz
sc_appmenu_add_item("menu", "item_0", "", "Gestão", "", "", "fa fa-sitemap", "", "", "S");

// Grupos do mega menu
$grupos = array(
  array(
    "id" => "item_1",
    "label" => "Cadastros",
    "itens" => array("Clientes", "Produtos", "Usuários")
  ),
  array(
    "id" => "item_2",
    "label" => "Financeiro",
    "itens" => array("Contas a pagar", "Receitas", "Faturamento")
  ),
  array(
    "id" => "item_3",
    "label" => "Relatórios",
    "itens" => array("Vendas", "Estoque", "Clientes")
  )
);

$id_counter = 4;

foreach ($grupos as $grupo) {
  sc_appmenu_add_item("menu", $grupo["id"], "item_0", $grupo["label"], "", "", "", "", "", "");

  foreach ($grupo["itens"] as $label) {
    $id = "item_" . $id_counter++;
    $app = "app_" . strtolower(str_replace(" ", "_", $label));
    sc_appmenu_add_item("menu", $id, $grupo["id"], $label, $app, "", "", "", "_self", "");
  }
}