SSD: el síndrome de la Sharepoint dependencia

Sharepoint me proporciona seguridad y me hace sentir más fuerte. Las 10 cosas que más me gustan de Sharepoint.

10 puntos para entender a Project Server 2010

Microsoft Project es quizá la herramienta de gestión de proyectos más conocida y utilizada por los líderes de proyectos...

Diseño Gráfico en SharePoint

Serie de artìculos que nos ayudan a incorporar diseño gráfico en las implementaciones de SharePoint...

Revista CompartiMOSS

Artículos publicados en la revista especializada en SharePoint: CompartiMOSS.

Contacto

Enviame un correo :-)

jueves, 27 de agosto de 2009

SPFile y SPList

Breve ejemplo de cómo acceder a las propiedades de un documento almacenado en un document library. Que les sea útil:

SPWeb web = SPContext.Current.Web;
SPList list = web.Lists[Context.Request["Tipo"]];
SPListItem item = list.Items.GetItemById(Convert.ToInt32(Context.Request["ID"].ToString()));
SPFile file = item.File;
Context.Response.Redirect("/ap/" + Context.Request["Tipo"] + "/" + file.Name);


Ver todos los "mini-trucos" en http://surpoint.blogspot.com/search/label/Mini-truco

¿Tengo permisos?

¿Cómo puedo verificar programáticamente si tengo permisos en sharepoint. Muy sencillo, aquí va un ejemplo, que lo disfruten...

SPWeb web = SPContext.Current.Web;
SPList publicas = web.Lists["Publicas"];
string Rol;
if (publicas.DoesUserHavePermissions(SPBasePermissions.AddListItems))
{
Rol = "UA"; //Usuario avanzado
}
else
{
Rol = "U"; //Usuario
}


Ver todos los "mini-trucos" en http://surpoint.blogspot.com/search/label/Mini-truco

lunes, 24 de agosto de 2009

Problemas con la asignación del puerto default de Sharepoint en IIS

En una reciente instalación de WSS 3.0, nos encontramos que al crear la primer Web Application, la misma se instaló en IIS en el puerto default 80. ERROR!! Dicho puerto ya estaba siendo utilizado por IIS para los sitios Web de otras aplicaciones, con lo que solo Sharepoint estaba funcionando y no las aplicaciones ya existentes en el servidor.

Cómo recomendación, al crear la primer Web Application debemos ser cuidadosos y validar previamente que el puerto 80 (puerto default de la instalación) no se encuentre ya en uso y utilizar otro (por ejemplo el 8080).

Ahora bien, si no han sido cuidadosos como nosotros, va a ser necesario cambiar luego de la instalación este puerto.

La forma de hacerlo es creando una nueva extensión del sitio existente desde el Administrador Central de Sharepoint, de la siguiente forma:

1.- Ir a la solapa Administración de Aplicaciones.

2.- Seleccionar la opción "Crear o Extender una aplicación web" dentro de la sección Administración de aplicaciones Web de SharePoint.

3.- Seleccionar la opción "Extender una aplicación web existente".

4.- Dentro de la pantalla de Extensión, seleccionar la aplicación Web y dejar marcada la opción "Crear un nuevo sitio Web de IIS", asignando un puerto que se encuentre disponible. Dejar el resto de las opciones de la misma forma que con el sitio del cuál extendemos. Grabar los cambios.

Ejecutados estos pasos, procederemos a detener el sitio "Sharepoint – 80" en IIS e iniciar el sitio creado en el paso anterior.

Recuerden siempre realizar un backup del sitio antes de ejecutar estas acciones.

Espero les haya sido de ayuda.

miércoles, 19 de agosto de 2009

Sharepoint? Cómo diseño, desarrollo, personalizo, etc. …?

Me he encontrado varias veces con preguntas tales como: ¿Cómo se diseña en sharepoint? ¿Qué herramientas hay? ¿Sharepoint Designer? ¿Visual Studio? Hay muchas respuestas a esto, pero intentaré dar una muy breve respuesta…

1) Browser

Desde el Internet Explorer, contando con los permisos de Diseño o Control Total, se pueden hacer un montón de cosas en Sharepoint. Esto está pensado para un usuario final, es muy amigable, y todos los cambios se registran en la base de datos. ¿Qué se puede hacer?

  • Crear listas:
    • Las listas mantienen información
    • Pueden especificar sus columnas
    • Pueden crear diferentes vistas
  • Crear páginas con webparts :
    • Sharepoint provee varias webparts "out of the box", para ver listas, bibliotecas de documentos, insertar código de cliente (muy poderoso), etc, etc, etc.
    • Las web parts de pueden conectar entre sí para establecer una relación maestro detalle
  • Crear bibliotecas de documentos
  • Personalizar el menú y las solapas
  • Establecer los permisos
  • Crear sitios y sub-sitios.

