[RESOLVIDO] - Ocultar Item do menu

Bom dia,

Será que alguém me pode ajudar? Estou a tentar ocultar um item do menu com a macro: sc_appmenu_remove_item(“MenuPrincipal”, “item_36”);
Mas não me está a ocultar.
E será que aqui posso definir que esse item só estará disponível para o User Administrador?
Obrigada

1 Curtida

A macro sc_appmenu_remove_item deve ser usada quando o menu for criado através da macro sc_menuapp_create

Caso não seja criado através da macro, deve-se usar a macro sc_menu_delete

2 Curtidas

Ronyan obrigada!
Mas não funcionou, não ocultou o item.

1 Curtida

Em qual evento utilizou a macro?
Segue documentação: http://www.scriptcase.com.br/docs/pt_br/v81/macros-scriptcase/macros-scriptcase#sc_menu_delete

1 Curtida

Vanda,

Acho que seria mais fácil você mudar na configuração do menu, marcando a opção de esconder ítens.

1 Curtida

Já funcionou. Coloquei no evento onApplicationIni. Anteriormente estava no onLoad.
Ativei também no Meu Scriptcase o Nível de Segurança.
Obrigada.
A minha próxima questão é como fazer com que esse item apareça quando for o Administrador a entrar na BD.

1 Curtida

Kleyber, fiz isso e se rodo o menu ele oculta, mas se vou pelo login ele mostra todos os itens.

1 Curtida

Mas aí depende do grupo ao qual ele está associado. Se no grupo essa opção do menu estiver habilitada, vai aparecer mesmo. Pra isso, basta ir ao teu módulo de segurança e desabilitar no grupo os ítens de menu que você não quer que apareçam. No grupo Administrador não faça nada, pois ele vai ter acesso a tudo.

1 Curtida

Já fiz a alteração como você indicou. Aparece o item mas ao clicar não executa nada. Até aqui tudo bem. Tive que fazer as autorizações directo no Mysql.
Mudando de dúvida ;-):

  • como é que eu posso atribuir um menu diferente a cada tipo de utilizador? Explicando melhor: copiei o MenuPrincipal e tirei os itens que são do Administrador só. E agora gostava que ao fazer Login se não for o Administrador o menu que aparece é outro.
    Por exemplo: MenuPrincipal implica que o login seja feito pelo Administrador; MenuUsers implica que o login é feito por outro utilizador que pertence a outro grupo.
    Será que é possível fazer isso?
    Tentei através de Grupos/Aplicações dar a permissão para usar o MenuUsers e não usar MenuPrincipal mas não fez nada.

Como poderei dar a instrução do segundo menu?

1 Curtida

Vanda bom dia,

Você pode criar uma blank que deverá ser executada no menu (coloque na definição da aplicação a ser executada do menu). Nessa blank você faz o IF checando a variável de login (que deverá ser pública) e aí você usará o SC_REDIR() para ir para a app de menu que desejas.

1 Curtida

Bom dia Kleyber,

Estive a tentar fazer as coisas de outra maneira utilizando o seguinte código no onApplicationIni do menu:
[i]$sql=
“SELECT
group_id
FROM
sec_caipusers_groups
WHERE
login = '”. [usr_login] ."’";

   sc_lookup(ds,$sql);

$group_id={ds[0][0]};

if ({login}!=1){
sc_menu_delete(id_item_28, item_37);
}
[/i]

O problema é que dá o erro de “Undefined variable: login”.
Já coloquei em vez de campo {login} no if dessa forma [login], mas assim não me oculta os itens que dou instrução para ocultar.
Não sei o que estou a fazer de errado, será que me pode ajudar?
Obrigada.

1 Curtida

Vanda bom dia,

Estás trazendo um campo no sc_lookup e fazendo teste com outro que não existe. Mude o IF para:

if ($group_id!=1){
sc_menu_delete(id_item_28, item_37);
}

Obrigada Kleyber.
Se faço rodar a aplicação login e entro como utilizador do grupo 1 ele faz tudo certo. Depois entro como utilizadores dos outros grupos (2 ou 3) também fica tudo certo com o menu.
O problema é que se me volto a ligar como utilizador do grupo 1 ele não mostra o menu correcto. Ou seja parece não estar a identificar que esse utilizador pertence ao grupo 1.
Não sei o que se está a passar.

Tente com a sugestão que lhe dei.

Mas foi com a sugestão que me deu que fiz só que dá esses problemas que falei. O código agora está assim:
[i]$sql=
“SELECT
group_id
FROM
sec_caipusers_groups
WHERE
login = '”. [usr_login] ."’";

   sc_lookup(ds,$sql);

$group_id={ds[0][0]};

if ($group_id!=1){
sc_menu_delete(item_37);
}
[/i]

rsrsrs me referi a PRIMEIRA sugestão.

Bom dia Kleyber,
Ainda não segui a sua sugestão rsrsr.
Estive a ver esse video https://www.youtube.com/watch?v=HF7GNccx_S8
E deu certo identificando o grupo a que o utilizador pertence só aparecem os itens do menu de cada utilizador.
Mas o meu problema agora é que a aplicação de Login está a abrir com a variável (pede o grupo) em vez de ir logo para a tela de login.
Como é que eu posso mudar isto? Será que me pode ajudar?
O código que está escrito na aplicação Login e no evento onValidateSuccess é:

/* verificar o grupo a que o utilizador pertence */
$sql=“SELECT * FROM sec_caipusers WHERE login=’”.[usr_login]."’;";
sc_lookup(usr_info,$sql);
$sql_usr_group =“SELECT * FROM sec_caipusers_groups WHERE login = '”.[usr_login]."’;";
sc_lookup(usr_group,$sql_usr_group);
[usr_group]={usr_group[0][1]};

Isto está a fazer com que ao ir para a aplicação login ele pede: usr_group
Como posso mudar isto?
Obrigada

Defina essa variável como variável de saída.

Deu certo Kleyber, obrigada!
Já tinha tentado fazer isso mas não estava a funcionar. Mas limpei os ficheiros temporários do Navegador e do Scriptcase e por isso já deve ter funcionado.
:wink:

Bom dia Kleyber,

Voltei aqui porque agora estou com um problema para Publicar o projecto.
Entro no Ambiente Produção e faço tudo certo. Fica conexão estabelecida e tudo. O problema é que ao tentar na app de Login ele diz que sou um Utilizador não autorizado.
Será que tem a ver com o ter definido a variável global usr_groups como de Saída?