Category Archives: Desarrollo Sharepoint

Abrir archivos PDF desde SharePoint

La mayoría de los usuarios de SharePoint desea que los archivos se abran con solo dar un clic en el documento que se requiere y se pueda consultar y modificar. Un avance importante en este tema se presento al tener instalada y habilitada la característica de Office Web Apps, que contempla la apertura y edición de los documentos básicos de Office como son Word, Excel y Power Point.
Sin embargo, unos de los archivos mas utilizados en la actualidad son los archivos PDF, que al no ser parte de la suite de Office no esta soportado por Office Web Apps. Para mejorar la experiencia del usuario en este tema se ha dado un paso importante mediante una actualización para SharePoint OnLine (estaremos a la espera de dicha actualización para SharePoint Empresarial) que contempla poder abrir archivos PDF directamente en Adobe Reader (y el archivo PDF se mantendrá conectado a SharePoint Online). También puede editar y guardar los cambios a SharePoint Online desde el escritorio. Y además, ahora se puede utilizar control de versiones (check-in y check-out) con los archivos PDF para una mejor gestión y revisión de documentos.
¿Que se necesita para poder abrir los documentos mediante Adobe Reader?

Se deben de seguir estos pasos:

  • Actualizar Adobe Reader a la versión 10.1.2 del cliente o la más actual (descargar de aquí).
  • Añada su sitio web de SharePoint Online raíz / de dominio a la zona de seguridad -> Sitios de confianza en Internet Explorer (por ejemplo, https://contoso.sharepoint.com).
  • Seleccionar la opción de Recordar mi contraseña en la casilla al iniciar sesión en un sitio de SharePoint Online.

Hagan la prueba y si todavía no están usando SharePoint Online, nos lo pueden solicitar para darles un acceso por 30 días.

Agregar un documento PDF a la librería de documentos.

Dar clic en el archivo PDF.

Se abre Adobe Reader y pide confirmación de apertura del archivo.

Al confirmar la apertura se muestra el documento PDF ;=)

Limitantes SandBox Solutions

Es importante tomar en cuenta que las SandBox Solutions tienes ciertas limitantes en el desarrollo ya que obviamente es un empaquetado que se ejecuta en entorno aislado (sitio o colección de sitios), a continuación mencionaré algunas de las limitantes para tomar en cuenta

No se pueden crear Visual Web Parts dentro de visual studio 2010

Cuando se desea agregar una Visual Web Part no se tienen la opción para agregarla como Sandbox. Sin embargo ahora ya se tiene una solución:

Instalación de Visual Studio 2010 SharePoint Power Tools: http://visualstudiogallery.msdn.microsoft.com/8e602a8c-6714-4549-9e95-f3700344b0d9

Se encontrará una nueva plantilla “Visual Web Part (Sandbox)”

No se pueden agregar archivos en la carpeta de layouts

Se puede utilizar un módulo para implementar los archivos de la aplicación, sin utilizar la biblioteca de documentos

Se pueden leer los archivos anexando la dirección del módulo a su URL de la colección de sitios:

http://[myhostname]/MiColeccionSitiosMyFiles/js/jquery1.4.4.min.js

No se puede usar páginas de aplicaciones con el código subyacente

Puede implementar una página de aplicación utilizando un módulo y agregar una Visual Web Part Sandbox para utilizar el código subyacente.

SharePoint ofrece un nombre de clase específicos a los archivos de este objetivo.

En el siguiente enlace puedes encontrar un buen ejemplo:
http://www.wictorwilen.se/Post/Custom-application-pages-in-the-SharePoint-2010-Sandbox.aspx

Descripción de las restricciones de Sandbox solutions
Restringir el acceso de las Sandbox solution a un subconjunto del espacio de nombres Microsoft.SharePoint tiene por objeto impedir el acceso a la funcionalidad de las soluciones que podrían desestabilizar a la granja. Cuando las soluciones de espacio aislado realizan llamadas al modelo de objetos de SharePoint, las llamadas se en rutan a través de un subconjunto de proxy, que a su vez hace que las llamadas al modelo de objetos completo.

El subgrupo de proxy expone sólo el siguiente subconjunto del modelo de objetos:
Todo el namespace Microsoft.SharePoint, excepto

  • SPSite constructor
  • SPSecurity object
  • SPWorkItem and SPWorkItemCollection objects
  • SPAlertCollection.Add method
  • SPAlertTemplateCollection.Add method
  • SPUserSolution and SPUserSolutionCollection objects
  • SPTransformUtilities object
  • Microsoft.SharePoint.Navigation namespace

Todo el namespace Microsoft.SharePoint.Utilities, excepto

  • SPUtility.SendEmail method
  • SPUtility.GetNTFullNameandEmailFromLogin method
  • Microsoft.SharePoint.Workflow namespace

Todo el namespace Microsoft.SharePoint.WebPartPages, excepto

  • SPWebPartManager object
  • SPWebPartConnection object
  • WebPartZone object
  • WebPartPage object
  • ToolPane object
  • ToolPart object

Si se examina el subgrupo de modelo de objetos con cuidado, te dará cuenta de que las porciones disponibles son parte del modelo de núcleo de objeto fundacional. No hay objetos disponibles en capacidades más avanzadas tales como Business Connectivity Services (BCS), la búsqueda de SharePoint, Excel Services, y así sucesivamente. Con este subconjunto de la funcionalidad en mente, la Tabla 4-1 enumera los tipos comunes de elementos de un proyecto de SharePoint y si están o no disponibles en la Sandbox solution.

Tabla 4-1. Proyecto de SharePoint Disponibilidad de elementos en soluciones de Sandbox

Disponible en Sandbox No  Disponible en Sandbox
List definitions Visual Web Parts
List instances Application pages
Site definitions Custom action group
WebTemplate feature elements (instead of Webtemp.xml) HideCustomAction element
Content types/Fields Content type binding
Module/files Web application-scoped features
Feature callouts Farm-scoped features
Web Parts Workflows with code
Support for all Web Parts that derive from System.Web.UI.WebControls.WebParts.WebPart  
SPItemEventReceiver  
SPListEventReceiver  
SPWebEventReceiver  
Custom actions  
Declarative workflows  

 

Modelo de objetos Sharepoint 2010

El modelo de objetos del lado del servidor de SharePoint 2010 tiene una jerarquía estructurada que facilita el acceso a cada uno de los objetos dentro de un sitio Web de SharePoint, cabe mencionar que se trabaja mediante colecciones, las cuales contienen un número cualquiera de objetos definidos dentro de SharePoint.

El siguiente diagrama muestra la arquitectura de un sitio de SharePoint.

modelo objetos Sharepoint 2010

SPSite: Una colección de sitios no tiene una interfaz de usuario, una Colección de Sitios necesita obligatoriamente por lo menos un Sitio, llamado el Sitio de Nivel Superior.

SPWeb: Cada Sitio Web dentro de una Colección de Sitios se puede ver como un Sub-Sitio del Sitio de Nivel Superior. Cada Sitio es un depósito de Bibliotecas y Lista.

SPList: SharePoint dispone de un solo tipo de Listas (Lista Personalizada) de la que heredan todas los otros tipos. Una Biblioteca no es más que una Lista Personalizada especializada y modificada para contener documentos de cualquier tipo y sus metadatos. A su vez, las Listas y Bibliotecas son el contenedor de Elementos o Documentos, el último depósito de información en SharePoint.

SPListItem: Elementos de Listas y Documentos de Bibliotecas son el contenedor final de la información en SharePoint y radican en la base del sistema.

El Modelo de Objetos de SharePoint nos permite trabajar con la creación, listado, modificación y eliminación de Elementos de Listas y Documentos de Librerías. La siguiente rutina muestra todos los elementos presentes de una Lista. Algunos campos están disponibles en las propiedades del Elemento mientras otros deben ser accedidos por medio de su nombre o identificador, ejemplo:

public void GetListElements()
{
using (SPSite site= new SPSite("http://servidor"))
{
using (SPWeb web = site.OpenWeb())
{
SPListCollection listCollection= web.Lists;
SPList list= listCollection["nombreLista"];
SPListItemCollection elements = list.Items;

foreach (SPListItem item in elements)
{
Console.WriteLine(item.Title + " - " + item["nombreCampo"]);
}
}

}

}

 

 

Usando SPMetal

Actualmente cuando modelamos nuestras entidades ya contamos con varias herramientas que nos brindan la generación de éstos objetos.

Específicamente para versión de Sharepoint 2010 cuando buscamos trabajar con listas los podemos hacer con la API clásica de Sharepoint

SPSite, SPWeb, SPList, SPListItem, etc.

En éste punto es donde se integra SPMetal, ya que es una herramienta que funciona a través de una línea de comandos que genera clases de entidad, proporcionando una interfaz orientada al modelo de objetos de Sharepoint, es decir, si tengo una lista llamada “Empleado” se genera la Clase “Empleado” junto con todos sus atributos

Se ubica en el directorio bin del path de sharepoint

%ProgramFiles%\Common Files\Microsoft Shared\web server extensions\14\BIN

Ejemplo:

SPMetal /web:http://servidor/Sitio /code:NombreArchivo.cs

Para el ejemplo anterior, todas las referencias de los objetos que se encuentra en “Sitio” se guardan en el archivo “NombreArchivo.cs”

¿Y cual es la finalidad?

Una vez que se tienen modeladas todas las entidades, para accesar al contenido de la lista se hace de la siguiente forma:

public void TestMethod()
{
using (EmployeesDataContext site = new EmployeesDataContext(this.CurrentURL))
{
site.ObjectTrackingEnabled = false;
EntityList employeeItems = site.GetList("Empleado");</code>

var queryEmployee = from e in employeeItems
                             select e;
//...
//...
}
}