Arquitectura, buenas prácticas y desarrollo sobre la nueva herramienta de Microsoft SharePoint 2016

[CompartiMOSS Nº 18] Motivos por los que no perdérsela

Como cada tres meses, acaba de ver la luz el tercer número de la revista digital CompartiMOSS. Para aquellos que no la conozcáis CompartiMOSS es la única revista escrita en Español dedicada integramente a SharePoint y a las tecnologías relacionadas. Este dirigida por cuatro MVP’s de SharePoint Juan Carlos Gonzalez, Alberto Díaz, Gustavo Velez y Fabián Imaz, con lo que teniendo semejantes directores seguro que nada malo puede salir.

Este número es un tanto especial para mí por varios motivos: Leer más

Publicado en encamina, sharepoint 2013, Yammer | Etiquetado , , , | Deja un comentario

[SharePoint 2013] Modificar los valores de configuración de los WebParts dinámicamente

SharePoint como herramienta de desarrollo es una plataforma muy versátil y que permite muchas variantes. Recientemente hemos tenido que dotar una solución un tanto particular que como resultado ha tenido este post. Esta solución me parece muy útil y que se puede extender en muchos desarrollos.

Caso de Uso

Tenemos una página en la que mostramos diversos webParts de tipo XSLTViewWebPart con los elementos de una lista de SharePoint. Imaginad el caso base tenemos una página de artículos en la que por un lado vemos los artículos que tenemos en el almacén, los artículos que tenemos en cada tienda, los precios de compra y de venta y por ejemplo las reservas. En base a este diseño (que no vamos a discutir si es la mejor opción o no) tenemos que implementar «algo» que filtre sobre todos estos elementos. Leer más

Publicado en desarrollo, sharepoint 2013 | Etiquetado , , , | Deja un comentario

SharePoint 2013: Herramientas para personalizar Formularios

Una de las tareas que más flojas de SharePoint son los formularios de entrada de datos a Listas, cuando tenemos un formulario con muchos campos, algunos de estos compos dependen del valor de algun campo previo, incluso que algunos roles de la organización no tienen que ver estos campos dependiendo del rol que tengan, es decir que no son la clásica lista de Contactos donde tengamos Nombre, Apellidos y Fecha de Nacimientos, son Listas que nos vemos en nuestro día a día trabajando con nuestro servidor preferido.
SharePoint no cuida mucho la interfaz de usuario y en esta parte es donde entra nuestra labor: la de personalizar estos formularios para darle el funcionamiento requerido al usuario. Aunque en un principio parezca que no tenemos muchas herramientas, como he comentado en anteriores ocasiones, SharePoint es una plataforma que admite mucha personalización (naturalmente siempre sabiendo que es lo que se tiene y hasta donde lo podemos llevar a cabo).
Leer más

Publicado en sharepoint 2013 | Etiquetado , , , , | 2 Comentarios

SharePoint 2013: Design Manager ¿Qué es? ¿Realmente es útil?

No voy a meterme en tareas de diseñadores, entre otras cosas, porque no es ni mucho menos mi especialidad, pero dada mi labor diaria con proyectos con SharePoint, sí que me gustaría preguntar y ver si una de las herramientas/utilidades que vienen en SharePoint 2013 como es el Design Manager es realmente útil o no?.


¿Que es el Design Manager?

El Design Manager es una serie de herramientas/procesos que vienen de serie en SharePoint 2013 para «facilitar» la vida a los diseñadores, es un intento de que los diseñadores trabajen en SharePoint igual que si tuvieran cualquier otro tipo de proyecto web. Se facilita que puedan utilizar cualquier herramienta de diseño favorita para generar el HTML preferido, y eso sí, añadirle las marcas que necesitan para que este HTML pueda utilizar herramientas de SharePoint (WebParts) con una serie de CMDLETs que lo puedes hacer vía web.

