<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:gml="http://www.opengis.net/gml"
>

<channel>
	<title>diploD &#187; Ajax e Javascript</title>
	<atom:link href="http://www.diplod.it/category/webdesigner/ajax-e-javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.diplod.it</link>
	<description>by Davide Del Monte</description>
	<lastBuildDate>Wed, 14 Dec 2011 08:43:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Better Life Index: javascript e statistiche sulle nazioni dell&#8217;OCSE</title>
		<link>http://www.diplod.it/2011/10/19/better-life-index-javascript-e-statistiche-sulle-nazioni-dellocse/</link>
		<comments>http://www.diplod.it/2011/10/19/better-life-index-javascript-e-statistiche-sulle-nazioni-dellocse/#comments</comments>
		<pubDate>Wed, 19 Oct 2011 22:26:59 +0000</pubDate>
		<dc:creator>Davide</dc:creator>
				<category><![CDATA[Ajax e Javascript]]></category>
		<category><![CDATA[Politica]]></category>
		<category><![CDATA[better life index]]></category>
		<category><![CDATA[indice]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[ocse]]></category>
		<category><![CDATA[oecd]]></category>
		<category><![CDATA[statistiche]]></category>

		<guid isPermaLink="false">http://www.diplod.it/?p=1273</guid>
		<description><![CDATA[Condividi il tuo Better Life Index, per scoprire qual è il Paese in cui preferisci vivere.. o semplicemente per confrontare il benessere nei Paesi OCSE.]]></description>
			<content:encoded><![CDATA[<p><iframe src="http://www.oecdbetterlifeindex.org/embed/?weight=23355524314&#038;display=alpha&#038;include=ITA" width="540" height="420" frameborder="0"></iframe></p>
<p>In attesa di tempi migliori per poter tornare a scrivere su queste pagine con più intensità (mi sono segnato davvero un sacco di appunti..), segnalo questo incantevole grafico fatto con sapienza. Si tratta del <strong><a title="better life index" href="http://www.oecdbetterlifeindex.org/#/11111111111" target="_blank">Better Life Index</a></strong>. Descrive l&#8217;indice di desiderabilità di una nazione in base ai propri valori, tenendo conto di una serie di indicatori sociali. Ecco il video di presentazione dell&#8217;iniziativa.</p>
<p><iframe width="560" height="315" src="http://www.youtube.com/embed/n2Zqj6CzDXs" frameborder="0" allowfullscreen></iframe></p>
<p><span id="more-1273"></span></p>
<p>Tutte le informazioni sull&#8217;iniziativa sono disponibili a <a href="http://www.oecdbetterlifeindex.org/about/better-life-initiative/" target="_blank">questa pagina</a>; per farla breve: vengono confrontati i <strong>34 Paesi facenti parte dell&#8217;<a title="OCSE" href="http://it.wikipedia.org/wiki/Organizzazione_per_la_Cooperazione_e_lo_Sviluppo_Economico" target="_blank">OCSE</a></strong>, l&#8217;Organizzazione per la Cooperazione lo Sviluppo Economico. Non è soltanto un mero gioco di <strong>javascript</strong>, da questo sito si possono imparare svariate cose, cliccando sul &#8220;fiore&#8221; della nazione è infatti possibile leggere un report sulle performance in generale e sulle politiche messe in atto nei singoli aspetti del Better Life Index.</p>
<p>Si può <strong>creare il proprio Better Life Index</strong> e condividerlo come ho fatto sopra, sia su un blog che via Facebook o Twitter. <strong>Perchè provare e condividere?</strong> Ogni volta che si crea un indice, entrerà in una banca dati accessibile al pubblico. Nel corso del tempo, questo aiuterà l&#8217;OCSE a costruire un quadro di quello che i cittadini di tutto il mondo considerano come forme di benessere. Buona condivisione..</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2011/10/19/better-life-index-javascript-e-statistiche-sulle-nazioni-dellocse/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML5 e jQuery: finalmente un player audio video coi fiocchi</title>
		<link>http://www.diplod.it/2011/04/08/html5-e-jquery-finalmente-un-player-audio-video-coi-fiocchi/</link>
		<comments>http://www.diplod.it/2011/04/08/html5-e-jquery-finalmente-un-player-audio-video-coi-fiocchi/#comments</comments>
		<pubDate>Fri, 08 Apr 2011 15:58:09 +0000</pubDate>
		<dc:creator>Davide</dc:creator>
				<category><![CDATA[Ajax e Javascript]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[player]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://www.diplod.it/?p=1209</guid>
		<description><![CDATA[Si chiama Projekktor, ed è davvero ciò che cercavo da tempo. Un player senza fronzoli, che funzioni su tutti i browser. Senza flash, che quegli aggeggi piccoli e cool così come gli attrezzi grossi e prestanti non supportano. jQuery certo, ma anche il pulitissimo HTML5.]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.diplod.it/wp-content/uploads/2011/04/thisisprojekktor.png"><img class="size-medium wp-image-1210 aligncenter" title="thisisprojekktor" src="http://www.diplod.it/wp-content/uploads/2011/04/thisisprojekktor-300x208.png" alt="" width="300" height="208" /></a></p>
<p>Si chiama <strong><a title="projekktor" href="http://www.projekktor.com" target="_blank">Projekktor</a></strong>, ed è davvero ciò che cercavo da tempo. Un player senza fronzoli, che funzioni su tutti i browser. Senza flash, che quegli <a title="iphone" href="http://www.apple.com/it/iphone/" target="_blank">aggeggi piccoli e cool</a> così come gli <a title="flash player 64 bit" href="http://www.adobe.com/it/support/flashplayer/ts/documents/6b3af6c9.htm" target="_blank">attrezzi grossi e prestanti</a> non supportano. jQuery certo, ma anche il pulitissimo HTML5.</p>
<p>Adoro questo pezzo di codice:<br />
<code><br />
&lt;video id="player_a" poster="intro.png" title="this is Projekktor" width="640" height="385" controls&gt;<br />
&lt;source src="intro.ogv" type="video/ogg" /&gt;<br />
&lt;source src="intro.mp4" type="video/mp4" /&gt;<br />
&lt;source src="intro.webm" type="video/mp4" /&gt;<br />
&lt;/video&gt;<br />
&lt;script type="text/javascript"&gt;$(document).ready(function() {projekktor('#player_a'); // instantiation<br />
});&lt;/script&gt;<br />
</code><br />
Chiaro e leggibile, grazie al nuovo tag <a title="HTML video tag" href="http://www.w3schools.com/html5/tag_video.asp" target="_blank">&lt;video&gt; HTML5</a> ormai supportato da diversi browser. In sostanza viene specificata nell&#8217;attributo poster una immagine di partenza da far visualizzare al caricamento dell&#8217;oggetto e diverse sorgenti video, questo per garantire una maggiore compatibilità sui diversi sistemi.</p>
<p>Il plugin jQuery si occupa del resto: <a href="http://www.projekktor.com/docs/playlists" target="_blank">playlist</a>, gestione dei <a href="http://www.projekktor.com/docs/theming">temi grafici</a>.. ci sono pure le <a href="http://www.projekktor.com/docs/api">API</a> disponibili.</p>
<p>Perfetto insomma!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2011/04/08/html5-e-jquery-finalmente-un-player-audio-video-coi-fiocchi/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Highcharts: grafici interattivi con jQuery ottimizzati anche per iPhone / Android</title>
		<link>http://www.diplod.it/2011/02/17/highcharts-grafici-interattivi-con-jquery-ottimizzati-anche-per-iphone-android/</link>
		<comments>http://www.diplod.it/2011/02/17/highcharts-grafici-interattivi-con-jquery-ottimizzati-anche-per-iphone-android/#comments</comments>
		<pubDate>Thu, 17 Feb 2011 17:52:14 +0000</pubDate>
		<dc:creator>Davide</dc:creator>
				<category><![CDATA[Ajax e Javascript]]></category>
		<category><![CDATA[Applicazioni Web]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[applicazioni]]></category>
		<category><![CDATA[charts]]></category>
		<category><![CDATA[grafici]]></category>
		<category><![CDATA[highcharts]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://www.diplod.it/?p=1176</guid>
		<description><![CDATA[Grafici interattivi e dinamici con Highcharts, un prodotto molto flessibile per costruire cruscotti o report. Possibilità di caricare i dati in maniera asincrona e svariati modi per visualizzarli.. da provare!]]></description>
			<content:encoded><![CDATA[<p><script src="http://www.diplod.it/wp-content/uploads/2011/02/highcharts.js" type="text/javascript"></script><br />
<script type="text/javascript">// <![CDATA[  
$(document).ready(function () { 
//GRAFICO CARICATO QUANDO IL DOM DEL DOCUMENTO HTML E' PRONTO             
chartTurnover = new Highcharts.Chart({               
chart: { 
//id del div all'interno del quale il grafico deve essere visualizzato                 
renderTo: 'content4',                  
zoomType: 'xy'},               
title: {
//descrizione grafico: titolo e sottotitolo
text: 'Fatturato - Obiettivi'
},               
subtitle: {
text: 'Confronto tra vendite effettive e target previsionali'
},
//definizione dell'asse X
xAxis: [
{
categories: ['Qrt1', 'Qrt2', 'Qrt3', 'Qrt4']
}],
//definizione dell'asse Y
yAxis: [{
// aggiungo il simbolo dell'euro alle etichette dell'asse Y
labels: {
formatter: function() {
return this.value +'€'; 
} 
},
//Descrizione posta a lato dell'asse Y
title: {
text: 'Targets'
}
}], 
//Definizione del testo da visualizzare nei tooltip
tooltip: {
formatter: function() {
return ''+ this.series.name + ' ' + this.x +': '+ this.y + '€';
}
}, 
//Posizionamento legenda
legend: {
layout: 'vertical',
align: 'left',
x: 120,
verticalAlign: 'top',
y: 0,
floating: true
},
//Definisco il tipo di rappresentazione grafica
plotOptions: {
column: {
stacking: 'normal'
}
},
//Definizione delle serie di valori
series: [{
name: 'Fatturato zona1',
type: 'column',
data: [14183, 12451, 7254, 9658]
},
{ 
name: 'Fatturato zona2',
type: 'column',
data: [2183, 10451, 5254, 7658]
},
{
name: 'Fatturato zona3',
type: 'column',
data: [2300, 451, 4254, 4658]
},
{
//Ultima serie, di tipo linea (spline), per valorizzare i target
name: 'Targets',
type: 'spline',
data: [18175, 21556, 17145, 19897]
}]
}); 
//end
});
// ]]&gt;</script><br />
<!-- div grafico turnover --></p>
<div id="content4" class="grid_12 box">
<div class="loading" style="background: url(http://www.diplod.it/wp-content/uploads/2011/02/ajax-loader.gif) no-repeat center center; text-align: center; min-height: 100px;">Loading..</div>
</div>
<p>Come ti sembra questo <strong>grafico</strong>? Prova a cliccare sugli elementi della legenda e vedrai che è <strong>interattivo</strong>, potresti utilizzarlo per simulare il rispetto degli obiettivi in assenza di fatturato ottenuto su alcune zone.. Prova a selezionare col mouse una zona del grafico e vedrai puoi fare lo <strong>zoom sui dati</strong> che ti interessano.. Queste e tante altre funzionalità si possono ottenere grazie ad <strong><a title="Highcharts - grafici interattivi" href="http://highcharts.com/">Highcharts</a></strong>, un validissimo <strong>javascript </strong>open source che lavora con jQuery per renderizzare grafici più o meno complessi e molto accattivanti.</p>
<p>Il tutto <strong>senza flash</strong>, cosa a cui difficilmente si poteva rinunciare in era pre-<a title="jquery" href="http://www.google.it/url?sa=t&amp;source=web&amp;cd=1&amp;ved=0CCoQFjAA&amp;url=http%3A%2F%2Fjquery.com%2F&amp;ei=MFtdTffFMMKDOrbx3bML&amp;usg=AFQjCNFA7CZ5sWRDhHPuipmhL7zVksjC2A" target="_blank">jQuery</a> se si volevano ottenere i medesimi risultati. Le tipologie di grafici sono molteplici: si va dalla immancabile <a title="Highcharts demo" href="http://highcharts.com/demo/?example=pie-basic&amp;theme=default" target="_blank">torta</a> alla più ricercata <a title="Highcharts demo" href="http://highcharts.com/demo/?example=bar-negative-stack&amp;theme=default" target="_blank">rappresentazione demografica</a>, dal <a title="Highcharts demo" href="http://highcharts.com/demo/?example=column-stacked&amp;theme=default" target="_blank">grafico a barre</a> al potente grafico zoomabile sull&#8217;<a title="Highcharts demo" href="http://highcharts.com/demo/?example=dynamic-master-detail&amp;theme=default" target="_blank">andamento delle quotazioni</a> in borsa. E&#8217; inoltre possibile caricare i dati direttamente da una tabella definita in HTML all&#8217;interno della pagina, con poche righe di codice javascript.<br />
<span id="more-1176"></span></p>
<p>Sotto è riportato il codice, opportunamente commentato, dell&#8217;esempio mostrato in questo articolo.<br />
<code>//Carico il javascript di highcharts, dopo aver caricato jQuery<br />
&lt;script src="js/highcharts.js" type="text/javascript"&gt;&lt;/script&gt;<br />
&lt;script type="text/javascript"&gt;// &lt;![CDATA[</p>
<div id="_mcePaste">$(document).ready(function () {</div>
<div id="_mcePaste">//GRAFICO CARICATO QUANDO IL DOM DEL DOCUMENTO HTML E' PRONTO</div>
<div id="_mcePaste">chartTurnover = new Highcharts.Chart({</div>
<div id="_mcePaste">chart: {</div>
<div id="_mcePaste">//id del div all'interno del quale il grafico deve essere visualizzato</div>
<div id="_mcePaste">renderTo: 'content4',</div>
<div id="_mcePaste">zoomType: 'xy'},</div>
<div id="_mcePaste">title: {</div>
<div id="_mcePaste">//descrizione grafico: titolo e sottotitolo</div>
<div id="_mcePaste">text: 'Fatturato - Obiettivi'</div>
<div id="_mcePaste">},</div>
<div id="_mcePaste">subtitle: {</div>
<div id="_mcePaste">text: 'Confronto tra vendite effettive e target previsionali'</div>
<div id="_mcePaste">},</div>
<div id="_mcePaste">//definizione dell'asse X</div>
<div id="_mcePaste">xAxis: [</div>
<div id="_mcePaste">{</div>
<div id="_mcePaste">categories: ['Qrt1', 'Qrt2', 'Qrt3', 'Qrt4']</div>
<div id="_mcePaste">}],</div>
<div id="_mcePaste">//definizione dell'asse Y</div>
<div id="_mcePaste">yAxis: [{</div>
<div id="_mcePaste">// aggiungo il simbolo dell'euro alle etichette dell'asse Y</div>
<div id="_mcePaste">labels: {</div>
<div id="_mcePaste">formatter: function() {</div>
<div id="_mcePaste">return this.value +'€';</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">},</div>
<div id="_mcePaste">//Descrizione posta a lato dell'asse Y</div>
<div id="_mcePaste">title: {</div>
<div id="_mcePaste">text: 'Targets'</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}],</div>
<div id="_mcePaste">//Definizione del testo da visualizzare nei tooltip</div>
<div id="_mcePaste">tooltip: {</div>
<div id="_mcePaste">formatter: function() {</div>
<div id="_mcePaste">return ''+ this.series.name + ' ' + this.x +': '+ this.y + '€';</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">},</div>
<div id="_mcePaste">//Posizionamento legenda</div>
<div id="_mcePaste">legend: {</div>
<div id="_mcePaste">layout: 'vertical',</div>
<div id="_mcePaste">align: 'left',</div>
<div id="_mcePaste">x: 120,</div>
<div id="_mcePaste">verticalAlign: 'top',</div>
<div id="_mcePaste">y: 0,</div>
<div id="_mcePaste">floating: true</div>
<div id="_mcePaste">},</div>
<div id="_mcePaste">//Definisco il tipo di rappresentazione grafica</div>
<div id="_mcePaste">plotOptions: {</div>
<div id="_mcePaste">column: {</div>
<div id="_mcePaste">stacking: 'normal'</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">},</div>
<div id="_mcePaste">//Definizione delle serie di valori</div>
<div id="_mcePaste">series: [{</div>
<div id="_mcePaste">name: 'Fatturato zona1',</div>
<div id="_mcePaste">type: 'column',</div>
<div id="_mcePaste">data: [14183, 12451, 7254, 9658]</div>
<div id="_mcePaste">},</div>
<div id="_mcePaste">{</div>
<div id="_mcePaste">name: 'Fatturato zona2',</div>
<div id="_mcePaste">type: 'column',</div>
<div id="_mcePaste">data: [2183, 10451, 5254, 7658]</div>
<div id="_mcePaste">},</div>
<div id="_mcePaste">{</div>
<div id="_mcePaste">name: 'Fatturato zona3',</div>
<div id="_mcePaste">type: 'column',</div>
<div id="_mcePaste">data: [2300, 451, 4254, 4658]</div>
<div id="_mcePaste">},</div>
<div id="_mcePaste">{</div>
<div id="_mcePaste">//Ultima serie, di tipo linea (spline), per valorizzare i target</div>
<div id="_mcePaste">name: 'Targets',</div>
<div id="_mcePaste">type: 'spline',</div>
<div id="_mcePaste">data: [18175, 21556, 17145, 19897]</div>
<div id="_mcePaste">}]</div>
<div id="_mcePaste">});</div>
<div id="_mcePaste">//end</div>
<div id="_mcePaste">// ]]&gt;&lt;/script&gt;</div>
<p></code></p>
<p>Data la sua natura di puro css e javascript, questo grafico è agilmente fruibile anche da dispositivi mobili come iPhone o Android, inoltre è ben renderizzato dai principali browser. Si tratta di un prodotto davvero interessante che potrebbe tornare utile in diverse applicazioni stand-alone, a costo zero. Ben diverso dal classico <a href="http://www.diplod.it/2008/04/20/google-chart-api-grafici-dinamici-in-un-attimo/">Google Charts</a>, servizio comodissimo che però pecca in quanto ad interattività: all&#8217;utente viene infatti restituita in quel caso una immagine statica.</p>
<p><strong>Cosa Manca?</strong> Mancano i &#8220;<strong>geo-grafici</strong>&#8220;, ovvero la possibilità di visualizzare i dati su una cartina; mancano i <strong>tachimetri</strong>, per visualizzare in un colpo d&#8217;occhio l&#8217;andamento più o meno positivo di un indicatore. Sono comunque cose a cui si può sopperire spulciando bene l&#8217;elenco dei plugin jQuery..<br />
<strong>E voi? Che cosa utilizzate in questi casi?</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2011/02/17/highcharts-grafici-interattivi-con-jquery-ottimizzati-anche-per-iphone-android/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Lavorare con le date in javascript: il tool che salva la vita!</title>
		<link>http://www.diplod.it/2010/09/29/lavorare-con-le-date-in-javascript-il-tool-che-salva-la-vita/</link>
		<comments>http://www.diplod.it/2010/09/29/lavorare-con-le-date-in-javascript-il-tool-che-salva-la-vita/#comments</comments>
		<pubDate>Wed, 29 Sep 2010 14:43:22 +0000</pubDate>
		<dc:creator>Davide</dc:creator>
				<category><![CDATA[Ajax e Javascript]]></category>
		<category><![CDATA[date]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[utility]]></category>
		<category><![CDATA[vb]]></category>

		<guid isPermaLink="false">http://www.diplod.it/?p=1140</guid>
		<description><![CDATA[jsDate. Per chi non vuole impazzire con le classiche funzioni javascript, che sono utili ma non sempre funzionali, esiste questo comodo js da includere nei propri lavori per agire in maniera efficace sulle date. La funzione più importante è sicuramente il DateDiff(), comodissimo per fare somme e differenze al volo.]]></description>
			<content:encoded><![CDATA[<p><a href="http://slingfive.com/pages/code/jsDate/jsDate.html"><strong>jsDate</strong></a>: emulatore delle funzioni native Visual Basic in javascript. Ovvero, come fare somme e differenze, trasformare in diversi formati, ricavare il giorno della settimana o il mese da stringhe che rappresentano date.</p>
<p>Per chi non vuole impazzire con le classiche funzioni javascript, che sono utili ma non sempre funzionali, esiste questo comodo js da includere nei propri lavori per agire in maniera efficace sulle date. La funzione più importante è sicuramente il DateDiff(), comodissimo per fare somme e differenze <em>al volo</em> sulle date.</p>
<p>Ecco un po&#8217; di giochetti che si possono fare grazie a questo script, lo schema esplicativo sottostante è stato preso direttamente dal <a href="http://slingfive.com/pages/code/jsDate/jsDate.html">sito dell&#8217;autore</a>.<br />
<span id="more-1140"></span></p>
<p><script language="javascript" type="text/javascript" src="http://www.diplod.it/wp-content/uploads/2010/09/jsDate.js"></script><br />
<script language="javascript" type="text/javascript" src="http://www.diplod.it/wp-content/uploads/2010/09/jsDate_demo.js"></script> </p>
<div id="params" style="float: left; width: 40%">
<h6>1) Imposta i parametri:</h6>
<p>	<label for="txtDate1"><span>date1</span><br />
<input type="text" id="txtDate1" value="9/2/2005 1:23:45 am" /></label><br />
	<button onclick="oDate1.value = new Date();" title="set to Now">Crea una nuova data</button> </p>
<p>	<label for="txtDate2"><span>date2</span> </p>
<input type="text" id="txtDate2" value="12/5/2009 5:43:21 am" /></label><br />
	<button onclick="oDate2.value = new Date();" title="set to Now">Crea una nuova data</button> </p>
<p>	<label for="selInterval"><span>interval</span> </p>
<select id="selInterval">
<option value=""></option>
<option value="yyyy" selected="selected">yyyy (year)</option>
<option value="q">q &nbsp; &nbsp;(quarter)</option>
<option value="m">m &nbsp; &nbsp;(month)</option>
<option value="y">y &nbsp; &nbsp;(day of year)</option>
<option value="d">d &nbsp; &nbsp;(day)</option>
<option value="w">w &nbsp; &nbsp;(weekday)</option>
<option value="ww">ww &nbsp;&nbsp;(week of year)</option>
<option value="h">h &nbsp; &nbsp;(hour)</option>
<option value="n">n &nbsp; &nbsp;(minute)</option>
<option value="s">s &nbsp; &nbsp;(seconds)</option>
<option value="ms" style="color:red;">ms &nbsp;&nbsp;(milliseconds)</option>
</select>
<p></label> </p>
<p>	<label for="txtNumber"><span>number</span> </p>
<input type="text" id="txtNumber" value="1" /></label> </p>
<p>	<label for="selFirstDayOfWeek"><span>firstDayOfWeek</span> </p>
<select id="selFirstDayOfWeek">
<option value=""></option>
<option value="0">0 : vbUseSystemDayOfWeek (==1)</option>
<option value="1">1 : vbSunday</option>
<option value="2">2 : vbMonday</option>
<option value="3">3 : vbTuesday</option>
<option value="4">4 : vbWednesday</option>
<option value="5">5 : vbThursday</option>
<option value="6">6 : vbFriday</option>
<option value="7">7 : vbSaturday</option>
</select>
<p></label> </p>
<p>	<label for="selNamedFormat"><span>namedFormat</span> </p>
<select id="selNamedFormat">
<option value=""></option>
<option value="0" selected="selected">0 : vbGeneralDate</option>
<option value="1">1 : vbLongDate</option>
<option value="2">2 : vbShortDate</option>
<option value="3">3 : vbLongTime</option>
<option value="4">4 : vbShortTime</option>
</select>
<p></label> </p>
<p>	<label for="txtFormat"><span>format</span> </p>
<input type="text" id="txtFormat" value="ddd mmm d, yyyy" 	title="possible values:</p>
<p>	c, d, dd, ddd, dddd, ddddd, dddddd, m, mm, mmm, mmmm, q, y, yy, yyyy</p>
<p>	h, hh, n, nn, s, ss, t t t t t, AM/PM, am/pm, A/P, a/p, AMPM, timezone, time24, time"/></label><br /> <br />
	<label for="chkAbbreviate"><span>abbreviate</span> </p>
<input type="checkbox" id="chkAbbreviate" value="true" /></label> </p>
</div>
<div id="functions" style="float: right; width: 40%">
<h6>2) Chiama una funzione:</h6>
<div style="display:table;">
	<button id="btnTestIsDate" assocCtlIDs="txtDate1"><b>IsDate</b> (date1)</button><br /> <br />
	<button id="btnTestCDate" assocCtlIDs="txtDate1"><b>CDate</b> (date1)</button><br /> <br />
	<button id="btnTestDateAdd" assocCtlIDs="selInterval,txtNumber,txtDate1"><b>DateAdd</b> (interval, number, date1)</button><br /> <br />
	<button id="btnTestDateDiff" assocCtlIDs="selInterval,txtDate1,txtDate2,selFirstDayOfWeek"><b>DateDiff</b> (interval, date1, date2, <i>firstDayOfWeek</i>)</button><br /> <br />
	<button id="btnTestDatePart" assocCtlIDs="selInterval,txtDate1,selFirstDayOfWeek"><b>DatePart</b> (interval, date1, <i>firstDayOfWeek</i>)</button><br /> <br />
	<button id="btnTestMonthName" assocCtlIDs="txtNumber,chkAbbreviate"><b>MonthName</b> (number, <i>abbreviate</i>)</button><br /> <br />
	<button id="btnTestWeekdayName" assocCtlIDs="txtNumber,chkAbbreviate,selFirstDayOfWeek"><b>WeekdayName</b> (number, <i>abbreviate</i>, <i>firstDayOfWeek</i>)</button><br /> <br />
	<button id="btnTestWeekday" assocCtlIDs="txtNumber,selFirstDayOfWeek"><b>Weekday</b> (number, <i>firstDayOfWeek</i>)</button><br /> <br />
	<button id="btnTestFormatDateTime" assocCtlIDs="txtDate1,selNamedFormat"><b>FormatDateTime</b> (date1, <i>namedFormat</i>)</button><br /> <br />
	<button id="btnTestFormat" assocCtlIDs="txtDate1,txtFormat,selFirstDayOfWeek"><b>Format</b> (date1, <i>format</i>, <i>firstDayOfWeek</i>)</button><br /> 
	</div>
</div>
<p><br clear="all" /> </p>
<h6 style="margin-top:-1em;">3) Ottieni questo risultato:</h6>
<div id="result" style="background: yellow;">&nbsp;</div>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2010/09/29/lavorare-con-le-date-in-javascript-il-tool-che-salva-la-vita/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Componenti Ajax e UI Toolkit per applicazioni web RIA</title>
		<link>http://www.diplod.it/2010/07/19/componenti-ajax-e-ui-toolkit-per-applicazioni-web-ria/</link>
		<comments>http://www.diplod.it/2010/07/19/componenti-ajax-e-ui-toolkit-per-applicazioni-web-ria/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 06:42:17 +0000</pubDate>
		<dc:creator>Davide</dc:creator>
				<category><![CDATA[Ajax e Javascript]]></category>
		<category><![CDATA[Applicazioni Web]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[RIA]]></category>
		<category><![CDATA[toolkit]]></category>
		<category><![CDATA[webdesign]]></category>

		<guid isPermaLink="false">http://www.diplod.it/?p=1087</guid>
		<description><![CDATA[Volete stupire con componenti dinamici pronti all'uso? Creare applicazioni web avanzate non è poi così laborioso, oggi si trovano un sacco di risorse in rete. Ecco una breve panoramica.]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.diplod.it/wp-content/uploads/2010/07/toolkit.png"><img class="size-full wp-image-1130 aligncenter" title="toolkit" src="http://www.diplod.it/wp-content/uploads/2010/07/toolkit.png" alt="" width="415" height="212" /></a></p>
<p><strong>Volete stupire con componenti dinamici pronti all&#8217;uso?</strong> Creare <strong>applicazioni web</strong> avanzate non è poi così laborioso, oggi si trovano un sacco di risorse in rete. Una di queste è il<strong> <a title="DHTMLX" href="http://www.dhtmlx.com/" target="_blank">DHTMLX UI Toolkit</a></strong>, una serie di <strong>librerie javascript</strong> corredate da tantissimi esempi. La documentazione è ciò che fa la differenza: gli script non documentati e con pochi esempi sono quasi inutilizzabili, se non perdendo un sacco di ore per studiarseli. UI Toolkit viene distribuito in uno zip con diverse pagine di pratiche demo.</p>
<p>Per chi lavora in <strong>ambiente .NET</strong> molto interessante è questo <a title="Ajax Control Toolkit" href="http://ajaxcontroltoolkit.codeplex.com/" target="_blank"><strong>Ajax Control Toolkit</strong></a>, un insieme di controlli utilizzabili direttamente in <strong>Visual Studio</strong> con il drag and drop, per costruire form e applicazioni accattivanti. Da Codeplex si possono scaricare anche i sorgenti, corredati da diversi esempi. In <a title="Ajax control toolkit - esempi" href="http://www.asp.net/ajax/ajaxcontroltoolkit/samples/" target="_blank">questa pagina</a> si può avere una panoramica di tutte le funzionalità disponibili, sono davvero parecchie:</p>
<p><span id="more-1087"></span></p>
<ul>
<li><a id="ctl00_SamplesLinks_ctl01_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/Accordion/Accordion.aspx">Accordion</a></li>
<li><a id="ctl00_SamplesLinks_ctl02_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/AlwaysVisibleControl/AlwaysVisibleControl.aspx">AlwaysVisibleControl</a></li>
<li><a id="ctl00_SamplesLinks_ctl03_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/Animation/Animation.aspx">Animation</a></li>
<li><a id="ctl00_SamplesLinks_ctl04_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/AsyncFileUpload/AsyncFileUpload.aspx">AsyncFileUpload</a></li>
<li><a id="ctl00_SamplesLinks_ctl05_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/AutoComplete/AutoComplete.aspx">AutoComplete</a></li>
<li><a id="ctl00_SamplesLinks_ctl06_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/Calendar/Calendar.aspx">Calendar</a></li>
<li><a id="ctl00_SamplesLinks_ctl07_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/CascadingDropDown/CascadingDropDown.aspx">CascadingDropDown</a></li>
<li><a id="ctl00_SamplesLinks_ctl08_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/CollapsiblePanel/CollapsiblePanel.aspx">CollapsiblePanel</a></li>
<li><a id="ctl00_SamplesLinks_ctl09_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/ColorPicker/ColorPicker.aspx">ColorPicker</a></li>
<li><a id="ctl00_SamplesLinks_ctl10_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/ComboBox/ComboBox.aspx">ComboBox</a></li>
<li><a id="ctl00_SamplesLinks_ctl11_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/ConfirmButton/ConfirmButton.aspx">ConfirmButton</a></li>
<li><a id="ctl00_SamplesLinks_ctl12_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/DragPanel/DragPanel.aspx">DragPanel</a></li>
<li><a id="ctl00_SamplesLinks_ctl13_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/DropDown/DropDown.aspx">DropDown</a></li>
<li><a id="ctl00_SamplesLinks_ctl14_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/DropShadow/DropShadow.aspx">DropShadow</a></li>
<li><a id="ctl00_SamplesLinks_ctl15_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/DynamicPopulate/DynamicPopulate.aspx">DynamicPopulate</a></li>
<li><a id="ctl00_SamplesLinks_ctl16_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/FilteredTextBox/FilteredTextBox.aspx">FilteredTextBox</a></li>
<li><a id="ctl00_SamplesLinks_ctl17_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/HoverMenu/HoverMenu.aspx">HoverMenu</a></li>
<li><a id="ctl00_SamplesLinks_ctl18_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/HTMLEditor/HTMLEditor.aspx">HTMLEditor</a></li>
<li><a id="ctl00_SamplesLinks_ctl19_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/ListSearch/ListSearch.aspx">ListSearch</a></li>
<li><a id="ctl00_SamplesLinks_ctl20_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/MaskedEdit/MaskedEdit.aspx">MaskedEdit</a></li>
<li><a id="ctl00_SamplesLinks_ctl21_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/ModalPopup/ModalPopup.aspx">ModalPopup</a></li>
<li><a id="ctl00_SamplesLinks_ctl22_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/MultiHandleSlider/MultiHandleSlider.aspx">MultiHandleSlider</a></li>
<li><a id="ctl00_SamplesLinks_ctl23_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/MutuallyExclusiveCheckBox/MutuallyExclusiveCheckBox.aspx">MutuallyExclusiveCheckBox</a></li>
<li><a id="ctl00_SamplesLinks_ctl24_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/NoBot/NoBot.aspx">NoBot</a></li>
<li><a id="ctl00_SamplesLinks_ctl25_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/NumericUpDown/NumericUpDown.aspx">NumericUpDown</a></li>
<li><a id="ctl00_SamplesLinks_ctl26_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/PagingBulletedList/PagingBulletedList.aspx">PagingBulletedList</a></li>
<li><a id="ctl00_SamplesLinks_ctl27_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/PasswordStrength/PasswordStrength.aspx">PasswordStrength</a></li>
<li><a id="ctl00_SamplesLinks_ctl28_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/PopupControl/PopupControl.aspx">PopupControl</a></li>
<li><a id="ctl00_SamplesLinks_ctl29_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/Rating/Rating.aspx">Rating</a></li>
<li><a id="ctl00_SamplesLinks_ctl30_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/ReorderList/ReorderList.aspx">ReorderList</a></li>
<li><a id="ctl00_SamplesLinks_ctl31_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/ResizableControl/ResizableControl.aspx">ResizableControl</a></li>
<li><a id="ctl00_SamplesLinks_ctl32_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/RoundedCorners/RoundedCorners.aspx">RoundedCorners</a></li>
<li><a id="ctl00_SamplesLinks_ctl33_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/Seadragon/Seadragon.aspx">Seadragon</a></li>
<li><a id="ctl00_SamplesLinks_ctl34_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/Slider/Slider.aspx">Slider</a></li>
<li><a id="ctl00_SamplesLinks_ctl35_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/SlideShow/SlideShow.aspx">SlideShow</a></li>
<li><a id="ctl00_SamplesLinks_ctl36_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/Tabs/Tabs.aspx">Tabs</a></li>
<li><a id="ctl00_SamplesLinks_ctl37_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/TextBoxWatermark/TextBoxWatermark.aspx">TextBoxWatermark</a></li>
<li><a id="ctl00_SamplesLinks_ctl38_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/ToggleButton/ToggleButton.aspx">ToggleButton</a></li>
<li><a id="ctl00_SamplesLinks_ctl39_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/UpdatePanelAnimation/UpdatePanelAnimation.aspx">UpdatePanelAnimation</a></li>
<li><a id="ctl00_SamplesLinks_ctl40_SamplesLink" href="http://www.asp.net/ajax/ajaxcontroltoolkit/Samples/ValidatorCallout/ValidatorCallout.aspx">ValidatorCallout</a></li>
</ul>
<p>Per chi vuole essere indipendente da javascript e piattaforma tecnologica, esiste questo <strong><a title="Vaddin Toolkit" href="http://vaadin.com/home" target="_blank">Vaadin</a></strong>, tutto basato su <strong>Java</strong>. Quest&#8217;ultimo molto più simile ai più noti framewok come <a title="Mootools" href="http://mootools.net/" target="_blank">Mootools</a> o <a title="JQuery" href="http://jquery.com/" target="_blank">JQuery</a>: dispone di diversi componenti elementari che opportunamente combinati tra loro danno vita ad applicazioni web avanzate.</p>
<p>Da segnalare infine questo <a title="iwebkit" href="http://iwebkit.net/" target="_blank">iWebKit</a>, utile per chi vuole cimentarsi nella realizzazione di siti e applicazioni concepite specificatamente per iPhone.</p>
<p>Risorse di questo tipo ne esistono davvero a bizzeffe, ma <strong>non è facile distinguere</strong> quelle che sono effettivamente utilizzabili <strong>out of the box</strong> da quelle che invece necessitano di altro e magari nascondono limiti tali da sconsigliarne l&#8217;utilizzo. Personalmente ho utilizzato in un ambiente di produzione l&#8217;UI Toolkit di DHTMLX e posso confermare che si tratta di librerie pronte all&#8217;uso, davvero comode e funzionali. Ho intenzione di provare a breve l&#8217;Ajax Control Toolkit per .NET e vi farò sapere le mie considerazioni. <strong>Mi piacerebbe ovviamente sentire le vostre e capire se esistono altri strumenti oltre a quelli citati, che magari avete utilizzato direttamente</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2010/07/19/componenti-ajax-e-ui-toolkit-per-applicazioni-web-ria/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Un esempio di applicazione ajax ottimizzata per dispositivi mobili: xml e javascript.</title>
		<link>http://www.diplod.it/2010/04/22/un-esempio-di-applicazione-ajax-ottimizzata-per-dispositivi-mobili-xml-e-javascript/</link>
		<comments>http://www.diplod.it/2010/04/22/un-esempio-di-applicazione-ajax-ottimizzata-per-dispositivi-mobili-xml-e-javascript/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 17:43:48 +0000</pubDate>
		<dc:creator>Davide</dc:creator>
				<category><![CDATA[Ajax e Javascript]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[blackberry]]></category>
		<category><![CDATA[cellulari]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[nokia]]></category>
		<category><![CDATA[web20]]></category>
		<category><![CDATA[xml]]></category>

		<guid isPermaLink="false">http://www.diplod.it/?p=1066</guid>
		<description><![CDATA[Ajax è sempre cool, se poi lo affianchi a iPhone &#038; Co. è ancora più cool. Perchè non vedere un esempio di applicazione web fruibile da cellulare che va a interrogare i dati contenuti in un file xml? Pensiamo ai webservices, ormai l'xml è un po' ovunque. Dobbiamo solo sfruttarlo.]]></description>
			<content:encoded><![CDATA[<p><strong><a title="ajax - wikipedia" href="http://it.wikipedia.org/wiki/AJAX" target="_blank">Ajax </a></strong>è sempre <strong>cool</strong>, se poi lo affianchi a iPhone &amp; Co. è ancora più cool. Perchè non vedere un esempio di applicazione web fruibile da cellulare che va a interrogare i dati contenuti in un file xml? Pensiamo ai <a title="Webservice - wikipedia" href="http://it.wikipedia.org/wiki/Web_service" target="_blank"><strong>webservices</strong></a>, ormai l&#8217;xml è un po&#8217; ovunque. Dobbiamo solo sfruttarlo.</p>
<p>Alcune utili consigli per chi sviluppa applicazioni ajax destinate ad essere fruibili attraverso dispositivi mobili:</p>
<ul>
<li><strong>Blackberry</strong>: il browser deve essere abilitato per usare javascript. Inoltre, se si fa largo uso dello script lato client, è bene evitare di spuntare tra le opzioni il flag &#8220;Termina script in esecuzione lenti&#8221;, un semplice <a title="bubble sort - wikipedia" href="http://it.wikipedia.org/wiki/Bubble_sort" target="_blank">Bubble Sort</a> lo manderebbe in tilt.</li>
<li><strong>Nokia </strong>(symbian): nel browser standard il metodo <em>open(&#8220;GET&#8221;,&#8221;xml/test2.xml&#8221;,true)</em> funziona solo in modalità asincrona, ovvero con l&#8217;ultimo parametro settato a true; scaricando il browser <a title="Opera Mini" href="http://www.opera.com/mobile/" target="_blank">Opera Mini</a> invece non ci sono problemi in entrambi i casi: sincrono/asincrono.</li>
<li><strong>iPhone</strong>: che dire.. finora nessun problem riscontrato: browser e processore appartengono a una categoria superiore.</li>
</ul>
<p>Purtroppo non ho ancora avuto modo di fare test su dispositivi con <a title="Android" href="http://www.android.com/" target="_blank">Android</a>..</p>
<p>Ma veniamo al dunque.. Tutto prende il via dagli <a title="W3C - ajax examples" href="http://www.w3schools.com/ajax/ajax_examples.asp" target="_blank">esempi sul sito W3C</a>, utilissimi per fare pratica.</p>
<p>L&#8217;obiettivo è realizzare una applicazione che va a interrogare un file xml, riportante i dati di produzione (magari estratti direttamente dal gestionale aziendale), visualizzandoli in maniera ottimizzata per schermi di modeste dimensioni.</p>
<p>L&#8217;esempio con il risultato finale è <a title="Esempio XML Ajax" href="http://lab.diplod.it/xml2" target="_blank">visibile qui</a>.</p>
<p>Questa è la struttura dela file XML:<br />
<code>&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />
&lt;db&gt;<br />
&lt;item&gt;<br />
&lt;period&gt;04.2010&lt;/period&gt; &lt;!-- Periodo: mese o giorno --&gt;<br />
&lt;logunit id="0010"&gt;Italy Milan&lt;/logunit&gt; &lt;!-- Divisione di produzione--&gt;<br />
&lt;delivered matcode="000123"&gt;268&lt;/delivered&gt; &lt;!-- Quantita' spedita --&gt;<br />
&lt;finished matcode="100123"&gt;265&lt;/finished&gt; &lt;!-- Quantita' versata --&gt;<br />
&lt;description&gt;Product One&lt;/description&gt; &lt;!-- Descrizione codice materiale  --&gt;<br />
&lt;update&gt;15.04.2010 - 16:43&lt;/update&gt; &lt;!-- Ultimo aggiornamento --&gt;<br />
&lt;/item&gt;<br />
&lt;/db&gt;<br />
</code><br />
<span id="more-1066"></span>Supponiamo di voler offrire all&#8217;utente un menù per selezionare la divisione logistica su cui fare l&#8217;analisi e filtrare così i dati relativi alla singola divisione raggruppati in righe in base agli intervalli temporali, cliccando sulla singola riga è poi possibile vedere il dettaglio.</p>
<p>Ecco il codice della pagina web, con il suo javascript:<br />
<code>&lt;html&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;Mobile Web Access&lt;/title&gt;<br />
&lt;script type="text/javascript"&gt;<br />
var xmlDoc;<br />
var x; //array dove memorizzo la risposta xml<br />
//inizio chiamata<br />
if (window.XMLHttpRequest)<br />
{<br />
xhttp=new XMLHttpRequest();<br />
if (xhttp.overrideMimeType) {<br />
xhttp.overrideMimeType('text/xml');<br />
}<br />
}<br />
else // Internet Explorer 5/6<br />
{<br />
xhttp=new ActiveXObject("Microsoft.XMLHTTP");<br />
}<br />
xhttp.onreadystatechange = alertContents; //gestione eventuali errori<br />
xhttp.open("GET","xml/test2.xml",true); //chiamata asincrona<br />
xhttp.send("");<br />
// Questo metodo viene eseguito in modo asincrono quando arriva la risposta dal server<br />
function alertContents() {<br />
if (xhttp.readyState == 4) {<br />
if (xhttp.status == 200) {<br />
processResponse(); //gestione risposta<br />
}<br />
else {<br />
document.write('&lt;small&gt;There was a problem with the request, sorry. Try later or contact your system administrator..&lt;/small&gt;');<br />
}<br />
}<br />
}<br />
function processResponse() {<br />
xmlDoc=xhttp.responseXML;<br />
x=xmlDoc.getElementsByTagName("item");<br />
}<br />
//mostra i dati nel div in alto<br />
function show(i) {<br />
logunit=(x[i].getElementsByTagName("logunit")[0].childNodes[0].nodeValue);<br />
logunitID=(x[i].getElementsByTagName("logunit")[0].getAttribute("id"));<br />
period=(x[i].getElementsByTagName("period")[0].childNodes[0].nodeValue);<br />
description=(x[i].getElementsByTagName("description")[0].childNodes[0].nodeValue);<br />
delivered=(x[i].getElementsByTagName("delivered")[0].childNodes[0].nodeValue);<br />
deliveredCode=(x[i].getElementsByTagName("delivered")[0].getAttribute("code"));<br />
finished=(x[i].getElementsByTagName("finished")[0].childNodes[0].nodeValue);<br />
finishedCode=(x[i].getElementsByTagName("finished")[0].getAttribute("code"));<br />
update=(x[i].getElementsByTagName("update")[0].childNodes[0].nodeValue);<br />
txt="&lt;strong&gt;Logistic Unit&lt;/strong&gt;: "+logunitID+" - "+logunit+"&lt;br /&gt;&lt;strong&gt;Period&lt;/strong&gt;: "+period+"&lt;br /&gt;&lt;strong&gt;Description&lt;/strong&gt;: "+description+"&lt;br /&gt;&lt;img style='float:left; margin-right: 2px;' src='icon.png' alt='icon'/&gt;&lt;strong&gt;Delivered&lt;/strong&gt;: "+delivered+"&lt;br /&gt;&lt;strong&gt;Finished&lt;/strong&gt;: "+finished+"&lt;br /&gt;&lt;div style='border: 1px dotted #fff; padding: 2px; background: #f9f9f9; color: #666;'&gt;&lt;small&gt;&lt;em&gt;Last update: "+update+"&lt;/em&gt;&lt;/small&gt;&lt;br/&gt;&lt;small&gt;&lt;a href='#item"+i+"'&gt;Go Down To List..&lt;/a&gt; | &lt;a href='#show' onclick='show(" + (i-1) + ")'&gt;Prev..&lt;/a&gt; | &lt;a href='#show' onclick='show(" + (i+1) + ")'&gt;Next..&lt;/a&gt;&lt;/small&gt;&lt;/div&gt;"  ;<br />
document.getElementById("show").innerHTML=txt;<br />
}<br />
//crea tabella coi record relativi alla singola divisione<br />
function createTable(t) {<br />
document.getElementById("show").innerHTML="&lt;em&gt;"+t+": click on a table row to display the full production information.&lt;/em&gt;";<br />
txt="&lt;table style='border: 2px solid #ccc; width: 100%;'&gt;";<br />
altStyle=0;<br />
for (var i=0;i&lt;x.length;i++)<br />
{<br />
if (x[i].getElementsByTagName("logunit")[0].getAttribute("id")==t) {<br />
altStyle++;<br />
if (altStyle % 2 == 0) { txt=txt+"&lt;tr style='background: #e3efff;' onclick='show(" + i + ")'&gt;"; }<br />
else { txt=txt+"&lt;tr style='border-bottom: 1px dotted #ccc;' onclick='show(" + i + ")'&gt;"; }<br />
txt=txt+"&lt;td id='item"+i+"'&gt;&lt;img src='cal.png' alt='ico'/&gt;&lt;a href='#show'&gt;";<br />
txt=txt+(x[i].getElementsByTagName("period")[0].childNodes[0].nodeValue);<br />
txt=txt+"&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;img src='car.png' alt='ico'/&gt;&lt;a href='#show'&gt;";<br />
txt=txt+(x[i].getElementsByTagName("description")[0].childNodes[0].nodeValue);<br />
txt=txt+"&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;";<br />
}<br />
}<br />
txt=txt+"&lt;/table&gt;";<br />
document.getElementById("table-content").innerHTML=txt;<br />
}<br />
&lt;/script&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;img src='mobile-logo.gif' alt='logo' /&gt;&lt;br/&gt;<br />
&lt;div id='show' style='background: #e3efff; padding: 3px; margin: 3px 0; border: 2px solid #ccc;'&gt;&lt;em&gt;Select Logistic Unit then click on a table row to display the full production information.&lt;/em&gt;&lt;/div&gt;<br />
&lt;!--Per aggiungere una divisione, modificare questo menu --&gt;<br />
&lt;img src='industry.png' alt='ico'/&gt;&lt;a href='#show' onclick='createTable("0010")'&gt;Italy Milan&lt;/a&gt; | &lt;img src='industry.png' alt='ico'/&gt;&lt;a href='#show' onclick='createTable("0020")'&gt;Italy Rome&lt;/a&gt; | &lt;img src='industry.png' alt='ico'/&gt;&lt;a href='#show' onclick='createTable("0030")'&gt;USA&lt;/a&gt; | &lt;img src='industry.png' alt='ico'/&gt;&lt;a href='#show' onclick='createTable("0040")'&gt;Germany&lt;/a&gt; | &lt;img src='industry.png' alt='ico'/&gt;&lt;a href='#show' onclick='createTable("0050")'&gt;China&lt;/a&gt; | &lt;img src='industry.png' alt='ico'/&gt;&lt;a href='#show' onclick='createTable("0060")'&gt;Brasil&lt;/a&gt;<br />
&lt;!-- fine menu selezione divisione --&gt;<br />
&lt;div id='table-content'&gt;&lt;/div&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
</code></p>
<p>Il codice è interamente commentato, e più che descriverlo a parole vale la pena scorrerlo e leggere i commenti. <strong>Se vuoi scaricare l&#8217;esempio completo, con sorgenti e immagini: </strong><a title="xml ajax - esempio" href="http://www.diplod.it/wp-content/uploads/2010/04/xml-demo.zip"><strong>ecco lo zip</strong></a>.</p>
<p>La scelta di incorporare css e javascript all&#8217;interno della stessa singola pagina è voluta, per ottimizzare il caricamento da parte di dispositivi mobili. Certo questa è solo una base di partenza, dalla quale si potrebbero sviluppare altre funzionalità: l&#8217;esigenza di avere dati disponibili anche su <strong>dispositivi mobili</strong> è sempre più sentita; è inevitabile che in <strong>futuro</strong> si debba far fronte a queste richieste.<br />
In fondo è pure divertente!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2010/04/22/un-esempio-di-applicazione-ajax-ottimizzata-per-dispositivi-mobili-xml-e-javascript/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Dataview che filtra per data gli elementi di una lista Sharepoint: che fatica!</title>
		<link>http://www.diplod.it/2009/12/28/dataview-che-filtra-per-data-gli-elementi-di-una-lista-sharepoint-che-fatica/</link>
		<comments>http://www.diplod.it/2009/12/28/dataview-che-filtra-per-data-gli-elementi-di-una-lista-sharepoint-che-fatica/#comments</comments>
		<pubDate>Sun, 27 Dec 2009 23:35:24 +0000</pubDate>
		<dc:creator>Davide</dc:creator>
				<category><![CDATA[Ajax e Javascript]]></category>
		<category><![CDATA[Sharepoint]]></category>
		<category><![CDATA[calendario]]></category>
		<category><![CDATA[dataview]]></category>
		<category><![CDATA[designer]]></category>
		<category><![CDATA[filtro]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[sharepoint]]></category>
		<category><![CDATA[webpart]]></category>
		<category><![CDATA[xsl]]></category>

		<guid isPermaLink="false">http://www.diplod.it/?p=938</guid>
		<description><![CDATA[Il concetto è semplice: ho una lista calendario in Sharepoint e voglio ottenere una dataview in grado di filtrare gli avvenimenti occorsi in un dato intervallo di tempo. A cosa può servire? Immaginiamo che il calendario in questione serva per segnare le ferie degli utenti e qualcuno sia interessato a vedere quante persone sono in [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Il concetto è semplice: ho una lista calendario in Sharepoint e voglio ottenere una dataview in grado di filtrare gli avvenimenti occorsi in un dato intervallo di tempo.</strong> A cosa può servire? Immaginiamo che il calendario in questione serva per segnare le ferie degli utenti e qualcuno sia interessato a vedere quante persone sono in ferie oggi, oppure dal 25 dicembre al 6 gennaio, per organizzare meglio il proprio lavoro..</p>
<p>Che ci sarà di così difficile? Nulla, se non il fatto che WSS è davvero poco user friendly quando si tratta di date.</p>
<p>Le prime cose da sapere riguardano la manipolazione delle date con XSL, bisogna <a title="Date con XSL" href="http://msdn.microsoft.com/en-us/library/ms256099.aspx" target="_blank">partire dalle basi</a> e poi da <a title="Date con XSL - esempi" href="http://mdasblog.wordpress.com/2008/02/19/comparing-dates-in-sharepoint-using-xsl/" target="_blank">qualche esempio</a>. Le date gestite su Sharepoint sono la <em>@EventDate</em> (data di inizio) e la <em>@EndDate</em> (data fine) e vengono restituite generalmente nel formato seguente: <em>2009-25-19T11:15:02Z</em>.</p>
<p>Ovviamente l&#8217;ambiente di lavoro è <strong>Sharepoint Designer</strong>. Per prima cosa, una volta creata la nuova <strong>dataview</strong> webpart, bisogna associargli un form (una DataForm WebPart) tramite il quale passare gli intervalli di selezione delle date. Pubblico subito il codice sorgente di questo form:</p>
<p><span id="more-938"></span></p>
<p><code>&lt;SCRIPT type="text/javascript" src="dhtmlgoodies_calendar/dhtmlgoodies_calendar.js?random=20060118"&gt;&lt;/script&gt;<br />
&lt;link type="text/css" rel="stylesheet" href="dhtmlgoodies_calendar/dhtmlgoodies_calendar.css?random=20051112" media="screen"&gt;&lt;/LINK&gt;<br />
&lt;table&gt;<br />
&lt;script language="JavaScript"&gt;<br />
function setStartTimeNow()<br />
{<br />
var d = new Date();<br />
var currYear = d.getFullYear();<br />
var currMonth = d.getMonth() + 1;<br />
var currDate = d.getDate();<br />
var currHour = d.getHours();<br />
var currMin = d.getMinutes();<br />
timeA = currYear + "" + currMonth + "" + currDate + "0001";<br />
timeB = currYear + "" + currMonth + "" + currDate + "2359";<br />
theInputA = document.getElementById('dataa');<br />
theInputA.value = timeA;<br />
theInputB = document.getElementById('datab');<br />
theInputB.value = timeB;<br />
}<br />
&lt;/script&gt;<br />
&lt;tr&gt;&lt;td&gt;Data e ora Inizio: &lt;/td&gt;&lt;td&gt;&lt;td&gt;&lt;input id="dataa" type="text" value="" readonly name="<strong>T1</strong>"&gt;&lt;input type="button" value="Seleziona data e ora.." onclick="displayCalendar(document.getElementById('dataa'),'<strong>yyyymmddhhii</strong>',this,true)"&gt;&lt;/td&gt;&lt;/tr&gt;<br />
&lt;tr&gt;&lt;td&gt;Data e ora Fine: &lt;/td&gt;&lt;td&gt;&lt;td&gt;&lt;input id="datab" type="text" value="" readonly name="<strong>T2</strong>"&gt;&lt;input type="button" value="Seleziona data e ora.." onclick="displayCalendar(document.getElementById('datab'),'<strong>yyyymmddhhii</strong>',this,true)"&gt;&lt;/td&gt;&lt;/tr&gt;<br />
&lt;/table&gt;<br />
&lt;br/&gt;<br />
&lt;input type="button" value="Voglio sapere gli assenti di oggi.." onclick="setStartTimeNow()"/&gt;<br />
&lt;input type="button" value="Mostra Risultati" onclick="javascript:_SFSUBMIT_"/&gt;</code></p>
<p>Per creare questo form ho utilizzato il comodissimo javascript <strong><a title="Date Picker Javascript" href="http://www.dhtmlgoodies.com/index.html?page=calendarScripts" target="_blank">dhtmlgoodies_calendar</a></strong>, che permette di avere il classico calendarietto tramite il quale selezionare la data. La particolarità è che il formato della data passato all&#8217;input element del form è del tipo <em>yyyymmddhhii</em>, ovvero vengono passate data e ora sottoforma di numero. Ad esempio, la data 25/12/2009 &#8211; 13:52, viene passata come 200912251352. In questo modo sarà possibile confrontarla con altre date tramite gli operatori logici (maggiore, minore, uguale..).<br />
T1 e T2 sono i parametri del form che verranno connessi alla web part XML.</p>
<p>Veniamo ora al dunque della web part che deve mostrare i dati, tramite Sharepoint Designer è necessario attivare due parametri: che chiameremo per comodità T1 e T2 (esattamente come gli elementi del form).</p>
<p><img class="size-full wp-image-939 alignnone" title="spdesigner" src="http://www.diplod.it/wp-content/uploads/2009/12/spdesigner.png" alt="spdesigner" width="680" height="400" /></p>
<p>Una volta fatto ciò, il grosso del lavoro sta tutto nell&#8217;impostare correttamente il filtro attraverso una espressione XSL. Prima il codice, poi i commenti:</p>
<p><code>&lt;xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row[ ( ddwrt:FormatDateTime(string(@EventDate) ,1033 ,'yyyyMMddHHmm') &amp;lt;= $T1 and ddwrt:FormatDateTime(string(@EndDate) ,1033 ,'yyyyMMddHHmm') &amp;gt;= $T1 )  or  ( ddwrt:FormatDateTime(string(@EventDate) ,1033 ,'yyyyMMddHHmm') &amp;lt;= $T2 and ddwrt:FormatDateTime(string(@EndDate) ,1033 ,'yyyyMMddHHmm') &amp;gt;= $T2 )  or  ( ddwrt:FormatDateTime(string(@EventDate) ,1033 ,'yyyyMMddHHmm') &amp;gt;= $T1 and ddwrt:FormatDateTime(string(@EndDate) ,1033 ,'yyyyMMddHHmm') &amp;lt;= $T2 ) ]"/&gt;</code></p>
<p>Cosa fa questa funzione? Posto che i parametri T1 e T2 identificano rispettivamente la data di inizio e la data di fine dell&#8217;intervallo di selezione (il periodo per cui vogliamo sapere chi era assente), il codice del filtro trasforma tutte le date nel formato numerico descritto sopra, e le confronta in base ai parametri T1 e T2, verificando se esistono eventi iniziati prima della data T1 e ancora in corso nell&#8217;intervallo [T1;T2], iniziati e conclusi all&#8217;interno dell&#8217;intervallo oppure iniziati in [T1;T2] e con conclusione dopo T2. In questo modo si ottiene la lista di tutti gli assenti all&#8217;interno di un determinato periodo, anche degli assenti per solo alcuni giorni e non per tutto l&#8217;intervallo stesso.</p>
<p><img class="alignnone size-full wp-image-947" title="webpart" src="http://www.diplod.it/wp-content/uploads/2009/12/maschera2.png" alt="webpart" width="600" height="336" /></p>
<p>Nota bene, in linea di massima anche questo filtro dovrebbe essere corretto:</p>
<p><code>&lt;xsl:variable name="Rows" select="/dsQueryResponse/Rows/Row[ ( substring(translate(translate(translate(translate(@EventDate,'-',''),':',''),'T',''),'Z',''),1,12) &amp;lt;= $T1 and substring(translate(translate(translate(translate(@EndDate,'-',''),':',''),'T',''),'Z',''),1,12) &amp;gt;= $T1 )  or  ( substring(translate(translate(translate(translate(@EventDate,'-',''),':',''),'T',''),'Z',''),1,12) &amp;lt;= $T2 and substring(translate(translate(translate(translate(@EndDate,'-',''),':',''),'T',''),'Z',''),1,12) &amp;gt;= $T2 )  or  ( substring(translate(translate(translate(translate(@EventDate,'-',''),':',''),'T',''),'Z',''),1,12) &amp;gt;= $T1 and substring(translate(translate(translate(translate(@EndDate,'-',''),':',''),'T',''),'Z',''),1,12) &amp;lt;= $T2 ) ]"/&gt;</code></p>
<p>La funzione <em>translate</em> depura la stringa della data dai vari caratteri e lascia solo 14 numeri, la funzione <em>substring</em> leva gli ultimi due numeri (relativi ai secondi dell&#8217;ora della data). Ma così non funziona, per un qualche strano motivo Sharepoint anticipa di un&#8217;ora la data di tutti gli eventi, e ciò che concettualmente era infallibile, decade durante la prova effettiva, con buona pace per tutto il tempo trascorso sopra a ragionarci.. Argh!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2009/12/28/dataview-che-filtra-per-data-gli-elementi-di-una-lista-sharepoint-che-fatica/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sharepoint: nascondere campi nei form tramite javascript</title>
		<link>http://www.diplod.it/2009/11/20/sharepoint-nascondere-campi-nei-form-tramite-javascript/</link>
		<comments>http://www.diplod.it/2009/11/20/sharepoint-nascondere-campi-nei-form-tramite-javascript/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 05:37:38 +0000</pubDate>
		<dc:creator>Davide</dc:creator>
				<category><![CDATA[Ajax e Javascript]]></category>
		<category><![CDATA[Sharepoint]]></category>
		<category><![CDATA[fields]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[liste]]></category>
		<category><![CDATA[sharepoint]]></category>
		<category><![CDATA[webdesign]]></category>

		<guid isPermaLink="false">http://www.diplod.it/?p=908</guid>
		<description><![CDATA[Tutto inizia da questo interminabile quanto esaustivo articolo: utilizzare un javascript per nascondere i campi nel form di inserimento (NewForm.aspx) oppure dal form di visualizzazione (DispForm.aspx) di una lista Sharepoint.
L'utilità? Lasciare ai soli amministratori la possibilità di editing di determinati campi.
Ecco come utilizzare al meglio il javascript!]]></description>
			<content:encoded><![CDATA[<p>Tutto inizia da questo <a title="Sharepoint - hide form fields using javascript" href="http://www.cleverworkarounds.com/2008/02/07/more-sharepoint-branding-customisation-using-javascript-part-1/" target="_blank">interminabile quanto esaustivo articolo</a>: utilizzare un javascript per nascondere i campi nel form di inserimento (<em>NewForm.aspx</em>) oppure dal form di visualizzazione (<em>DispForm.aspx</em>) di una lista <strong>Sharepoint</strong>.</p>
<p>L&#8217;<strong>utilità</strong>? Lasciare ai soli amministratori la <strong>possibilità di editing di determinati campi</strong>.</p>
<p>Questo il codice di base proposto:</p>
<p><code>&lt;script language="javascript" type="text/javascript"&gt;<br />
_spBodyOnLoadFunctionNames.push("avvioControlli");<br />
function avvioControlli() {<br />
hideFields();<br />
}<br />
function findacontrol(FieldName) {<br />
   var arr = document.getElementsByTagName("!");<br />
   // get all comments<br />
   for (var i=0;i &lt; arr.length; i++ )<br />
   {<br />
      // now match the field name<br />
      if (arr[i].innerHTML.indexOf(FieldName) &gt; 0)<br />
      {         return arr[i];      }<br />
   }<br />
}<br />
function hideFields() {<br />
   var control = findacontrol("Stato");<br />
   control.parentNode.parentNode.style.display="none";<br />
   control = findacontrol("Comments");<br />
   control.parentNode.parentNode.style.display="none";<br />
}<br />
&lt;/script&gt;</code></p>
<p><span id="more-908"></span></p>
<p>Dove si mette? Appena soto al <em>PlaceHolderMain</em>, nella pagina <em>NewForm.aspx</em> della relativa lista, tramite <strong>Sharepoint Designer</strong>: una figura vale più di mille parole. Dopo aver aperto l&#8217;albero della lista su Sharepoint Designer, è sufficiente editare il codice della pagina.</p>
<p><img class="aligncenter size-full wp-image-909" title="Sharepoint Designer" src="http://www.diplod.it/wp-content/uploads/2009/11/Cattura1.PNG" alt="Sharepoint Designer" width="896" height="409" /></p>
<p>L&#8217;approccio è perfetto e geniale, il javascript non fa altro che ricercare nel documento i commenti per poi oscurare tramite una proprietà CSS la visualizzazione. Ci sono però alcuni difetti su questo codice: piace a internet explorer e non agli altri browser.<br />
Ecco allora <strong>come modificarlo per renderlo compatibile</strong> con i vari Firefox, Chrome e compagnia bella:</p>
<p><code>&lt;script language="javascript" type="text/javascript"&gt;<br />
_spBodyOnLoadFunctionNames.push("avvioControlli");<br />
function avvioControlli() {<br />
hideFields();<br />
}<br />
function findacontrol(FieldName) {<br />
//se browser Internet Explorer cerco i commenti<br />
if (navigator.userAgent.indexOf("MSIE")!=-1) {<br />
   var arr = document.getElementsByTagName("!");<br />
   // get all comments<br />
   for (var i=0;i &lt; arr.length; i++ )<br />
   {<br />
      // now match the field name<br />
      if (arr[i].innerHTML.indexOf(FieldName) &gt; 0)<br />
      {         return arr[i];      }<br />
   }<br />
   }<br />
//se browser diverso da Internet Explorer cerco i titoletti<br />
   else {<br />
   var arr = document.getElementsByTagName("H3");<br />
   // get all comments<br />
   for (var i=0;i &lt; arr.length; i++ )<br />
   {<br />
      // now match the field name<br />
      if (arr[i].innerHTML.indexOf(FieldName) &gt; 0)<br />
      {         return arr[i];      }<br />
   }<br />
}<br />
}<br />
function hideFields() {<br />
   var control = findacontrol("Stato");<br />
   control.parentNode.parentNode.style.display="none";<br />
var control = findacontrol("Comments");<br />
   control.parentNode.parentNode.style.display="none";<br />
}<br />
&lt;/script&gt;</code></p>
<p>Se poi volessi piazzare da qualche parte un pulsantino per far riapparire questi campi, magari solo per determinati utenti, sarà sufficiente creare questa funzione:</p>
<p><code>function showFields() {<br />
   var control = findacontrol("Stato");<br />
   control.parentNode.parentNode.style.display="block";<br />
var control = findacontrol("Comments");<br />
   control.parentNode.parentNode.style.display="block";<br />
}</code></p>
<p><strong>Buona personalizzazione!</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2009/11/20/sharepoint-nascondere-campi-nei-form-tramite-javascript/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPress: creare uno sliseshow con gli articoli in rilievo stile magazine</title>
		<link>http://www.diplod.it/2009/09/06/wordpress-creare-uno-sliseshow-con-gli-articoli-in-rilievo-stile-magazine/</link>
		<comments>http://www.diplod.it/2009/09/06/wordpress-creare-uno-sliseshow-con-gli-articoli-in-rilievo-stile-magazine/#comments</comments>
		<pubDate>Sat, 05 Sep 2009 23:19:02 +0000</pubDate>
		<dc:creator>Davide</dc:creator>
				<category><![CDATA[Ajax e Javascript]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[magazine]]></category>
		<category><![CDATA[notizie]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[slideshow]]></category>
		<category><![CDATA[webdesign]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.diplod.it/?p=845</guid>
		<description><![CDATA[Quante volte abbiamo visto siti di magazine dotati di spettacolari slideshow a centro pagina che presentano gli ultimi articoli con immagini a ripetizione? La soluzione che propongo in questo articolo pubblica invece la prima foto allegata al post e la fa girare a rotazione assieme al titolo e all'excerpt (il riassunto). Il risultato finale è visibile in una demo.]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;">
<p style="text-align: center; "><img class="size-full wp-image-851  aligncenter" title="Anteprima Slideshow" src="http://www.diplod.it/wp-content/uploads/2009/08/demo.png" alt="Anteprima Slideshow WordPress" width="430" height="312" /></p>
<p>Quante volte abbiamo visto <strong>siti di magazine</strong> dotati di <strong>spettacolari slideshow</strong> a centro pagina che presentano gli <strong>ultimi articoli</strong> con immagini a ripetizione? Basta guardare il sito di <a title="Wired Italia" href="http://www.wired.it/" target="_blank">wired</a> o dell&#8217;<a title="Economist" href="http://www.economist.com/" target="_blank">Economist</a>.. Molti temi wordpress per magazine presentano soluzioni di questo tipo, spesso però pescano le immagini da presentare tra i <em>custom fields</em> di wordpress.</p>
<p>La soluzione che propongo in questo articolo pubblica invece la prima foto allegata al post e la fa girare a rotazione assieme al titolo e all&#8217;excerpt (il riassunto). <strong>Il risultato finale è <a title="diploD Magazine Demo" href="http://lab.diplod.it/demo/index.php?wptheme=diploD%20Magazine" target="_blank">visibile in questa demo</a></strong>.</p>
<p>Per fare il tutto ho scelto un javascript gratuito: <a title="Slideshow javascript" href="http://www.electricprism.com/aeron/slideshow/" target="_blank">Slideshow2!</a> Grazie a questa splendida classe per <a title="Mootools" href="http://mootools.net/" target="_blank">Mootools</a> è possibile creare in pochi istanti effetti davvero accattivanti.<br />
Ci sono diversi  plugin per wordpress in giro che utilizzano i più noti script per generare slideshow e gallerie, ma tutti quelli che ho visto servono per creare una gallery a partire da un singolo post. Il mio obbiettivo era diverso: <strong>creare uno slideshow con la prima immagine degli ultimi articoli pubblicati</strong>. Vediamo come fare..</p>
<p><span id="more-845"></span></p>
<p>Prima di tutto il codice.</p>
<p><code>&lt;link rel="stylesheet" type="text/css" href="&lt;?php bloginfo('template_url'); ?&gt;/css/slideshow.css" media="screen" /&gt;<br />
&lt;script type="text/javascript" src="&lt;?php bloginfo('template_url'); ?&gt;/js/mootools.js"&gt;&lt;/script&gt;<br />
&lt;script type="text/javascript" src="&lt;?php bloginfo('template_url'); ?&gt;/js/slideshow.js"&gt;&lt;/script&gt;<br />
</code></p>
<p>Questa prima parte va aggiunta nell&#8217;elemento &lt;head&gt;, nel file <em>header.php</em> del template wordpress. Non fa altro che caricare un file CSS, la libreria mootools e lo script slideshow. Sempre all&#8217;interno dell&#8217;elemento &lt;head&gt; va inserito il codice sottostante. Si può posizionare questa porzione di codice anche appena prima del <em>div</em> in cui si desidera far apparire lo slideshow, tipicamente nel file <em>index.php</em> del template wordpress.</p>
<p><code>&lt;script type="text/javascript"&gt;<br />
//&lt;![CDATA[<br />
window.addEvent('domready', function(){<br />
var data = {<br />
&lt;?php $temp_query3 = $wp_query; ?&gt;<br />
&lt;?php query_posts('<strong>showposts=5&amp;cat=4</strong>'); ?&gt;<br />
&lt;?php if (have_posts()) : ?&gt;<br />
&lt;?php $conta=0; ?&gt;<br />
&lt;?php while (have_posts()) : the_post(); ?&gt;<br />
&lt;?php<br />
// Rileva ID del post<br />
$iPostID = $post-&gt;ID;<br />
// Rileva immagini per questo post<br />
$arrImages =&amp; get_children('post_type=attachment&amp;post_mime_type=image&amp;post_parent=' . $iPostID );<br />
// Se esistono immagini allegate al post<br />
if($arrImages) {<br />
// Rileva array con le chiavi che rappresentano le immagini allegate<br />
$arrKeys = array_keys($arrImages);<br />
// Rileva la prima immagine allegata<br />
$iNum = $arrKeys[0];<br />
// Rileva url thumbnail<br />
// $sThumbUrl = wp_get_attachment_thumb_url($iNum);<br />
// Rileva url full-size<br />
$sUrl = wp_get_attachment_image_src($iNum,'full');<br />
// Rileva excerpt - riassunto del post<br />
$descrizione = get_the_excerpt();<br />
// Rimpiazza caratteri particolari<br />
$descrizione = str_replace("'", "\'", $descrizione);<br />
$descrizione = str_replace("\n", " ", $descrizione);<br />
?&gt;<br />
&lt;?php if ($conta&gt;0) { ?&gt;, &lt;?php } ?&gt;&lt;?php } ?&gt;&lt;?php $conta++; ?&gt;<br />
'&lt;?php echo($sUrl[0]) ?&gt;': { caption: '&lt;p&gt;&lt;a href="&lt;?php the_permalink() ?&gt;" rel="bookmark" title="Permanent Link a &lt;?php the_title(); ?&gt;"&gt;&lt;?php the_title(); ?&gt;&lt;/a&gt;&lt;br/&gt;&lt;?php echo($descrizione) ?&gt;&lt;/p&gt;' }</code></p>
<p><code> &lt;?php } ?&gt;<br />
&lt;?php endwhile; ?&gt;<br />
&lt;?php endif; ?&gt;<br />
&lt;?php //Reset Query<br />
wp_reset_query(); ?&gt;<br />
};<br />
var myShow = new Slideshow('<strong>show</strong>', data, {captions: true, controller: true, delay: 5000, duration: 2000, height: 300, thumbnails: false, width: 780});<br />
});<br />
//]]&gt;<br />
&lt;/script&gt;</code></p>
<p>Questa seconda parte serve per far apparire lo slideshow nel <em>div</em> con <em>ID=&#8221;show&#8221;</em>. All&#8217;inizio vengono indicati il numero di post e la categoria relativa che si desidera far apparire, nella funzione <em>query_posts()</em>. Il codice è ben commentato e non fa altro che rilevare la prima immagine di ogni post per pubblicarla assieme al titolo e al riassunto del post.<br />
La parte HTML necessaria all&#8217;interno del &lt;body&gt; è questa:</p>
<p><code>&lt;div id="show"&gt;<br />
&lt;img src="&lt;?php bloginfo('template_url'); ?&gt;/images/default.jpg" alt="welcome" /&gt;<br />
&lt;/div&gt;</code></p>
<p>Dove come <em>default.jpg</em> verrà caricata una immagine standard, utile nel caso non ci siano articoli da visualizzare oppure l&#8217;utente abbia disabilitato javascript.<br />
Per aggiungere l&#8217;<strong>effetto di zoom in movimento</strong> è possibile utilizzare l&#8217;estensione kenburns dello script Slideshow. Caricando nell&#8217; &lt;head&gt; un altro javascrip:</p>
<p><code>&lt;script type="text/javascript" src="&lt;?php bloginfo('template_url'); ?&gt;/js/slideshow.kenburns.js"&gt;&lt;/script&gt;</code></p>
<p>e modificando le ultime righe dello script sopra in questo modo:</p>
<p><code>var myShow = new Slideshow.KenBurns('show', data, {captions: true, controller: true, delay: 5000, duration: 2000, height: 300, thumbnails: false, width: 670, zoom: 50, pan: [25, 75]});</code></p>
<p>Le proprietà di <em>zoom</em> e <em>pan</em> sono da regolare per ottenere effetti diversi.</p>
<p>Il <strong>risultato HTML</strong> è il seguente:</p>
<p><code>&lt;script type="text/javascript" src="http://lab.diplod.it/demo/wp-content/themes/diplo-magazine/js/slideshow.kenburns.js"&gt;&lt;/script&gt;<br />
&lt;script type="text/javascript"&gt;<br />
//&lt;![CDATA[<br />
<span style="white-space: pre;"> </span>window.addEvent('domready', function(){<br />
<span style="white-space: pre;"> </span>//avvio slideshow<br />
<span style="white-space: pre;"> </span>var data = {<br />
<span style="white-space: pre;"> </span>'http://lab.diplod.it/demo/wp-content/uploads/2009/08/3691087551_74e61f4da0_b.jpg': { caption: '&lt;p&gt;&lt;a href="http://lab.diplod.it/demo/2009/08/29/campo-di-grano/" rel="bookmark" title="Permanent Link a Campo di Grano"&gt;Campo di Grano&lt;\/a&gt;&lt;br/&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.&lt;\/p&gt;' },<br />
<span style="white-space: pre;"> </span> 'http://lab.diplod.it/demo/wp-content/uploads/2009/08/3691896442_cafb3a1487_b.jpg': { caption: '&lt;p&gt;&lt;a href="http://lab.diplod.it/demo/2009/08/29/le-braccia-del-costruttore/" rel="bookmark" title="Permanent Link a Le braccia del Costruttore"&gt;Le braccia del Costruttore&lt;\/a&gt;&lt;br/&gt;Le braccia del costruttore ha un riassunto molto breve..&lt;\/p&gt;' },<br />
<span style="white-space: pre;"> </span> 'http://lab.diplod.it/demo/wp-content/uploads/2009/08/3166795508_d5cd33c968_b.jpg': { caption: '&lt;p&gt;&lt;a href="http://lab.diplod.it/demo/2009/08/29/secondo-articolo-in-rilievo/" rel="bookmark" title="Permanent Link a Secondo Articolo in Rilievo"&gt;Secondo Articolo in Rilievo&lt;\/a&gt;&lt;br/&gt;Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem&lt;\/p&gt;' },<br />
<span style="white-space: pre;"> </span> 'http://lab.diplod.it/demo/wp-content/uploads/2009/08/3691094985_4327680ea2_b.jpg': { caption: '&lt;p&gt;&lt;a href="http://lab.diplod.it/demo/2009/08/29/primo-articolo-in-rilievo/" rel="bookmark" title="Permanent Link a Primo articolo in Rilievo"&gt;Primo articolo in Rilievo&lt;\/a&gt;&lt;br/&gt; Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat [...]&lt;\/p&gt;' },<br />
<span style="white-space: pre;"> </span> };<br />
<span style="white-space: pre;"> </span> var myShow = new Slideshow.KenBurns('show', data, {captions: true, controller: true, delay: 5000, duration: 2000, height: 300, thumbnails: false, width: 670, zoom: 50, pan: [25, 75]});<br />
<span style="white-space: pre;"> </span> });<br />
<span style="white-space: pre;"> </span> //]]&gt;<br />
&lt;/script&gt;</code></p>
<p>Per quanto riguarda il <strong>CSS</strong>, quello proposto assieme allo script è sicuramente un buon <strong>punto di partenza</strong>, da sistemare se si vogliono cambiare le dimensioni del <em>div</em> che presenta lo slideshow.</p>
<p><strong>Buon design a tutti..</strong></p>
<p>PS: Nel caso in cui qualcuno si stesse domandando da dove provenga il design della demo sopra.. beh: seguite questo blog, prossimamente arriverà un tema wordpress in stile magazine, completamente personalizzabile dal pannello di amministrazione e soprattutto italianissimo. ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2009/09/06/wordpress-creare-uno-sliseshow-con-gli-articoli-in-rilievo-stile-magazine/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>Google Earth Plugin: visualizzare KML su una pagina web HTML</title>
		<link>http://www.diplod.it/2009/08/16/google-earth-plugin-visualizzare-kml-su-una-pagina-web-html/</link>
		<comments>http://www.diplod.it/2009/08/16/google-earth-plugin-visualizzare-kml-su-una-pagina-web-html/#comments</comments>
		<pubDate>Sun, 16 Aug 2009 18:55:18 +0000</pubDate>
		<dc:creator>Davide</dc:creator>
				<category><![CDATA[Ajax e Javascript]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[KML]]></category>
		<category><![CDATA[mappe]]></category>
		<category><![CDATA[nokia]]></category>

		<guid isPermaLink="false">http://www.diplod.it/?p=791</guid>
		<description><![CDATA[Da qualche tempo è disponibile un plugin che permette di portare Google Earth direttamente sulle pagine web, grazie alle Google Earth API. E' infatti possibile inserire in una pagina web una finestra che visualizza il famoso mondo 3D, caricando un file KML.
]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-full wp-image-830 aligncenter" title="earth-plugin" src="http://www.diplod.it/wp-content/uploads/2009/08/earth-plugin.PNG" alt="earth-plugin" width="440" height="335" /></p>
<p><strong>Google Earth</strong> è diventato ormai uno strumento dalle mille potenzialità: esplorazione degli oceani, fotografie, edifici e terreni in 3D, visione dei luoghi nel tempo, registrazione dello schermo, sono solo alcune delle <a href="http://www.youtube.com/watch?v=H9obSjSxC98" target="_blank">meraviglie del prodotto</a>.</p>
<p>La possibilità di <a title="KML" href="http://earth.google.it/userguide/v4/ug_kml.html" target="_blank">utilizzare file <strong>KML</strong></a> generati da altri è un&#8217;altra delle cose che rendono Google Earth uno strumento eccezionale per far visualizzare percorsi, itinerari, foto dei luoghi e quant&#8217;altro. Le <strong>informazioni geolocalizzate</strong> permettono di dare al fruitore un contributo unico: vedere i posti vale molto di più che descriverli.</p>
<p>Ebbene, da qualche tempo è disponibile un plugin che permette di portare Google Earth direttamente sulle pagine web, grazie alle <a title="Google earth API" href="http://code.google.com/intl/it-IT/apis/earth/" target="_blank">Google Earth API</a>. E&#8217; infatti possibile inserire in una pagina web una finestra che visualizza il famoso mondo 3D, caricando un file KML.<br />
Nel futuro non saremo più legati al 2D delle famosissime mappe di Google, ma potremo creare mashup direttamente in 3D. Gli <strong><a href="http://code.google.com/apis/ajax/playground/?exp=earth#hello,_earth">esempi di codice</a></strong> sono davvero vasti e ben documentati.</p>
<p><span id="more-791"></span></p>
<p>Ecco il codice dell&#8217;esempio sotto, commentato nel javascript che carica il plugin:<br />
<code>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;<br />
&lt;html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="it-IT"&gt;<br />
&lt;head&gt;<br />
&lt;title&gt;Esempio Plugin Google Earth con file KML&lt;/title&gt;<br />
&lt;script src="http://www.google.com/jsapi?key=LaTuaAPIKey"&gt;&lt;/script&gt;<br />
&lt;script type="text/javascript"&gt;<br />
var ge;<br />
google.load("earth", "1");<br />
//inizializza la mappa prendendo come riferimento l'ID del div che la contiene: map3d<br />
function init() {<br />
google.earth.createInstance('map3d', initCallback, failureCallback);<br />
}<br />
function initCallback(instance) {<br />
ge = instance;<br />
ge.getWindow().setVisibility(true);<br />
// aggiunge i controlli di navigazione<br />
ge.getNavigationControl().setVisibility(ge.VISIBILITY_AUTO);<br />
// aggiunge alcuni livelli: confini e strade<br />
ge.getLayerRoot().enableLayerById(ge.LAYER_BORDERS, true);<br />
ge.getLayerRoot().enableLayerById(ge.LAYER_ROADS, true);<br />
// codice per caricare e far visualizzare il file KML<br />
function finished(object) {<br />
if (!object) {<br />
// Gestione degli errori per prevenire i deadlock di alcuni browsers<br />
setTimeout(function() {<br />
alert('Bad or null KML.');<br />
}, 0);<br />
return;<br />
}<br />
ge.getFeatures().appendChild(object);<br />
// imposta latitudine, longitudine e zoom<br />
var la = ge.createLookAt('');<br />
la.set(44.258300, 10.411550, 25, ge.ALTITUDE_RELATIVE_TO_GROUND,<br />
0, 70, 400);<br />
ge.getView().setAbstractView(la);<br />
}<br />
// carica il file KML<br />
var url = 'http://www.diplod.it/wp-content/uploads/2009/08/AlbaCusna.kml';<br />
google.earth.fetchKml(ge, url, finished);<br />
document.getElementById('installed-plugin-version').innerHTML =<br />
ge.getPluginVersion().toString();<br />
}<br />
function failureCallback(errorCode) {<br />
}<br />
google.setOnLoadCallback(init);<br />
&lt;/script&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;div id="map3d" style="width: 500px; height: 380px;"&gt;&lt;/div&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</code><br />
Ovviamente per far andare il tutto è necessario <a title="Google API Key" href="http://code.google.com/intl/it-IT/apis/maps/signup.html" target="_blank">ottenere una API Key</a>, fornita gratuitamente da Google per il proprio dominio.<br />
Il giochino è davvero meraviglioso, ecco come appare il tutto:</p>
<p><iframe src ="http://www.diplod.it/test/test2.html" width="540" height="400" frameborder="no"></p>
<p>Il tuo browser non supporta gli iframes.</p>
<p></iframe></p>
<p>Se vi interessa sapere come ho fatto a generare questo file KML, <a title="Nokia Sport Tracker" href="http://sportstracker.nokia.com" target="_blank">provate a sbirciare qui</a>: con un cellulare Nokia potrebbe aprirsi un altro mondo.. ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2009/08/16/google-earth-plugin-visualizzare-kml-su-una-pagina-web-html/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Un menu duttile, con un po&#8217; di javascript e css</title>
		<link>http://www.diplod.it/2009/06/02/un-menu-duttile-con-un-po-di-javascript-e-css/</link>
		<comments>http://www.diplod.it/2009/06/02/un-menu-duttile-con-un-po-di-javascript-e-css/#comments</comments>
		<pubDate>Tue, 02 Jun 2009 22:43:45 +0000</pubDate>
		<dc:creator>Davide</dc:creator>
				<category><![CDATA[Ajax e Javascript]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[menu]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[segnalazione]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.diplod.it/?p=771</guid>
		<description><![CDATA[Arrivano le feste e finalmente c'è tempo per dedicarsi a ciò che più piace. JQuery e un pizzico di CSS sono sufficienti per rendere accattivante un menù, creando tendine a cascata sul mouse-hover o affascinanti barre di navigazione, perfette per i menù in stile magazine. Tutta la faccenda è frutto di un comodo plugin di jquery: superfish.]]></description>
			<content:encoded><![CDATA[<p>Arrivano le feste e finalmente c&#8217;è tempo per dedicarsi a ciò che più piace. <a title="JQuery" href="http://jquery.com/" target="_blank"><strong>JQuery</strong></a> e un pizzico di <strong>CSS</strong> sono sufficienti per rendere accattivante un menù, creando <strong>tendine a cascata</strong> sul mouse-hover o affascinanti <strong>barre di navigazione</strong>, perfette per i menù in stile magazine. Tutta la faccenda è frutto di un comodo plugin di jquery: <a title="Superfish" href="http://users.tpg.com.au/j_birch/plugins/superfish/" target="_blank">superfish</a>.</p>
<p>Per vederlo subito all&#8217;opera basta dare un&#8217;occhiata agli <a title="Demo Superfish" href="http://users.tpg.com.au/j_birch/plugins/superfish/#sample1" target="_blank">esempi che ci sono sul sito ufficiale</a>.</p>
<p>Questo plugin torna veramente utile se accoppiato ai classici menù per wordpress, dove tipicamente la sintassi html è la seguente:</p>
<p><code>&lt;ul <strong>class="sf-menu"</strong>&gt;<br />
&lt;li class="page_item"&gt;&lt;a href="#" title="Home"&gt;Home&lt;/a&gt;&lt;/li&gt;<br />
&lt;li class="page_item page-item-1"&gt;&lt;a href="#" title="About"&gt;About&lt;/a&gt;<br />
&lt;ul&gt;<br />
&lt;li class="page_item page-item-2"&gt;&lt;a href="#" title="Sottopagina Uno"&gt;Sottopagina Uno&lt;/a&gt;&lt;/li&gt;<br />
&lt;li class="page_item page-item-3"&gt;&lt;a href="#" title="Sottopagina Due"&gt;Sottopagina Due&lt;/a&gt;&lt;/li&gt;<br />
&lt;/ul&gt;<br />
&lt;/li&gt;<br />
&lt;li class="page_item page-item-4"&gt;&lt;a href="#" title="Contatti"&gt;Contatti&lt;/a&gt;<br />
&lt;/ul&gt;</code></p>
<p>Questa sintassi viene generata dalla funzione <a title="wordpress codex" href="http://codex.wordpress.org/Template_Tags/wp_list_pages" target="_blank">wp_list_pages()</a>, indicando come argomento depth=2. E&#8217; sufficiente assegnare la classe &#8220;sf-menu&#8221; alla lista (&lt;ul&gt;) che compone il menù e lo script farà il resto del lavoro, individuando le liste annidate e nascondendole. Quando l&#8217;utente passerà con il mouse sulla pagina padre, allora saranno mostrate a cascata le pagine figlie.</p>
<p>Ovviamente per far funzionare il tutto è necessario includere nella testata della pagina qualche riga di codice, per caricare jquery, il plugin e alcuni file css:</p>
<p><code>// link al file CSS<br />
&lt;link rel="stylesheet" type="text/css" media="screen" href="superfish.css" /&gt;<br />
// link al javascript (hoverIntent è opzonale)<br />
&lt;script type="text/javascript" src="hoverIntent.js"&gt;&lt;/script&gt;<br />
&lt;script type="text/javascript" src="superfish.js"&gt;&lt;/script&gt;<br />
// inizializzazione di Superfish, sf-menu è la classe su cui sarà attivo l'effetto<br />
&lt;script type="text/javascript"&gt;<br />
$(document).ready(function(){<br />
$("ul.sf-menu").superfish();<br />
});<br />
&lt;/script&gt;</code></p>
<p>I temi rilasciati su <a title="Elegantthemes" href="http://www.elegantthemes.com/" target="_blank">eleganthemes</a> fanno abbondantemente uso di questo plugin e gli effetti sono piuttosto gradevoli. Credo proprio che mi divertirò nei prossimi giorni.. <strong>Conoscete altri script altrettanto versatili e pronti all&#8217;uso?</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2009/06/02/un-menu-duttile-con-un-po-di-javascript-e-css/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Qualche prova con Google Books API</title>
		<link>http://www.diplod.it/2008/09/23/qualche-prova-con-google-books-api/</link>
		<comments>http://www.diplod.it/2008/09/23/qualche-prova-con-google-books-api/#comments</comments>
		<pubDate>Tue, 23 Sep 2008 08:59:53 +0000</pubDate>
		<dc:creator>Davide</dc:creator>
				<category><![CDATA[Ajax e Javascript]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[biblioteche]]></category>
		<category><![CDATA[google books]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[libri]]></category>
		<category><![CDATA[ricerca]]></category>
		<category><![CDATA[sviluppo web]]></category>

		<guid isPermaLink="false">http://www.diplod.it/?p=683</guid>
		<description><![CDATA[Google ha rilasciato le Google Books Search API: oggi è possibile integrare il visualizzatore di libri made in Google direttamente nei propri siti web. Per gli sviluppatori uno strumento in più.]]></description>
			<content:encoded><![CDATA[<p>Ogni tanto mi diverto giocherellando con le <acronym title="Application Programming Interface">API</acronym> di Google. Ultimamente <a title="google books api - google blog" href="http://googleblog.blogspot.com/2008/09/book-search-spreads-its-wings-with-new.html" target="_blank">sul blog ufficiale</a> è stata annunciata l&#8217;uscita delle <a title="API Google Books" href="http://code.google.com/apis/books/" target="_blank">API per Google Books</a>. Per gli <strong>sviluppatori</strong> significa l&#8217;<strong>opportunità di includere un visualizzatore di libri direttamente nel proprio sito web</strong>, penso subito ai siti di <strong>librerie on-line</strong>, <strong>biblioteche</strong>, ma anche piattaforme di <strong>e-learning</strong>. E&#8217; ciò che è successo su famosi siti di vendita libri, come Books-A-Million, dove <a title="books a million - anteprima google" href="http://www.booksamillion.com/product/9780738531366?id=4218541191991" target="_blank">dalla pagina di acquisto</a> è possibile vedere l&#8217;anteprima tramite il lettore di google. Stessa cosa hanno fatto alcuni siti di biblioteche universitarie, come quella della <a title="university of california - google books" href="http://melvyl-test.cdlib.org:8164/googlebooks.html" target="_blank">california</a> o del <a title="university of texas - google books" href="http://catalog.lib.utexas.edu/record=b1742456" target="_blank">texas</a>, e alcuni siti di autori o social network. Un bell&#8217;elenco con riferimenti dai quali prendere spunto si può trovare sul <a title="google books blog" href="http://booksearch.blogspot.com/2008/09/book-search-everywhere-with-new.html" target="_blank">blog ufficiale di Google Books</a>.</p>
<p>Per chi sviluppa siti web, l&#8217;inclusione di un visualizzatore è semplicissima. E&#8217; disponibile un <a title="google books - wizard" href="http://code.google.com/apis/books/docs/preview-wizard.html" target="_blank"><strong>wizard</strong></a> tramite il quale si può <strong>generare in automatico il codice da inserire nell&#8217;HTML</strong>, basta fare un copia&amp;incolla ed il gioco è fatto. Il risultato lo potete vedere qui sotto:</p>
<p><span id="more-683"></span></p>
<p><script src="http://books.google.com/books/previewlib.js" type="text/javascript"></script> <script type="text/javascript"><!--
GBS_setLanguage('it');
GBS_insertEmbeddedViewer('ISBN:8850326599',600,500);
// --></script></p>
<p>Ma le possibilità di personalizzazione vanno al di là del semplice javascript esterno, gli sviluppatori possono infatti intervenire direttamente sul codice seguento le istruzioni fornite nella <a title="google books api developer guide" href="http://code.google.com/apis/books/docs/viewer/developers_guide.html" target="_blank">pagina di documentazione delle API</a>, che illustra in maniera chiara come utilizzare le API. L&#8217;esempio base si capisce al volo:</p>
<p><code>&lt;!DOCTYPE html "-//W3C//DTD XHTML 1.0 Strict//EN"<br />
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;<br />
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;<br />
&lt;head&gt;<br />
&lt;meta http-equiv="content-type" content="text/html; charset=utf-8"/&gt;<br />
&lt;title&gt;Google Book Search Embedded Viewer API Example&lt;/title&gt;<br />
&lt;script type="text/javascript" src="http://www.google.com/jsapi"&gt;&lt;/script&gt;<br />
&lt;script type="text/javascript"&gt;<br />
google.load("books", "0");<br />
function initialize() {<br />
var viewer = new google.books.DefaultViewer(document.getElementById('viewerCanvas'));<br />
viewer.load('ISBN:0738531367');<br />
}<br />
google.setOnLoadCallback(initialize);<br />
&lt;/script&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;div id="viewerCanvas" style="width: 600px; height: 500px"&gt;&lt;/div&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
</code></p>
<p>Uno script richiamato nell&#8217;head e un div nel quale caricare il visualizzatore, impostandone le dimensioni. In questo modo si può integrare il lettore direttamente nel proprio layout, i libri da caricare sono identificabili tramite diversi parametri:</p>
<ul>
<li>codice ISBN (come nell&#8217;esempio sopra): è il codice internazionale che identifica una pubblicazione</li>
<li>OCLC: è il numero assegnato da <a title="OCLC" href="http://oclc.org/" target="_blank">OCLC</a> quando il libro viene pubblicato su <a title="worldcat" href="http://www.worldcat.org/" target="_blank">WorldCat</a></li>
<li>LCCN: codice assegnato dal <a title="LCCN - wikipedia" href="http://en.wikipedia.org/wiki/Library_of_Congress_Control_Number">Library of Congress</a></li>
<li>codice di Google Books Search: sia tramite l&#8217;id univoco che tramite l&#8217;url di visualizzazione del libro su <a title="google books search" href="http://books.google.com/" target="_blank">Books Search</a>.</li>
</ul>
<p>Chi vuole sbizzarrirsi è libero di farlo..</p>
<p>La <strong>digitalizzazione dei libri</strong> da parte di Google partì in sordina tra mille polemiche, oggi invece si rivela in tutta la sua utilità. Se penso alla <a title="biblioteca panizzi - reggio emilia" href="http://panizzi.comune.re.it/" target="_blank">biblioteca cittadina</a>, o ancora meglio alla <a title="biblioteca universitaria - reggio emilia" href="http://www.biblioreggio.unimore.it" target="_blank">biblioteca universitaria</a>; se solo avesse un sito che permetta la consultazione a distanza di un libro a catalogo, sarebbe sicuramente un <strong>valore aggiunto</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2008/09/23/qualche-prova-con-google-books-api/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google Chart API: grafici dinamici in un attimo</title>
		<link>http://www.diplod.it/2008/04/20/google-chart-api-grafici-dinamici-in-un-attimo/</link>
		<comments>http://www.diplod.it/2008/04/20/google-chart-api-grafici-dinamici-in-un-attimo/#comments</comments>
		<pubDate>Sun, 20 Apr 2008 17:49:15 +0000</pubDate>
		<dc:creator>Davide</dc:creator>
				<category><![CDATA[Ajax e Javascript]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[charts]]></category>
		<category><![CDATA[elezioni]]></category>
		<category><![CDATA[grafici]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mappe]]></category>

		<guid isPermaLink="false">http://www.diplod.it/2008/04/20/google-chart-api-grafici-dinamici-in-un-attimo/</guid>
		<description><![CDATA[Le Google API Charts sono un insieme di procedure disponibili ai programmatori web per ottenere dei grafici a partire da un semplice url. Si tratta forse delle &#8220;Application Programming Interface&#8221; più semplici mai messe a disposizione da Google. Il servizio è gratuito, è possibile utilizzarlo senza dover registrare nessuna API key (come invece avviene per [...]]]></description>
			<content:encoded><![CDATA[<p>Le <a href="http://code.google.com/apis/chart/" title="Google APIs Chart" target="_blank">Google API Charts</a> sono un insieme di procedure disponibili ai programmatori web per ottenere dei grafici a partire da un semplice url. Si tratta forse delle &#8220;Application Programming Interface&#8221; più semplici mai messe a disposizione da Google. Il servizio è <strong>gratuito</strong>, è possibile utilizzarlo senza dover registrare nessuna API key (come invece avviene per <a href="http://code.google.com/apis/maps/" title="Google Maps API" target="_blank">Google Maps API</a>) e non ci sono limiti di interrogazioni.</p>
<p>All&#8217;interno di un <strong>indirizzo web</strong> vengono passati i dati per la costruzione del grafico, sottoforma di <strong>parametri</strong>, e Google ci restituisce una immagine realizzata a partire da quei dati. Quale migliore occasione dei dati elettorali per fare qualche prova?</p>
<p>La <strong>documentazione</strong> (in inglese) è impeccabile, sono presenti un sacco di <strong>esempi</strong> che aiutano lo sviluppatore. Ho costruito la torta dei risultati elettorali del mio paese, sulla base di questo url.<br />
<code></p>
<p>http://chart.apis.google.com/chart?chs=800x300&amp;chd=t:0.88,4.1,0.27,0.43,2.96,23.69,6.69,2.19,0.46,4.55,52.33,0.51,0.58,0.37&amp;cht=p3&amp;chco=990000,ebebeb,d1dceb,000000,ff0000,0090ff,1db000,373737,fff94a,db4aff,31a142,ab4800,6e00a7,bc424b&amp;chl=PARTITO%20COMUNISTA%20LAVORATORI|UDC|PARTITO%20LIBERALE%20ITALIANO|FORZA%20NUOVA|LA%20SINISTRA%20L'ARCOBALENO|IL%20POPOLO%20DELLA%20LIBERTA'|LEGA%20NORD|LA%20DESTRA|UNIONE%20PER%20I%20CONSUMATORI|ITALIA%20DEI%20VALORI|PARTITO%20DEMOCRATICO|SINISTRA%20CRITICA|PER%20IL%20BENE%20COMUNE|PARTITO%20SOCIALISTA</p>
<p></code></p>
<p><span id="more-526"></span></p>
<p>Vediamolo commentato:<br />
<code></p>
<p>http://chart.apis.google.com/chart?</p>
<p>chs=800x300 &lt;!--dimensioni del grafico in pixel--&gt;<br />
&amp;chd=t:4.1,2.96,23.69,6.69,2.19,4.55,52.33,0.37,3.12 &lt;!--serie di dati: percentuali--&gt;<br />
&amp;cht=p3 &lt;!--tipo di grafico: a torta--&gt;<br />
&amp;chco=ebebeb,ff0000,0090ff,1db000,373737,db4aff,31a142,bc424b,ffcc00 &lt;!--colori delle fette--&gt; &amp;chl=UDC|SINISTRA%20L'ARCOBALENO|POPOLO%20DELLA%20LIBERTA'|LEGA%20NORD|LA%20DESTRA|ITALIA%20DEI%20VALORI|PARTITO%20DEMOCRATICO|PARTITO%20SOCIALISTA|ALTRI &lt;!--etichette dei dati--&gt;</code></p>
<p>Per ottenere l&#8217;immagine direttamente sulla pagina web, basta inserire l&#8217;url appena costruito nel tag &lt;img&gt; avendo cura di convertire i caratteri &#8216;&amp;&#8217; in &#8216;&amp;&#8217;, in questo modo:<br />
<code><br />
&lt;img src="http://chart.apis.google.com/chart?<br />
chs=800x300<br />
&amp;chd=t:4.1,2.96,23.69,6.69,2.19,4.55,52.33,0.37,3.12<br />
&amp;cht=p3<br />
&amp;chco=ebebeb,ff0000,0090ff,1db000,373737,db4aff,31a142,bc424b,ffcc00<br />
&amp;chl=UDC|SINISTRA%20L'ARCOBALENO|POPOLO%20DELLA%20LIBERTA'|LEGA%20NORD|LA%20DESTRA|ITALIA%20DEI%20VALORI|PARTITO%20DEMOCRATICO|PARTITO%20SOCIALISTA|ALTRI"  alt="risultati senato" /&gt;<br />
</code></p>
<p>Ed ecco il risultato finale, per i voti al Senato della Repubblica.</p>
<p><img src="http://chart.apis.google.com/chart?chs=800x300&amp;chd=t:4.1,2.96,23.69,6.69,2.19,4.55,52.33,0.37,3.12&amp;cht=p3&amp;chco=ebebeb,ff0000,0090ff,1db000,373737,db4aff,31a142,bc424b,ffcc00&amp;chl=UDC|SINISTRA%20L'ARCOBALENO|POPOLO%20DELLA%20LIBERTA'|LEGA%20NORD|LA%20DESTRA|ITALIA%20DEI%20VALORI|PARTITO%20DEMOCRATICO|PARTITO%20SOCIALISTA|ALTRI" alt="risultati senato" /></p>
<p>Se vi interessa anche la Camera dei Deputati.. Tanto ormai avrete capito che vivo in Emilia. :)</p>
<p><img src="http://chart.apis.google.com/chart?chs=800x300&amp;chd=t:3.88,2.67,22.99,7.27,2.29,4.8,52.45,0.48,0.05&amp;cht=p3&amp;chco=ebebeb,ff0000,0090ff,1db000,373737,db4aff,31a142,bc424b,ffcc00&amp;chl=UDC%7CSINISTRA%20L%27ARCOBALENO%7CPOPOLO%20DELLA%20LIBERTA%27%7CLEGA%20NORD%7CLA%20DESTRA%7CITALIA%20DEI%20VALORI%7CPARTITO%20DEMOCRATICO%7CPARTITO%20SOCIALISTA%7CALTRI" alt="risultati camera" /></p>
<p>Decisamente comodo il servizio, soprattutto se dobbiamo trattare dati variabili, magari estratti da un database: come dati finanziari o altro. Non a caso infatti il servizio è utilizzato su <strong><a href="http://finance.google.com/finance" title="Google Finance" target="_blank">Google Finance</a></strong>.<br />
L&#8217;unica cosa che mi lascia perplesso è l&#8217;impossibilità di scrivere i valori sul grafico, cosa che potrebbe essere utile soprattutto per i grafici a torta. Nei grafici a barre invece è possibile assegnare valori sugli assi.</p>
<p>Google fornisce anche un esempio di javascript per la realizzazione automatica di un grafico a partire da un array di dati. Se invece volete qualcosa di più visuale, c&#8217;è già chi ha pensato al <a href="http://www.jonwinstanley.com/charts/" title="Google Chart Generator" target="_blank">Google Chart Generator</a> oppure al <a href="http://kevinbranigan.com/google_graph_builder/" title="Google Graph Builder" target="_blank">Google Graph Builder</a>, dove è possibile ottenere il codice dell&#8217;url grazie a un comodo editor on-line.</p>
<p>Ma non è finita qui, le APIs Chart permettono anche di creare grafici sulla base di cartine geografiche. Il concetto è sempre quello: un url con diversi parametri. Ed ecco che cosa si può ottenere:</p>
<p><img src="http://chart.apis.google.com/chart?cht=t&amp;chs=440x220&amp;chd=s:Af9&amp;chtm=europe&amp;chco=ffffff,edf0d4,13390a&amp;chld=FRITNL&amp;chf=bg,s,EAF7FE" alt="cartina europa" /></p>
<p>Questo il codice:<br />
<code><br />
&lt;img src="http://chart.apis.google.com/chart?cht=t&amp;chs=440x220&amp;chd=s:Af9&amp;chtm=europe&amp;chco=ffffff,edf0d4,13390a&amp;chld=FRITNL&amp;chf=bg,s,EAF7FE" alt="cartina europa" /&gt;<br />
</code></p>
<p>Si potrebbe sfruttare per segnalare la presenza di dispositivi mobili su un&#8217;area geografica, colorando con un gradiente le aree più dense.. Insomma: in tutte quelle situazioni in cui c&#8217;è <strong>esigenza di mappare in maniere automatica dati in evoluzione</strong>.</p>
<p>Se penso al diffondersi dei palmari e alle crescenti esigenze di geolocalizzazone gli scenari sono molteplici. Ma anche senza vagare troppo con l&#8217;immaginazione, basta pensare alla monitorizzazione degli accessi a una pagina web, a sondaggi, alla pubblicazione di dati finanziari.. Quello di Google Charts è un servizio veloce (i tempi di risposta sono immediati) e soprattutto gratuito.</p>
<p>L&#8217;unico limite sono <strong>250000 chiamate al giorno</strong>, se pensate di superarle meglio avvisare via mail.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2008/04/20/google-chart-api-grafici-dinamici-in-un-attimo/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Shadowbox JS: una media gallery nel plugin per wordpress</title>
		<link>http://www.diplod.it/2008/04/15/shadowbox-js-una-media-gallery-nel-plugin-per-wordpress/</link>
		<comments>http://www.diplod.it/2008/04/15/shadowbox-js-una-media-gallery-nel-plugin-per-wordpress/#comments</comments>
		<pubDate>Mon, 14 Apr 2008 23:28:12 +0000</pubDate>
		<dc:creator>Davide</dc:creator>
				<category><![CDATA[Ajax e Javascript]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[dojo]]></category>
		<category><![CDATA[ext]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[lightbox]]></category>
		<category><![CDATA[mootools]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[scriptaculous]]></category>
		<category><![CDATA[shadowbox]]></category>
		<category><![CDATA[slimbox]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[yui]]></category>

		<guid isPermaLink="false">http://www.diplod.it/2008/04/15/shadowbox-js-una-media-gallery-nel-plugin-per-wordpress/</guid>
		<description><![CDATA[Sto mettendo in ordine il portfolio (tra qualche settimana tutte le novità) e per l&#8217;occasione ho integrato su questo sito il famoso javascript Shadowbox. Si tratta del solito box elegante all&#8217;interno del quale far apparire immagini, ma non solo.. Si ispira infatti ai noti Lightbox (scritto per il framework prototype) e Slimbox (scritto per il [...]]]></description>
			<content:encoded><![CDATA[<p>Sto mettendo in ordine il <a href="http://www.diplod.it/portfolio/" title="Portfolio" target="_blank">portfolio</a> (tra qualche settimana tutte le novità) e per l&#8217;occasione ho integrato su questo sito il famoso javascript <a href="http://mjijackson.com/shadowbox/" title="Shadowbox" target="_blank">Shadowbox</a>. Si tratta del solito box elegante all&#8217;interno del quale far apparire immagini, ma non solo.. Si ispira infatti ai noti <a href="http://www.lokeshdhakar.com/projects/lightbox2/" title="Lightbox" target="_blank">Lightbox</a> (scritto per il framework <a href="http://prototypejs.org/" title="prototype" target="_blank">prototype</a>) e <a href="http://www.digitalia.be/software/slimbox" title="Slimbox">Slimbox</a> (scritto per il framework <a href="http://mootools.net/" title="mootools">mootools</a>). Ma non è un semplice clone, perchè le funzioni di Shadowbox vanno al di là della semplice <strong>galleria per immagini</strong>. E&#8217; infatti possibile inserire all&#8217;interno <strong>qualsiasi tipo di media</strong>: dal filmato youtube a una pagina web esterna, dalle immagini ai filmati flash. Il modo migliore per capirne le potenzialità è fare un giro sulle <a href="http://mjijackson.com/shadowbox/index.html" title="shadowbox">demo del sito ufficiale</a>.</p>
<p>Ne ha parlato <a href="http://www.tomstardust.com/archives/shadowbox-soluzione-javascript-per-gallerie-di-immagini/" title="post di Tomstardust" target="_blank">tom</a> qualche giorno fa. Oltre ad essere cross-browser e compatibile agli standard, il vero punto di forza di questa galleria è il supporto a diversi framework javascript, questo permette di utilizzarla in tutti i contesti: supporta infatti <strong>YUI</strong>, <strong>Prototype + Scriptaculous</strong>, <strong>jQuery</strong>, <strong>Ext</strong>, <strong>Dojo</strong> e <strong>MooTools</strong>. Una meraviglia, visto che generalmente è proprio la difficile integrazione tra i diversi framework a impedire l&#8217;utilizzo di questi eleganti metodi di presentazione.</p>
<p><span id="more-520"></span></p>
<p>Ho cercato un <strong>plugin che integrasse su wordpress questa galleria</strong>, per utilizzarla nella presentazione del portfolio. Detto fatto: <a href="http://sivel.net/2008/02/shadowbox-js/" title="Shadowbox Plugin" target="_blank">Shadowbox JS Plugin</a>. Per onor di cronaca esiste pure un plugin italiano con lo stesso intento, ma non c&#8217;è la possibilità di scegliere quale framework javascript utilizzare. Questo è fortemente limitante, dato che l&#8217;arma vincente di shadowbox è proprio la possibilità di utilizzo sui diversi framework.</p>
<p>Ho fatto quindi una traduzione in italiano del suddetto plugin, nulla di travolgente: ho semplicemente modificato i commenti al file del plugin per impostare i parametri e cambiato le scritte &#8220;next&#8221; &#8220;prev&#8221; e &#8220;close&#8221;. Su un sito completamente italiano sta meglio la scritta &#8220;chiudi&#8221;.. ;)</p>
<p>Se volete provarlo, potete <a href="http://sivel.net/2008/02/shadowbox-js/" title="Shadowbox wordpress plugin" target="_blank">scaricare il plugin dal sito ufficiale</a> e sovrascrivere questi files (tradotti in italiano):</p>
<p><a href="http://www.diplod.it/wp-content/uploads/2008/04/shadowbox-ita-files.zip" title="Shadowbox - zip con files in italiano">Shadowbox &#8211; zip con files in italiano</a><a href="http://www.diplod.it/wp-content/uploads/2008/04/shadowbox.js" title="js/shadowbox.js"></a><a href="http://www.diplod.it/wp-content/uploads/2008/04/shadowbox-js.php" title="shadowbox-js.php"> </a></p>
<p><strong>Installazione</strong></p>
<ol>
<li>Caricare la cartella `shadowbox-js` in `/wp-content/plugins/`</li>
<li>Attivare il plugin dal &#8216;Plugins&#8217; menu in WordPress</li>
<li>Aprire il file shadowbox-js.php e modificare $jsLib e $lightCSS in base alle istruzioni presenti nel file.</li>
</ol>
<p><strong>Utilizzo</strong></p>
<p>Per far apparire un media all&#8217;interno di shadowbox basta inserire un link in questa forma:<br />
<code><br />
&lt;a href="http://domain.tld/directory/to/image.jpg" rel="shadowbox[album]"&gt;Image&lt;/a&gt;<br />
</code><br />
Il link può puntare a immagini, siti web, file flash, video su youtube, contenuto in linea. Basta assicurarsi di inserire `rel=&#8221;shadowbox&#8221;` poichè questo codice attiva il plugin.<br />
Inserendo il codice `rel=&#8221;shadowbox[album]&#8220;` si possono inoltre raggruppare più immagini all&#8217;interno dello stesso album.</p>
<p><strong>Integrazione con lightbox</strong>: se state già utilizzando lightbox sul vostro sito, non dovrete modificare nulla. Il plugin legge in automatico il codice &#8216;rel=&#8221;lightbox&#8221;&#8216; e lo interpreta normalmente.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2008/04/15/shadowbox-js-una-media-gallery-nel-plugin-per-wordpress/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Piclens e il plugin per wordpress: qualche segnalazione sulle foto</title>
		<link>http://www.diplod.it/2008/03/10/piclens-e-il-plugin-per-wordpress-qualche-segnalazione-sulle-foto/</link>
		<comments>http://www.diplod.it/2008/03/10/piclens-e-il-plugin-per-wordpress-qualche-segnalazione-sulle-foto/#comments</comments>
		<pubDate>Mon, 10 Mar 2008 00:42:02 +0000</pubDate>
		<dc:creator>Davide</dc:creator>
				<category><![CDATA[Ajax e Javascript]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[estensioni]]></category>
		<category><![CDATA[foto]]></category>
		<category><![CDATA[google screensaver]]></category>
		<category><![CDATA[immagini]]></category>
		<category><![CDATA[picasa]]></category>
		<category><![CDATA[piclens]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.diplod.it/2008/03/10/piclens-e-il-plugin-per-wordpress-giusto-qualche-segnalazione/</guid>
		<description><![CDATA[[foto Flickr] Mi pare giusto scrivere due righe su alcuni gadget da domenica pomeriggio. Quelle cose che provi ad installare così per gioco e poi scopri che nella loro inutilità le consiglieresti ad altri. Piclens Piclens è la classica cosa che ti suggerisce l&#8217;amico, una estensione per il browser meravigliosa, esiste per Firefox, Internet Explorer [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center"><img src="http://www.diplod.it/wp-content/uploads/2008/03/piclens.jpg" alt="Piclens" /><br />
<small>[<a href="http://www.flickr.com/photos/yilka/2248182699/" title="flickr" target="_blank">foto Flickr</a>]</small></p>
<p>Mi pare giusto scrivere due righe su alcuni gadget da domenica pomeriggio. Quelle cose che provi ad installare così per gioco e poi scopri che nella loro inutilità le consiglieresti ad altri.</p>
<h4>Piclens</h4>
<p><a href="http://www.piclens.com/" title="Piclens" target="_blank">Piclens</a> è la classica cosa che ti suggerisce l&#8217;amico, una <strong>estensione per il browser</strong> meravigliosa, esiste per Firefox, Internet Explorer o Safari. Se siete soliti navigare e fare ricerche su Flickr ne capirete immediatamente l&#8217;utilità. Se non lo siete, ma la installate ugualmente, ne coglierete subito l&#8217;eleganza.<br />
In sostanza si tratta di un esploratore per siti che contengono immagini, funziona in automatico su <a href="http://www.flickr.com/" title="Flickr" target="_blank">Flickr</a>, <a href="http://images.google.it" title="google images" target="_blank">Google Images</a>, <a href="http://images.search.yahoo.com/" title="Yahoo Image Search" target="_blank">Yahoo Image Search</a>, <a href="http://www.smugmug.com/" title="SmugSmug" target="_blank">SmugSmug</a>, <a href="http://photobucket.com/" title="Photobucket" target="_blank">Photobucket</a>, <a href="http://www.deviantart.com/" title="Deviantart" target="_blank">DeviantArt</a>.. Quando si esegue una ricerca su questi siti e si clicca sul bottocino play che appare in alto a destra (in firefox), si apre un ambiente 3D sul quale si ha una panoramica completa delle fotografie che la ricerca ha restituito come risultato. Provatelo, e <strike>capirete</strike> avrete pietà per il mio entusiasmo.</p>
<p><span id="more-506"></span></p>
<h4>Piclens Plugin per WordPress</h4>
<p>Esiste pure un plugin per wordpress per riproporre ai propri visitatori l&#8217;eleganza di uno slideshow con piclens. Da <a href="http://www.piclens.com/lite/wordpress.php" title="Piclens plugin wordpress" target="_blank">questa pagina è possibile scaricarlo</a> e trovare le istruzioni per l&#8217;installazione ed il suo utilizzo. Mi sarebbe piaciuto utilizzarlo sul mio blog ma purtroppo <a href="http://www.aruba.it/" title="Aruba" target="_blank">Aruba</a> (la mia compagnia di hosting) ad oggi ha ancora la versione 4.4.7 di php, e questo plugin richiede la 5.1 o superiore.. Attenderò con pazienza.</p>
<p>Per la cronaca, esiste pure <a href="http://www.piclens.com/lite/publisher-win.php" title="Piclens software" target="_blank">il programmino</a> (win e mac) che permette di creare una galleria da aggiungere a qualsiasi pagina html, con tanto di javascript bello pronto. Utile ad esempio per inserire una galleria ad effetto su un sito che non giri con wordpress.</p>
<h4>Google Screensaver</h4>
<p><a href="http://pack.google.com/intl/en/pack_installer.html?hl=en&amp;gl=us" title="Google screensaver" target="_blank">Google Scrensaver</a> viene distribuito assieme al <a href="http://pack.google.com/" title="Google Pack" target="_blank">Google Pack</a> (pacco a tutti gli effetti, nel suo complesso) e non è altro che uno screensaver che fa ruotare le fotografie quando il pc va in pausa. <strong>Funziona divinamente in parallelo a Picasa</strong>, dove è possibile marcare le foto per aggiungerle all&#8217;album &#8220;Salvaschermo&#8221;. Inoltre è possibile assegnare un <strong>feed di immagini</strong> dal quale pescare le foto e metterle in rotazione, quello predefinito di Google ad esempio offre fotografie d&#8217;autore di tutto rispetto.<br />
Nulla di travolgente, solo qualche effetto un po&#8217; più curato rispetto al salvaschermo classico di windows e la possibilità di aggiungere le immagini senza spostarle in una cartella apposita tutte assieme fanno di questo prodottino qualcosa a cui mi sono affezionato.<br />
<strong> NB</strong>: per scaricarlo è necessario accedere alla pagina del google pack in inglese, in italiano infatti pare non esista..</p>
<h4>Picasa</h4>
<p>E&#8217; tutta colpa delle compatte! Da quando ho questa benedetta fotocamera digitale le immagini sono al tempo stesso cruccio e passione. Mi piace catalogarle, ritoccarle, ma non troppo, ordinarle e naturalmente visualizzarle. <a href="http://picasa.google.com/" title="Picasa - foto" target="_blank">Picasa</a> è lo strumento ideale per tenere in armonia l&#8217;<strong>archivio delle fotografie</strong>: vacanze, gite domenicali e uscite con gli amici. E&#8217; indicato sopratutto per un <strong>utilizzo personale</strong>, non è un software da professionisti, pochi semplici tasti che rispecchiano basilari funzioni: quando c&#8217;è troppa fretta un bel &#8220;mi sento fortunato&#8221; e la foto gode di nuovo vigore.<br />
Probabilmente già lo conoscete, ma se non l&#8217;avessi citato mi sarei sentito in colpa.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2008/03/10/piclens-e-il-plugin-per-wordpress-qualche-segnalazione-sulle-foto/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Form con CSS, secondo me</title>
		<link>http://www.diplod.it/2007/11/12/form-con-css-secondo-me/</link>
		<comments>http://www.diplod.it/2007/11/12/form-con-css-secondo-me/#comments</comments>
		<pubDate>Mon, 12 Nov 2007 01:13:02 +0000</pubDate>
		<dc:creator>Davide</dc:creator>
				<category><![CDATA[Ajax e Javascript]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[web standards]]></category>

		<guid isPermaLink="false">http://www.diplod.it/2007/11/12/form-con-css-secondo-me/</guid>
		<description><![CDATA[Form con CSS (e talvolta javascript) ne ho visti di tutti i tipi, ma non ho trovato nessuno che mi soddisfacesse in pieno. Me ne serviva uno, così l&#8217;ho realizzato prendendo spunto qua e là. Il punto di partenza è l&#8217;articolo su A List Apart, per la costruzione di form accessibili e semanticamente corretti a [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center"><img src="http://www.diplod.it/wp-content/uploads/2007/11/form.gif" alt="Form con CSS" /></p>
<p><strong>Form</strong> con <strong>CSS</strong> (e talvolta javascript) ne ho visti di tutti i tipi, ma non ho trovato nessuno che mi soddisfacesse in pieno.<br />
Me ne serviva uno, così l&#8217;ho realizzato prendendo spunto qua e là. Il punto di partenza è l&#8217;articolo su <a href="http://www.alistapart.com/articles/prettyaccessibleforms" title="Prettier Accesible Form" target="_blank">A List Apart</a>, per la costruzione di <strong>form accessibili</strong> e <strong>semanticamente corretti</strong> a livello di codice. Va bene essere pignoli, ma scomodare <a href="http://jquery.com/" title="JQuery - javascript library" target="_blank">JQuery</a> e avere qualche bug di visualizzazione su Mozilla mi sembra eccessivo (si veda a tal proposito lo <a href="http://css.html.it/articoli/leggi/1929/form-con-i-css/" title="HTML.it form" target="_blank">stesso form su html.it</a>). Preferisco la semplicità, pur rimandendo nella sfera del &#8220;semanticamente corretto&#8221; ed essere pienamente &#8220;acessibile&#8221;.</p>
<p><a href="http://www.diplod.it/dev/form/form.html" title="Form con CSS" target="_blank">Vediamo subito il risultato</a>, per poi analizzarlo in dettaglio.</p>
<p><span id="more-411"></span></p>
<p>Ci sono <strong>effetti sulle caselle di input </strong>che aiutano l&#8217;utente nella compilazione, rendendo verdi i bordi dei box, in caso di dati corretti, oppure rossi al contrario. Appaiono inoltre le <strong>istruzioni</strong> sulla destra che diventano visibili semplicemente sfruttando l&#8217;effetto  &#8220;hover&#8221; sugli elementi della lista (cambiando il colore del testo da bianco a scuro). Tale tecnica è molto semplice, ma non è supportata da IE6: poco male, se pensiamo che comunque sono dati aggiuntivi e non fondamentali. Mentre chi non ha CSS e javascript attivi riesce in ogni caso a vederle.</p>
<p><img src="http://www.diplod.it/wp-content/uploads/2007/11/form-effetti.gif" alt="Form effetti" /></p>
<p>La <strong>validazione</strong> è stata realizzata utilizzando l&#8217;utilissimo script <a href="http://www.livevalidation.com/" title="live validation" target="_blank">Live Validation</a>.</p>
<p><img src="http://www.diplod.it/wp-content/uploads/2007/11/form-validato.gif" alt="Form validato" /></p>
<p>La <strong>resa cross-browser</strong> è buona, questo screenshot ad esempio rappresenta la pagina caricata sullo schermo di un palmare.</p>
<p><img src="http://www.diplod.it/wp-content/uploads/2007/11/form-palmare.gif" alt="Form palmare" /></p>
<p>Anche <strong>senza CSS e javascript</strong> attivi il form risulta pienamente accessibile e di facile lettura. Ecco come appare a quegli utenti che non hanno nulla di attivo.</p>
<p><img src="http://www.diplod.it/wp-content/uploads/2007/11/form-nocssjava.gif" alt="Form senza CSS e javascript" /></p>
<h4>Il codice HTML</h4>
<p>Prendendo spunto da A List Apart, il codice HTML non deve avere tabelle, ma la solita lista &lt;ul&gt; dove poi inseriremo i vari box di input.</p>
<p>Gli unici accorgimenti sono l&#8217;inserimento delle istruzioni all&#8217;interno di una classe &#8220;help&#8221; e la specifica della classe &#8220;option&#8221; per le etichette delle caselline da spuntare.</p>
<p><code><br />
&lt;form action="#"&gt;<br />
&lt;fieldset&gt;<br />
&lt;legend&gt;I campi marcati con * sono obbligatori&lt;/legend&gt;<br />
&lt;ul&gt;<br />
&lt;li&gt;<br />
&lt;label&gt;Nome*&lt;/label&gt;<br />
&lt;span class="help"&gt;[Scrivi qui il tuo nome]&lt;/span&gt;<br />
&lt;input name="ddnome" id="ddnome" value="" type="text" size="30" /&gt;<br />
&lt;/li&gt;<br />
&lt;li&gt;<br />
&lt;label&gt;Cognome*&lt;/label&gt;<br />
&lt;span class="help"&gt;[Scrivi qui il tuo cognome]&lt;/span&gt;<br />
&lt;input name="ddcognome" id="ddcognome" value="" type="text" size="30" /&gt;<br />
&lt;/li&gt;<br />
&lt;li&gt;<br />
&lt;label&gt;Indirizzo&lt;/label&gt;<br />
&lt;span class="help"&gt;[Scrivi qui il tuo indirizzo]&lt;/span&gt;<br />
&lt;input name="ddindirizzo" id="ddindirizzo" value="" type="text" size="30" /&gt;<br />
&lt;/li&gt;<br />
&lt;li&gt;<br />
&lt;label&gt;Città*&lt;/label&gt;<br />
&lt;span class="help"&gt;[Scrivi qui la tua città]&lt;/span&gt;<br />
&lt;input name="ddcitta" id="ddcitta" value="" type="text" size="30" /&gt;<br />
&lt;/li&gt;<br />
&lt;li&gt;<br />
&lt;label&gt;Provincia*&lt;/label&gt;<br />
&lt;span class="help"&gt;[Scrivi qui la sigla della tua provincia]&lt;/span&gt;<br />
&lt;input name="ddprovincia" id="ddprovincia" class="small-text" value="" type="text" size="2" /&gt;<br />
&lt;/li&gt;<br />
&lt;li&gt;<br />
&lt;label&gt;Email*&lt;/label&gt;<br />
&lt;span class="help"&gt;[Scrivi qui la tua e-mail]&lt;/span&gt;<br />
&lt;input name="ddemail" id="ddemail" value="" type="text" size="30" /&gt;<br />
&lt;/li&gt;<br />
&lt;li&gt;<br />
&lt;label&gt;Data di Nascita&lt;/label&gt;<br />
&lt;span class="help"&gt;[Seleziona la tua data di nascita]&lt;/span&gt;<br />
&lt;select id="dob-d"&gt;&lt;option value="1"&gt;1&lt;/option&gt;&lt;option value="2"&gt;2&lt;/option&gt;&lt;/select&gt;<br />
&lt;select id="dob-m"&gt;&lt;option value="1"&gt;Jan&lt;/option&gt;&lt;option value="2"&gt;Feb&lt;/option&gt;&lt;/select&gt;<br />
&lt;select id="dob-y"&gt;&lt;option value="1980"&gt;1984&lt;/option&gt;&lt;option value="1985"&gt;1985&lt;/option&gt;&lt;/select&gt;<br />
&lt;/li&gt;<br />
&lt;li&gt;<br />
&lt;label&gt;Tuo commento&lt;/label&gt;<br />
&lt;span class="help"&gt;[Scrivi qui un tuo commento]&lt;/span&gt;<br />
&lt;textarea name="ddcommento" rows="5" cols="10"&gt;&lt;/textarea&gt;<br />
&lt;/li&gt;<br />
&lt;li&gt;<br />
&lt;label&gt;Il tuo sesso?&lt;/label&gt;<br />
&lt;span class="help"&gt;[Indica il tuo sesso]&lt;/span&gt;<br />
&lt;label class="option"&gt;&lt;input type="radio" name="ddsesso[key]" value="si" checked="checked" class="form-radio" /&gt;uomo&lt;/label&gt;<br />
&lt;label class="option"&gt;&lt;input type="radio" name="ddsesso[key]" value="no" class="form-radio" /&gt;donna&lt;/label&gt;<br />
&lt;/li&gt;<br />
&lt;li&gt;<br />
&lt;label class="option"&gt;&lt;input name="ddcontratto" value="ok" type="checkbox" /&gt; Ho letto tutti i contratti di questa terra&lt;/label&gt;<br />
&lt;/li&gt;<br />
&lt;/ul&gt;<br />
&lt;/fieldset&gt;<br />
&lt;p&gt;&lt;input class="button" type="submit" value="Invia Form"/&gt;&lt;/p&gt;<br />
&lt;/form&gt;<br />
</code></p>
<h4>Il codice CSS</h4>
<p>Il CSS pesa in tutto 5Kb, compresa la parte per la struttura. Con una attenta formattazione si può migliorare di qualche Kb. Qui riporto solo la parte relativa al form vero e proprio.</p>
<p><code><br />
form {<br />
margin: 0 auto;<br />
padding: 10px;<br />
border: 1px solid #f3a251;<br />
font: normal 1em Verdana, sans-serif;<br />
background-color: #fff;<br />
width: 800px;<br />
text-align: left;<br />
}<br />
form ul {<br />
background: transparent;<br />
margin: 0;<br />
padding: 0;<br />
list-style: none;<br />
}<br />
form ul li {<br />
margin: 0;<br />
padding: .4em 0;<br />
background: #fff;<br />
color: #fff;<br />
list-style: none;<br />
font: normal 0.9em Verdana, sans-serif;<br />
border-bottom: 1px solid #dadada;<br />
}<br />
form ul li:hover {<br />
color: #333;<br />
background: #eee;<br />
}<br />
form span.help {<br />
float: right;<br />
width: 29%;<br />
}<br />
fieldset {<br />
margin: 0;<br />
padding: 0;<br />
border-top: 1px solid #dadada;<br />
color: #777;<br />
}<br />
label {<br />
display: block;<br />
font-weight:bold;<br />
margin: 0;<br />
font: normal 1.5em Verdana, sans-serif;<br />
color: #333;<br />
width: auto;<br />
}<br />
label.option {<br />
margin: .2em;<br />
font: normal 1.2em/1.2em Verdana, sans-serif;<br />
width: 60%;<br />
}<br />
input {<br />
padding: .4em;<br />
margin: 0;<br />
border: 1px solid #dadada;<br />
font: normal 1.5em Verdana, sans-serif;<br />
color: #333;<br />
background: #fafafa;<br />
}<br />
input.form-radio {<br />
padding: 0;<br />
margin: 0 .2em 0 0;<br />
border: none;<br />
}<br />
textarea {<br />
width: 66%;<br />
padding: .4em;<br />
font: normal 1.2em/1.2em Verdana, sans-serif;<br />
border: 1px solid #dadada;<br />
height: 10em;<br />
display:block;<br />
color:#333;<br />
background: #fafafa;<br />
}<br />
textarea.small-textarea {<br />
height: 3em;<br />
}<br />
select {<br />
padding: .2em 0;<br />
margin: 0;<br />
border: 1px solid #dadada;<br />
font: normal 1.5em Verdana, sans-serif;<br />
color: #333;<br />
background: #fafafa;<br />
}<br />
option {<br />
display: block;<br />
padding: .1em;<br />
margin: 0;<br />
font: normal 1em Verdana, sans-serif;<br />
color: #333;<br />
background: #fafafa;<br />
}<br />
input:focus, input:active, textarea:focus, textarea:active, select:focus, select:active {<br />
border: 1px solid #f3a251;<br />
background: #ffeddc;<br />
}<br />
input.button {<br />
margin: .3em;<br />
padding: .25em .3em;<br />
border: 1px solid #f3a251;<br />
background: #ffeddc;<br />
font: normal 1.5em Verdana, sans-serif;<br />
cursor: pointer;<br />
}<br />
input.button:hover {<br />
background: #f3a251;<br />
color: #fff;<br />
}<br />
</code></p>
<h4>Javascript per la validazione</h4>
<p>La parte javascript è molto semplice, per crearla basta seguire la <a href="http://www.livevalidation.com/examples" title="Esempi LiveValidation" target="_blank">documentazione di LiveValidation</a>. Tutte le validazioni avvengono dopo che l&#8217;utente ha abbandonato il box sul quale sta scrivendo. Questo è possibile specificando il parametro &#8220;onlyOnBlur: true&#8221;.</p>
<p>Per ogni singolo campo che deve essere validato viene costruito un oggetto LiveValidation() richiamandolo in base all&#8217;id.</p>
<p><code><br />
&lt;script type="text/javascript"&gt;<br />
var valNome = new LiveValidation( 'ddnome', {onlyOnBlur: true, validMessage: "OK" } );<br />
valNome.add( Validate.Presence, {failureMessage: "Devi inserire il nome"} );<br />
var valCognome = new LiveValidation( 'ddcognome', {onlyOnBlur: true, validMessage: "OK" } );<br />
valCognome.add( Validate.Presence, {failureMessage: "Devi inserire il cognome"} );<br />
var valCitta = new LiveValidation( 'ddcitta', {onlyOnBlur: true, validMessage: "OK" } );<br />
valCitta.add( Validate.Presence, {failureMessage: "Devi inserire una città"} );<br />
var valProvincia = new LiveValidation( 'ddprovincia', {onlyOnBlur: true, validMessage: "OK" } );<br />
valProvincia.add( Validate.Presence, {failureMessage: "Devi inserire la provincia"} );<br />
valProvincia.add( Validate.Length, { minimum: 2, maximum: 4, tooShortMessage: "Almeno due caratteri", tooLongMessage: "Inserisci la sigla della provincia, al massimo 4 caratteri (ROMA)"} );<br />
var valEmail = new LiveValidation( 'ddemail', {onlyOnBlur: true, validMessage: "OK" } );<br />
valEmail.add( Validate.Presence, {failureMessage: "Lascia un indirizzo e-mail"} );<br />
valEmail.add( Validate.Email, {failureMessage: "Indirizzo non valido"} );<br />
&lt;/script&gt;<br />
</code></p>
<p>Sia il codice CSS che quello HTML è validato W3C. Se vuoi scaricare l&#8217;esempio <a href="http://www.diplod.it/wp-content/uploads/2007/11/diplod-form.zip" title="diploD CSS Form">ecco il file zip</a>, con <a href="http://creativecommons.org/licenses/by/3.0/deed.it" title="Licenza CC" target="_blank">licenza CC</a>. Fammi sapere se apporti utili migliorie al codice o lo utilizzi per impieghi particolari.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2007/11/12/form-con-css-secondo-me/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Web Tv Template: open and free internet television design</title>
		<link>http://www.diplod.it/2007/10/12/web-tv-template-open-and-free-internet-television-design/</link>
		<comments>http://www.diplod.it/2007/10/12/web-tv-template-open-and-free-internet-television-design/#comments</comments>
		<pubDate>Thu, 11 Oct 2007 23:31:01 +0000</pubDate>
		<dc:creator>Davide</dc:creator>
				<category><![CDATA[Ajax e Javascript]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Web 2.0]]></category>

		<guid isPermaLink="false">http://www.diplod.it/2007/10/12/web-tv-template-open-and-free-internet-television-design/</guid>
		<description><![CDATA[English? Go here.. Ecco qui.. Le web TV ormai imperversano, tutti a dire che il futuro è quello, che pubblicare i propri video è molto cool! Non saprei dire se le notizie debbano per forza provenire dal basso (forse no), ma perché non rilasciare un template? Eccolo. Un template libero: scaricatelo, modificatelo, utilizzatelo. Ma abbiate [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center"><img src="http://www.diplod.it/wp-content/uploads/2007/10/tv-design.png" alt="Web Tv Design" /></p>
<p> <a href="http://www.diplod.it/2007/10/12/web-tv-template-open-and-free-internet-television-design/#entv" title="English version"><strong>English? Go here..</strong></a></p>
<p>Ecco qui.. Le <strong>web TV</strong> ormai imperversano, tutti a dire che il <strong>futuro</strong> è quello, che pubblicare i propri video è molto cool! Non saprei dire se le notizie debbano per forza provenire dal basso (forse no), ma perché non rilasciare un template? Eccolo.</p>
<p>Un <strong>template libero</strong>: scaricatelo, modificatelo, utilizzatelo. Ma abbiate cura di lasciare il link a diploD. E’ pensato per la classica tv on-line.<br />
Cosa c’è di bello?</p>
<ul>
<li> La <strong>navigazione a tab</strong> tramite javascript (simil ajax, ma non proprio..)</li>
<li>Le <strong>finestre fluttuanti</strong> realizzate con jQyery ed Interface, una per il video e una per la chat.</li>
<li>Un box pensato per la pubblicità (quale tv non ne ha? Potete comunque levarlo in un attimo se non ve ne frega un accidente)</li>
<li>Lo spazio per il codice da embeddare sul proprio sito</li>
<li><strong>Predisposizione per i più comuni tag html</strong>: form, code, blockquote, ecc..</li>
<li>Dei bellissimi box laterali dove mettere ciò che vi pare</li>
<li><strong>XHTML Strict, CSS Valid</strong></li>
<li>Compatibilità coi più diffusi browser, testato su FireFox, IE, Opera; non dovrebbero esserci problemi nemmeno con Safari</li>
</ul>
<p>Qual è il fattore in più? Le finestre Jquery. Attivando il video in una di queste finestre, l’utente può contemporaneamente vedere la diretta e navigare il sito con i tab, oltre ad aprire e imbustare la chat.<br />
<strong><a href="http://www.diplod.it/templates/tv-design/" title="Web Tv design" target="_blank"> Provatelo, è molto più semplice vedere che spiegare</a>.</strong></p>
<p><strong><a class="download-link" href="http://www.diplod.it/templates/tv-design.zip" title="Download Web Tv Template">Download Web TV Template (Open and Free Internet Television Design)</a></strong><br />
<span id="more-373"></span></p>
<p style="text-align: center"><img src="http://www.diplod.it/wp-content/uploads/2007/10/tv-design2.png" alt="Web Tv Design" /></p>
<h4 id="entv">English</h4>
<p>Here we are.. <strong>Internet television</strong> are the next revolution! I don’t know if news should be reported by the mass (maybe not), but I realized a template for web tv. Try it. Why not?</p>
<p>It’s a <strong>free template</strong>: download it, modify it, use it. But please don’t remove the link to this site, diploD. This is a layout for a standard web television.<br />
What’s cool?<br />
·    <strong>Tab navigation</strong> whit a simple javascript (ajax like)<br />
·    <strong>Floating windows</strong>, thanks to JQuery and Interface. One window for video, one for chat.<br />
·    A box for ads (who don’t have ads? But you can remove it if you want)<br />
·    Space for “embed” code<br />
·    <strong>Support for common html tags</strong>: form, code, blockquote..<br />
·    Nice sidebar boxes<br />
·    <strong>XHTML Strict, CSS Valid</strong><br />
·    Cross browser compatibility, tested with FireFox, IE, Opera; should work also whit Safari</p>
<p>JQuery windows are the best way to show your videos and your chat. The users can follow your programs on live tv and visit your site.<a href="http://www.diplod.it/templates/tv-design/" title="Web Tv design demo" target="_blank"><br />
</a><strong><a href="http://www.diplod.it/templates/tv-design/" title="Web Tv design demo" target="_blank">Open the demo to see the design in action</a>.</strong></p>
<p><strong><a class="download-link" href="http://www.diplod.it/templates/tv-design.zip" title="Download Web Tv Template">Download Web TV Template (Open and Free Internet Television Design)</a></strong><a href="http://www.diplod.it/templates/tv-design.zip" title="Download Web Tv Template"><br />
</a><br />
<strong>PS</strong>: sorry for my English :P<br />
The video you can see in the demo is a compilation of Parmigiano Reggiano’s spots. Parmigiano Reggiano is a wonderfull italian cheese, it’s art. :)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2007/10/12/web-tv-template-open-and-free-internet-television-design/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Welcome CSS Sliding Box WordPress Plugin</title>
		<link>http://www.diplod.it/2007/08/13/welcome-css-sliding-box-wordpress-plugin/</link>
		<comments>http://www.diplod.it/2007/08/13/welcome-css-sliding-box-wordpress-plugin/#comments</comments>
		<pubDate>Mon, 13 Aug 2007 11:20:02 +0000</pubDate>
		<dc:creator>Davide</dc:creator>
				<category><![CDATA[Ajax e Javascript]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Progetti]]></category>

		<guid isPermaLink="false">http://www.diplod.it/2007/08/13/welcome-css-sliding-box-wordpress-plugin/</guid>
		<description><![CDATA[English? Go here.. Che diavolo è? Provate a cliccare sul bottocino &#8220;che diavolo?&#8221; in alto a questa pagina e capirete in un attimo. Si tratta di un piccolo box CSS scorrevole, all&#8217;interno del quale si può far apparire tutto ciò che ci pare.. Dopo avdd-welcome-ita.ziper scaricato il plugin e fatto l&#8217;upload dei files &#8216;dd-welcome.php&#8217; e [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-weight: bold">English?</span> <a href="http://www.diplod.it/2007/08/13/welcome-css-sliding-box-wordpress-plugin/#english">Go here..</a></p>
<h4>Che diavolo è?</h4>
<p>Provate a cliccare sul bottocino &#8220;che diavolo?&#8221; in alto a questa pagina e capirete in un attimo. Si tratta di un piccolo box CSS  scorrevole, all&#8217;interno del quale si può far apparire tutto ciò che ci pare..<br />
Dopo avdd-welcome-ita.ziper scaricato il plugin e fatto l&#8217;upload dei files &#8216;dd-welcome.php&#8217; e &#8216;dd-bg.gif&#8217; all&#8217;interno della solita cartella  &#8216;wp-content/plugins/&#8217;, apparirà nel menù &#8216;Opzioni&#8217; un comodo pannello di amministrazione dal quale è possibile configurare il box scorrevole.</p>
<p><a class="download-link" href="http://www.diplod.it/wp-content/uploads/2007/10/dd-welcome-ita.zip" title="dd welcome WP plugin">SCARICALO QUI..</a></p>
<h4>A cosa serve?</h4>
<p>Bella domanda, in teoria per avere un box figo dove poter inserire le solite informazioni su chi siamo, cosa facciamo, da dove veniamo e dove vogliamo arrivare. In pratica potete metterci ciò che meglio credete, anche gli ultimi libri letti..</p>
<p><span id="more-338"></span></p>
<p style="text-align: center"><a href="http://www.diplod.it/wp-content/uploads/2007/08/dd-welcome-manager.jpg" title="Apri immagine in dimensioni originali"><img src="http://www.diplod.it/wp-content/uploads/2007/08/dd-welcome-manager-small.jpg" id="image336" alt="Welcome Manager" /></a></p>
<p>Dal &#8216;Welcome Manager&#8217;, senza toccare il codice del nostro template, potremo impostare:</p>
<ol>
<li>Il testo da far apparire all&#8217;interno del box, nel quale si possono utilizzare anche i più comuni tag HTML per fare link o inserire immagini</li>
<li>Il testo da far apparire sul bottoncino</li>
<li>Il colore di sfondo</li>
<li>Una eventuale immagine di sfondo</li>
<li>Il colore del testo</li>
<li>L&#8217;altezza in pixel del box scorrevole</li>
<li>L&#8217;allineamento del bottone (destra o sinistra)</li>
<li>Il margine dal bordo della pagina</li>
<li>La posizione del bottone (fissa o scorrevole con la pagina)</li>
</ol>
<p>Queste sono tutto proprietà CSS regolabili senza intervenire sul codice. Vi ricorda nulla? Ma certo, il celeberrimo e decantato plugin di Francesco Fullone <a href="http://www.fullo.net/blog/archives/2007/08/07/wordpress-plugin-fcc_ribbon-manager/" title="FCC Ribbon Manager" target="_blank">FCC Ribbon Manager</a>, da quale ho preso spunto e che ringrazio.</p>
<p><strong>NB</strong>: se impostate l&#8217;<strong>altezza del box a &#8217;100%&#8217;</strong> potrete avere una bellissima pagina nascosta, dove ad esempio si potrebbe mettere il portfolio personale.. o amenità varie.</p>
<p style="text-align: center"><img src="http://www.diplod.it/wp-content/uploads/2007/08/100percent.jpg" id="image337" alt="100 per cent" /></p>
<h4>Javascript?</h4>
<p>Ovviamente si. Questo plugin utilizza il solito scriptaculous.. Perchè questo e non Mootools? Semplicemente perchè dalla versione 2.qualcosa di wordpress esso è incluso direttamente tra i file del programma, così la pagina si dovrebbe caricare più velocemente.<br />
Se per caso avete una versione vecchiotta di WP e non è presente scriptaculous, potete scaricare <a href="http://www.diplod.it/wp-content/uploads/2007/08/wp-scriptaculous.zip" title="wp scriptaculous">questo zip</a> e mettere la cartella &#8216;/scriptaculous/&#8217; sul vostro server, dentro a &#8216;/wp-includes/js/&#8217;. Il percorso sarà quindi &#8216;/wp-includes/js/scriptaculous/&#8217;.</p>
<p>Se avete idee o suggerimenti.. <a href="http://www.diplod.it/contatti/" title="Contatti">scrivete pure due righe</a>.</p>
<p><a title="english" name="english"></a></p>
<h4>What&#8217;s?</h4>
<p>Click on the button &#8220;che diavolo?&#8221; at the top of this page and you can see. It&#8217;s a little CSS sliding box, where you can insert what you prefer..<br />
Download the plugin files and upload &#8216;dd-welcome.php&#8217; and &#8216;dd-bg.gif&#8217; on your server folder  &#8216;wp-content/plugins/&#8217;, then in the Option Menu you find the &#8216;Welcome Manager&#8217; where you can set your sliding box.</p>
<p><a class="download-link" href="http://www.diplod.it/wp-content/uploads/2007/08/dd-welcome-wp-plugin.zip" title="dd welcome WP plugin">DOWNLOAD HERE..</a></p>
<h4>Ok, but how can I use it?</h4>
<p>It&#8217;s a good question. You have a cool box to insert the classic info text or whatever you want: portfolio, last purchases, last read books, and so on..</p>
<p style="text-align: center"><a href="http://www.diplod.it/wp-content/uploads/2007/08/dd-welcome-manager.jpg" title="Apri immagine in dimensioni originali"><img src="http://www.diplod.it/wp-content/uploads/2007/08/dd-welcome-manager-small.jpg" id="image336" alt="Welcome Manager" /></a></p>
<p>In the Welcome Manager, without touching the code, you can set:</p>
<ol>
<li>The text that will appear in the sliding box, it supports common HTML tag to link or insert images</li>
<li>The text that will appear in the button</li>
<li>The background color</li>
<li>An opzional background image</li>
<li>The text color</li>
<li>Box height (in pixel)</li>
<li>Button align (left or right)</li>
<li>Button margin (in pixel, % or em..)</li>
<li>Button position (fixed or absolute)</li>
</ol>
<p><span style="font-weight: bold">NB</span>: if you set up the height to 100%, you have a cool hidden page on your blog..</p>
<p style="text-align: center"><img src="http://www.diplod.it/wp-content/uploads/2007/08/100percent.jpg" id="image337" alt="100 per cent" /></p>
<h4>Javascript?</h4>
<p>Obviously.. This plugin uses the classic scriptaculous. Why this and not Mootools? Simply because from the 2.1 version of wordpress it is included directly in the /wp-includes/ folder, therefore the page would have to be loaded fastly.<br />
If you have an old version or is not present scriptaculous, you can download <a href="http://www.diplod.it/wp-content/uploads/2007/08/wp-scriptaculous.zip" title="wp scriptaculous">this zip</a> and put the folder “/scriptaculous/” on your server, in “/wp-includes/js/”. The path will be “/wp-includes/js/scriptaculous/”.</p>
<p>If you have ideas or suggestions, please <a href="http://www.diplod.it/contatti/" title="Contatti">drop me two lines</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2007/08/13/welcome-css-sliding-box-wordpress-plugin/feed/</wfw:commentRss>
		<slash:comments>45</slash:comments>
		</item>
		<item>
		<title>Javascript background-image change per Menu e Div</title>
		<link>http://www.diplod.it/2007/07/23/javascript-background-image-change-per-menu-e-div/</link>
		<comments>http://www.diplod.it/2007/07/23/javascript-background-image-change-per-menu-e-div/#comments</comments>
		<pubDate>Sun, 22 Jul 2007 23:16:48 +0000</pubDate>
		<dc:creator>Davide</dc:creator>
				<category><![CDATA[Ajax e Javascript]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>

		<guid isPermaLink="false">http://www.diplod.it/2007/07/23/javascript-background-image-change-per-menu-e-div/</guid>
		<description><![CDATA[Il titolo non è dei migliori, tradotto significa: Impostare uno sfondo ad un oggetto quando il mouse scorre su un&#8217;altro oggetto Può capitare, per esigenze estetiche, di aver bisogno che quando l&#8217;utente passa il mouse sopra ad un box venga cambiato lo sfondo ad un altro box. In una sorta di fanta-css sarebbe: #div1 { [...]]]></description>
			<content:encoded><![CDATA[<p>Il titolo non è dei migliori, tradotto significa:</p>
<h4>Impostare uno sfondo ad un oggetto quando il mouse scorre su un&#8217;altro oggetto</h4>
<p>Può capitare, per esigenze estetiche, di aver bisogno che quando l&#8217;utente passa il mouse sopra ad un box venga cambiato lo sfondo ad un altro box. In una sorta di fanta-css sarebbe:</p>
<p><code>#div1 {<br />
background: url(img1.gif) center;<br />
}<br />
#div2 {<br />
background: url(img2.gif) center;<br />
}<br />
#div1:hover {<br />
#div2-background: url(img1.gif);<br />
}</code></p>
<p>E&#8217; una soluzione che può tornare utile in certi casi, e ho preparato qualche esempio. Potete tranquillamente scaricarli e utilizzarli come volete, magari correggerli e migliorarli pure. Questo è il <a title="diploD javascript" href="http://www.diplod.it/wp-content/uploads/2007/07/diplod-js.zip">link al file zip con i tre gli esempi</a> presentati in seguito.<br />
Sono stati testati su IE 6 e 7, Opera, FireFox. Tutto il codice, CSS e XHTML, è stato <strong>validato secondo gli standard del <a target="_blank" title="w3c italia" href="http://www.w3c.it/">W3C</a></strong>. Faccio notare come tutti gli esempi siano correttamente e degnamente visualizzati anche da utenti con javascript disabilitati.</p>
<p><span id="more-326"></span></p>
<h4>Esempio 1: menu con css e javascript che spegne tutte le voci tranne quella selezionata col mouse</h4>
<p><a target="_blank" title="Menu js background" href="http://www.diplod.it/dev/menu-bg/">Da questa pagina si può vedere l&#8217;esempio</a>. L&#8217;immagine utilizzata per le tab è una sola, viene caricata secondo la <a target="_blank" title="css sliding doors tab menu" href="http://www.dynamicdrive.com/style/csslibrary/item/sliding-doors-tabs-menu/">tecnica dello slittamento</a> dell&#8217;immagine di sfondo.</p>
<p><img alt="tab" id="image329" src="http://www.diplod.it/wp-content/uploads/2007/07/tab.gif" /></p>
<p><strong>Sintassi HTML</strong>:</p>
<p><code><br />
&lt;ul id="menu"&gt;<br />
&lt;li id="current"&gt;&lt;a xhref="http://www.diplod.it/index.html" mce_href="http://www.diplod.it/index.html"        &gt;Home&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a xhref="http://www.diplod.it/#" mce_href="http://www.diplod.it/#"        &gt;Dove Siamo&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a xhref="http://www.diplod.it/#" mce_href="http://www.diplod.it/#"        &gt;Cosa Facciamo&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a xhref="http://www.diplod.it/#" mce_href="http://www.diplod.it/#"        &gt;Contatti&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a xhref="http://www.diplod.it/#" mce_href="http://www.diplod.it/#"        &gt;Dicono di Noi&lt;/a&gt;&lt;/li&gt;<br />
&lt;/ul&gt;<br />
</code><br />
<strong>Il codice css</strong>:</p>
<p><code>/*menu tabs*/<br />
#menu {<br />
margin: 80px auto 0 auto;<br />
padding: 0;<br />
height: 30px;<br />
width: 880px;<br />
list-style: none;<br />
border-bottom: 5px solid #7ce41d;<br />
font: bold 13px/30px Arial, 'Trebuchet MS', Tahoma, verdana, sans-serif;<br />
}<br />
#menu li {<br />
display: inline;<br />
margin: 0;<br />
padding: 0;<br />
}<br />
#menu li a {<br />
height: 30px;<br />
width: 140px;<br />
float: left;<br />
background: url(tab.gif) no-repeat center top;<br />
margin: 0;<br />
padding: 0;<br />
text-decoration: none;<br />
color: #333;<br />
}<br />
#menu li a:hover {<br />
color: #336633;<br />
<strong>background: url(tab.gif) no-repeat center top !important;</strong><br />
}</code></p>
<p><strong>Il codice javascript</strong> (esterno alla pagina):</p>
<p><code>function cambiaSfondo(hover) { //cambia lo sfondo a tutte le altre tab<br />
var menu = document.getElementById('menu');<br />
var lis = menu.getElementsByTagName('li');<br />
for (var j = 0; j < lis.length; j++) {<br />
<strong>var a = lis[j].getElementsByTagName('a');<br />
a[0].style.backgroundPosition ='0 -30px';</strong><br />
}<br />
}<br />
function ripristinaSfondo(hover) { //cambia lo sfondo a tutte le altre tab<br />
var menu = document.getElementById('menu');<br />
var lis = menu.getElementsByTagName('li');<br />
for (var j = 0; j < lis.length; j++) {<br />
<strong>var a = lis[j].getElementsByTagName('a');<br />
a[0].style.backgroundPosition ='0 0';</strong><br />
}<br />
}<br />
//Events<br />
function addEvent(elm, evType, fn) {<br />
// cross-browser event handling<br />
if(elm.addEventListener) {<br />
elm.addEventListener(evType, fn, false);<br />
return true;<br />
}<br />
else if(elm.attachEvent) {<br />
var r = elm.attachEvent('on'+evType,fn);<br />
return r;<br />
}<br />
else {<br />
elm['on'+evType] = fn<br />
}<br />
}<br />
function addListeners(e) {<br />
var menu = document.getElementById('menu');<br />
var lis = menu.getElementsByTagName('li');<br />
for (var j = 0; j < lis.length; j++) {<br />
var a = lis[j].getElementsByTagName('a');<br />
<strong>addEvent(a[0],'mouseover',cambiaSfondo);<br />
addEvent(a[0],'mouseout',ripristinaSfondo);</strong><br />
}<br />
}<br />
//Aggiungi gli ascoltatori degli eventi quando si carica la pagina<br />
addEvent(window,'load',addListeners);</code></p>
<h4><strong>Esempio 2: Sfondo alternato su un unico bottone diviso in due</strong></h4>
<p><a target="_blank" title="Big button js background" href="http://www.diplod.it/dev/big-button-bg/">Da questa pagina si può vedere l&#8217;esempio</a>. In questo caso l&#8217;immagine utlizzata è decisamente pià grande (e pesante), ma in questo modo si evita che l&#8217;utente percepisca il vuoto mentre l&#8217;immagine si carica al passaggio del mouse. Lo sfondo è relativo al box esterno che contiene i due interni (destro e sinistro) entrambi con sfondo trasparente.</p>
<p><img alt="Big Button" id="image330" src="http://www.diplod.it/wp-content/uploads/2007/07/big-button-bg.gif" /></p>
<p><strong>Sintassi HTML</strong>:</p>
<p><code><br />
&lt;div id=bigbutton" &gt;<br />
&lt;div id="bbleft"&gt;<br />
&lt;h1&gt;&lt;a xhref="" mce_href=""     &gt;Pulsante Sinistro&lt;/a&gt;&lt;/h1&gt;<br />
&lt;h2 class="on-air"&gt;Passa il mouse qui sopra&lt;/h2&gt;<br />
&lt;/div&gt;<br />
&lt;div id="bbright"&gt;<br />
&lt;h1&gt;&lt;a xhref="" mce_href=""     &gt;Pulsante Destro&lt;/a&gt;&lt;/h1&gt;<br />
&lt;h2&gt;Oppure qui sopra..&lt;/h2&gt;<br />
&lt;/div&gt;<br />
&lt;/div&gt;<br />
</code></p>
<p><strong>Il codice css</strong>:<br />
Una piccola nota: il lampeggiamento del titoletto di sinistra non è opera del javascript, ma della dichiarazione css &#8220;text-decoration: blink&#8221;.</p>
<p><code>/*big-button*/<br />
#bigbutton {<br />
height: 130px;<br />
width: 880px;<br />
margin: 100px auto 0 auto;<br />
padding: 0px;<br />
<span style="font-weight: bold">background: transparent url(big-button-bg.gif) no-repeat center top;</span><br />
}<br />
#bbleft {<br />
width: 420px;<br />
margin: 0;<br />
padding: 0;<br />
display: inline;<br />
float: left;<br />
<span style="font-weight: bold">cursor: pointer;</span><br />
}<br />
#bbright {<br />
width: 420px;<br />
padding: 0;<br />
margin: 0;<br />
float: right;<br />
display: inline;<br />
<span style="font-weight: bold">cursor: pointer;</span><br />
}<br />
#bigbutton h1 {<br />
font: 2em/90px Verdana, Arial, sans-serif;<br />
letter-spacing: -3px;<br />
font-weight: bold;<br />
text-align: center;<br />
margin: 0 auto;<br />
padding: 0px;<br />
}<br />
#bigbutton a, #bigbutton a:hover {<br />
color: #333;<br />
text-decoration: none;<br />
outline: none; /* hide dotted outline */<br />
}<br />
#bigbutton h2 {<br />
font: 1.2em/20px Verdana, Arial, sans-serif;<br />
text-align: center;<br />
margin: 0 auto;<br />
padding: 0px;<br />
color: #555;<br />
text-transform:uppercase;<br />
}<br />
#bigbutton h2.on-air {<br />
<span style="font-weight: bold">text-decoration: blink;</span><br />
}</code></p>
<p><strong>Il codice javascript</strong> (esterno alla pagina):</p>
<p><code>function avvertisx() {<br />
alert('Hai cliccato sul pulsante di sinistra!');<br />
}<br />
function avvertidx() {<br />
alert('Hai cliccato sul pulsante di destra!');<br />
}<br />
function sfondosx() { //imposta lo sfondo quando si passa il mouse sul pulsante di sinistra<br />
var bigbutton = document.getElementById('bigbutton');<br />
<span style="font-weight: bold">bigbutton.style.backgroundPosition ='0 -130px';</span><br />
}<br />
function sfondodx() { //imposta lo sfondo quando si passa il mouse sul pulsante di destra<br />
var bigbutton = document.getElementById('bigbutton');<br />
<span style="font-weight: bold">bigbutton.style.backgroundPosition ='0 -260px';</span><br />
}<br />
function ripristinaSfondo() { //ripristina lo sfondo normale<br />
var bigbutton = document.getElementById('bigbutton');<br />
<span style="font-weight: bold">bigbutton.style.backgroundPosition ='0 0';</span><br />
}<br />
//Events<br />
function addEvent(elm, evType, fn) {<br />
// cross-browser event handling<br />
if(elm.addEventListener) {<br />
elm.addEventListener(evType, fn, false);<br />
return true;<br />
}<br />
else if(elm.attachEvent) {<br />
var r = elm.attachEvent('on'+evType,fn);<br />
return r;<br />
}<br />
else {<br />
elm['on'+evType] = fn<br />
}<br />
}<br />
function addListeners(e) {<br />
var bbleft = document.getElementById('bbleft');<br />
var bbright = document.getElementById('bbright');<br />
addEvent(bbleft,'click',avvertisx);<br />
<span style="font-weight: bold">addEvent(bbleft,'mouseover',sfondosx);</span><br style="font-weight: bold" /><span style="font-weight: bold">addEvent(bbleft,'mouseout',ripristinaSfondo);</span><br />
addEvent(bbright,'click',avvertidx);<br />
<span style="font-weight: bold">addEvent(bbright,'mouseover',sfondodx);</span><br style="font-weight: bold" /><span style="font-weight: bold">addEvent(bbright,'mouseout',ripristinaSfondo);</span><br />
}<br />
//Aggiungi gli ascoltatori degli eventi quando si carica la pagina<br />
addEvent(window,'load',addListeners);</code></p>
<h4><strong>Esempio 3: Sfondo alternato su due div separati</strong></h4>
<p><a target="_blank" title="Box js background" href="http://www.diplod.it/dev/box-bg/">Da questa pagina si può vedere l&#8217;esempio</a>. In questo caso si utilizza un&#8217;immagine diversa per ogni blocco, che viene fatta slittare al passaggio del mouse su uno di essi.</p>
<p><img alt="BB Left" id="image331" src="http://www.diplod.it/wp-content/uploads/2007/07/bbleft.gif" /> <img alt="BB Right" id="image332" src="http://www.diplod.it/wp-content/uploads/2007/07/bbright.gif" /></p>
<p><strong>Sintassi HTML</strong>:</p>
<p><code><br />
&lt;div id="bbleft"&gt;<br />
&lt;h1&gt;&lt;a xhref="" mce_href=""     &gt;Pulsante Sinistro&lt;/a&gt;&lt;/h1&gt;<br />
&lt;h2 class="on-air"&gt;Passa il mouse qui sopra&lt;/h2&gt;<br />
&lt;/div&gt;<br />
&lt;div id="bbright"&gt;<br />
&lt;h1&gt;&lt;a xhref="" mce_href=""     &gt;Pulsante Destro&lt;/a&gt;&lt;/h1&gt;<br />
&lt;h2&gt;Oppure qui sopra..&lt;/h2&gt;<br />
&lt;/div&gt;<br />
</code></p>
<p><strong>Il codice css</strong>:<br />
Nota: in questo caso i box sono posizionati in maniera assoluta, ma è possibile utilizzare qualsiasi elemento purchè esso venga identificato con un ID. Penso solo a un <span style="font-weight: bold">effetto di sfumatura su un box all&#8217;interno del quale sono presenti link nei paragrafi di testo</span>. Credo possa essere interessante, soprattutto se consideriamo il fatto che questa soluzione non va a ledere in nessun modo gli utenti con javascript disabilitato.<br />
<code>/*divs*/<br />
#bbleft {<br />
width: 380px;<br />
height: 130px;<br />
margin: 0;<br />
padding: 0;<br />
display: inline;<br />
cursor: pointer;<br />
<span style="font-weight: bold">background: transparent url(bbleft.gif) no-repeat center top;</span><br />
position: absolute;<br />
top: 40px; left: 100px;<br />
}<br />
#bbright {<br />
width: 380px;<br />
height: 130px;<br />
padding: 0;<br />
margin: 0;<br />
display: inline;<br />
cursor: pointer;<br />
<span style="font-weight: bold">background: transparent url(bbright.gif) no-repeat center top;</span><br />
position: absolute;<br />
top: 200px; right: 200px;<br />
}<br />
#bbleft h1, #bbright h1 {<br />
font: 2em/90px Verdana, Arial, sans-serif;<br />
letter-spacing: -3px;<br />
font-weight: bold;<br />
text-align: center;<br />
margin: 0 auto;<br />
padding: 0px;<br />
}<br />
#bbleft a, #bbleft a:hover, #bbright a, #bbright a:hover {<br />
color: #333;<br />
text-decoration: none;<br />
outline: none; /* hide dotted outline*/<br />
}<br />
#bbleft h2, #bbright h2 {<br />
font: 1.2em/20px Verdana, Arial, sans-serif;<br />
text-align: center;<br />
margin: 0 auto;<br />
padding: 0px;<br />
color: #555;<br />
text-transform:uppercase;<br />
}<br />
#bbleft h2.on-air {<br />
text-decoration: blink;<br />
}</code></p>
<p><strong>Il codice javascript</strong> (esterno alla pagina):</p>
<p><code>function avvertisx() {<br />
alert('Hai cliccato sul pulsante di sinistra!');<br />
}<br />
function avvertidx() {<br />
alert('Hai cliccato sul pulsante di destra!');<br />
}<br />
function sfondosx() { //imposta lo sfondo a destra quando si passa il mouse sul pulsante di sinistra<br />
var bbright = document.getElementById('bbright');<br />
<span style="font-weight: bold">bbright.style.backgroundPosition ='0 -130px';</span><br />
}<br />
function sfondodx() { //imposta lo sfondo a sinistra quando si passa il mouse sul pulsante di destra<br />
var bbleft = document.getElementById('bbleft');<br />
<span style="font-weight: bold">bbleft.style.backgroundPosition ='0 -130px';</span><br />
}<br />
function ripristinaSfondosx() { //ripristina lo sfondo normale a destra<br />
var bbright = document.getElementById('bbright');<br />
<span style="font-weight: bold">bbright.style.backgroundPosition ='0 0';</span><br />
}<br />
function ripristinaSfondodx() { //ripristina lo sfondo normale a sinistra<br />
var bbleft = document.getElementById('bbleft');<br />
<span style="font-weight: bold">bbleft.style.backgroundPosition ='0 0';</span><br />
}<br />
//Events<br />
function addEvent(elm, evType, fn) {<br />
// cross-browser event handling<br />
if(elm.addEventListener) {<br />
elm.addEventListener(evType, fn, false);<br />
return true;<br />
}<br />
else if(elm.attachEvent) {<br />
var r = elm.attachEvent('on'+evType,fn);<br />
return r;<br />
}<br />
else {<br />
elm['on'+evType] = fn<br />
}<br />
}<br />
function addListeners(e) {<br />
var bbleft = document.getElementById('bbleft');<br />
var bbright = document.getElementById('bbright');<br />
addEvent(bbleft,'click',avvertisx);<br />
<span style="font-weight: bold">addEvent(bbleft,'mouseover',sfondosx);</span><br style="font-weight: bold" /><span style="font-weight: bold">addEvent(bbleft,'mouseout',ripristinaSfondosx);</span><br />
addEvent(bbright,'click',avvertidx);<br />
<span style="font-weight: bold">addEvent(bbright,'mouseover',sfondodx);</span><br style="font-weight: bold" /><span style="font-weight: bold">addEvent(bbright,'mouseout',ripristinaSfondodx);</span><br />
}<br />
//Aggiungi gli ascoltatori degli eventi quando si carica la pagina<br />
addEvent(window,'load',addListeners);</code><br />
Se avete problemi ad utilizzare questi esempi o volete capire come personalizzarli non esitate a fare domande.. Alla prossima.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2007/07/23/javascript-background-image-change-per-menu-e-div/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Il flash a volte stupisce.. come javascript!</title>
		<link>http://www.diplod.it/2007/07/18/il-flash-a-volte-stupisce-come-javascript/</link>
		<comments>http://www.diplod.it/2007/07/18/il-flash-a-volte-stupisce-come-javascript/#comments</comments>
		<pubDate>Wed, 18 Jul 2007 15:13:15 +0000</pubDate>
		<dc:creator>Davide</dc:creator>
				<category><![CDATA[Ajax e Javascript]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Reggio Emilia]]></category>
		<category><![CDATA[e-commerce]]></category>

		<guid isPermaLink="false">http://www.diplod.it/2007/07/18/il-flah-a-volte-stupisce-come-javascript/</guid>
		<description><![CDATA[Dopo qualche giorno di meritato forzato silenzio, torno a scrivere per parlare di un tema evergreen: flash si o no? Negli ultimi tempi ho notato due applicazioni in flash che mi hanno piacevolmente stupito. Sono particolarmente restio all&#8217;utilizzo di questa tecnologia all&#8217;interno di siti web, un po&#8217; perchè sono fortemente legato agli standard e un [...]]]></description>
			<content:encoded><![CDATA[<p>Dopo qualche giorno di <strike>meritato</strike> forzato silenzio, torno a scrivere per parlare di un tema evergreen: <strong>flash si o no?</strong><br />
Negli ultimi tempi ho notato due applicazioni in flash che mi hanno piacevolmente stupito.<br />
Sono particolarmente restio all&#8217;utilizzo di questa tecnologia all&#8217;interno di siti web, un po&#8217; perchè sono <strong>fortemente legato agli standard</strong> e un po&#8217; perchè non ci ho mai lavorato sul serio. Ma riconosco che ci sono alcune occasioni in cui può stare particolarmente bene. Per capirci: per me non ha senso utilizzarlo nel sito di un museo, poichè si suppone che questo debba essere <strong>leggibile e accessibile da chiunque</strong> (ho avuto esperienze negative in tal senso quando cercavo di vedere le date di una mostra da un pc in facoltà su cui non era installato flash). Forse è una mia deformazione, ma trovo molto più fluido e navigabile un sito come quello di<a title="Palazzo Diamanti - Ferrara" target="_blank" href="http://www.palazzodiamanti.it/"> </a><a title="Palazzo Diamanti - Ferrara" href="http://www.palazzodiamanti.it/">Palazzo dei Diamanti a Ferrara</a> piuttosto che uno come quello di <a title="Palazzo Grassi - Venezia" target="_blank" href="http://www.palazzograssi.it/">Palazzo Grassi a Venezia</a>, al di là dell&#8217;estetica le mie sono considerazioni di usabilità. Lo trovo invece azzeccato in situazioni come <a title="Get The Glass - Gioco dell'oca" href="http://www.gettheglass.com/">questa</a> o <a title="Spreadshirt - magliette personalizzate" href="http://www.spreadshirt.net/it/IT/Creare-t-shirt/Designer-59/">questa</a>. Il primo è un <strong>gioco dell&#8217;oca</strong> in versione web, realizzato per la campagna americana Got Milk a favore del consumo di latte di mucca; il secondo è un <strong>sito di e-commerce</strong> dove è possibile creare capi di abbigliamento personalizzati. Fermo restando che in questo caso esisterebbero anche <a title="Mootools - Carrello drag drop in javascript" href="http://demos.mootools.net/Drag.Cart">soluzioni in javascript che mi convincono</a>, in entrambi in casi si tratta di situazioni in cui il mezzo (flash) centra in pieno &#8220;il fine&#8221;.</p>
<p><span id="more-323"></span></p>
<h4>Il Flash</h4>
<p>Due classici casi in cui mezzo e fine vanno d&#8217;accordo sono il <a target="_blank" title="Photodiary demo" href="http://photodiary.webgriffe.com/demo/">Photodiary</a> di Webgriffe e il <a target="_blank" title="Fluidbook demo" href="http://www.fluidbook.com/demo/en/">Fluidbook</a> di Cubedesigners. Sono entrambi prodotti a pagamento, il primo è un diario on-line con il quale è possibile pubblicare proprie foto, i visitatori poi possono lasciare commenti che appaiono su foglietti volanti tipo post-it; il secondo è uno strumento per pubblicare libri  più in generale presentazioni e testi scritti, con efficaci strumenti per la navigazione, lo zoom, la stampa, ecc.<br />
Così a prima vista sembrano prodotti in qualche modo confrontabili, mi ha stupito il fatto che quello made in italy costi solamente 49 euro mentre il secondo va dai 600 ai 3000 euro. Sono gli americani cari o noi troppo economici?</p>
<div style="text-align: center"><img width="772" height="440" id="image325" alt="Photodiary" src="http://www.diplod.it/wp-content/uploads/2007/07/photodiary.gif" /><br />
<em>La schermata di PhotoDiary</em></div>
<div style="text-align: center"><img width="771" height="438" id="image324" alt="Fluidbook" src="http://www.diplod.it/wp-content/uploads/2007/07/fluidbook.gif" /><br />
<em>La schermata di FluidBook</em></div>
<h4>Javascript</h4>
<p>I miei bookmarks su ajax e javascript sono ormai sterminati. Esistono librerie già pronte in grado di simulare effetti e transizioni davvero stupefacenti. In molti conoscono <a title="Mootools - framework javascript italiano" target="_blank" href="http://mootools.net/">Mootools</a>-<a title="Moo-fx" target="_blank" href="http://moofx.mad4milk.net/">Moo.fx</a>, <a title="Prototype" target="_blank" href="http://www.prototypejs.org/">Prototype</a>-<a title="Scriptaculous" target="_blank" href="http://script.aculo.us/">Scriptaculous</a>, <a title="jQuery" href="http://jquery.com/">jQuery</a> e derivati: <a title="smoothbox" target="_blank" href="http://gueschla.com/labs/smoothbox/">Smoothbox</a>, <a title="Thickbox" target="_blank" href="http://jquery.com/demo/thickbox/">Thickbox</a>, <a title="Modalbox" target="_blank" href="http://okonet.ru/projects/modalbox/">Modalbox</a>, <a title="MOOdalbox" target="_blank" href="http://www.e-magine.ro/web-dev-and-design/36/moodalbox/">MOOdalbox</a>, <a title="Slimbox" href="http://www.digitalia.be/software/slimbox">Slimbox</a> e chi più ne ha più ne metta.. L&#8217;ultima scoperta è stato un <a title="Joomla OS" target="_blank" href="http://www.beautyindesign.com/joomlaos/index.php">template per joomla che simula un sistema operativo</a>. Non mi chiedete se e a cosa possa servire: ma tant&#8217;è che qualcuno ha pensato bene di divertirsi.</p>
<p>Tutto questo per fare un ragionamento: sempre pù spesso mi capita di navigare su siti che propogono soluzioni graficamente accattivanti mantenendo quella linearità e quella pulizia di codice che a mio parere flash non può garantire.<br />
Ci sono combinazioni di CSS e Javascript che mi lasciano piacevolmente stupito, due esempi su tutti: il sito di <a title="Panic - Coda" target="_blank" href="http://www.panic.com/coda/">Coda</a> e <a title="The Horizontal Way" target="_blank" href="http://www.thehorizontalway.com/">HorizontalWay</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.diplod.it/2007/07/18/il-flash-a-volte-stupisce-come-javascript/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

