SharePoint 2010: Nuevo Video Center for SharePoint 2010 Development!

La verdad, y ya lo he dicho en muchas ocasiones, es que con SharePoint 2010 no nos podemos quejar por falta de recursos para hacer extensible la plataforma mediante desarrollo. En este sentido, estos días ha visto la luz un nuevo centro de recursos que recopila una serie de videos sobre desarrollo tanto para SharePoint 2010 On-Premise como para SharePoint Online en Office 365. Se trata del Video Center | SharePoint Development al que podéis acceder desde este enlace: http://msdn.microsoft.com/en-us/sharepoint/hh298298.aspx

image

Anuncios

SharePoint 2010: Cambios a nivel de API con el SP1!

Siguiendo con la serie de artículos sobre novedades que incorpora el reciente service pack 1 (SP 1) de SharePoint 2010, en esta ocasión toca hablar sobre cambios (no muchos en este caso) a nivel de API. En este sentido, una buena referencia a partir de la cuál conocer la novedades es este post de Gary Lapointe: SharePoint 2010 SP1 Public API Changes.

SharePoint2010_thumb

SharePoint 2010: Personalización de la navegación (I)!

Uno de los elementos de un sitio de SharePoint que se puede personalizar de acuerdo a distintas técnicas es el menú de navegación vertical. En este primer artículo vamos a ver como se puede personalizar la navegación de un sitio mediante el modelo de objetos, vamos a utilizar un Feature Event Reciver:

  • En Visual Studio 2010 creamos un proyecto de tipo “Empty SharePoint Project” y elegimos como tipo de despliegue “Deploy as farm solution”.
  • Añadimos al proyecto una Feature que configuramos de forma que el ámbito de la misma sea “Web”.
  • Añadimos un Feature Event Receiver y añadimos una directiva using a Microsoft.SharePoint.Navigation.
  • Codificamos el método FeatureActivated() de la siguiente forma:
   1: public override void FeatureActivated(SPFeatureReceiverProperties properties)

   2: {

   3:     SPWeb spwWeb = (SPWeb)properties.Feature.Parent;

   4:     if (spwWeb != null)

   5:     {

   6:         SPNavigationNode spnNodo = null;

   7:         foreach (SPNavigationNode n in spwWeb.Navigation.QuickLaunch)

   8:         {

   9:             if (n.Title == "Aplicaciones")

  10:             {

  11:                 spnNodo = n; 

  12:                 break;

  13:             }

  14:         }

  15:         //Si no existe la sección...

  16:         if (spnNodo == null)

  17:         {

  18:             spnNodo = new SPNavigationNode("Aplicaciones","", false);

  19:             spwWeb.Navigation.QuickLaunch.AddAsFirst(spnNodo);

  20:         }

  21:         spnNodo.Children.AddAsFirst(

  22:             new SPNavigationNode(

  23:                 "Nóminas", 

  24:                 "Documentos%20compartidos/Aplicaciones.aspx", 

  25:                 false));

  26:     }

  27: }

  • Codificamos el método FeatureDeactivating() de la siguiente forma:
   1: public override void FeatureDeactivating(SPFeatureReceiverProperties properties)

   2: {

   3:     SPWeb spwWeb = (SPWeb)properties.Feature.Parent;

   4:     if (spwWeb != null)

   5:     {

   6:         SPNavigationNode spnNodo = null;

   7:         foreach (SPNavigationNode n in spwWeb.Navigation.QuickLaunch)

   8:         {

   9:             if (n.Title == "Aplicaciones")

  10:             {

  11:                 spnNodo = n; 

  12:                 break;

  13:             }

  14:         }

  15:         if (spnNodo != null)

  16:         {

  17:             SPNavigationNode spnNodoHijo = null;

  18:             foreach (SPNavigationNode n in spnNodo.Children)

  19:             {

  20:                 if (n.Title == "Nóminas")

  21:                 {

  22:                     spnNodoHijo = n; 

  23:                     break;

  24:                 }

  25:             }

  26:             if (spnNodoHijo != null)

  27:             {

  28:                 spnNodoHijo .Delete();

  29:  

  30:                 if (spnNodo.Children.Count == 1)

  31:                 {

  32:                     spnNodo.Delete();

  33:                 }

  34:             }

  35:         }

  36:     }

  37: }

  • Comprobamos que el menú de navegación se ha personalizad de acuerdo al código anterior:
image image

 

Y hasta aquí llega este primer artículo sobre como personalizar la navegación de un sitio de SharePoint.

Office 365: Materiales sobre seguridad y privacidad!

Uno de los compromisos que Microsoft tiene con respecto a su plataforma de productividad en la nube, u Office 365, es la de garantizar la seguridad y privacidad de la información de los clientes que la utilicen. En este sentido, y de cara a tener claro como Microsoft garantiza el cumplimiento de seguridad y privacidad que se puede esperar, tenemos disponibles una serie de materiales en torno a estas cuestiones nada triviales:

  • Office 365 – Standard Response to Request for Information – Security and Privacy This white paper is aligned to the Cloud Security Alliance publication of a Cloud Control Matrix, to support customers in the evaluation of cloud services. The document provides our customers and internal Microsoft employees with detailed responses to the suggested principles put forth by the CSA then mapped to our ISO 27001 certification.
  • Microsoft Online Services Trust Center The trust center is an external site that provides our Office 365 customers with detailed information in simple terms about our commitments relating to privacy, security, and data handling.
  • Security in Office 365 White Paper The purpose of this paper is to provide an overview of the security practices and technology that support enterprise-level security in Microsoft Office 365 for businesses of all sizes.
  • Office 365 – Security Service DescriptionThis document provides information about security to customers in the standard form of a service description.
  • Office 365 Cloud Security Consideration Paper (To be posted here shortly) – This final paper is an expansion upon the Cloud Computing Security Considerations paper released almost a year ago by the Chief Security Advisor Team. It address cloud security considerations in an Office 365 environment and how to strike a balance between customers and Microsoft responsibilities.

Fuente: http://blogs.msdn.com/b/mvplead/archive/2011/07/07/security-and-privacy-support-reference-materials-for-office-365.aspx

SharePoint 2010: Trabajo programático con listas de tipo encuesta (I)!

Una de las listas que se crea por defecto en un sitio de tipo “Sitio de grupo” de SharePoint 2010 es la de tipo encuesta que permite modelar de forma sencilla cuestionarios en los que se pueden definir preguntas de distintos tipos y se permite responder a la misma de forma secuencial. Como habréis deducido, este tipo de lista es un tanto especial lo que es un factor a tener en cuenta cuando queremos atacarla programáticamente (para explotar las respuestas a una encuesta por ejemplo). Sin embargo, como os demostraré el trabajo vía API con este tipo de listas es similar al que realizamos con otros tipos:

  • Creamos en nuestro sitio de trabajo una lista de tipo encuesta.
  • Añadimos un par de preguntas de tipo “Una línea de texto”.
  • Respondemos al menos una vez a la encuesta.