Cuando nosotros pulsamos sobre Design Manager tenemos 7 posibilidades:

1.- Crear Canales de Visualización (Device Channel)
Los que estuvisteis presentes en mi charla en la Iberian SharePoint Conference, ya sabéis mi opinión 🙂 Y es que esta utilidad no la vamos a a utilizar nunca. Ya que es una utilidad que carece de sentido hoy en día. Si quiero facilitar la vida a los diseñadores no les voy a pedir que me hagan una MasterPage/PageLayout por cada dispositivo en la que quiero que se muestre mi web. Para eso esta el diseño «Responsive» no? Para que nuestro diseño se adapte a la pantalla del dispositivo en el que se esta viendo nuestra Web. Yo creo que esta opción la querían incluir en la versión 2010 no les dió tiempo y ya que la tenian implementada, pues la han añadido en la versión 2013.

Las opciones de la 3 a la 7 son opciones que los diseñadores utilizarán muy a menudo. Bien porque pueden trabajar de dos formas :

  1. Implementando el HTML  e incorporarlo a SharePoint tras una serie de adaptaciones se convierten en elementos de SharePoint: Master Pages, PageLayouts o Display Templates. En la revista CompartiMOSS se han escrito varios artículos sobre este tema uno de Santiago Porras sobre los Display Templates  y otro de Alberto Diaz sobre el Design Manager más genérico.
  2. Implementando los PageLayouts como se hacia en anteriores versiones.

El punto 8 era el que realmente tenia mucho interés para mí: ver como funciona y por eso, es el que realmente puedo valorar. La idea es que pulsando este botón, todos los aspectos relativos al diseño te los extrae en un paquete .WSP y lo podemos instalar en otro entorno. Lo cual como idea y funcionalidad me parece un gran avance ya que como comenté cuando escribí este post uno de los grandes cuellos de botella en los proyectos de SharePoint es la relación desarrollador-diseñador, más bien el solapamiento entre ambos.

Mis conclusiones con esta herramienta es que aunque sea algo positivo creo que no cubre las espectativas ni invergaduras de un proyecto de SharePoint. En primer lugar me parece muy interesante que tenga una utilidad donde me introduzcas todo lo que hace falta para el diseño, pero porque no puedo se incluyen más elementos de SharePoint por ejemplo, las listas, páginas, workflows, etc.

Otro aspecto es que no me permite seleccionar qué elementos quiero importar, por ejemplo, tengo un entorno y quiero que traerme solo los diseños que voy a utilizar, pero el sistema me obliga a traerme todos los cambios.

Otro de los aspectos que hay que tener en cuenta, es qué tipos de contenido se incluyen, por ejemplo, yo tengo un tipo de contenido que incluye un elemento de tipo Taxonomía. Este tipo de elemento no lo incluye en el paquete. También, por ejemplo, si yo dentro de un PageLayout hago referencia a un tipo de lista fija, cuando lo despliegue en el nuevo entorno tengo que tener dos consideraciones: naturalmente que la lista esta creada y otro que tenga el identificador para editar el PageLayout y funcione correctamente.

También tenemos que darnos cuenta que el Design Manager solo es valido para sitios de publicación, para entornos de colaboración no esta implementado. Con lo cual, si por ejemplo, en una Intranet tenemos unos estilos, y unos display templates debido a que hacemos uso del buscador pues tenemos que encontrar la fórmula de pasar estos datos entre entornos.

¿Realmente que es lo que hace esta opción del Design Manager?

Al final lo único que hace es subir ficheros mediante una opción de Module que ya teníamos implementado, por ejemplo, a la hora de subir los ficheros de css, javascript en nuestros diseños. Si sois igual de curiosos que yo, abrir con un fichero ZIP el contenido que tiene el WSP del paquete de diseño:

Captura

