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 :-)

martes, 29 de septiembre de 2009

Panel de pruebas de jQuery para Sharepoint

Para los que les gusta mucho usar jQuery integrado con Sharepoint, les paso este artículo en dónde se muestra como probar fácilmente código jQuery en un sitio de Sharpeoint. Que lo disfruten!

Artículo:
http://cglessner.blogspot.com/2009/09/jquery-test-panel-for-sharepoint.html

Instalando una feature en sharepoint

Breve artículo acerca de cómo instalar una feature en Sharepoint.

Antes que nada, ¿qué es una feature? Es una nueva funcionalidad de WSS 3.0 orientada al desarrollador. Permite definir elementos de sitio y agregarlos al sitio a través del proceso denominado "activación". ¿Qué tipos de elementos permite definir? Comandos de menú, plantillas de páginas, instancias de páginas, definiciones de listas, eventos, workflows entre otros.

Bien, no es propósito de este artículo hablar sobre features, sino describir cómo se instalan. El proceso es sencillo y se deben seguir dos pasos:

1) Instalación

stsadm.exe -o installfeature {-filename -name } [-force]

2) Activación

stsadm.exe -o activatefeature {-filename -name -id } [-url ] [-force]

Notas:

  • Usar FORCE cuando la feature este corrupta y se desea re-instalarla o re-activarla
  • La activación se puede hacer también en forma manual desde "Site Settings / Sites Features"
  • URL es obligatorio exceptuando que el alcance de la feature sea FARM. Para los casos de Web Application, Site o Web es obligatorio.

Para ampliar:

Hasta la próxima…

lunes, 28 de septiembre de 2009

Registrar un ensamblado como Control Seguro en el archivo Web.Config

Un ensamblado –assembly- (.dll) es reconocido como Control Seguro si se incluye una referencia a éste en el Web.Config. Este archivo Web.Config es seguro ya que desde Sharepoint no se puede acceder y modificar el mismo, sino que sólo se puede hacer si se accede al mismo desde el servidor en donde se encuentra ubicado.

Todo Web.Config contiene una etiqueta (tag) <SafeControls>. Esta etiqueta contiene una referencia por cada archivo binario que se considere seguro o de confianza. Para agregar una nueva entrada de confianza (si se observa en detalle el Web.Config se encontrarán algunas entradas existentes requeridas por Sharepoint), se requiere especificar los siguientes argumentos:

  • Assembly: es el nombre del ensamblado. Si el ensamblado tiene un nombre seguro (strong name), éste debe identificarse con su nombre completo compuesto por 4 partes.
  • Namespace: espacio de nombres del ensamblado. Este debería ser el mismo espacio de nombres utilizados en el código.
  • TypeName: nombre del control Web al que se permite la ejecución. Si se quiere que todos los controles del ensamblado sean seguros, se debe utilizar "*".
  • Safe: True o False. Si se indica "True", se marca el ensamblado como seguro. Si se marca como "False" éste se indicará como No Seguro. En general este argumento se marca como "True", salvo excepciones en donde se quiera modificar el estado de un control existente.

A modo de ejemplo, la siguiente entrada a la etiqueta <SafeControl> marca como seguro el archivo DLL que contiene el código para realizar búsquedas en Sharepoint:

<SafeControl Assembly="Microsoft.Office.Server.Search, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" Namespace="Microsoft.Office.Server.Search.WebControls" TypeName="*" Safe="True" />

NOTA: es muy importante que el argumento Assembly se encuentre correctamente identificado con sus correspondientes claves en la GAC.

¿Qué eventos maneja sharepoint?

Los que hayan programado algún evento en Sharepoint, sabrán que es una funcionalidad muy potente, pero ¿cuáles son todos los eventos que Sharepoint puede manejar? Aquí les dejo una tabla y vínculos para los que deseen ampliar el tema. Que lo disfruten!

<></><></>

Nivel

Sincrónico

Asíncrónico

Ítem

ItemAdding

ItemAttachmentAdding

ItemAttachmentDeleting

ItemCheckingIn

ItemCheckingOut

ItemDeleting

ItemFileMoving

ItemUncheckedOut

ItemUncheckingOut

ItemUpdating

ItemAdded

ItemAttachmentAdded

ItemAttachmentDeleted

ItemCheckedIn

ItemCheckedOut

