Uiyngk?

vrijdag 10 maart 2006 in Sonstiges. Permanente link | 2 reacties

Er zijn zo van die momenten dat ik bekijk wat ik een maand of twee geleden geschreven heb en dat ik mij afvraag what the drat was I thinking:

function getCalendar(thisDate,beginDay,stopDay) 
  dim ret
  dim startday, endday, prv, nxt, totalTD, dayTmp, calTmp
  
  ret=""
  if (thisDate="") then 
    thisDate=now()
  end if
  
  daysInMonth=day(dateadd("d",-1,dateadd("m",1,dateserial(year(thisdate),month(thisdate),1))))
  startday=Weekday(dateserial(year(thisdate),month(thisdate),1),vbMonday)
  endday=Weekday(dateserial(year(thisdate),month(thisdate),daysInMonth),vbMonday)
  totalTD=daysInMonth+(startday-1)+(7-endday)
    
  prv=DateAdd("m",-1,thisDate)
  nxt=DateAdd("m",1,thisDate)
  
  ret=ret&"<div class=""colbox1""><table id=""calendar"" cellspacing=""0"" cellpadding=""0"" summary="""&pageCalendarSummary&""">"
  ret=ret&"<caption class=""nav""><a href=""events/"&year(prv)&"/"&month(prv)&""" title="""&calendarPrevMonth&""">««</a> "
  ret=ret&"<a href=""events/"&year(thisDate)&"/"&month(thisDate)&""" title="""&MonthName(Month(thisDate))&" "&year(thisDate)&""">"
  ret=ret&MonthName(Month(thisDate))&" "&year(thisDate)
  ret=ret&"</a> <a href=""events/"&year(nxt)&"/"&month(nxt)&""" title="""&calendarNextMonth&""">»»</a></caption>"
  ret=ret&"<tr>"
  for f=1 to 7
    dayname=WeekdayName(f,false,vbMonday)
    ret=ret&"<th scope=""col"" abbr=""&dayname&"" title=""&dayname&"">"&ucase(left(dayname,1))&"</th>"
  next
  ret=ret&"</tr>"
  
  
  qry="select datefrom, case when dateuntil is null then datefrom else dateuntil end dateuntil from vwNewsAll where event=1 and "
  qry=qry&"((month(datefrom)="&month(thisDate)&" or month(dateuntil)="&month(thisDate)&") or "
  qry=qry&"(month(datefrom)< ="&month(thisDate)&" and month(dateuntil)>="&month(thisDate)&")) order by datefrom"
  rs.Open qry, cn
  
  dim eventDays(33)
    
  while (not(rs.EOF))
    'ret=ret&rs.Fields("datefrom")&"--"&rs.Fields("dateuntil")&"<br />"
    'ret=ret&month(rs.Fields("datefrom"))&" "
    
    tmpStartDay=rs.Fields("datefrom")
    tmpEndDay=rs.Fields("dateuntil")
    if (tmpStartDay<dateserial (year(thisDate), month(thisDate), 1)) then
      tmpStartDay=1
    else
      tmpStartDay=day(tmpStartDay)
    end if
    if (tmpEndDay>DateSerial(year(thisDate), month(thisDate), daysInMonth)) then
      tmpEndDay=daysInMonth
    else
      tmpEndDay=day(tmpEndDay)
    end if
    for q=tmpStartDay to tmpEndDay
      eventDays(q)=1
    next 
    
    rs.MoveNext
  wend

  rs.Close
  
  dayTmp=0
  for f=1 to totalTD
    calTmp=f-startday+1
    if (dayTmp=0) then
      ret=ret&"<tr>"
    end if
    if (DateSerial(year(thisDate), month(thisDate), calTmp)=dateserial(year(now()),month(now()),day(now()))) then
      ret=ret&"<td class=""today"">"
    elseif (calTmp< =stopDay and calTmp>=beginDay) then
      ret=ret&"</td><td class=""eventday"">"
    else
      ret=ret&"</td><td>"
    end if
    if ((f<startday ) or (f>(daysInMonth+startday-1))) then
      ret=ret&" "
    else
      if (eventDays(calTmp)=1) then
        ret=ret&"<a href=""events/"&year(thisDate)&"/"&month(thisDate)&"/"&calTmp&""">"&calTmp&"</a>"
      else
        ret=ret&calTmp
      end if
    end if
    ret=ret&"</startday></td>"
    if (dayTmp=6) then
      ret=ret&"</tr>"
    end if
    if (dayTmp=6) then
      dayTmp=0
    else
      dayTmp=dayTmp+1
    end if
  next
  
  ret=ret&"</dateserial></table>"
  ret=ret&"<ul class=""callinks"">"
  ret=ret&"<li><a href=""events/"">Current/upcoming</a></li>"
  ret=ret&"<li><a href=""events/thisweek/"">This week</a></li>"
  ret=ret&"<li><a href=""events/nextweek/"">Next week</a></li>"
  ret=ret&"<li><a href=""events/"&year(now())&"/"&month(now())&""">This month</a></li>"
  ret=ret&"</ul></div>"
  getCalendar=ret