Si nos puede más la curiosidad, abriremos los xml que vienen dentro del wsp y allí es donde se indica que se copien los archivos de diseño dentro de la biblioteca de sharepoint «_catalogs». ¿Esto es algo que no podemos hacer nosotros? Pues la verdad es que es relativamente simple hacer esto ¿Cómo? Pues con el siguiente código es un ejemplo de ello:

public static bool CreateMaster(Clases.MasterPages masterPages,string url)
{
using (SPSite spSite = new SPSite(url))
{
using (SPWeb web = spSite.OpenWeb())
{
string[] fileSystem = Directory.GetFileSystemEntries(masterPages.File);
foreach (string item in fileSystem)
{
var direccion = item.Replace(masterPages.File, "").Replace("\\", "");
var fileUpload = System.IO.File.ReadAllBytes(item);
web.RootFolder.SubFolders["_catalogs"].SubFolders["masterpage"].Files.Add(direccion, fileUpload, true);
}
}
}
return true;
}

Conclusión

Yo creo que es una herramienta útil pero siempre que se den unas circunstancias de poca personalización y pocos elementos funciona bastante bien. Si por el contrario, tenemos un sitio con mucha personalización, yo aconsejo que realicemos esta labor de forma manual, porque siempre podremos adaptarnos a las necesidades que buscamos para dar un resultado excelente y sacar la mayor potencia de SharePoint.
Además, también de cara a pensar en el futuro en el que la mayor parte de los desarrollos van a ser en la nube, siempre es bueno no esperar los asistentes mágicos que nos proporciona Microsoft y tener el control de lo que realizamos.

Publicado en sharepoint 2013 | Etiquetado | Deja un comentario

Se necesita tu permiso para Ejecutar Microsoft Office

A la hora de realizar cualquier desarrollo tenemos que tener en cuenta que el mundo no es solo Internet Explorer o bien sistemas operativos con Windows. Ahora, hay cantidad de dispositivos y navegadores y, por eso, no tenemos que dejar de cuidar que en otros navegadores y dispositivos no- Microsoft se pueda visualizar nuestro sitio SharePoint.

La cuestión es que cuando desde un navegador como puede ser Chrome, Safari o Mozilla ejecutamos un sitio de publicación de SharePoint en modo anónimo por defecto se visualiza el siguiente mensaje:
Error

 

¿Porque este error? En el momento en el que creamos el Site Colección desde la Administración Central hay una propiedad en la que indicamos si queremos tener activado el control de presencia de las personas. Este valor por defecto es que Sí.

WebApplication

Esto hace que cada vez que una persona entre, la Master del Sitio hace una llamada a una librería que solamente se necesita en caso de que estés logado. Por lo que, lo mejor es evitar que se realice esta llamada y así nos evitamos errores de seguridad, además de que evitamos que el usuario de la aplicación vea el sitio incorrectamente.

Además de poner este valor a No, tenemos que evitar que la Master realice llamadas innecesarias por lo que tenemos que sobrescribir estas funciones JavaScript:

<script type="text/javascript">
function ProcessImn(){}
function ProcessImnMarkers(){}
</script>

Esto lo que hace es sobrescribir las funciones que realiza la llamada a la librería que solicita los permisos y de esta forma se sobrescribe por una función vacía.
Este error ya ocurría en versiones anteriores de SharePoint y es un problema muy recurrente en los sitios de Office 365 cuando se ejecuta en sistema NO-Microsoft. Esperemos que en futuras versiones se solucionen estos problemas y no tengamos que ir poniendo remedios a una utilidad que debería estar incorporada ya.

Conclusión

La principal conclusión es que en el momento en el que realizamos una web tenemos que probarla y verificar en los diversos navegadores principales, si nos centramos en uno solo quizás estamos perdiendo una franja de usuarios muy valiosos y dada la diversidad de navegadores, sistemas operativos que tenemos hoy en día es algo que no nos podemos permitir.

Publicado en buenas practicas | Etiquetado , | Deja un comentario
ENCAMINA, piensa en colores