[RESOLVIDO] - Ocultar Item do menu

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?

Abra um novo tópico na categoria correta com a questão.

Ok. Feito.

Opção para desabilitar e reabilitar itens do menu sem usar o módulo de segurança do SC.

Em onApplicationInit:

if ([glo_esconde_item_menu] == ‘S’)
{
//Desabilita itens do menu
sc_menu_disable(item_10, item_11, item_14);
}
else
{
//Reabilita itens do menu
sc_reset_menu_disable();
}

if ([glo_apaga_item_menu] == ‘S’)
{
//Apaga itens do menu
sc_menu_delete(item_10, item_11, item_14);
}
else
{
//Restaura itens deletados no menu
sc_reset_menu_delete();
}

Item prejudicado devido ao tempo decorrido do tópico.

O tópico é seu ou vc é apenas moderador?

Nem seu para eu responder como quiser.