Jump to content


Photo

Template Em Asp V1.2stable


  • Faça o login para participar
4 replies to this topic

#1 lbarbosa

lbarbosa

    Novato no fórum

  • Usuários
  • 5 posts
  • Sexo:Não informado

Posted 10/04/2004, 00:02

:P Olá Amigos..
vim dizer que demorei 3 dias para pensar em como fazer esse algoritmo hehehe...
mas cabei de realizar a versão 1.2 Stable já em uso agora.. do nosso sistema que separa o ASP do HTML

ATENÇÃO: Antes de executar o código crie uma pasta no caminho do seu IIS
chamado exec
exemplo: c:\inetpub\exec
Feito isso vc terá que dá permissão no IIS de executar e gravar script nessa pasta
Pronto agora é só rodar e ver ;]

* class_template.asp
<%
'Classe de Template v1.2 Stable
'
' Programador: Leandro da S. B.
' E-mail: lbarbosa@grupo5.com.br
' Empresa: G5 Corporation
'
' Exemplo no site: http://www.grupo5.co...sa/template.zip
'
Class Template

Private CorpoTmp, RegVars

Public Sub Registrar(RegNome)
RegVars = split(RegNome,",")
End Sub

Private Function ATaxe(Conteudo, Variaveis)
Dim Tmp, Itens
If (Not isNull(Variaveis)) then
For Each Itens in Variaveis
Tmp = Replace(Conteudo,"<#"+Itens+">",Session(Itens))
Conteudo = Tmp
Session.Contents.Remove(Itens)
Next
ATaxe = Conteudo
End If
End Function

Public Sub Parse()
Dim Swap
If (Not IsNull(RegVars)) then
Swap = ATaxe(CorpoTmp,RegVars)
CorpoTmp = Swap
Else
Response.write("<pre>Registre uma variável antes de utilizar o Parse</pre>")
End If
End Sub

Public sub ParseLoop(Nome,Variaveis)
Dim Fim, Topo, Meio, Tmp, Indices, Sessoes, Vet()
Dim ContA, ContB, A, B, Sessao, Valor, Out, Tswap
Partes = split(CorpoTmp, "<#loop "+Nome+">")
Topo = Partes(0)
Meio = Partes(1)
Fim = Partes(2)
Tmp = split(Variaveis,",")
ContA = 1
ContB = 1
Redim Vet(ubound(tmp)+1,ubound(session(tmp(0)))+2)
For each Sessoes in Tmp
Vet(ContA,1) = Sessoes
ContB = 2
For each Indices in session(Sessoes)
If Indices <> "" then
Vet(ContA,ContB) = Indices
ContB = ContB + 1
End If
Next
ContA = ContA + 1
Next
ContA = ContA - 1
ContB = ContB - 1
Out = ""
For Y=2 to ContB
Swap = Meio
For F = 1 to ContA
Sessao = Vet(F,1)
Valor = Vet(F,Y)
Tswap = Replace(Swap,"<#"+Sessao+">",Valor)
Swap = Tswap
Next
Out = Out + Tswap
Next
CorpoTmp = (Topo + Out + Fim)
End Sub

Public sub ParseIf(Nome,Flag)
Dim Partes, Topo, Tmp, Rodape
Partes = split(CorpoTmp, "<#if "+Nome+">")
Topo = Partes(0)
Tmp = Partes(1)
Rodape = Partes(2)
If (Flag = true) then
CorpoTmp = (Topo + Tmp + Rodape)
Else
CorpoTmp = (Topo + Rodape)
End If
End Sub

Public Sub Print()
Exec(CorpoTmp)
End Sub

Public Function LerArquivo(Nome)
Dim FSO, TS, Temp
Const Leitura = 1
Set FSO = CreateObject("Scripting.FileSystemObject")
If (FSO.FileExists(Nome)) then
Set TS = FSO.OpenTexTFile(Nome, Leitura)
Temp = TS.ReadAll
TS.Close()
LerArquivo = Temp
Else
Response.write("<pre>O Caminho do arquivo "+Nome+" está incorreto!")
End If
End Function

Public Sub Arquivo(Nome)
CorpoTmp = LerArquivo(Nome)
End Sub

Public Sub Exec(strExe)
Dim FSO, TS, Temp
Const Gravacao = 1
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TS = FSO.CreateTexTFile("c:\inetpub\exec\tmp.asp", Gravacao)
TS.Write(strExe)
TS.Close
Server.Execute("\exec\tmp.asp")
End Sub

End Class
%>


* default.asp
<!-- #include file="class_template.asp" -->
<%
Dim Titulo, Vet(3)

session("Titulo") = "Testando Template"


