Siempre he pensado que hace falta una herramienta para poder ver y rastrear dentro de los ficheros LOG de SharePoint.
Pues bien, ya está aquí: ULSViewer
PD: Héctor, gracias por la referencia.
Siempre he pensado que hace falta una herramienta para poder ver y rastrear dentro de los ficheros LOG de SharePoint.
Pues bien, ya está aquí: ULSViewer
PD: Héctor, gracias por la referencia.
Categorías: Sharepoint
Recientemente he descubierto SLAM. Se trata de un proyecto CodePlex muy interesante mediante el que podremos definir relaciones entre las listas de un sitio SharePoint y con las que el SLAM creará una réplica de las mismas sobre la base de datos SQL que le indiquemos.

No solo se trata de la sincronización de la estructura de las listas. Mediante un sistema de Event Handlers, SLAM también sincroniza la información contenida en ellas y los cambios que realizan los usuarios sobre las listas.
De este modo, podremos realizar explotación de la base de datos relacional mediante las herramientas de acceso SQL habituales evitando así uno de los grandes problemas de SharePoint.
Aquí podéis ver un video de sus funcionalidades.
Categorías: Sharepoint
Un ejemplo de funciones básicas para el tratamiento y manipulación en Javascript cliente de los campos que se renderizan en los formularios de SharePoint. Using Javascript to Manipulate a List Form Field
Categorías: Sharepoint · javascript
Recientemente he descubierto Zoho, una completa suite de aplicaciones 100% web listas para ser utilizadas “on demand”, es decir, activando una cuenta y pagando únicamente por su utilización, sin ningún tipo de requerimiento por nuestra parte.
Cada vez son más los servicios que, como Zoho, podemos utilizar bajo esta modalidad completamente on-line y es que a mi entender, este modelo de negocio será el que terminará imponiéndose en un futuro no muy lejano en nuestras empresas y organizaciones. Se requieren soluciones compatibles con nuestros indispensables dispositivos móviles (iPhone’s, Blackberry’s, HTC’s, …) y que funcionen a la perfección sobre la última moda de ordenadores mini-portátiles.
A la extensa suite de productos: gestión de correo, CRM, gestión de proyectos o gestión documental, la gente de Zoho han publicado Zoho Office For SharePoint. Se trata de una completa integración entre sus principales editores de documentos (hojas de cálculo, presentaciones, documentos, …) y SharePoint. Con Zoho Office For SharePoint podremos crear, editar y guardar directamente los documentos situados en nuestras bibliotecas de documentos manteniendo sus formatos originales ya que Zoho es compatible con casi todos los tipos de ficheros más utilizados (documentos doc, docx, odt, sxw, rtf, pdf, hojas de cálculo de tipo xls, xslx, ods, sxc o presentaciones de tipo ppt, pps, odp, sxi)


