SharePoint 2010: Como mostrar los datos “sociales” del usuario conectado (I)!

Como sabéis, SharePoint Server 2010 cuenta por defecto con ciertas capacidades “sociales” que permiten que los integrantes de una organización se relacionen entre sí, tengan acceso a información de los denominados perfiles de usuario, se puedan establecer relaciones de “colegas” entre compañeros de trabajo, etc. Por debajo de todas estas capacidades SharePoint cuenta con varios elementos vitales empezando por la correspondiente aplicación de servicio que se apoya sobre una serie de bases de datos que contienen esa información social. En este sentido, algo cada vez más demandado es poder mostrar cierta información social de usuarios de SharePoint y para ello tenemos distintas posibilidades. La primera que se me ocurre pasa por “re-utilizar” de alguna forma WebParts existentes y que ya muestran estos datos y precisamente de esto va este primer post:

  • Comenzaremos como siempre por crear un proyecto para SharePoint de tipo vacío y elegiremos como tipo de despliegue “Deploy as a farm solution”.
  • A continuación agregamos las referencias necesarias a nuestro proyecto que son las que os marco a continuación. Estas referencias nos permiten trabajar con los perfiles de usuario de SharePoint y usar las WebParts existentes.

image

  • Añadimos al proyecto un elemento de tipo WebPart y la codificamos para usar una de los controles sociales existentes. En mi caso, voy a usar el control ProfileDetailsControl que espera recibir un cierto perfile de usuario, por lo que será necesario trabajar con los objetos correspondientes de perfiles de usuarios.
  • Fijaros que defino un objeto de tipo UserProfile que luego instancio a partir de la información del usuario actual que obtengo con un objeto de tipo SPUser.
  • Una vez definido el objeto UserProfile, se lo “damos” al control ProfilesDetailsControl y lo añadimos a la colección de controles de la WebPart.
   1: using System;

   2: using System.ComponentModel;

   3: using System.Web;

   4: using System.Web.UI;

   5: using System.Web.UI.WebControls;

   6: using System.Web.UI.WebControls.WebParts;

   7: using Microsoft.SharePoint;

   8: using Microsoft.SharePoint.WebControls;

   9:  

  10: //Espacios de nombres necesarios

  11: using Microsoft.SharePoint.Portal.WebControls;

  12: using Microsoft.Office.Server.UserProfiles;

  13:  

  14: namespace SPCustomContactDetailWebPart.SPCustomContactDetailWP

  15: {

  16:     [ToolboxItemAttribute(false)]

  17:     public class SPCustomContactDetailWP : WebPart

  18:     {

  19:         protected override void CreateChildControls()

  20:         {

  21:             ProfileDetailsControl pdc =

  22:                 new ProfileDetailsControl();

  23:             Label lblError = 

  24:                 new Label();

  25:             UserProfile upProfile;

  26:             try

  27:             {

  28:                 SPSite spsSitio =

  29:                     SPContext.Current.Site;

  30:                 SPWeb spwSite =

  31:                     SPContext.Current.Web;

  32:                 SPUser spuUsuario =

  33:                     spwSite.CurrentUser;

  34:                 SPServiceContext spsServiceContext

  35:                     = SPServiceContext.GetContext(spsSitio);

  36:                 UserProfileManager upManager =

  37:                     new UserProfileManager(spsServiceContext);

  38:                 if (spuUsuario.LoginName.Contains("system"))

  39:                 {

  40:                     upProfile =

  41:                         upManager.GetUserProfile("contoso\administrator");

  42:                 }

  43:                 else

  44:                 {

  45:                     upProfile =

  46:                         upManager.GetUserProfile(spuUsuario.LoginName);

  47:                 }

  48:                 pdc.Profile = upProfile;

  49:             }

  50:             catch (Exception ex)

  51:             {

  52:                 lblError.Text = "Error: " + ex.Message;

  53:             }            

  54:                 this.Controls.Add(pdc);

  55:                 this.Controls.Add(lblError);

  56:         }

  57:     }

  58: }

  • Desplegamos la WebPart y comprobamos que funciona como se espera.

image

Publicado por

Juan Carlos González

Juan Carlos es Ingeniero de Telecomunicaciones por la Universidad de Valladolid y Diplomado en Ciencias Empresariales por la Universidad Oberta de Catalunya (UOC). Cuenta con más de 12 años de experiencia en tecnologías y plataformas de Microsoft diversas (SQL Server, Visual Studio, .NET Framework, etc.), aunque su trabajo diario gira en torno a SharePoint & Office 365. Juan Carlos es MVP de Office Servers & Services desde 2015 (anteriormente fue reconocido por Microsoft como MVP de Office 365 y MVP de SharePoint Server desde 2008 hasta 2015), coordinador del grupo de usuarios .NET de Cantabria (Nuberos.Net, www.nuberos.es), co-fundador y coordinador del Grupo de Usuarios de SharePoint de España (SUGES, www.suges.es), así como co-director de la revista gratuita en castellano sobre SharePoint CompartiMOSS (www.compartimoss.com). Hasta la fecha, ha publicado 8 libros sobre SharePoint & Office 365 y varios artículos en castellano y en inglés sobre ambas plataformas.

Un comentario en “SharePoint 2010: Como mostrar los datos “sociales” del usuario conectado (I)!”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *