Menu Dinamico com WEBDEV com Hfsql
PERMITE CRIAR AS OPÇOES DO MENU VIA BANCO DE DADOS E EXIBIR EM UM TREEVIEW AS OPÇOES EM NIVEIS DE MENU, MENU ITEM E SUB MENU TITEM, ASSIM FACILITANDO O ACESSO AS TELAS DO SISTEMA E SÓ EXIBINDO AS TELAS SE O USUARIO TIVER COM STATUS TRUE NAS TABELAS DE CONTROLE DE SEGURANÇA.
// Summary: <specify the procedure action>
// Syntax:
// Evento_AbrirPagina ()
//
// Parameters:
// None
// Return value:
// None
//
// Example:
// <Specify a usage example>
//
PROCEDURE Evento_AbrirPagina()
//info(TreeSelect(TREE_MENU)) //PROCESSOS CELULARES ALMOXARIFADO
PATH is string = TreeSelect(TREE_MENU)
NIVEL is int = StringCount(PATH,TAB,IgnoreCase) + 1
BUSCA is string = Upper(NoAccent(NoSpace(ExtractString(PATH,1,TAB,FromEnd))))
BUSCA = Replace(BUSCA," ","_",IgnoreCase)
//info(PATH, NIVEL, BUSCA)
SWITCH NIVEL
CASE 1
HReset(Menu)
IF HReadSeek(Menu,menu,BUSCA,hIdentical) = True THEN
PageDisplay("PAGE_"+BUSCA)
END
CASE 2
HReset(MenuItens)
IF HReadSeek(MenuItens,menu_item,BUSCA,hIdentical) = True THEN
PageDisplay("PAGE_"+BUSCA)
END
CASE 3
HReset(MenuSubItens)
IF HReadSeek(MenuSubItens,menu_sub_item,BUSCA,hIdentical) = True THEN
PageDisplay("PAGE_"+BUSCA)
END
OTHER CASE
Info("Página nao localizada")
END
//----------------------------------------------------------------------------------------------------------------------------------------------------------
// Summary: <specify the procedure action>
// Syntax:
// Evento_CriarMenu ()
//
// Parameters:
// None
// Return value:
// None
//
// Example:
// <Specify a usage example>
//
PROCEDURE Evento_CriarMenu()
TreeDeleteAll(TREE_MENU)
FOR EACH Menu //nivel 1
HReset(Usuarios_Menu) //CHAVE COMPOSTA
IF HReadSeek(Usuarios_Menu,KUnica,[GloUserId,Menu.menu_id],hIdentical) = True THEN
IF Usuarios_Menu.status = True AND Usuarios_Menu.usuario_id = GloUserId THEN
TreeAdd(TREE_MENU,Menu.menu) //cria nivel 1
FOR EACH MenuItens where MenuItens.menu_id = Menu.menu_id //nivel 2
HReset(Usuarios_MenuItens) //CHAVE COMPOSTA
IF HReadSeek(Usuarios_MenuItens,Kunica,[GloUserId,MenuItens.menu_itens_id],hIdentical) = True THEN
IF Usuarios_MenuItens.status = True AND Usuarios_MenuItens.usuario_id = GloUserId THEN
TreeAdd(TREE_MENU,Menu.menu +TAB+ MenuItens.menu_item) //cria o nivel 2
FOR EACH MenuSubItens where MenuSubItens.menu_itens_id = MenuItens.menu_itens_id //nivel 3
HReset(Usuarios_MenuSubItens) //CHAVE COMPOSTA
IF HReadSeek(Usuarios_MenuSubItens,KUnica,[GloUserId,MenuSubItens.menu_sub_item_id],hIdentical) = True THEN
IF Usuarios_MenuSubItens.status = True
TreeAdd(TREE_MENU,Menu.menu +TAB+ MenuItens.menu_item +TAB+ MenuSubItens.menu_sub_item)
END
END
//trace(MenuSubItens.menu_itens_id , MenuItens.menu_itens_id,Usuarios_MenuSubItens.menu_sub_item_id,MenuSubItens.menu_sub_item_id, Usuarios_MenuSubItens.status, Usuarios_MenuSubItens.usuario_id , GloUserId)
END
END
END
END
END
END
END
TreeExpandAll(TREE_MENU)
//-----------------------------------------------------------------------------------------------------------------------------------
// Summary: <specify the procedure action>
// Syntax:
// Evento_Login ()
//
// Parameters:
// None
// Return value:
// None
//
// Example:
// <Specify a usage example>
//
PROCEDURE Evento_Login()
IF EDT_Usuario = "" OR EDT_Senha = "" THEN
Info("Campos Obrigatorios nao preenchidos")
RETURN
ELSE
HReset(Usuarios)
IF HReadSeek(Usuarios,login,EDT_Usuario,hIdentical) = True THEN
IF Usuarios.password = EDT_Senha AND Usuarios.status = True
GloUserId = Usuarios.usuario_id
PageDisplay(PAGE_Inicial)
ELSE
Info("senha errada ou esta desativado")
END
ELSE
Info("Usuario nao encontrado")
MyPage..Plane = 2
Evento_Pergunta_Secreta()
END
END
//------------------------------------------------------------------------------------------------------------------------------
// Summary: <specify the procedure action>
// Syntax:
// Evento_Pergunta_Secreta ()
//
// Parameters:
// None
// Return value:
// None
//
// Example:
// <Specify a usage example>
//
PROCEDURE Evento_Pergunta_Secreta()
HReset(Usuarios)
IF HReadSeek(Usuarios,login,EDT_Usuario,hIdentical) = True THEN
IF Usuarios.pergunta_secreta <> ""
EDT_Pergunta_Secreta = Usuarios.pergunta_secreta
ELSE
Info("Não foi definida uma pergunta secreta")
END
ELSE
Info("Não localizado")
END
//----------------------------------------------------------------------------------------------------------------------------------------------
// Summary: <specify the procedure action>
// Syntax:
// Evento_Trocar_Senha ()
//
// Parameters:
// None
// Return value:
// None
//
// Example:
// <Specify a usage example>
//
PROCEDURE Evento_Trocar_Senha()
IF EDT_Nova_Senha = "" OR EDT_Confirma_Senha = "" THEN
Info("Campos Obrigatorios nao preenchidos")
RETURN
ELSE
HReset(Usuarios)
IF HReadSeek(Usuarios,login,EDT_Usuario,hIdentical) = True THEN
Usuarios.password = EDT_Nova_Senha
IF HModify(Usuarios) = True THEN
MyPage..Plane = 1
Info("Senha trocada")
ELSE
Info("Nao bate as informações")
END
END
END
//------------------------------------------------------------------------------------------------------------------------------------------
// Summary: <specify the procedure action>
// Syntax:
// Evento_Verifica_Resposta ()
//
// Parameters:
// None
// Return value:
// None
//
// Example:
// <Specify a usage example>
//
PROCEDURE Evento_Verifica_Resposta()
IF EDT_Pergunta_Secreta = "" OR EDT_Resposta_Secreta = "" THEN
Info("Não localizada a pergunta e resposta secreta, preencha por favor")
RETURN
ELSE
HReset(Usuarios)
IF HReadSeek(Usuarios,login,EDT_Usuario,hIdentical) = True THEN
IF Usuarios.pergunta_secreta = EDT_Pergunta_Secreta AND Usuarios.resposta_secreta = EDT_Resposta_Secreta THEN
MyPage..Plane = 3
ELSE
Info("Resposta Errada")
END
END
END
//-------------------------------------------------------------------------------------------------------------------------------
//----------------- R A D P a t t e r n ---------------
GLOBAL
GloUserId is 8-byte int = 0
HModifyStructure("*")
HCreationIfNotFound("*")
gctGloMyConnect is Connection
gctGloMyConnect..Provider = hAccessHF7
gctGloMyConnect..Access = hOReadWrite
//--------------------------------------------------------------------------------------