Web Part per visualizzare le immagini in modo random
Il codice seguente, inserito in SharePoint 2007 (WSS3 - MOSS) in una Web Part di tipo Content Editor (pulsante Source Editor), permette di visualizzare, in modo random, le immagini presenti in una picture library (va modificato se si vuole utilizzare una document library).
Utilizza le chiamata RPC per recuperare l'XML della lista e visualizza la miniatura dell'immagine presente, in formato jpeg, nella sotto cartella /_t/ della picture library.
Nel caso la picture library non si trovasse nella root, va modificata la url (variabile folder).
Aggiornare la chiamata alla funzione sgartRandomImage passando il corretto guid della picture library, l'id del tag image e l'eventuale folder (es miosito/miosubsito).
In pratica esegue una chiamata di tipo Ajax tramite l'oggetto XMLHttpRequest ed estrae la url dell'immagine dall'xml di risposta, aggiungendo il path /_t/ che si riferisce alla miniatura generata da SharePoint (update image).
Se si vogliono più immagini random nella stessa pagina, ripetere più volte la chiamata alla funzione sgartRandomImage(imageID, listId, folder) con i parametri corretti e duplicare i tag html image.
Utilizza le chiamata RPC per recuperare l'XML della lista e visualizza la miniatura dell'immagine presente, in formato jpeg, nella sotto cartella /_t/ della picture library.
Nel caso la picture library non si trovasse nella root, va modificata la url (variabile folder).
Aggiornare la chiamata alla funzione sgartRandomImage passando il corretto guid della picture library, l'id del tag image e l'eventuale folder (es miosito/miosubsito).
HTML
<div style="text-align: center; padding: 2px">
<img id="sgartRandomPH" src="/_layouts/images/blank.gif" border="0" />
</div>
<script type="text/javascript">
// SharePoint Random Picture by http://www.sgart.it
function sgartRandomImage(imgId, listId, folder) {
var sgartReq = null;
var sgartUrl = location.protocol + "//" + location.host + folder;
var rpcURL = sgartUrl + "/_vti_bin/owssvr.dll?Cmd=Display&XMLDATA=TRUE&List=" + listId;
// Create request
try {
sgartReq = new XMLHttpRequest();
} catch (e) {
try {
sgartReq = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
sgartReq = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
//not support to browser
}
}
}
sgartReq.onreadystatechange = function() {
if (sgartReq.readyState == 4) {
if (sgartReq.status == 200) {
//update image
var doc = sgartReq.responseXML;
var items = doc.getElementsByTagName("z:row")
|| doc.getElementsByTagNameNS("*", "row");
var p = Math.floor(Math.random() * items.length);
var smallPicUrl = items[p].getAttribute("ows_RequiredField");
smallPicUrl = smallPicUrl.replace("/", "/_t/").replace(".", "_") + ".jpg";
document.getElementById(imgId).src = sgartUrl + "/" + smallPicUrl;
}
// else ; //xml error
}
};
sgartReq.open("GET", rpcURL, true);
sgartReq.send(null);
}
//==============================================
//sgartRandomImage(imageID, listId, folder)
// update Guid with correct picture library ID (ListID)
sgartRandomImage("sgartRandomPH", "%7BA72499EF%2DA1F2%2D4496%2DA4F5%2D264F3BD4A730%7D", "");
//==============================================
</script>
In pratica esegue una chiamata di tipo Ajax tramite l'oggetto XMLHttpRequest ed estrae la url dell'immagine dall'xml di risposta, aggiungendo il path /_t/ che si riferisce alla miniatura generata da SharePoint (update image).
Se si vogliono più immagini random nella stessa pagina, ripetere più volte la chiamata alla funzione sgartRandomImage(imageID, listId, folder) con i parametri corretti e duplicare i tag html image.