% '-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# ' Loja Exemplo Locaweb ' Versão: 6.5 ' Data: 12/09/06 ' Arquivo: ADM_insereAltCategoria.asp ' Versão do arquivo: 0.0 ' Data da ultima atualização: 23/10/08 ' '----------------------------------------------------------------------------- ' Licença Código Livre: http://comercio.Locaweb.com.br/gpl/gpl.txt '-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# %> <% 'Verifica se o perfil de usuário permite acesso a esta página If checa_perfil_admin_menu(""&ADMProd&"") = false Then Response.redirect "ADM_home.asp?msg=SEU PERFIL DE USUÁRIO NÃO PERMITE ACESSO A ESTA PÁGINA" Response.end End If 'Chamada de função para abertura do banco de dados Call abre_conexao(conexao) 'Lê o idioma default da loja varLang = Application("varLang") Set objFSO = Server.CreateObject("Scripting.FileSystemObject") 'Checa se o diretório CATEGORIAS existe If objFSO.FolderExists(Application("DiretorioImagensConteudo") & "\categorias") = false then 'Cria o diretório CATEGORIAS objFSO.CreateFolder(Application("DiretorioImagensConteudo") & "\categorias") End If Set objFSO = Nothing 'Captura de dados enviado por GET codigo_categoria = request.querystring("codigo_categoria") 'Captura de dados enviado por POST codigo_chave = request.form("codigo_chave") apagarestacategoria = request.form("apagarestacategoria") checkIdioma = request.form("sigla_idioma") 'Definição da mensagem de resposta conforme ação administrativa (acao_admin) 'Msg para novo registro If request.form("acao_admin") = "novo registro" Then msg_resultado = "Categoria cadastrada com sucesso. Clique aqui para continuar cadastrando categoria." actionForm = "ADM_altera_categoria.asp" 'Msg para registro alterado ElseIf request.form("acao_admin") = "alterar registro" Then msg_resultado = "Categoria alterada com sucesso." actionForm = "ADM_altera_categoria.asp" End if 'Inicio das ações conforme o valor da variável acao_admin 'Apagando categoria se acao_admin for Apagar Categoria If request.form("remover") = "Apagar Categoria" Then 'Apaga a categoria mediante o código da categoria informado Conexao.Execute "DELETE FROM Categorias WHERE codigo_categoria = " & request.querystring("codigo_categoria")&"" 'Apaga as subcategorias relacionadas a categoria informada Conexao.Execute "DELETE FROM Subcategorias WHERE codigo_categoria = " & request.querystring("codigo_categoria")&"" 'Apaga os produtos relacionados a categoria informada Conexao.Execute "DELETE FROM Produtos WHERE codigo_categoria = " & request.querystring("codigo_categoria")&"" msg_resultado = "Categoria excluida com sucesso." actionForm = "adm_lista_categoria.asp" 'Abaixo a condição valerá para acao_admin Apagar Categoria e alterar registro Else 'Caso seja um novo registro será criado um novo código da categoria. If request.form("acao_admin") = "novo registro" Then 'Cria o objeto de recordset para consulta ao banco Set RS_CategoriaNova = Server.CreateObject("ADODB.Recordset") RS_CategoriaNova.CursorLocation = 3 RS_CategoriaNova.CursorType = 0 RS_CategoriaNova.LockType = 3 'Consulta no banco o ultimo código númerico registrado para o campo codigo_categoria RS_CategoriaNova.Open "SELECT MAX(codigo_categoria) AS novo_codigo_categoria FROM Categorias" , Conexao 'Checa se existem categorias no banco de dados If IsNull(RS_CategoriaNova("novo_codigo_categoria")) Then 'Não existindo, atribui o valor inicial para o codigo_categoria, neste caso 1 novo_codigo_categoria = 1 Else 'Existindo, pega-se o valor do ultimo registro e soma 1, formando assim o novo codigo_categoria novo_codigo_categoria = RS_CategoriaNova("novo_codigo_categoria") + 1 End If RS_CategoriaNova.Close Set RS_CategoriaNova = Nothing End If 'Caso a ação seja alteração de alteração, o valor do codigo_categoria será o postado pela página anterior. If novo_codigo_categoria <> "" Then codigo_categoria = novo_codigo_categoria Else codigo_categoria = request.querystring("codigo_categoria") End If 'Define os valos para consulta ao banco a partir dos idiomas configurados 'Esta primeira condição é quando apenas um idioma está configurado If InStr(checkIdioma,",") = 0 Then 'Idiomas configurados na loja VetorIdi = varLang 'Idioma a ser consultado VetorIdioma = VetorIdi 'Código chave a ser consultado VetorCodigoChave = codigo_chave 'Contador (array). O valor é definido pelo número de idiomas configurados, neste caso 1 'VetorCod = 0 'Contador (array). O valor é definido pelo número de idiomas configurados, neste caso 1 VetorCount = 0 'Quando vários idiomas estão configurados. Else 'Idiomas configurados na loja VetorIdi = Split(checkIdioma, ",") 'Codigos chave enviados nesta consulta VetorCod = Split(codigo_chave, ",") 'Contador (array). O valor é definido pelo número de idiomas configurados, neste caso 1 VetorCount = Ubound(VetorIdi) End if For I = 0 To VetorCount 'Se VetorIdioma for vazio indica que a consulta se dará conforme o número de idiomas configurados. If VetorIdioma = "" Then 'Atribui o valor do idioma a ser consultado, conforme sua posição no array de VetorCount VetorIdioma = VetorIdi(I) End If If codigo_chave <> "" Then 'Se VetorIdioma for vazio indica que a consulta se dará conforme o número de idiomas configurados. If VetorCodigoChave = "" Then 'Atribui o valor do codigo_chave a ser consultado, conforme sua posição no array de VetorCount VetorCodigoChave = VetorCod(I) End If End if 'Cria o objeto de recordset para consulta ao banco Set RS_Categoria = Server.CreateObject("ADODB.Recordset") RS_Categoria.CursorLocation = 3 RS_Categoria.CursorType = 0 RS_Categoria.LockType = 3 'Se a se acao_admin for alterar registro If request.form("acao_admin") = "alterar registro" Then 'Se existir um codigo chave para este registro, indica que categoria está cadastrada com idioma da consulta If codigo_categoria <> "" And VetorCodigoChave <> 0 Then RS_Categoria.Open "SELECT codigo_chave, codigo_categoria, nome_categoria, descricao_categoria, sigla_idioma FROM Categorias WHERE codigo_chave = " & VetorCodigoChave & " AND sigla_idioma = '"& Trim(VetorIdioma) &"'", Conexao ApagarSubCat = Split(apagarestacategoria,",") ApagarSubCatCount = Ubound(ApagarSubCat) 'Loop para excluir subcategorias de categorias cujo o idioma foi excluido For o = 0 To ApagarSubCatCount If CDbl(RS_Categoria("codigo_chave")) = CDbl(ApagarSubCat(o)) Then Conexao.Execute "DELETE FROM Subcategorias WHERE codigo_categoria IN (" & codigo_categoria &") AND sigla_idioma= '"&Trim(VetorIdioma)&"'" End If 'Fim do loop Next 'Se não existir um codigo chave para este registro, indica que categoria não está cadastrada com idioma da consulta Else RS_Categoria.Open "SELECT codigo_chave, codigo_categoria, nome_categoria, descricao_categoria, sigla_idioma FROM Categorias WHERE sigla_idioma = '"& Trim(VetorIdioma) &"'", Conexao 'Metodo que define a ação de novo registro RS_Categoria.AddNew 'Registra o codigo de categoria passado para este novo registro RS_Categoria("codigo_categoria") = request.querystring("codigo_categoria") End If 'Se a se acao_admin for novo registro ElseIf request.form("acao_admin") = "novo registro" Then RS_Categoria.Open "SELECT Categorias.* FROM Categorias", Conexao 'Metodo que define a ação de novo registro RS_Categoria.AddNew 'Registra o novo codigo_categoria RS_Categoria("codigo_categoria") = codigo_categoria End if If InStr(request.form("codigo_chave"),",") Then VetorCodigo_chaveTemp = Split(request.form("codigo_chave"),",") VetorCodigo_chave = VetorCodigo_chaveTemp(I) Else VetorCodigo_chave = request.form("codigo_chave") End if If Not RS_Categoria.Eof Then 'Insere o número da categoria quando é um nova categoria - Cadastro RS_Categoria("codigo_categoria") = codigo_categoria End If 'Se for passado o nome da categoria para o idioma da consulta a alteração é aplicada no banco If request.form("nome_categoria|"&Trim(VetorIdioma)) <> "" Then RS_Categoria("nome_categoria") = request.form("nome_categoria|"&Trim(VetorIdioma)) RS_Categoria("descricao_categoria") = request.form("descricao_categoria|"&Trim(VetorIdioma)) RS_Categoria("sigla_idioma") = Trim(VetorIdioma) 'Metodo que define a ação de UPDATE no banco RS_Categoria.Update End If 'Torna vazio a variáveis para reaproveitá-las nesta ação VetorIdioma = "" VetorCodigoChave = "" 'Fim do loop Next 'Fim das ações conforme o valor da variável acao_admin End If 'Caso exista alguma categoria a ser excluída de idiomas específicos If request.form("apagarestacategoria") <> "" Then Conexao.Execute "DELETE FROM Categorias WHERE codigo_chave IN (" & request.form("apagarestacategoria") &")" End If Set RS_Categoria = Nothing 'Chamada da função de fechamento e destruição do objeto de conexão ao banco. Call Fecha_conexao() %>