end function

Nope: geen flauw gedacht. Your guess is as good as mine.

Geschreven al luisterend naar: Arbeid Adelt! – Des duivels oorkussen – Nergens heen

Open Source Event Calendar

dinsdag 15 februari 2005 in (geen categorie). Permanente link | 3 reacties

Zegt Luc over mijn hack-slash-hopla-snel-klaar evenementending voor mijn werk::

Ziet er zeer keurig uit. Jammer dat het geen open source mag zijn ;-)

Geen flauw idee hoe hij erbij komt dat het geen open source zou mogen zijn. Zoals ik al zei is het allemaal zeer quick en zeer dirty, maar als ik er iemand een plezier mee kan doen door het allemaal wat uit te leggen: no problem whatsoever.

Het ding zoals het nu werkt bestaat uit drie ingrediënten: een database, een beheertooltje, en een paar dynamische webpagina’s. In volgorde:

Database

Ik heb het op dit ogenblik in SQL Server staan, gewoon omdat de pagina door teveel mensen tegelijk bekeken wordt om in Access te staan, maar het zou uiteraard ook in mySQL of iets dergelijks kunnen zitten.

Ruim één tabel, tblEvents met de volgende velden:

  • event_id: uniek id (autonumber, int not null identity, whatever)
  • event_name: naam van het event (text, nvarchar 255, zoiets)
  • event_place: plaats waar het event gebeurt (ook text of nvarchar 255)
  • event_description: omschrijving (memo, ntext, in ieder geval lang genoeg)
  • en dan een reeks datumvelden (date/time, smalldatetime of zo):
    • event_startdate: begindatum van het event
    • event_enddate: einddatum van het event
    • event_starttime: beginuur van het event
    • event_endtime: einduur van het event

Daarnaast, omdat er op mijn werk twee campussen zijn, heb ik er volgende twee booleaanse velden (yes/no, bit, …) bijgezet, waarmee ik kan aanduiden of het een evenement is dat op de campus in Brugge dan wel die in Natolin (Warschau) gebeurt of die campus aanbelangt:

  • event_brugge
  • event_natolin

Beheertooltje

Het is een ongelooflijk simpel tabelletje, dus echt nodig is het niet om daar zwaar veel spel rond te maken, maar ik heb er maar een simpel beheerformuliertje in Access voor gemaakt: in een nieuwe database file > get external data > link tables, en daar die ene tblEvents selecteren in een odbc data source.

En dan een formpje gemaakt, rechttoe-rechtaan.

Dynamische webpagina’s

Wat er al van intranet bestond, was geschreven in ASP, met VBScript. Niet meteen de omgeving die ik zelf zou kiezen mocht ik zelf kunnen kiezen, en eigenlijk ook niet een programmeertaal waar ik al ooit mee gewerkt heb, maar bon, heb je één programmeertaal gezien je hebt ze allemaal gezien.

De “toepassing”, als het die naam waardig is, bestaat uit drie pagina’s: een kalenderpagina die maand- en jaarkalenders maakt, een event-pagina die één of meer evenementen toont, en een homepagina met samenvattingen. En een vierde minipagina die een jaarkalender toont.

Download events.zip. Enjoy. For what it’s worth.

En o ja:
Creative Commons License
This work is licensed under a Creative Commons License.

Vriendjes

Zoek

<insert standard disclaimer>

Alles wat hier staat is mijn eigen opinie. Het wordt niet nagelezen of goedgekeurd door mijn werkgever voor het on-line komt, en ik bied geen enkele garantie voor kwaliteit of correctheid.

Mijn werkgever is het niet noodzakelijk eens met wat ik schrijf, en het spreekt vanzelf dat hij dan ook op geen enkele wijze aansprakelijk kan zijn voor wat ik hier publiceer.

Ter info

Eén van mijn e-mailadressen is michel [at] zog punt org. Normaal gezien antwoord ik daar, buiten de kantooruren, onmiddellijk op.

Valideert, in principe: css & xhtml.
Gemaakt met WordPress.
Syndicatie: Entries (RSS) en commentaar (RSS).



ISSN 1780-1338