Lista Catalogati Per Mese
release 1.0.1 del 26-06-2007
Autore: donachy
==================================================================

A cosa serve?
==================================================================
Modifica la lista "Catalogati per mese" inserendo una combobox.
Gestisce l'ordinamento crescente o decrescente e visualizza i soli
 mesi contenenti articoli
Offre la possibilit di visualizzare i mesi nel formato numerico
"anno - mm" oppure "mese - anno" con il nome del mese per esteso


Cosa  stato modificato rispetto a dBlog originale
==================================================================
la sola pagina dblog/inc_modulo_articoli.asp

Prima di procedere si consiglia di fare un backup dlla pagina
per poterla rispristinare in caso di errori di cui non mi ritengo responsabile

Se non sono state apportate modifiche pu essere sostituita
direttamente

Se la pagina  stata modificata occorre sostituire il codice
di seguito riportato


<br /><%=Testo_Catalogati_Mese%><br />
<%
	'Creo i link allo storico per mese
	Do Until StrToData(Data_Prima_Pubblicazione) > Date()
		Response.Write "<a href=""storico.asp?m="& Data_Prima_Pubblicazione &""">" & UCase(Mid(MonthName(Mid(Data_Prima_Pubblicazione, 5, 2), False), 1, 1)) & Mid(MonthName(Mid(Data_Prima_Pubblicazione, 5, 2), False), 2, Len(MonthName(Mid(Data_Prima_Pubblicazione, 5, 2), False)) - 1) & " " & Mid(Data_Prima_Pubblicazione, 1, 4) & "</a><br />"
		Data_Prima_Pubblicazione = DataToStr(DateAdd("m", 1, StrToData(Data_Prima_Pubblicazione)))
	Loop

'Se la classifica articoli  abilitata eseguo il codice relativo (n.39)



con questo:

			<br /><%=Testo_Catalogati_Mese%><br />
<%
	'inizio mod catalogati x mese
	'seleziono solo i mesi in cui ci sono articoli	
	Dim SQLMesiArticoli, RSMesiArticoli,AnnoMese,dataAppo,currentSelection,tot, ordinamento,formato,elemLista
	Dim ArrayMesi()
	'ordinamento e formato indicano la tipologia di visualizzazione della lista
	'ordinamento - desc=decrescente,ASC=crescente
	'formato - num=numerico, lett=il mese verr visualizzato in lettere
	ordinamento="DESC"
	'ordinamento="ASC"
	'formato="num"
	formato="lett"
	tot=0
	SQLMesiArticoli = " SELECT Count(Articoli.ID) AS TotaleArticoli, Articoli.Data  FROM Articoli WHERE Articoli.Data & Articoli.Ora <= '"& DataToStr(Date()) & OraToStr(Time()) &"' AND Articoli.Bozza = False GROUP BY Articoli.Data ORDER BY Articoli.Data "&ordinamento
	Set RSMesiArticoli = Server.CreateObject("ADODB.Recordset")
	RSMesiArticoli.Open SQLMesiArticoli, Conn, 1, 3

	If NOT RSMesiArticoli.EOF Then
		Do While NOT RSMesiArticoli.EOF
			AnnoMese=LEFT(RSMesiArticoli("Data"),6)
			if dataAppo<>AnnoMese then
				ReDim Preserve ArrayMesi(tot)
				ArrayMesi(tot)=AnnoMese
				tot=tot+1
			end if	
			dataAppo=AnnoMese'serve per non ripetere mesi in cui ci sono pi articoli
			RSMesiArticoli.MoveNext
		Loop
	End If

	RSMesiArticoli.Close
	Set RSMesiArticoli = Nothing	
	response.Write"<form ID=""StoricoMese"" action=""#"" >"&vbcrlf
	response.Write"<select id= ""StoricoMeseScelta"" name=""CmbArt"" size=""1"" onChange=""javascript:ComboStoricoSubmit()"">"&vbcrlf
	'attiva la riga successiva se vuoi che il primo valora della lista sia ---
	'response.Write "<option value=""" & "storico.asp"""&">---</option>"&vbcrlf
	currentSelection=LEFT(request.QueryString("m"),6)
	'scrivo la lista dei mesi	
	for i=0 to Ubound(ArrayMesi)
		if formato="num" then
			elemLista=LEFT(ArrayMesi(i),4)&" - "&MID(ArrayMesi(i),5,2)
		else
			elemLista=MonthName(MID(ArrayMesi(i),5,2))&" "&LEFT(ArrayMesi(i),4)
		end if
		response.Write "<option value=""" & "storico.asp?m=" &ArrayMesi(i)
		if currentSelection=ArrayMesi(i) then
			response.write """ selected>"&elemLista&"&nbsp;&nbsp;</option>"&vbcrlf
		else
			response.write  """>"&elemLista&"&nbsp;&nbsp;</option>"&vbcrlf
		end if
		
	next
	response.Write"</select></form>"&vbcrlf
'fine mod catalogati x mese

	'Se la classifica articoli  abilitata eseguo il codice relativo


Inoltre occorre aggiungere il seguente codice in fondo alla pagina, alla fine di tutto

<script language="JavaScript" type="text/JavaScript">
function ComboStoricoSubmit(){
 var StoricoScelta=document.getElementById("StoricoMeseScelta");
 document.location.href=StoricoScelta.value;
}
</script>


COSA E' STATO MODIFICATO RISPETTO ALLA V. 1.0.0
==================================================================
E' stato aggiunto un campo iniziale con valore --- nella lista, per 
risolvere il problema relativo al primo elemento della lista che 
essendo gi selezionato non funzionava correttamente

CONFIGURAZIONE
==================================================================
E' possibile configurare 4 modalit di visualizzazione configurando
i due parametri ordinamento e formato vedi immagine allegata
(config predefinita: 1)

1)ordinamento="DESC", formato="lett", es:maggio 2007,aprile 2007
2)ordinamento="ASC", formato="lett", es:aprile2007,maggio 2007
3)ordinamento="DESC", formato="num", es:2007-05, 2007-04
4)ordinamento="ASC", formato="lett", es:2007-04, 2007-05


Commentando la riga 72 del file .asp si imposta come valore
inziale della lista il primo mese disponibile al posto di ---


GRAZIE A
==================================================================
Wodka40 per l'idea iniziale della combobox e per il javascript

LICENZA
==================================================================
Fai di me ci che vuoi.