image image image
  • Nos vamos a Visual Studio 2010 y creamos un proyecto de tipo Aplicación de Consola. Añadimos una referencia a Microsoft.SharePoint.
  • Añadimos una directiva using a Microsoft.SharePoint.
  • Añadimos un método estático a Program.cs que nos permita recorrer las respuestas de la encuesta y mostrar la información por pantalla como sigue:
   1: using System;

   2: using System.Collections.Generic;

   3: using System.Linq;

   4: using System.Text;

   5:  

   6: //Espacios de nombres necesarios

   7: using Microsoft.SharePoint;

   8: namespace SPEncuestasProc

   9: {

  10:     class Program

  11:     {

  12:         static void Main(string[] args)

  13:         {

  14:             ProcessSurvey();

  15:             Console.ReadLine();

  16:         }

  17:  

  18:         static void ProcessSurvey()

  19:         {

  20:             using (SPSite spsSitio = new SPSite("http://demo2010a:100/sites/PortalIntranet/"))

  21:             {

  22:                 using (SPWeb spwWeb = spsSitio.OpenWeb())

  23:                 {

  24:                     SPList splSurvey = spwWeb.Lists["Encuesta"];

  25:                     SPListItemCollection splicItemCollection = splSurvey.Items;

  26:                     int iInitialCount, iFieldsNumber, iAnswerNumber=0;                    

  27:                     foreach (SPListItem splItem in splicItemCollection)

  28:                     {

  29:                         Console.WriteLine("----Respuesta # {0} ----", iAnswerNumber);

  30:                        iFieldsNumber = splItem.Fields.Count;

  31:                        for (iInitialCount  = 0; iInitialCount < iFieldsNumber; iInitialCount++)

  32:                        {

  33:                            

  34:                            if (splItem[splItem.Fields[iInitialCount].InternalName]!=null)

  35:                            {

  36:                                Console.WriteLine(

  37:                                     splItem.Fields[iInitialCount].InternalName + " - " +

  38:                                     splItem[splItem.Fields[iInitialCount].InternalName]);    

  39:                            }                        

  40:                        }

  41:                        iAnswerNumber++;

  42:                     }

  43:                 }

  44:             }

  45:         }        

  46:     }

  47: }

  • Cómo veis, lo más interesante del método es la forma en la que se recorren todos los campos disponibles para un registro de la encuesta lo que nos permite acceder a las preguntas y a su respuesta. Esto lo conseguimos accediendo a la colección Fields disponible en cada objeto de tipo SPListItem de la lista.
  • Para cada campo, mostramos su nombre interno y su valor. La salida correspondiente por pantalla es la que se muestra a continuación:

image

Y hasta aquí llega este post sobre trabajo programático con listas de tipo encuesta.

SharePoint 2010: CSS Reference Chart!

Sin duda, a la hora de personalizar un sitio de SharePoint uno de los puntos claves a trabajar es el relativo a los estilos (CSSs) que tenemos que aplicar y sobre todo los estilos de SharePoint que queremos sobrescribir por lo que es muy importante tenerlos perfectamente localizados ya sea utilizando las herramientas de desarrollo del explorador web habitual de trabajo o bien consultando una excelente referencia creada por Heather Solomon: el CSS Reference Chart para SharePoint Foundation y SharePoint Server 2010 que recoge la mayoría de los estilos utilizados en ambos productos. Podéis acceder al CSS Reference Chart desde este enlace. Como podéis ver:

  • Los estilos se encuentran agrupados por categorías generales.
  • Para cada estilo se indica además de su identificador, el propósito del mismo y en que CSS se encuentra localizado (normalmente en el COREV4.css).

Sin duda un recurso imprescindible.

SharePoint2010_thumb

Office 365: ¿En cuántos equipos puedo instalar Office 2010 por cada suscripción?

Cómo sabéis, la suite de productividad de Microsoft en la nube Office 365 no sólo está formada por una serie de servicios que ofrecen capacidades de colaboración, comunicación, correo electrónico, mensajería instantánea, etc, sino que también incluye la posibilidad de usar la suite ofimática de Microsoft a través de la disponibilidad de Office 2010 Professional Plus. La novedad de disponer de esta suite es que no se necesita una clave de producto, sino que su uso se basa en el concepto de suscripción de Office 365. Ahora bien, una pregunta que nos puede venir a la cabeza es la de cuantas instalaciones de Office 2010 puedo realizar por suscripción. La respuesta es que 5 tal y como podéis encontrar en la siguiente referencia de TechNEt:  http://technet.microsoft.com/en-us/library/gg702619.aspx

image