ItemDeleted

ItemFileMoved



ItemUpdated

ItemFileConverted

Lista

FieldAdding

FieldDeleting

FieldUpdating

FieldAdded

FieldDeleted

FieldUpdated

EmailReceived

 

Sitio

WebMoving

WebDeleting

WebMoved

WebDeleted

Colección de sitios

SiteDeleting

SiteDeleted

Feature

FeatureInstalled

FeatureUninstalling

FeatureActivated

FeatureDeactivating


Más info en:

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spitemeventreceiver_methods.aspx

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splisteventreceiver_methods.aspx

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spwebeventreceiver_methods.aspx

http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spemaileventreceiver_members.aspx

http://msdn.microsoft.com/en-us/library/ms469501.aspx

http://msdn.microsoft.com/en-us/magazine/cc163318.aspx

Explicando FBA en sharepoint a mi abuela

Ayer estuve en la casa de mi abuela tomando el té. Entre muchas conversaciones sobre recuerdos del pasado, mi abuela me sorprendió con la siguiente pregunta:


Abuela: Pablito… ¿Qué es la autenticación basada en formularios (FBA) que según escuché, utiliza WSS 3 (Windows Sharepoint Services 3.0)?


Juan Pablo: Abuela, muy oportuna tu pregunta. Te cuento que la versión anterior de Sharepoint (WSS 2) sólo soportaba autenticación contra cuentas de Windows. Esto hacía que realmente sea complejo habilitar un sitio de Sharepoint para ser accedido desde Internet o desde una Extranet. Por suerte, a partir de ASP .Net 2.0 existe un nuevo modelo de proveedores de autenticación. Esto permite que por ejemplo, las cuentas se registren en una base de datos SQL Server y no depender de Active Directory, pero no sólo eso, también podrías trabajar con un proveedor LDAP (Novel, Sun, etc).


Abuela: ¿Entonces yo podría habilitar a usuarios externos a mi red a que accedan a un sitio de sharepoint sin necesidad de tener una cuenta en mi AD?


Juan Pablo: Por supuesto y además podrías tener diferentes métodos de autenticación dependiendo de la zona. Por ejemplo, los usuarios internos podrían utilizar sus usuarios de Windows, mientras que los externos podrían utilizar FBA. Además podrías habilitar acceso anónimo si fuera necesario. Muy potente cómo verás.


Abuela: Desde ya, pero ¿dónde debo hacer clic para habilitar FBA?


Juan Pablo: Abuela, no todo es tan sencillo, tu lo sabés, son una serie de pasos que debes realizar para ello. Si pudieras hacerlo en un solo clic, quizá no sería tan flexible (engañé a mi abuela). Mira, debes tener en cuenta todos estos pasos:

  1. Extender la aplicación web
  2. Crear la base de datos en SQL Server
  3. Configurar el proveedor de autenticación
  4. Habilitar FBA en la aplicación web

Abuela: ¿para qué debo extender la aplicación web Pablito?


Juan Pablo: Porque puedes tener diferentes tipos de autenticación por zona. Supón que tienes autenticación por Windows en la zona de Intranet y deseas tener autenticación FBA en la zona de Intranet. En ese caso debes extender la aplicación web, seleccionar NTLM en proveedor de autenticación e Internet en la zona.


Abuela: ¿Y cuál es el siguiente paso? ¿En dónde están los usuarios?


Juan Pablo: Debes crear una base de datos en SQL Server para ello (asumiendo que usas FBA con SQL Server), abrir la línea de comandos de –Net Framework y ejecutar alguno de los siguientes comandos:


%windir%\Microsoft.NET\Framework\v2.0.5027\aspnet_regsql -A all –E


%windir%\Microsoft.NET\Framework\v2.0.5027\aspnet_regsql.exe (se ejecuta un asistente)


Una vez que hayas creado la base, debes crear los usuarios y roles, que luego serán utilizados dentro de Sharepoint.


Abuela: bien, parece bastante sencillo…


Juan Pablo: Así es abuela, pero ahora viene algo de trabajo manual. Debes editar el archivo web.config del sitio de Internet y del administrador central de Sharepoint. Grabas ambos archivos y luego ejecutas un ISSRESET.


Primero debes modificar la cadena de conexión, debajo </SharePoint> arriba <system.web>:



<add name="AspNetSqlProvider" connectionString="server=tuServidorSQL; database=aspnetdb; Trusted_Connection=True" />

El resto de la configuración debes hacerla debajo de <system.web>:

<membership defaultProvider="AspNetSqlMembershipProvider">

<providers>


<remove name="AspNetSqlMembershipProvider" />


<add connectionStringName="AspNetSqlProvider" passwordAttemptWindow="10" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" description="Stores and retrieves membership data from the Microsoft SQL Server database" name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />


</providers>


</membership>



<roleManager enabled="true" defaultProvider="AspNetSqlRoleProvider">


<providers>


<remove name="AspNetSqlRoleProvider" />


<add connectionStringName="AspNetSqlProvider" applicationName="/" description="Stores and retrieves roles data from the local Microsoft SQL Server database" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />


</providers>


</roleManager>


Abuela: Se complicó un poco…

Juan Pablo: No tanto abuela, es sólo un archivo XML, de todas maneras te dejaré algunos artículos que te servirán de guía si fuera necesario. Pero no olvides que aún falta configurar el administrador central de sharepoint: debes ir a Administración de Aplicaciones y configurar tu aplicación web, eligiendo:

  • Authentication Type: Forms
  • Membership Provider Name: AspNetSqlMembershipProvider
  • Role Manager Name: AspNetSqlRoleProvider
  • No olvides que esto debes hacerlo en la zona de Internet!


    Abuela: ¿Eso es todo?


    Claro, no olvidés entrar al administrador central de sharepoint y agregar los usuarios en la sección "for Web Application", sino será difícil que alguien pueda acceder…


    Abuela: Realmente ha sido muy claro, aunque me hubiera gustado ver alguna pantallita.


    Una sola abuela…



    Abuela: Me ha parecido un tema muy interesante. Gracias por la explicación. ¿En qué revista puedo leer más sobre esto?


    Juan Pablo: Abuela, mejor usa Internet. Te dejo algunos links:


    http://technet.microsoft.com/es-us/library/cc288043.aspx (español, pero MOSS)

    http://blogs.msdn.com/sharepoint/archive/2006/08/16/702010.aspx (inglés)

    http://www.andrewconnell.com/blog/articles/HowToConfigPublishingSiteWithDualAuthProvidersAndAnonAccess.aspx (inglés)

    http://sharepointgear.wordpress.com/2009/03/25/70-541enable-forms-authentication-on-the-iis-virtual-server/ (inglés)

    viernes, 25 de septiembre de 2009

    Configuración de cuentas de servicio de Sharepoint

    Este artículo pretende detallar los aspectos creación de cuentas de seguridad que se requieren a la hora de configurar un servidor de sharepoint. Que les sea útil y que lo disfruten…

    A. Cuentas a nivel del servidor de granja

    Cuenta

    Descripción

    Instalación en un servidor

    Instalación en granja

    Cuenta de servicio de SQL Server.

    Esta cuenta se necesita en el momento de instalación de SQL Server.

    Cuenta local de sistema.

    Cuenta local de sistema o cuenta de usuario de dominio.

    Cuenta de servicio de instalación.

    Usada para ejecutar la instalación en cada equipo, la configuración de WSS, STSADM y PSCONFIG.

    Miembro del grupo de administradores en el equipo local.

    Cuenta de usuario de dominio, miembro del grupo de administradores en el equipo local y SQL Server login con los roles securityadmin y dbcreator.

    Cuenta de servicio de la granja.

    Identidad del "application pool" que contiene el sitio del Administrador Central de Sharepoint.

    Cuenta del proceso del servicio "WSS Timer".

    Por default es "Network Service" y no necesita configuración manual.

    Cuenta de usuario de dominio

    Es agregada automáticamente como SQL Server login con los roles securityadmin, dbowner y dbcreator.

    B. Cuentas para el servicio de búsqueda de WSS

    Cuenta

    Descripción

    Instalación en un servidor

    Instalación en granja

    Cuenta de servicio del servicio de búsqueda de WSS.

    Usada como cuenta del servicio de búsqueda. Típicamente en una granja hay un solo servidor de búsqueda.

    En forma predeterminada, se ejecuta con la cuenta local del sistema.

    Cuenta de usuario de dominio que no sea miembro del grupo de administradores local. Automáticamente es configurada con acceso a la base de datos de configuración y como parte del rol db_owner de la base de datos de búsqueda.

    Cuenta de acceso al contenido del servicio de búsqueda de WSS.

    Utilizada para buscar contenido a través de los distintos sitios.

    No debe ser miembro del grupo de administradores locales.

    Similar a la cuenta del servicio de búsqueda de WSS.

    C. Cuentas de identidad del "application pool"

    Cuenta

    Descripción

    Instalación en un servidor

    Instalación en granja

    Indentidad del "Application pool".

    Utilizada para accede a la base de datos de contenido asociadas a las "Web applications" del "application pool".

    Por default es "Network Service" y no necesita configuración manual.

    No necesita configuración manual. Es miembro del db_owner de las bases de datos de contenido y de búsqueda.

    - Esta cuenta debe ser miembro del grupo IIS_WPG. "Network Service" y la cuenta local del sistema son miembros del grupo IIS_WPG en forma predeterminada.
    - Esta cuenta debe ser también miembro del grupo STS_WPG. Este grupo es creado en forma automática durante la instalación en incluye sin necesidad de hacerlo en forma manual a la identidad del "application pool".

    Más información en:
    http://go.microsoft.com/fwlink/?LinkId=92885&clcid=0x409
    http://technet.microsoft.com/en-us/library/cc288210.aspx

    martes, 22 de septiembre de 2009

    Remover o reemplazar vínculos estándar en Sharepoint


    ¿Cuántas veces han necesitado eliminar o reemplazar un link estándar de sharepoint de las columnas de tipo búsqueda o usuario por ejemplo? Muchas seguramente. Les paso un truco usando jquery:

    Ejemplo de llamado a las funciones:
    yq_remover_links( ["/_layouts/userdisp.aspx"] );
    yq_alterar_url( "/ap/Publicas/","/ap/_layouts/ap/VerConsultaConSeguridad.aspx?Tipo=Publicas&Consulta=" );


    Función para remover un link:

    function yq_remover_links ( condicion ) {
    for (i = 0; i < condicion.length; i++) {
    $("a[href]").each(function() {
    if ( this.href.search(condicion[i]) != -1)
    $(this).before('<span>' + $(this).text() + '</span>').remove();
    });
    }

    Función para reemplazar un link:

    function yq_alterar_url ( vieja, nueva ) {
    $("a[href]").each(function() {
    this.href = this.href.replace(vieja, nueva);
    })
    }
    Que lo disfruten!

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

    miércoles, 9 de septiembre de 2009

    ¿Consultas, dudas, problemas, errores con Sharepoint?

    Si tienen alguna duda o consulta sobre Sharepoint, las escuchamos y las respondemos a través de los foros de Microsoft en dónde participamos activamente. Este nos parece el mejor mecanismo, porque recibirás respuesta de muchos profesionales idóneos. Les paso algunos de los foros de SharePoint:


    En español:
    - Administración:http://social.technet.microsoft.com/Forums/es-ES/mosses/threads
    - Desarrollo: http://social.msdn.microsoft.com/Forums/es-ES/mossdeves/threads

    En inglés: hay muchos!! más y son más concurridos. Les paso dos:
    - Diseño y customización: http://social.msdn.microsoft.com/Forums/es-ES/sharepointcustomization/threads
    - Desarrollo: http://social.msdn.microsoft.com/Forums/en-US/sharepointdevelopment/threads

    Algo más: si están interesados en aprender más sobre SharePoint, no se limiten a hacernos llegar su pregunta. Por experiencia propia les decimos que se aprende mucho en estos foros.
    - Respondiendo,
    - Compartiendo conocimientos,
    - Leyendo lo que otros escriben,
    - Haciendo preguntas,

    Es un camino de ida. Se los recomiendo. Hasta la próxima...

    martes, 8 de septiembre de 2009

    Guía para construir aplicaciones en Sharepoint


    Creo que esto puede interesarle a más de uno. Transcribo parte de la instroducción. Pueden acceder a la guía desde aquí:

    http://www.microsoft.com/spg

    The Developing SharePoint Applications guidance helps architects and developers design and build applications that are both flexible and scaleable. It shows developers how to provide IT professionals with the information they need to maintain those applications and diagnose problems when they arise. The two reference implementations illustrate how to solve many of the common challenges developers encounter. One reference implementation addresses basic issues such as creating lists and content types. The other addresses more advanced problems such as how to integrate line of business services, how to create collaboration sites programmatically, and how to customize aspects of publishing and navigation. A library of reusable components helps you adopt techniques used in the reference implementations. The guidance discusses approaches for testing SharePoint applications, such as how to create unit tests, and documents experiences with stress and scale testing one of the reference implementations...

    lunes, 7 de septiembre de 2009

    Filtrando desde la URL - Tips

    Existen algunas opciones que nos permiten filtrar y ordenar elementos de una vista de sharepoint, pasando las condiciones como parámetros en la URL. Estas opciones son:

    Filtro sencillo:

    http://vm-wss3/yq/divel/Lists/Defectos/Abiertos.aspx?FilterField1=Severidad&FilterValue1=B

    Filtro múltiple:

    http://vm-wss3/gain/Lists/Ofertas/AllItems.aspx?FilterName=Estado&FilterMultiValue=Cotizando;Presentada

    Orden:

    http://vm-wss3/yq/divitel/Lists/Defectos/Abiertos.aspx?SortField=Severidad&SortDir=Asc


    ¿Interesante no? Sin embargo lo más interesante se da cuándo el campo por el cuál estamos filtrando no es un campo visible de la lista. Las ventajas en este caso son:

    - Filtra de todas maneras
    - No permite cambiar el filtro al usuario
    - Ni hay manera de llegar a los elementos que quedaron fuera del filtro
    Muy útil a la hora de manejar relaciones maestro-detalle.

    Hasta la próxima!

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

    Mi primer “delegate control”

    Los controles delegados constituyen una potente funcionalidad de sharepoint que definen regiones dentro de las páginas maestras que pueden ser sustituidas para resolver algún requerimiento.

    Lo más interesante es que esto puede ser realizado sin necesidad de alterar la página maestra, ya que la operación se realiza a través de una feature.

    Veamos un ejemplo sencillo: imaginemos que queremos agregar en el ángulo superior derecho un link hacia la página web de nuestra empresa, tal como se ve en la imagen:
    Los pasos que debemos seguir son:

    1) Crear un User Control (ejemplo APLinks.ascx)

    <%@ Control Language="C#" ClassName="APLinks" %>
    <table><tr>
    <td class="ms-globallinks" ><a href=http://www.rmya.com.ar/>RMyA</a></td>
    <td class="ms-globallinks" ></td >
    </tr></table>

    2) Crear un el elemento que llama al User Control (ejemplo elements.xml)

    <Elements xmlns="http://schemas.microsoft.com/sharepoint/"&gt;
    <Control Id="AdditionalPageHead"
    ControlSrc="~/_controltemplates/AP/APClientScripts.ascx"
    />
    <Control Id="GlobalSiteLink0"
    Sequence="99"
    ControlSrc="~/_controltemplates/AP/APLinks.ascx"
    />
    </Elements>

    En ese ejemplo se ven dos controles. El que aplica a nuestro caso es GlobalSiteLink0. La secuencia indica el orden de precedencia respecto al control estándar de sharepoint que normalmente es 100.

    3) Crear la feature y activarla (ejemplo feature.xml)

    <Feature xmlns=http://schemas.microsoft.com/sharepoint/
    Id="{0B4566F8-5A77-482c-8FA7-0EAC0EA0C7DE}"

    Title="Analyzer Point"

    Description="Extensión a WSS creada por RMyA para soportar funcionalidad para Analyzer Point."

    Scope="Web"

    Hidden="FALSE"
    ReceiverAssembly="AP, Version=1.0.0.0, Culture=neutral, PublicKeyToken=0a908865defbb104"
    ReceiverClass="AP.FeatureReceiver"
    >
    <ElementManifests
    >
    <ElementManifest

    Location="elements.xml"
    />
    </ElementManifests
    >
    </Feature
    >

    Pueden encontrar otro ejemplo aquí: http://msdn.microsoft.com/en-us/library/ms470880.aspx
    Estos son los controles delegados que pueden usar:

    • AdditionalPageHead
    • GlobalSiteLink0
    • GlobalSiteLink1
    • GlobalSiteLink2
    • SmallSearchInputBox
    • TopNavigationDataSource
    • PublishingConsole
    • QuickLaunchDataSource

    Hasta la próxima…