Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

saloeric

Classe para calendário com eventos

Recommended Posts

Boa noite, andei a pesquisar na net classes para calendários, e aproveitei coisas de umas coisas de outras, inclusive uma classe desenvolvida aqui pelo hargon, segue a classe

 

ficheiro clscalendario.asp

<% 
Class calendario

public mes, ano, arrmes(12), datas, eventos, urldestino
'------------------------------------------------------'

Private Sub  Class_Initialize()
 session.lcid = 2070 'portugal
 arrmes(1) = "Janeiro" 
 arrmes(2) = "Fevereiro" 
 arrmes(3) = "Março" 
 arrmes(4) = "Abril"
 arrmes(5) = "Maio"
 arrmes(6) = "Junho"
 arrmes(7) = "Julho"
 arrmes(8) = "Agosto"
 arrmes(9) = "Setembro" 
 arrmes(10) = "Outubro"
 arrmes(11) = "Novembro" 
 arrmes(12) = "Dezembro" 
 mes = Month(Now) 
 ano = Year(Now)
 urldestino = "data.asp"
 set datas = Server.CreateObject("Scripting.Dictionary")
 set eventos = Server.CreateObject("Scripting.Dictionary")
End Sub 

Private Sub Class_Terminate() 
 set datas = nothing
 set eventos = nothing
 session.lcid = 1033 'usa(no resto da aplicação é usada esta sessão)
End Sub
'------------------------------------------------------'

Private Function diasmes() 
 Select Case mes 
  Case 1,3,5,7,8,10,12 
   diasmes = 31 
  Case 4,5,6,9,11 
   diasmes = 30 
  Case 2 
   If ano Mod 4 Then 
    diasmes = 28 
   Else 
    diasmes = 29 
   End If 
  Case Else 
   Exit Function 
 End Select 
End Function 

'dd-mm-aaaa
Private Function dataformatada(adata)
 if isdate(adata) then
  dataformatada = Right("0"&Day(adata),2) &"-"& Right("0"&Month(adata),2) &"-"& Year(adata)
 else
  dataformatada = false
 end if
End Function
'------------------------------------------------------'

Public Sub novoevento(data,evento,id)
 datas.add "data"&id,dataformatada(data)
 eventos.add "evento"&id,evento
End Sub 