Zoho permite editar directamente archivos existentes (aunque no estén creados con el producto).
En el siguiente video podréis ver una introducción de las principales características del producto.
Por cierto!!, también está dispone una versión para los principales dispositivos móviles. La podéis encontrar en Zoho Mobile.
Categorías: Herramientas · Sharepoint
Elumenotion ha publicado una nueva versión de Elumenotion SharePoint Skinner, una herramienta muy útil que facilita la creación de temas y estilos para SharePoint.
Encuentro la herramienta especialmente útil cuando se trata de rastrear todos los estilos que aplican a cada uno de los nodos HTML de nuestras páginas (que no siempre es obvio).
En fin, su primera versión ya era altamente recomendable, así que esta release se hace indispensable cuando nos tenemos que pelear con el branding de SharePoint.
Categorías: Diseño · Sharepoint
Los primeros cursos de formación para SharePoint 2010 ya están aquí, y de forma gratuita!!!. Los requisitos: ser Partner de Microsoft y tener la certificación técnica en MOSS 2007.
Categorías: Sharepoint
Muhimbi’s SharePoint Infuser es una interesante herramienta gratuita que nos permite incrustar código (javascript, css) en todas las páginas de nuestra colección de sitios sin la necesidad de utilizar SharePoint Designer.
Resulta especialmente útil ya que no necesitamos modificar páginas maestras para añadir referencias a nuestras librerías JS (JQuery, …) o realizar modificaciones estéticas generales mediante CSS. En la web de Muhimbi podemos encontrar interesantes ejemplos y aplicaciones útiles de la herramienta.
Categorías: Herramientas · Sharepoint
En varias ocasiones, diferentes usuarios me han comentado que no entienden porque los formularios que genera SharePoint muestran la descripción de los campos bajo el área de edición de los mismos. Resulta poco “usable” y no es lógico tener que ir al final de campo para leer una explicación sobre el mismo.
En realidad, si miramos los formularios de administración de SharePoint (al modificar el título o la descripción de un sitio, al añadir una columna o al configurar los parámetros se seguridad) los textos con la explicación de los campos a introducir, aparecen bajo el título del mismo, en el área situada a la izquierda del formulario.
He estado analizando la forma en que ShrarePoint renderiza los formularios y he creado una sencilla utilidad que nos permite aplicar la misma configuración estética sobre nuestras listas y bibliotecas de documentos.
Básicamente, esta utilidad permite pasar de esta situación:
A esta:
SharePoint utiliza un conjunto de plantillas (RenderingTemplate’s) para crear los formularios (edit/display/new) de las listas y bibliotecas de documentos. Estas plantillas están situadas en los ficheros ASCX situados en el directorio de SharePoint: 12\Templates\ControlTemplates.
Si creamos nuestros própios controles y los depositamos en este directorio podremos redefinir algunos de los comportamientos estándar. En nuestro caso, redefiniremos uno de los templates existentes llamado “CompositeField”. Este template se encarga de generar cada una de las filas de la tabla del formulario. Para cada campo se crea una fila (tr) en base a esta definición. Si miramos el template original, situado en el fichero DefaultTemplates.ascx, podremos ver que crea dos columnas (TD), una para el título (<SharePoint:FieldLabel …) y otra para el campo y la descripción (<SharePoint:FormField … y <SharePoint:FieldDescription …).
<SharePoint:RenderingTemplate ID="CompositeField" runat="server"> <Template> <TD nowrap="true" valign="top" width="190px"><H3><SharePoint:FieldLabel runat="server"/></H3></TD> <TD valign="top" width="400px"> <!-- FieldName="<SharePoint:FieldProperty PropertyName="Title" runat="server"/>" FieldInternalName="<SharePoint:FieldProperty PropertyName="InternalName" runat="server"/>" FieldType="SPField<SharePoint:FieldProperty PropertyName="Type" runat="server"/>" --> <SharePoint:FormField runat="server"/> <SharePoint:FieldDescription runat="server"/> <SharePoint:AppendOnlyHistory runat="server"/> </TD> </Template> </SharePoint:RenderingTemplate>
Lo que tenemos que hacer es crear un nuevo fichero ASCX con el RenderingTemplate y depositarlo en el directorio. Para este nuevo template trasladamos el FieldDescription a la primera TD bajo el título.
<SharePoint:RenderingTemplate ID="CompositeField" runat="server"> <Template> <TD nowrap="true" valign="top" width="190px"> <H3><SharePoint:FieldLabel runat="server"/></h3> <table><tr><td class="ms-descriptiontext"><SharePoint:FieldDescription runat="server"/></td></tr></table> </TD> <TD valign="top" width="400px"> <!-- FieldName="<SharePoint:FieldProperty PropertyName="Title" runat="server"/>" FieldInternalName="<SharePoint:FieldProperty PropertyName="InternalName" runat="server"/>" FieldType="SPField<SharePoint:FieldProperty PropertyName="Type" runat="server"/>" --> <SharePoint:FormField runat="server"/> <SharePoint:AppendOnlyHistory runat="server"/> </TD> </Template> </SharePoint:RenderingTemplate>
Para que SharePoint lo tenga en cuenta y lo aplique, es necesario realizar un IISReset en el servidor.
Pudes descargarte tanto el código fuente como una solución que podrás desplegar directamente en tu servidor desde el área CodePlex de Kaldeera.
Categorías: Componentes · Sharepoint
En el sitio MSDN ya podemos encontrar una versión beta de la Documentación Técnica correspondiente a la nueva versión SharePoint 2010.
Contiene un documento detallado donde explica como modificar la Ribbon de nuestras páginas (añadir botones, modificar los existentes, …). Sin duda, este nuevo elemento de la interfaz de SharePoint será uno de los más “manoseados” por toda la comunidad. Podemos esperar ver de todo.
También se incluye una primera versión de la guía de referencia del modelo de objetos (SDK). Aún no podemos ver la nueva versión pero mirando el SDK ya nos podemos hacer una buena idea de las novedades que incluirá.
Podéis descargar toda la documentación de SharePoint Products and Technologies: 2010 (Technical Preview) Developer Documentation.
Categorías: Sharepoint
Hace un tiempo encontré una entrada publicada en el blog de René Hézser donde explica con detalle como funcionan los campos de nuestras listas y los controles que se generan para visualizarlos (en edit, new o display mode).
Dispone de un claro ejemplo en el que crea un tabla con todos los campos de un item de una lista. Muestra el título, el campo en DisplayMode y en campo en EditMode.

En el caso de trabajar con campos especiales desarrollados por terceros, el código de René no funciona correctamente ya que no pueden resolver el código (Assembly) correspondiente al campo. He generado una nueva versión de su código que realiza la carga dinámica del assembly asociado al campo y permite su correcta visualización.
public static Control GetSharePointControls(SPField field, SPList list, SPListItem item, SPControlMode mode)
{
// check if the field is a buildIn field, or can be rendered by a SharePoint Control
if (field == null || field.FieldRenderingControl == null || field.Hidden) return null;
try
{
// BaseFieldControl webControl = field.FieldRenderingControl;
BaseFieldControl webControl = (BaseFieldControl)this.loadObject(field.FieldRenderingControl.GetType().Assembly.ToString(), field.FieldRenderingControl.ToString());
webControl.ListId = list.ID;
webControl.ItemId = item.ID;
webControl.FieldName = field.Title;
webControl.ID = GetControlID(field);
webControl.ControlMode = mode;
return webControl;
}
catch (Exception ex)
{
var errorLabel = new Label
{
ID = "ErrorLabel",
Text = string.Format("Error in GetSharePointControls:<br/>{0}", ex)
};
return errorLabel;
}
} // GetSharePointControls
private Object loadObject(string assemblyString, string className)
{
Object o = null;
try
{
// Try to instantiate the object without load any DLL (if it was loaded early)
o = Activator.CreateInstance(Type.GetType(className, true, true));
}
catch
{
try
{
// Try again loading the assembly
Assembly assembly = Assembly.Load(assemblyString);
o = Activator.CreateInstance(assembly.GetType(className, true, true));
}
catch (Exception ex)
{
throw new Exception("There has been a problem when instantiate object " + className + " de " + assemblyString, ex);
}
}
return o;
} // loadObject
Con la llamada al método loadObject conseguimos realizar la carga de la DLL que contiene el Assembly si este no se encuentra ya cargado anteriormente.
Categorías: .NET · Sharepoint