Recuperare proprietà dell’utente corrente via JavaScript Object Model

Posted on August 30, 2013

1


Mi è capitato in un progetto di dovere generare, nella Home Page della Intranet, il link diretto alla pagina del Personal Site con l’aggregazione dei task dell’utente corrente. Questa per intenderci:

image

Il mio punto di partenza è stato questo articolo: http://msdn.microsoft.com/en-us/library/jj920104.aspx

Tramite JavaScript Object Model è possibile recuperare una o più User Properties dell’utente corrente (metodo getMyProperties) o di uno specifico utente (metodo getPropertiesFor).

Queste le proprietà recuperabili:

Proprietà Descrizione Esempio
accountName DOMINIO\username GTLAB\esasselli
directReports Elenco degli utenti di cui il corrente è il Manager diretto, in ordine alfabetico e separati da virgola GTLAB\alans,GTLAB\bens
displayName   Elisabetta Sasselli
email   esasselli@greenteam.it
extendedManagers Il manager dell’utente GTLAB\danij
extendedReports Elenco degli utenti di cui il corrente è il Manager diretto o indiretto, in ordine alfabetico e separati da virgola GTLAB\alanb,GTLAB\alans,GTLAB\bens
isFollowed Booleano che indica se l’utente è seguito false
latestPost Il testo dell’ultimo post pubblicato dall’utente (site newsfeed o consoldated newsfeed) @Brad passa dal mio ufficio
peers Elenco degli utenti di pari livello del corrente GTLAB\jimd,GTLAB\sanjays,GTLAB\tonip
personalUrl Url del Sito personale /personal/gtlab_esasselli
pictureUrl Url della foto in formato
72 x 72 px
http://mysites/User%20Photos/Profile%20Pictures/gtlab_esasselli_MThumb.jpg
title Riporta il title dell’utente null
userProfileProperties Consente di recuperare tutte le proprietà dell’utente Vedi http://msdn.microsoft.com/en-us/library/jj679700.aspx
userUrl Url del Profilo personale http://mysites/Person.aspx?accountname=GTLAB%5Cesasselli

In sintesi, per le mie esigenze:

HTML

E’ il codice HTML che genera il link e che, mediante ID, viene dinamicamente manipolato via script con l’URL corretto per l’utente corrente.

<a id="myTaskLink" href="#">My Task</a>

JAVASCRIPT

Sono gli script utili per recuperare le proprietà dell’utente dal suo profilo. Li ho richiamati nella pagina, tranne jQuery che era già referenziato in master page, in quanto utilizzato anche in altre pagine della Intranet.

<script type="text/javascript" src="/Style Library/scripts/jquery-1.8.3.min.js"></script>
<script src="/_layouts/15/SP.Runtime.js"></script>
<script src="/_layouts/15/SP.js"></script>
<script src="/_layouts/15/SP.UserProfiles.js"></script>

<script type="text/javascript">
jQuery(document).ready(function(){

  // Ensure that the SP.UserProfiles.js file is loaded before the custom code runs
    SP.SOD.executeOrDelayUntilScriptLoaded(loadUserData, ‘SP.UserProfiles.js’);
});

var userProfileProperties;

function loadUserData(){

    //Get Current Context  and People Manager instance
   var clientContext = new SP.ClientContext.get_current();
    var peopleManager = new SP.UserProfiles.PeopleManager(clientContext);

   //Get properties of the user
    userProfileProperties = peopleManager.getMyProperties();

clientContext.load(userProfileProperties);

//Execute the Query
    clientContext.executeQueryAsync(onSuccess, onFail);

}

function onSuccess() {
document.getElementById("myTaskLink").href=userProfileProperties.get_personalUrl() + ‘highlights.aspx’
}

function onFail(sender, args) {
alert("Error: " + args.get_message());
}

</script>

L’Url alla pagina con l’aggregazione dei task è facilmente ricostruibile, appendendo alla proprietà personalUrl  l’Url della pagina in questione (highlight.aspx).

Per utilizzare la proprietà userProfileProperties, occorre specificare la proprietà richiesta: per esempio userProfileProperties.get_userProfileProperties() [‘Department’] e il numero delle user proerties richiamabili è impressionante (http://msdn.microsoft.com/en-us/library/jj679700.aspx)

Advertisements
Posted in: SharePoint