E' da un po' di tempo che non riuscivo a postare, causa impegni lavorativi e/o universitari. Avendo trovato (finalmente!) 5 minuti di tempo, ho deciso di scrivere questo post, anche come promemoria.
Supponiamo di dover realizzare un Web User Control (.ascx) per Umbraco, in cui si vogliono visualizzare un certo numero d'informazioni, tra cui un'immagine aggiunta al catalogo dei Media del CMS. Una possibile strategia è quella di recuperare tramite l'id del nodo, (ad esempio 1069 come in figura) :
il percorso in cui è memorizzata l'immagine. Prima di tutto aggiungiamo al nostro progetto gli opportuni riferimenti alle librerie di Umbraco (umbraco.dll e cms.dll) ed importiamo le chiavi della sezione AppSettings del Web.Config di Umbraco nel nostro Web.Config. A questo punto possiamo scrivere una funzione del tipo seguente:
private string GetUrlImageByMediaId(string stringNodeId)
{
string mediaUrl = "";
int intNodeId = 0;
if (int.TryParse(stringNodeId, out intNodeId))
{
System.Xml.XmlNode node = (umbraco.library.GetMedia(intNodeId, false).Current
as System.Xml.IHasXmlNode).GetNode();
if (node != null)
mediaUrl = node.SelectNodes("//data[@alias='umbracoFile']")[0].InnerText;
}
return mediaUrl;
}
La funzione potrebbe essere modificata aggiungendo del codice che specifica l'url di un'immagine di default nel caso non fosse possibile recuperare l'url del Media specificato. Il valore del parametro stringNodeId viene impostato mediante l'utilizzo di una proprietà pubblica del nostro controllo denominata LabMediaId, di tipo stringa. Una volta testato il funzionamento del nostro controllo possiamo copiare i files .ascx e .dll nelle apposite cartelle di Umbraco. Supponendo di avere un Document Type in cui abbiamo definito una proprietà di nome e alias LabMediaId di tipo "Media Picker", per passare alla proprietà LabMediaId, il valore dell'Id del Media, possiamo utilizzare una particolare sintassi di Umbraco, all'interno della definizione del template del nostro Document Type:
<umbraco:Macro LabMediaId ="[#LabMediaId]" ... runat="server"></umbraco:Macro>
Dove i punti indicano la presenza di altri parametri. La versione di riferimento di Umbraco è la 4.0.1
Technorati Tag:
Umbraco,
ascx,
Media