Monday, January 28, 2013

SharePoint 2010 - Inserire come Title il Name del documento caricato con javascript!

Quante volte mi sono trovato in difficoltà a .. giustificare il perché SharePoint non mette come Title del Documento caricato il Name dello stesso..!?
Lo fa, certo, se si tratta di un documento Office correttamente compilato (ad es. un file Word con la proprietà Title, o un PDF..)
Ma non lo fa sempre, o non sempre i documenti sono correttamente compilati.

Una strada è l'Event Receiver, ma occorre compilare del codice, non sempre possibile, su tutti gli ambienti dei nostri clienti.

Così, la strada del javascript (o con più facilità, con jquery).

Nota: questa strada è possibile SE tutti i nuovi documenti sono caricati tramite la form di upload o modificando le proprietà da browser!
Per upload massivi o creazione di nuovi documenti da template, questo discorso non è valido ed è necessario intervenire con l'Event Receiver!

Modifichiamo la master page, con il richiamo alle librerie jquery e con l'inseriemto del codice sottostante:


function SetFieldTitleFromNameAutomatic()
{
var inpName = $("input[title='Name']");
var inpTitle = $("input[title='Title']");
if(inpName.val() != '' && inpTitle.val() == ''){
inpTitle.val(inpName.val());
}
}

Questo, essendo chiamato dalla master page, agisce su tutte le pagine, comprese (ed è quello che ci interessa) le new/edit form.
In particolare, la EditForm raggiunta dopo l'upload di un nuovo documento!

Caricando un nuovo documento, al termine dell'upload, viene aperto il form che richiama la funzione SetFieldTitleFromNameAutomatic().

Magia: il campo Title (se vuoto) viene valorizzato con il campo Name!