Esto es lo básico, pero desde el browser se puede hacer muchísimo más. Les recomiendo que lean este blog: http://www.endusersharepoint.com/

2) Sharepoint Designer

Este es el segundo paso, permite hacer más que el browser, pero lo que hagamos sigue quedando en la base de datos (aunque pensemos que estemos creando una página en el file system). ¿Qué se puede hacer?

  • Modificar estilos
  • Modificar las páginas que Sharepoint crea automáticamente
  • Crear páginas más personalizadas
  • Crear workflows!! (mediante un asistente, limitado, pero poderoso)

Sharepoint Designer sirve, pero es para usarlo con cuidado. Y deben descartarlo si desean hacer soluciones de negocio, porque es más difícil realizar el deployment de las aplicaciones, ya que están trabajando directamente sobre el ambiente real.

3) Visual Studio

Visual Studio es necesario cuando se deseen hacer cosas imposibles de hacer con las herramientas anteriores y/o cuándo se deseen armar aplicaciones más sofisticadas, con control de versiones y con la posibilidad de empaquetarlas e instalarlas. ¿Qué se puede hacer? Mucho, pero resumo un poco:

  • Crear Webparts
  • Crear Ajax Webparts
  • Creae Workflows más sofisticados
  • Crear Páginas
  • Crear eventos
  • Crear campos custom
  • Interactuar con los datos de las listas vía el lenguaje de consultas CAML
  • Hacer programáticamente todo lo que se hace con las herramientas anteriores.
  • Automatizar tareas de administración.
  • Etc, etc, etc, etc, …

Bien, ese fue un breve resumen, hasta la próxima.

¿Qué es sharepoint?

Esta no es precisamente una entrada para desarrolladores, pero quizá les sea útil este breve video (en inglés) de Microsoft que explica en 3 minutos para que sirve Sharepoint. Que lo disfruten:


SharePoint in Plain English

viernes, 14 de agosto de 2009

Instalando sharepoint services con SP2 – paso a paso

He tenido que instalar un nuevo ambiente de sharepoint recientemente y me pareció importante tomar nota de los pasos que recorrí. Si bien la instalación de sharepoint no es ciencia oculta, siempre es bueno tener a mano un paso a paso y los principales tips. Aquí se los dejo, espero les sea útil:

1. Objetivo

¿Qué es lo que vamos a instalar? Es lo primero que hay que definir y puede variar según cada necesidad. En mi casa opté por:

  • Windows Sharepoint Services 3.0 Services Pack 2
  • SQL Server 2005 con SP2 (tomo esta versión de SQL que es la mínima necesaria para una futura integración con reporting services)

Para ver un instructivo más detallado, pueden consultar la siguiente página de technet en donde explica cómo realizar la implementación en una granja de servidores simple.

2. Software de base

Pueden consultarlo en la página de Microsoft WSS3 SP2. En mi caso opté por un Windows Server 2003 SP2 con SQL Server 2005 SP2.

3. Windows Update

Creo que no es necesario aclararlo, pero siempre será útil que tengamos al día el Windows update. Mi primer paso fue ponerme al día con esto (67 parches).

Backup: este es un buen punto para realizar un backup. Si utilizan Virtual Server, la opción más grotesca y sencilla es bajar el servidor y hacer una copia del disco rígido.

4. Instalación de Sharepoint

Primero hay que bajar el software desde Microsoft. Microsoft recomienda que para instalaciones nuevas se utilice el SP2, que pueden bajarlo desde este link (asegúrese de bajar el idioma correcto). Luego basta con ejecutar sharepoint.exe y seguir las instrucciones:

- La primera pregunta es qué tipo de instalación realizar. Elegir Avanzada.

- Luego elegir Tipo de Servidor Cliente Web (si no eligen esta opción, sharepoint se instalará con la opción básica usando windows internal database).

- Dejar con el valor predeterminado el campo ubicación de datos.

- Una vez terminado el proceso de instalación (esperen algunos minutos largos), tildar la opción que nos permite ejecutar el asistente para configurar sharepoint.

5. Configuración inicial de Sharepoint

- Elegir la opción "No, deseo crear un nuevo conjunto de servidores"

- Luego se debe ingresar el nombre del servidor de base de datos y los datos de usuario y contraseña. Transcribo lo que sugiere Microsoft al respecto:

Es la cuenta de la granja de servidores y se usa para tener acceso la base de datos de configuración de SharePoint. También actúa como la identidad del grupo de aplicaciones para el grupo de aplicaciones de Administración central de SharePoint y es la cuenta con que se ejecuta el servicio Temporizador de Windows SharePoint Services. El Asistente para configuración de Productos y Tecnologías de SharePoint agrega esta cuenta para los inicios de sesión de SQL Server, la función de servidor Creador de base de datos de SQL Server y la función del servidor Administradores de seguridad de SQL Server. La cuenta de usuario que especifique como la cuenta de servicio debe ser una cuenta de usuario de dominio, aunque no es necesario que pertenezca a un grupo de seguridad específico en los servidores web o los servidores de base de datos back-end. Es recomendable que siga el principio de privilegios mínimos y especifique una cuenta de usuario que no pertenezca al grupo Administradores en los servidores web o los servidores back-end.

- Luego eligen el puerto para Sharepoint Central Administrator (en nuestro caso dejé el default) y la configuración de seguridad, NTLM normalmente.

- "Siguiente" y a esperar los nueve pasos de la configuración.

6. Configuración inicial del Sharepoint Central Administrator

El asistente abrirá automáticamente Sharepoint Central Administrator. Es posible que le solicite usuario y contraseña. Si eso sucede, pueden probar las opciones que recomienda Microsoft (poner el sitio como sitio de confianza y configurar el proxy). En mi caso funcionó mejor poner el sitio dentro de la Intranet.

Una vez dentro del sitio de administración, lo que queda por hacer es:

  • Servicio de búsqueda: Ir a Operaciones / Topologías y Servicios / Servicios del conjunto (granja) / Windows Sharepoint Services Search. Seleccionar el servidor y luego iniciar el servicio. Si obtienen un error del tipo "SPSearch (administrator)", verifiquen que el usuario tenga el formato dominio\usuario.
  • Configuración de correo electrónico entrante y saliente.

7. Crear una aplicación web

Este es el paso mínimo para poder luego crear las primeras colecciones de sitios.

- Ir a Administración de Aplicaciones / Crear o extender una aplicación web / crear nueva aplicación web.

- Aquí es necesario decir si utilizarán un nuevo sitio en IIS y nuevo pool de aplicaciones, o prefieren usar alguno existente. Esto dependerá de cada caso. En mi caso utilicé los existentes.

- Recuerden que si no eligen la opción para que resetee IIS automáticamente, deberán hacerlo ustedes en forma manual para que la aplicación pueda utilizarse.

8. Instalación de paquetes de idioma

Si no necesitan más de un idioma y han instalado sharepoint con el idioma correcto, no necesitarán instalar un languaje pack.

9. Backup

Buen momento para hacer un backup de tu virtual machine y etiquetarlo como "WSS 3.0 SP2 listo para usar".

10. Adicionales:

Llegado este punto, vienen las instalaciones de todos los opcionales. Por ejemplo, webparts adicionales como las que Microsoft provee para los Office Web Components, el paquete de integración con Reporting Services o las features que nosotros hayamos desarrollado para nuestras aplicaciones montadas sobre sharepoint.

11. Comenzar a usarlo:

A partir de ahora viene la parte de crear los sites collections, pero eso ya escapa al alcance de este artículo.

Aquí termino, hasta la próxima. Gracias a Sebastián Torres y Pablo Muzio por los tips.

martes, 11 de agosto de 2009

Project Server 2007 Webparts

Supongo que muchos sabrán que Project Server 2007 está montado sobre Windows Sharepoint Services 3.0. Para más información pueden consultar este artículo. Como parte de esta extensión, Project Server nos proporciona una serie de webparts para explotar información de Project en Sharepoint. Les dejo la lista de webparts:

  • Data Analysis
  • My queued jobs
  • May Schedule
  • My Tasks
  • My Timesheet
  • Project Center
  • Project Details
  • Project Workspaces
  • Reminders
  • Resource Assignments
  • Task Update Requests
  • Team Tasks

Hasta la próxima.

lunes, 10 de agosto de 2009

SharePoint Conference 2009

Falta poco para una de las más importantes conferencias de Sharepoint. Pueden visitar el sitio web en:

http://www.mssharepointconference.com/

Acá les paso la presentación del evento (en inglés):

Microsoft is delighted to announce the SharePoint Conference 2009 - the premier worldwide conference dedicated to SharePoint and related technologies.