Public Sub mostrar 
 Select Case request("modo") 
  Case "anterior" 
   ano = request("ano") 
   If request("mes") < 1 Then 
                mes = 12 
                ano = request("ano") - 1 
            Else 
                mes = request("mes") 
            End If 
        Case "seguinte" 
   ano = request("ano") 
            If request("mes") > 12 Then 
                mes = 1 
                ano = request("ano") + 1 
            Else 
                mes = request("mes") 
            End If 
 End Select 

    dia = Weekday(dataformatada(1&"-"&arrmes(mes)&"-"&ano))
    dias = diasmes()
 %>
    <table class="calendario" cellpadding="0">
  <thead>
       <tr>
          <th><a href="<%=Request.ServerVariables("SCRIPT_NAME")%>?modo=anterior&mes=<%=mes-1%>&ano=<%=ano%>">««</a></th> 
          <th colspan="5"><%=arrmes(mes)&" "&ano%></th> 
       <th><a href="<%=Request.ServerVariables("SCRIPT_NAME")%>?modo=seguinte&mes=<%=mes+1%>&ano=<%=ano%>">»»</a></th> 
      </tr>
  </thead>
        <tr class="diasdasemana"> 
         <td>D</td> 
        <td>S</td> 
         <td>T</td> 
         <td>Q</td> 
         <td>Q</td> 
         <td>S</td> 
         <td>S</td> 
      </tr> 
      <tr> 
        <%
   i = 1 
        For j = 1 to dia - 1
            response.write "<td></td>"
   If i > 6 Then 
                response.write "</tr><tr>"
                i = 0 
            End If 
            i = i + 1 
        Next

        For j = 1 to dias
   nevento = ""
   for ev = 1 to datas.count
    if dataformatada(j&"/"&mes&"/"&ano) = datas.item("data"&ev) then
     nevento = nevento&"<li>"&eventos.item("evento"&ev)&"</li>"
    end if
   next
   if dataformatada(j&"-"&mes&"-"&ano) = dataformatada(date) then estilo = " class=""diaatual""" else estilo = ""
   if nevento <> "" then
    jdia = "<a class=""linkevento"" rel=""tooltip"" oseventos=""<ul>"&nevento&"</ul>"" href="""&urldestino&"?data="&j&"-"&mes&"-"&ano&""">"&j&"</a>"
   else
    jdia = j
   end if
            response.write "<td"&estilo&">"&jdia&"</td>"
   If i > 6 And j <= dias - 1 Then 
                response.write "</tr><tr>"
                i = 0 
            End If 
            i = i + 1 
        Next

        If i > 1 Then 
            For m = i to 7
                response.write "<td></td>"
   Next 
        End IF
  %> 
      </tr> 
    </table> 
 <%
End Sub
End Class
%>

agora a página que vai ter o calendario, estou a usar um plugin do jquery para os tooltips dos eventos

<!--#include virtual="lib/clsCalendario.asp"-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "[url="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"]http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd[/url]">
<html xmlns="[url="http://www.w3.org/1999/xhtml"]http://www.w3.org/1999/xhtml[/url]" lang="pt" xml:lang="pt">
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<meta name="Language" content="pt" />
<meta http-equiv="imagetoolbar" content="no" />
<title>Calendário</title>
<link rel="stylesheet" type="text/css" href="/css/calendario.css" />
<link rel="stylesheet" type="text/css" href="/css/tipsy.css" />
<script type="text/javascript" src="/js/jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="/js/jquery.tipsy.js"></script>
<script type="text/javascript" language="javascript">
$(function(){
 $('a[rel=tooltip]').tipsy({html: true, title: 'oseventos' });
});
</script>
</head>
<body>
<%
Set cal = New calendario
cal.mes = month(now())
cal.ano = year(now())
cal.novoevento "5-03-2011","Evento 1",1
cal.novoevento "8-03-2011","Evento 2",2
cal.novoevento "8-03-2011","Evento 3",3
cal.novoevento "9-03-2011","Evento 4",4
cal.novoevento "27-02-2011","Evento 5",5
cal.novoevento "1-04-2011","Evento 6",6
'cal.urldestino = "accao.asp"
cal.mostrar
Set cal = Nothing 
%>
</body>
</html>

os css

 

calendario.css

.calendario{
width:100%;
border-top:1px solid #C1DAD7;
border-right:1px solid #C1DAD7;
margin:0;
padding: 0;
border-collapse:collapse;
}
.calendario thead th{
background:#C9E7E9;
text-align:center;
font:bold 1.2em/2em "Century Gothic","Trebuchet MS",Arial,Helvetica,sans-serif;
color:#66a3d3;
border-bottom: 1px solid #C1DAD7;
border-left:1px solid #C1DAD7;
padding: 5px 0;
}
.calendario thead th a{color:#66a3d3;}
.calendario tr.diasdasemana td{
font-weight: bold;
background:#f4f9fe;
color:#66a3d3;
height: auto;
width: 14%;
padding: 5px 0;
}   
.calendario td{
color:#678197;
border-bottom:1px solid #C1DAD7;
border-left:1px solid #C1DAD7;
text-align:center;
height: 40px;
}  
.calendario td.diaatual{background: #FFF1A0;}
.calendario td a.linkevento{
display: block;
height: 40px;
line-height: 40px;
color:#fff;
background: #DB4B68;
font-weight: bold;
text-decoration: none;
}

e o tipsy.css que faz parte do plugin mas fiz umas alterações

.tipsy { padding: 5px; font-size: 14px; opacity: 0.8; filter: alpha(opacity=80); background-repeat: no-repeat;  background-image: url(../images/tipsy.gif); }
.tipsy ul{padding: 0 0 0 15px;margin: 0;}
.tipsy ul li{font-family: Arial, Helvetica, sans-serif;padding: 4px;}
.tipsy-inner { padding: 5px 8px 4px 8px; background-color: black; color: white; max-width: 200px; text-align: center; }
.tipsy-inner { -moz-border-radius:3px; -webkit-border-radius:3px; }
.tipsy-north { background-position: top center; }
.tipsy-south { background-position: bottom center; }
.tipsy-east { background-position: right center; }
.tipsy-west { background-position: left center; }

para fazer download do plugin do jquery clique aqui

Compartilhar este post


Link para o post
Compartilhar em outros sites

você poderia mudar o Session.LCID de 2070 Portugal, para

session.lcid = 1046  'Português (Brasileiro)

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok, então daí esta correto.....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Viva, alguem pode por aqui o plugin, o site esta em remodelação nao consigo fazer o download.

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.