|
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", "");
}
}
|