Vet(1) = "Ótimo"
Vet(2) = "Bom"
Vet(3) = "Demais"
session("Campo1") = Vet

Vet(1) = "PHP"
Vet(2) = "ASP"
Vet(3) = "ASP.NeT"
session("Campo2") = Vet

Vet(1) = "leo_bs@hotmail.com"
Vet(2) = "lbarbosa@grupo5.com.br"
Vet(3) = "whohoox@hotmail.com"
session("Campo3") = Vet

Set Pagina = new Template
Pagina.Arquivo(Server.MapPath("test.html"))

session("modulo") = Pagina.LerArquivo(Server.MapPath("test1.asp"))

Pagina.Registrar("Titulo,modulo")
Pagina.ParseLoop "Vetor","Campo1,Campo2,Campo3"
Pagina.ParseIf "SeVerd",true
Pagina.ParseIf "SeFals",false
Pagina.Parse

Pagina.Print
%>


* test1.asp
<%
Response.write("Outro Módulo Aquí em ASP ou HTML ;]")
%>


* test.html
<Html>
<head>
<title><#Titulo></title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
Eu Digo que é
<#if SeVerd>Verdadeiro<#if SeVerd>
<#if SeFals>Falso<#if SeFals>

<table align="center" border="1">
<#loop Vetor>
<tr>
<td>
<h1>Campo1</h1>
</td>
<td>
<h1><#Campo1></h1>
</td>
<td>
<h2>Campo2</h2>
</td>
<td>
<h2><#Campo2></h2>
</td>
<td>
<h3>Campo3</h3>
</td>
<td>
<h3><#Campo3></h3>
</td>
</tr>
<#loop Vetor>
</table>
<marquee><#modulo></marquee>
</body>
</html>

PS.: Bom agora nossa etapa é:
* Arrumar um jeito de não usar variável de sessão pois isso torna lento a performace do programa.
* Outro detalhe agora.. eu acho que afeta a segurança.. teremos que ver isso com alguém q fuça falhas... pois eu fiz uma injeção de código ASP via Server.execute
gravando o nome do file em temporário... teríamos que ver se existe outro meio de corrigir isso pois eu tive que adotar essa metodologia.. pois não conseguia fazer um link com outra página em ASP num mesmo código.


Ufa.. essa foi complicado mas.. fiz.. :P a versão anteriores continham bugs e algumas coisas não funcionavam como queriamos era o caso do <#loop> agora vc pode colocar a saída do seu SQL em vetor jogar ele em sessão e depois apontar ele no template... isso torna nosso projeto mais organizado.. além tbm da vantagem de, se vc quer fazer um projeto e que seu cliente não veja o código usamos um cold para deixar encriptado o ASP e o html separado.. para assim o cliente quiser mudar o visual na mão só mexer no html.. porém no asp ele nem vai ter acesso... ;]

Bom.. agora estou aberto a discussão sobre o código..
qualquer bug relatar para meu email ou aquí no forum lbarbosa@grupo5.com.br

Fui......
' nome: Leandro da Silveira Barbosa
' profissão: G5 // Internet (desenvolvedor web)

#2 Tarkan

Tarkan

    Powered by Linux - Que inglês! ;)

  • Ex-Admins
  • 651 posts
  • Sexo:Masculino
  • Localidade:Copacabana - RJ

Posted 10/04/2004, 00:18

hehehehe!

Grande Leandro!

Ficou perfeito, cara...
Mudei o design aqui, ficou ótimo o sistema!

E carrega rapidinho assim...

Estou executando testes, no momento...
Mas vou dar uma olhada e tentar ajudar no que for possível!

Qualquer alteração, posta aí!

Abraços!

:D
' nome: gustavo veiga
' profissão: ALOG Data Centers do Brasil (analista de sistemas)
' publicidade: ALOG Data Centers do Brasil

#3 x-webmaster

x-webmaster

    Mestre

  • Usuários
  • 638 posts
  • Sexo:Não informado
  • Localidade:SP SP

Posted 10/04/2004, 00:43

num entendi isso ai serve pra fazer um asp no html? coloca asp em paginas .html??? eh isso?

#4 _UsP_

_UsP_

    Normal

  • Usuários
  • 108 posts
  • Sexo:Não informado

Posted 10/04/2004, 10:13

Parabens cara....
Boa iniciativa :)
Vou testar e ver se acho bugs pra te dizer ;)
T+

#5 x-webmaster

x-webmaster

    Mestre

  • Usuários
  • 638 posts
  • Sexo:Não informado
  • Localidade:SP SP

Posted 12/04/2004, 00:50

po.. q q eh isso ai!?!?!




2 user(s) are reading this topic

0 membro(s), 2 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq