Script per date di compleanno

« Older   Newer »
  Share  
view post Posted on 22/4/2010, 15:59

Senior Member

Group:
Member
Posts:
27,291

Status:


Questo script va inserito in gestione html. Dopo aver aggiunto le date di nascita degli utenti, queste verranno ricordate con precisione in 3 modi:

Oggi è il compleanno di NOME UTENTE!! AUGURI!

Domani NOME UTENTE compirà gli anni!

Il prossimo compleanno sarà di NOME UTENTE tra 7 giorni.

Le date vanno inserite manualmente dove c'è scritto p[0]= new birthday("UTENTE1",31,5) (ovviamente dove sta UTENTE1 va il nome dell'utente e dove c'è 31,5 va la data del suo compleanno).
Una volta compilata la lista basta mettarla in "inserisci codice html" in amministrazione.
Questa parte del codice , p[0]= , va modificata in modo "crescente" ovvero p[0]= , p[1]= , p[2]= ecc
Nell'esempio sono inseriti 3 utenti ma voi potete aggiungere tutti quelli che volete copiando le righe. Eventuali compleanni "doppi" saranno mostrati senza problemi. Attenzione a non scrivere virgolette per il nome dell'utente o a togliere le due che già ci sono e le virgole.
("Nome"uno",1,2) <- sbagliato
("Nomeuno,1,2) <- sbagliato mancano le vigolette di destra
("Nomeuno",12) <- sbagliato manca la virgola tra un dato e l'altro
("Nomeuno",1,2) <- corretto

Potete modificare a piacere la variabile preavviso, di default è imposta per avvertire di una ricorrenza con una settimana d'anticipo. Se non ve ne sono, non apparirà alcuna scritta sul forum.


SPOILER (click to view)
HTML
<script type="text/javascript">function person(nick,date,month){this.nick=nick;this.date=date;this.month=month-1}p=new Array();

preavviso=7
colore="#3D8AD8"
p[0]=new person("Utente A",12,7)
p[1]=new person("Utente B",15,7)
p[2]=new person("Utente C",15,7)

var now=new Date();today=new Date(0,now.getMonth(),now.getDate());function delta(sdate){return Math.round((sdate.getTime()-today.getTime())/(24*60*60*1000))}function birthday(array){function tmpa(n,z){this.n=n;this.z=z}tmpx=new Array();function tmpb(n){this.n=n}tmp1=new Array();tmp0=new Array();aa=bb=cc=-1;for(var i in array){birthday=new Date(0,array[i].month,array[i].date);if(delta(birthday)<0)birthday=new Date(1,array[i].month,array[i].date);z=delta(birthday);if(z==0){cc++;tmp0[cc]=new tmpb(array[i].nick)}else if(z<=preavviso){if(z==1){bb++;tmp1[bb]=new tmpb(array[i].nick)}else{aa++;tmpx[aa]=new tmpa(array[i].nick,z)}}}document.write("<span style='color:"+colore+"'>");s="";

if(cc>=0){s=" - ";document.write("<b>Oggi è il compleanno di ");
for(x=0;x<=cc;x++){document.write(tmp0[x].n);if(x<cc-1)document.write(", ");else if(x<cc)document.write(" e ")}document.write(" AUGURI!<\/b>")}

if(bb>=0){if(bb>0)document.write(s+"Domani compiranno gli anni ");else document.write(s+"Domani compirà gli anni ");
for(x=0;x<=bb;x++){document.write("<b>"+tmp1[x].n+"<\/b>");if(x<bb-1)document.write(", ");else if(x<bb)document.write(" e ")}
s=" - "}

if(aa
>
=0){tmpy=new Array();for (i=0;i<aa-1;i++){min=i;for(j=i+1;j<aa;j++)if(tmpx[j].z<tmpx[min].z)min=j;if(i!=min){tmpy[0]=new tmpa(tmpx[i].n,tmpx[i].z);tmpx[i]=tmpx[min];tmpx[min]=tmpy[0]}}

if(aa
>
0)document.write(s+"I prossimi compleanni sono di ");else document.write(s+"Il prossimo compleanno è di ");
for(x=0;x<=aa;x++){document.write("
<b>"+tmpx[x].n+"<\/b>");on=0;if(x+1<=aa){if(tmpx[x].z!=tmpx[x+1].z)on=1}else on=1;if(on)document.write(" tra "+tmpx[x].z+" giorni");if(x<aa-1)document.write(", ");else if(x<aa)document.write(" e ")}}document.write("<\/span>")}

birthday(p)</script>
 
Web  Top
0 replies since 22/4/2010, 15:59   20 views
  Share