There's an exciting mix in the plans for this year. This year's conference will be looking towards the future with a broad array of
deep content centered on the next version of SharePoint, SharePoint Server 2010 and at the same time be firmly planted in the present, sharing
real world experience and guidance to help you maximize your investment in SharePoint Server 2007.


SharePoint Conference 2009 will be the conference to learn about SharePoint Server 2010. Be the first to learn about the improvements we've made to the platform and how many of those investments can be quickly implemented to add value to your organization and businesses.

If you're an
IT Professional, an IT Decision Maker, an Architect or a Developer you'll find a deep set of technical content to give you a kick start for SharePoint Server 2010 and further your skills and knowledge with SharePoint Server 2007.

In addition to the session content you'll have ample opportunities to
network with technical and industry experts including many of the Microsoft staff that helped build SharePoint,
Microsoft Most Valued Professionals
and many of our top
Certified Partners.

Don't miss out on the biggest SharePoint event of the year!
REGISTER NOW to attend from the 19th to the 22nd of October 2009 at the Mandalay Bay Hotel & Convention Center, Las Vegas, Nevada.

This event promises to be the biggest and the best SharePoint Conference yet!

domingo, 9 de agosto de 2009

Paginado en SPGridView

Para agregar paginación a una página Sharepoint que contenga SPGridView (ya sea un WebPart o una ApplicationPage), es necesario incluir las siguientes líneas al momento de definir el SPGridView.

Antes de rellenar la grilla con la instrucción grid.DataBind() agregar el siguiente código:

// Activar el paginado y agregar el evento para paginar
grid.PageSize = 10;
grid.AllowPaging = true;
grid.PageIndexChanging +=
new GridViewPageEventHandler(grid_PageIndexChanging);

Luego agregar el código asociado:
void grid_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
grid.PageIndex = e.NewPageIndex;
grid.DataBind();
}

IMPORTANTE: si el paginado se agrega luego de la instrucción grid.DataBind(), solo se verá la primer página de la grilla sin los links asociados a los números de páginas.

Espero les sirva!!

lunes, 3 de agosto de 2009

Filtros complejos en vistas de sharepoint

Algunas veces necesitamos realizar filtros complejos en vistas de listas, es decir, con información que debe ser leída previamente desde la base de datos. En estos casos una de las soluciones que he encontrado consiste en:

  1. Crear una application page.
  2. Hacer un spquery para obtener la información para armar el filtro
  3. Hacer un redirect a la página que contiene la vista, pasando como parámetros de la URL los filtros:

    .../AllItems.aspx?FilterField1=<>&FilterValue1=< >
    ó
    .../DispForm.aspx?ID=< >

Les dejo un pequeño ejemplo. Espero que les sea útil:

<%@Page language="C#" %>

<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls"
Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

<%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities"
Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

<%@ Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages"
Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

<%@ Import Namespace="Microsoft.SharePoint" %>
<% %>

<%
SPWeb yq_web = SPContext.Current.Web;
SPList presup_list = yq_web.Lists["Presupuesto"];
SPQuery presup_query = new
SPQuery();
presup_query.ViewFields = "<FieldRef Name='ID'/>";
presup_query.Query = "<Where>" +
"<Eq>";
if (Context.Request["TipoPresup"] == "Proyecto") presup_query.Query += "<FieldRef Name='Proyecto' LookupId='TRUE'/><Value Type='Lookup'>";
if (Context.Request["TipoPresup"] == "Oferta") presup_query.Query += "<FieldRef Name='Oferta' LookupId='TRUE'/><Value Type='Lookup'>";
presup_query.Query += Context.Request["Proyecto"] + "</Value>" +
"</Eq>" +
"</Where>";

SPListItemCollection presup_items = presup_list.GetItems(presup_query);

if (presup_items.Count == 1)
{
SPListItem presup_id = presup_items[0];
Context.Response.Redirect("/gain/Lists/Presupuesto/DispForm.aspx?ID=" + presup_id["ID"].ToString() + "&Proyecto=" + Context.Request["Proyecto"] + "&TipoPresup=" + Context.Request["TipoPresup"] + "&Tit=" + Context.Request["Tit"] + "&Cons=" + Context.Request["Cons"]);
}
else
{
Context.Response.Redirect("/gain/Lists/Presupuesto/DispForm.aspx?ID=0&Proyecto=" + Context.Request["Proyecto"] + "&TipoPresup=" + Context.Request["TipoPresup"] + "&Tit=" + Context.Request["Tit"] + "&Cons=" + Context.Request["Cons"]);
};
%>