15/10/08

Script para controlar CSS en Páginas MOSS

Existe un script que nos permite poder ver qué clase está utilizando cada uno de los componentes de la pagina de SharePoint, facilitando mucho la tarea a aquellos que tengan que crear master pages. El script lo podeis descargar aquí.
Lo tenemos que pegar en un "Web part editor de contenido" y automaticamente nos saldrá un Textbox en la parte superior que irá mostrando las diferentes clases que se utilizan en los controles por los que pasamos el ratón.


Este es el resultado:


















Fuente: SharePoint Redemption

Utilizar "Dispose()" correctamente en MOSS 2007

He encontrado esta página donde nos explican la manera correcta de utilizar el Dispose() cuando accedemos a Sites, Webs, Lists, etc, en MOSS 2007. Espero que os sirva de ayuda porque hay algunos escenarios bastante curiosos.

http://blogs.msdn.com/rogerla/archive/2008/02/12/sharepoint-2007-and-wss-3-0-dispose-patterns-by-example.aspx

Borrado de los user profiles en SharePoint 2007

Es posible que alguna vez os haga falta limpiar toda la lista de perfiles de usuario importados del Directorio Activo para volver a hacer una importación completa. Si eso os ocurre y teneis mucho perfiles la tarea puede ser algo larga.
Os recomiendo haceros una aplicación de escritorio que os permita hacer esto de una manera rápida y eficaz. Os paso el código:

using (SPSite site = new SPSite("URL del Site"))
{
UserProfileManager profileManager = new UserProfileManager(context);
string count = profileManager.Count.ToString();

foreach (UserProfile user in profileManager)
profileManager.RemoveUserProfile(user.ID);
}

9/10/08

Infopath: Cambiar las cadenas de conexión en caliente

Uno de los problemas que podemos encontrarnos cuando trabajamos con Infopath es que cada vez que realizamos una modificación en el formulario, para poder ver los cambios realizados tenemos que volver a publicarlo, con lo que ello conlleva: (tiempo, hacer un IISRESET en el servidor, etc.)
Para poder evitar eso lo que se hace es utilizar una biblioteca de conexiones, de manera que nuestro formulario accederá al fichero de conexión para ver donde tiene que hacerse el submit, cargar datos de un combo, etc, etc.
Pero iremos paso a paso.
Lo primero que debemos hacer es crearnos dos librerías de Infopath: “Infopath” e “Infopath 2”, que serán las librerías donde iremos guardando los formularios sin necesidad de tener que recompilar el formulario. Y también crearemos una librería de conexiones llamada “Conexiones”. Las librerías quedarían tal que así:


Ahora lo siguiente que tenemos que hacer es crearnos nuestro formulario de Infopath, el cual para este ejemplo será muy sencillo:La idea es que cuando hagamos submit podamos guardar el formulario en una librería o en otra sin tener que recompilar el formulario. El siguiente paso es configurar las conexiones. Para eso pincharemos en Tools --> Data Connections
Nos creamos la conexión a la librería que queramos. Será la primera y no nos importa el contenido que tenga. En mi caso la he creado para que inserte el formulario en la librería “Infopath”.
A continuación le daremos a ‘Convert’ para indicarle el fichero de conexión.
Cogemos la URL de la librería de Conexiones, en mi caso http://server1:10000/Docs/Conexiones
Pegamos la URL en la casilla correspondiente, tal que así:

Pinchamos en ‘Browse’ y guardamos el fichero UDCX que contiene los datos de la conexión en la librería de Conexiones. Cerramos el asistente de conexiones. En la lista veremos el fichero listo para ser aprobado:

Ya tenemos nuestro fichero de conexión configurado para que guarde los formularios en la librería “Infopath”.
Editamos el fichero y pinchamos en “Aprobar o Rechazar”. El fichero lo tiene que aprobar el administrador para que la conexión se pueda utilizar. Una vez aprobado, editamos un formulario, le hacemos el submit y comprobamos que lo guarda en la librería por defecto:


Ahora lo que haremos será editar el fichero UDCX y cambiar a la otra librería. Tendremos que descargar el fichero y editarlo. Recomiendo el notepad ya que el fichero no es muy grande y nos garantizamos que no se inserten caracteres extraños. Tiene este aspecto:
NOTA: He subrayado la URL que tendremos que cambiar. Ahora cambio a la URL de mi otra librería: http://server1:10000/Docs/Infopath%202/ Guardamos el fichero y lo subimos a la librería, sobreescribiendo el que tenemos. (Es posible que se renombre automáticamente a udcx.xml. Dejar la extensión UDCX unicamente)
Lo aprobamos de nuevo.
Cualquier cambio requerirá la aprobación por parte del administrador.

Lanzamos de nuevo el formulario y al hacer submit comprobamos donde guarda el formulario:


Las bibliotecas de conexiones son muy útiles en estos casos porque nos permiten no tener que estar reinicializando el servidor cada dos por tres.

22/7/08

MOSS User Search (Vers. 2)

He implementado otro webpart, que se basa en el primero que hice y que me devuelve los permisos que un usuario tiene en los diferentes Sites y Listas (bibliotecas) de la aplicación. Más adelante lo implementaré a nivel de items, que como todos sabeis, disponen de permisos también. El aspecto del webpart es el siguiente:

Para buscar los permisos de una determinada persona la insertaremos en el PeopleEditor y la validaremos para asegurarnos de que existe:

Una vez validada pincharemos en 'Search' y se lanzará la búsqueda por toda la estructura de Sites y Listas de nuestra aplicación. El resultado que obtenemos es una tabla como esta:


que está dividida en Sites (color naranja) mostranonos la estructura completa de la aplicación. Para cada Site nos muestra las ubicaciones donde ese usuario se encuentra y los permisos de que dispone.

La tabla muestra toda la información, a nivel de Site y de Lists. Esta información la veremos en 4 casos diferentes, que hay que conocer para poder interpretar bien la tabla. Los casos que pueden darse son:


1.- A nivel de Site: (El campo 'Lista' saldrá vacío)
1a.- El usuario está puesto directamente en los permisos. (El campo 'Grupo SharePoint' saldrá vacío)
Este caso se da cuando el usuario lo insertamos directamente en los permisos del Site.

1b.- El usuario está en un Grupo de SharePoint, con lo que hereda los permisos de este.
Este caso es el más común y se produce cuando asignamos permisos a un grupo de SharePoint que contiene 1 o n usuarios dentro. Si el usuario que buscamos está en el grupo lo mostrará la tabla.


2.- A nivel de Listas:

2a.- El usuario está puesto directamente en los permisos para la biblioteca.
(El campo 'Grupo SharePoint' saldrá vacío)
Este caso se da cuando el usuario lo insertamos directamente en los permisos de la biblioteca.

2b.- El usuario está en un grupo de SharePoint, heredando los permisos de este.
Asignamos permisos a un grupo de SharePoint en lugar de a una persona en concreto.


La tabla mostrará todos los permisos de que dispone el usuario en cada componente, como puede verse en el siguiente ejemplo, donde el usuario dispone de casi todos los permisos en la libreria 'Historico Tareas Aprobadores':
Saludos,
Juan Alcalá

17/7/08

Smartpart for SharePoint

'Smartpart for SharePoint' es un tipo de webpart especial que nos va a permitir poder cargar cualquier control de usuario de ASP.NET en un webpart de SharePoint. Os dejo el enlace principal al componente, que es de codeplex: http://www.codeplex.com/smartpart

En proximas versiones de mi webpart de búsqueda de usuarios intentaré que una de ellas sea con smartparts.

saludos,
Juan Alcalá

15/7/08

MOSS User Search (Version 2)

Ya tengo la segunda versión de este buscador de personas en MOSS 2007. He añadido algunas mejoras como un árbol de navegación para ir viendo la estrctura de Sites que existe. Esta versión, además, nos permite buscar por todos los sites a la vez. La versión 1 buscaba site por site, es decir, únicamente podíamos seleccionar un site y buscar en el y después teniamos que buscar en el siguiente. El aspecto es similar en cuanto a estética. Únicamente cambiamos el combo de seleccion de la web application por el árbol de navegación:

Marcaremos los sites donde queremos buscar. De esta forma la busqueda es totalmente personalizada, tal y como se muestra en la figura:
El webpart dispone además de 2 botones para marcar todos los sites y desmarcarlos todos:

El resultado de la búsqueda ahora se encuentra a la derecha:


De nuevo, quien esté interesado en el webpart que se ponga en contacto conmigo vía mail
Quien ya lo tenga que me avise y le envío la actualización.

Saludos,
Juan Alcalá

10/7/08

MOSS User Search

He desarrollado un webpart para SharePoint 2007 que localiza usuarios a traves de toda la red de Sites creados en una determinada Web Application. Es un webpart más bien de Administrador, para evitar tener que ir visitando todos los grupos donde puede estar un usuario para eliminarlo o modificarle algún permiso. Con este webpart el administrador verá en pantalla todos los grupos donde se encuentra una determinada persona.

El webpart tiene este aspecto una vez implantado:


En el combo se cargan todas las Web Application de que dispongamos, tal y como se ve en la figura:

Una vez seleccionada la Web Application cargamos los Sites que lo componen. Estos sites se cargan en un CheckBoxList, para que seleccionemos los que necesitemos:
Seleccionamos los Sites, insertamos el usuario o parte del usuario que queremos localizar y pinchamos el botón de búsqueda. Podemos buscar por el Nombre del usuario o por el Login name, en función de nuestras necesidades.
El resultado es todos los login name que contienen la palabra 'user'. Ahora buscaremos por un nombre de persona. Para ello cargaremos un Site en el que tengo puesto un usuario 'user3' cuyo nombre es 'Juan Alcala Marin':
1.- Seleccionamos la Web Application y seleccionamos todos los sites que contiene, en este caso dos: 'Informes' y 'Web'.
2.- Ponemos 'juan' para buscar y seleccionamos 'By Login Name'

3.- Observamos que el resultado es vacío.

4.- Marcamos ahora 'By Name'
5.- Observamos que el usuario sale en diversos grupos SharePoint, donde cada grupo tiene un enlace al mismo para administrarlo mucho más fácilmente.

El webpart es totalmente configurable en estilos y textos, pudiendo personalizarlo utilizando las clases de la pagina maestra del Site en cuestion. Si editamos el webpart tenemos 2 secciones: 'Styles' y 'Texts':
En 'Styles' insertamos las clases que queramos para los botones, la caja de texto, el combo, los checkbox, etc, incluso le aplicamos la clase a la tabla y las filas que obtenemos como resultado:
En 'Texts' Insertamos el mensaje de error si la Web Application no tiene Sites y los textos a mostrar en la cabecera de la tabla de resultado:

Quien esté interesado en adquirirlo me envía un mail a juanalcala1@gmail.com con el Asunto: "MOSS User Search".


saludos,
Juan Alcalá

3/7/08

Diferencia entre el GAC y la carpeta BIN

Cuando desarrollamos un ensamblado para SharePoint tenemos 2 opciones:

Insertar la DLL en el GAC: Esta opción es viable si lo que queremos es que el ensamblado sea accesible desde cualquier aplicacion web.
Insertar la DLL en la carpeta BIN de la web application: Esta opción se utiliza si queremos que el ensamblado sea accesible desde una aplicacion web en concreto.

Saludos,
Juan Alcalá

Compatibilidad correo entrante (incoming email) en SharePoint 2007

No todas las listas y librerias están habilitadas para recibir correo entrante. Aquí os dejo un listado de los elementos que están habilitados y los que no:

Componentes que pueden recibir correo entrante: Document libraries, Announcements, Calendars, Discussion boards
Componentes que NO pueden recibir correo entrante: Link lists, Wikis, Blog categories, Blog comments, Surveys, Tasks, Porject Tasks, Contacts.

Información obtenida del libro de WROX: "Real World SharePoint 2007"

Saludos,
Juan Alcalá

2/7/08

Audiencias en SharePoint 2007

Puede darse el caso de que tengamos una página web, una lista, una biblioteca, etc y queramos que un determinado tipo de personas lo vean y otro determinado tipo no. Para ello existen las audiencias. En una audiencia lo que establecemos son una deteminada seria de reglas que deben cumplir los usuarios de un determinado grupo para que, en este caso, visualicen un contenido. Así, por ejemplo, si nos cremos una audiencia con 100 usuarios que su nombre empieza por M podriamos crear una audiencia para que visualizaran algo todos los usuarios de ese grupo cuyo nombre sea Manuel, evitando así que el resto de personas lo vieran. Pero lo mejor será verlo en un ejemplo: Lo primero que haremos será crearnos nuestro grupo de seguridad en nuestro Directorio Activo: Una vez tenemos nuestro grupo lo que hacemos es una importación de los perfiles, para asegurarnos de que nuestro SharePoint coge los datos sin problema. No es algo necesario porque debería encontrar el grupo pero de esta forma nos aseguramos 100%. Una vez hecha la importación procedemos a la creación de la audiencia. Para ello nos vamos a la Administración Central --> Servicios Compartidos --> Audiencias


Crearemos una audiencia llamada "Personal Sanitario", por ejemplo y contendrá toda la gente del grupo "Grupo Prueba" que hemos creado antes: 1.- Pinchamos en "Crear Audiencia" y rellenamos los datos que nos pide y aceptamos.
NOTA: Las audiencias funcionan medienta reglas. Es decir, sobre un mismo grupo, aplicandole diferentes reglas, podemos hacer que varie el tipo y cantidad de usuarios que se filtran. En este caso vamos a crear la audiencia para que incluya a los usuarios que cumplan todas las reglas:
La regla será que el usuario sea miembro del grupo de prueba que hemos creado en el directorio activo y que ya tenemos importado:
Ahora ya tenemos nuestra audiencia. En la parte de abajo de la pantalla veremos las diferentes reglas que se aplicarían a la audiencia, en este caso únicamente una, la de pertenencia al grupo.

Una vez creada la audiencia el siguiente paso es aplicarla. Para este ejemplo he creado una página web, a la cual voy a añadir un webpart. A este webpart le insertaré la audiencia que hemos creado. El objetivo es que USER3 pueda verlo y ADMINISTRATOR no.

Pulsamos 'Aceptar' y ya tenemos listo nuestro webpart con nuestra audiencia. Ahora sólo falta comprobarlo. Para ello no logamos como Administrador y comprobamos que no se visualiza el webpart:
Ahora nos logamos como USER3:
y comprobamos que efectivamente, la gente que pertenece al grupo que tiene aplicada la audiencia puede ver el webpart sin problemas:

Saludos,
Juan Alcalá

1/7/08

Instalación de Project Server 2007

1.- Lo primero que haremos será lanzar la instalación del Office Project Server 2007


2.- Una vez finalizada la instalación hay que dejar marcada la casilla de "Ejecutar el Asistente para configuración..." y pulsamos en "Cerrar"


3.-
a) Si se está instalando Project Server en un servidor con WSS/MOSS, el Asistente actualiza la configuración de SharePoint;
b) si se está instalando en un servidor separado, permite configurar con que instancia de SharePoint se va a trabajar.

Continuar a la segunda pantalla del Asistente (la primera contiene solamente texto con instrucciones), y aceptar que algunos de los servicios de Windows sean detenidos.

- El Asistente detecta el servidor de SharePoint y su base de datos de configuración, o permite definir una:


4.- Esperar mientras el proceso de configuración tiene lugar:


5.- Al final, el Asistente muestra una pantalla con el resumen de la instalación, y si ha ocurrido algún error, con una descripción de el de tal forma que se puede corregir y ejecutar el Asistente de nuevo. Después de utilizar el botón "Finalizar", la Administración Central de SharePoint es iniciada.

- Ir a "Operaciones" - "Servicios del servidor", seleccione el servidor y "Personalizado" en "Seleccione la función de servidor para mostrar...". Si el "Servicio de la aplicación Project" no ha sido iniciado, iniciarlo:


6.- Ir a la Administración de servicios compartidos, seleccione el Servicio Compartido y bajo la sección "Project Server" seleccione "Sitios de Project Web Access". Nota: WSS no tiene Servicios Compartidos por defecto, pero la instalación de Project Server crea uno que solamente se puede utilizar para la configuración del Project Server mismo.

7.- En la página de "Administración sitios de Project Web Access", seleccione "Crear sitio de Project Web Access". En la página de "Crear sitio de Project Web Access", seleccione y configure todos los valores pedidos, o acepte los valores por defecto, especificando el "Servidor de base de datos principal". La Aplicación Web puede ser creada bajo la utilizada para el Portal:

8.- El provisionamiento de la nueva Aplicación Web toma algunos minutos. Pinchar en "Actualizar estado" para ver el estado en que se encuentra el proceso :

9.- Cuando el estado sea "Suministrado", el sitio de Project Web Access está listo para ser utilizado:


El sitio de Project Web Access (PWA) es el sitio desde donde usuarios puede controlar y registrar el progreso de sus proyectos. Muchas de las operaciones administrativas se pueden controlar también desde el sitio de PWA ("Configuración del servidor"), pero algunas tareas tienen que ser ejecutadas desde el programa cliente Office Project Professional, como por ejemplo la creación de nuevos proyectos y la creación y acoplamiento de recursos.

La información de instalación y el SDK de Project Server indican todos los escenarios posibles de instalación, con explicaciones detalladas de cada paso.

Requisitos de software para la instalación:

- Windows Server 2003 o 2003 R2 (Standard, Enterprise, Datacenter o Web Edition)
- Microsoft Windows SharePoint Services (WSS) 2007 (se puede usar también MOSS 2007)
- Microsoft .NET Framework 3.0
- Internet Information Services 6.0
- Internet Explorer 6.0 o superior

Recursos:

Sitio de Microsoft sobre Project Server
Sitio de Microsoft sobre Project Professional

Información obtenida de SkunkWorks

saludos,
Juan Alcalá