lunes, 30 de mayo de 2011

Branding: Cómo hacer para que el portal tenga un acho fijo inicial y luego se expanda según la necesidad en SharePoint 2010

Muy probablemente hay varias formas de hacerlo, pero una muy sencilla de hacerlo es a través de tablas de HTML dentro de la página Maestra personalizada.  Esto nos permitirá definir un ancho fijo inicial pero que se puede expandir según los elementos dentro del contenido de la página.

Para ello utilizaré SharePoint Designer como herramienta de diseño. 

Lo primero será ejecutar la aplicación y luego conectarnos a la colección de sitios que deseamos personalizar.

image

Comúnmente es http://serverename.

Luego debemos de hacer clic sobre la sección Master Pages:

image

Seleccionamos la página Maestra que deseamos personalizar:

image

Debemos seleccionar Edit File

image

Luego nos preguntará si deseamos desprotegerla para editarla.  Le decimos que sí:

image

La primera tabla la vamos a insertar luego de head, dentro de body y seguido del div “s4-notdlg noindex” siempre y cuando estemos utilizando como inicial una página maestra v4.master para dayandnight.master u otras esto puede variar.

A la tabla le asociaremos una clase llamada master para aplicar algunos estilos y nos aseguraremos que no tenga espaciado dentro y entre las celdas (cellpadding y cellspacing)

image

Luego a la tabla le agregaremos 3 columnas la 1 y 3 serán para darle un efecto de sombreado al borde y la segunda columna es para agregar todo el contenido restante de la página maestra, que esta antes del div s4-ribbonrow. Importante el valign=”top” de la 2da columna para mantener todo arriba.

image

Para ubicar donde debemos de cerrar el td la imagen de abajo y luego la 3era columna para agregar el efecto sombreado del borde de la derecha. Luego cerramos la etiqueta tr y table un poco antes de form y body.

image

Pero aún necesitamos agregar otra tabla para mantener arriba y alineado el contenido luego del encabezado. Dentro del div con Id “s4-mainarea” tentemos la oportunidad de incrustar la tabla que definiremos una clase Contenido y una columna con clase Contenido1 para alinear el QuickLaunch de la izquierda y  para aplicar algún estilo que deseemos.  Importante definir widht=100% de la tabla.

image

Luego la otra columna para todo el contenido principal de las páginas. El cual le definiremos una clase Contenido2 y antes del div con id MSO_ContentTable.

image

Finalizaremos cerrando el td,tr y table como se muestra en la imagen de abajo, antes del div que cierra s4-mainarea.

image

Luego hacemos referencia de la hoja de estilos en la página maestra como se muestra a continuación:

image

Y los estilos a las clases definidas son los siguientes:

.master
{
    width:960px;
    margin-left:auto;
    margin-right:auto;
    height:100%;
    background-color:#FFFFFF;
}
.spacer
{
    width:12px
}
.shadowRight
{
    *height:100%;
    min-height:100%;
    width:12px;   
    background-repeat:repeat-y;
    background-position:left top;
    background-image: url('custom-images/shadowRight.jpg');

}
.shadowLeft
{
    *height:100%;
    min-height:100%;
    width:12px;   
    background-repeat:repeat-y;
    background-position:left top;
    background-image: url('custom-images/shadowLeft.jpg');
}
.Contenido1, .Contenido2 {vertical-align:top;}

Bueno eso es todo.  Será necesario luego adapte los colores y tamaños que desee para su estructura y branding del portal.  

SharePoint4Fun!,

Manolo Herrera

viernes, 13 de mayo de 2011

Tip: Branding en SharePoint 2010. Definiendo el ancho fijo y escondiendo el Quick Launch en algunas páginas

 

Para definir el ancho fijo del portal en SharePoint 2010. Sáquele una copia a la página maestra v4.master desde SharePoint Designer y luego edítela para agregar en la página maestra la siguiente referencia de hoja de estilos:

<SharePoint:CssRegistration name="/_layouts/1033/styles/MiEmpresa.css" After="corev4.css" runat="server"/>

After=”corev4.css” garantiza que los estilos se aplicaran luego que se apliquen los de Corev4 con eso se garantiza que podremos sobrescribirlos.

En el div id=s4-workspace agregue la siguiente clase:

<div id=”s4-workspace” class=”s4-notsetwidth” >

Esta clase le dice al render de SharePoint que no agregue en línea el estilo del ancho y alto a dicho div.  Mas información en:http://msdn.microsoft.com/en-us/library/gg430141.aspx

En la hoja de estilos MiEmpresa.css agregue las siguientes líneas

.s4-notsetwidth {}
body #s4-workspace {width:960px !important; margin:auto}
#s4-ribbonrow {width:960px !important; margin:auto}
.ms-cui-ribbontopbars {width:960px !important; margin:auto}
.ms-cui-ribbon {width:960px !important; margin:auto}

Para esconder el Quick Launch de una página en especifico; Edite con SharePoint Designer la página y abajo de la siguiente línea de la página:

<asp:Content ContentPlaceHolderId="PlaceHolderMain" runat="server">

Agregar las siguientes líneas:


<style type="text/css">
     #s4-leftpanel {  display:none; }
     .s4-ca {  margin-left: 5px;  background: transparent; }
</style>

Referencias:

http://allthingsdotnet.net/?p=726

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

 

 

SharePoint4Fun,

Manolo Herrera

viernes, 29 de abril de 2011

Error en la instalación de SharePoint 2010: No connection could be made because the target machine actively refused it

El detalle del error es el siguiente:

No connection could be made because the target machine actively refused it
---> System.Net.WebException: Unable to connect to the remote server --->
System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it
at System.Net.Sockets.Socket.DoConnect

Escenario:

Ejecutante el Asistente de Productos y Tecnología de SharePoint en el Paso 2 o 3 mostraba el mensaje error.

Luego de validar que el firewall de Windows estuviese apagado o con las reglas de los puertos necesarios abiertos.

Luego de abrir o revisar las reglas del FireWall de la compañía y aún obtener el mismo error.

Luego de hacer un telnet desde otra computadora hacia el servidor sobre los puertos podíamos recibir respuesta pero dentro de la máquina no, esto era un indicador que algo interno estaba bloqueando dichos puertos en Windows 2008 R2

Solución:

El problema estaba en frente de nuestras narices, estaban realizando la instalación vía escritorio remoto.  El escritorio remoto de Windows tiene una opción que debe de activarse para abrir los puertos.

ConfigureRemoteDesktop

SharePoint4Fun!,

Manolo Herrera

Problemas con los features en SharePoint? Cómo listarlos, ubicarlos, desctivarlos o incluso eliminarlos

Para obtener el listado de features instaladas incluyendo los elementos Web instalados ejecute en el SharePoint Root o 12 hive la siguiente línea de comando:

stsadm -o enumallwebs –includewebparts > myFeatures.xml

Esto creará un archivo Xml que podrá ver cómodamente desde el navegador.

image

Para ubicar donde esta instalada un feature en una base de datos de contenido ejecute el siguiente query desde el Management Studio de MS SQL Server

select setuppath, * from AllDcos where setpath like ‘features%’

ListadoFeaturesInstaladas

Para ubicar algún elemento Web por su Id puede ejecutar la siguiente sentencia de T-Sql en el Management Studio de MS SQL Server:

select dirname, leafname from alldocs where id in (select tp_pageurlid from webparts where tp_webparttypeid = ‘Guid number here’)

UbicarWEbPartPorId

Esto le dará la ubicación donde se hace referencia en el portal donde esta utilizando el elemento Web.

Para un Elemento Web Declarativo puede ejecutar la siguiente línea de T-SQL:

select * from AllDocs where leafname like ‘%nombreElementoWeb.dwp’

UbicarElementoWeb

Para revisar el estado de los elementos Web en una página escriba el URL completo y agregue el parámetro de consulta “?Contents=1″

image

Esta imagen en de SharePoint 2010, que era la imagen que tenia a la mano la información que despliega 2007 es la misma.

Esto le mostrará un listado de elementos Web los que dicen dicen Open=No puede eliminarlos ya que de todos modos no los esta utilizando  y los que marcar error aún mas.

Excelente aplicación Windows para SharePoint 2007 para tener un inventario de los elementos Web instalados por Web Application y para eliminar los que tiene errores o ya no tienen instalada la feature pero quedo la referencia en el sitio de codeplex:

http://featureadmin.codeplex.com/

Esto te ayudará a eliminar las features que no están bien instaladas o que son huérfanas, para prepararte a una migración o bien para limpiar la instalación de SharePoint.

Aunque los ejemplos son propios la referencias donde obtuve parte de la información aquí listada en y un agradecimiento especial por su aporte a la comunidad en:

http://blog.uvm.edu/jgm/2010/08/25/preparing-the-sharepoint-2007wss3-database-for-upgrade/

http://social.technet.microsoft.com/Forums/en/sharepoint2010setup/thread/6058cd57-d8f2-4ee4-abac-eb8e68a6e6b8

SharePoint4Fun!,

Manolo Herrera

Como descubrir el error inesperado de SharePoint 2007

Este mensaje de Error esta manejado por SharePoint, por lo que se tiene que cambiar la configuración a nivel del Web.Config de la aplicación Web donde esta reportado el error para ver algún detalle del origen del mismo.

image

Para ello ubicar las siguientes líneas dentro del Web.Config que son CallStack, customErrors y Debug.

<SafeMode MaxControls="200" CallStack="false" DirectFileDependencies="10" TotalFileDependencies="50" AllowPageLevelTrace="false">

<customErrors mode="On" />

<compilation batch="false" debug="false">

Los valores que deben de cambiar son true para CallStack, Off para customErrors y true para debug, como se muestra abajo:

<SafeMode MaxControls="200" CallStack="true" DirectFileDependencies="10" TotalFileDependencies="50" AllowPageLevelTrace="false">

<customErrors mode="Off" />

<compilation batch="false" debug="true">

Por ultimo se debe guardar los cambios y para asegurar que tomo los cambio reinicie el IIS con línea de comando:

iisreset /noforce.

Luego cargue de nuevo la página y sino aún no le muestra el error presione Ctrl+F5 para borrar el cache del navegador.

SharePoint4Fun!,

Manolo Herrera

jueves, 28 de abril de 2011

Ordenando un listado de documentos por varias columnas en SharePoint con Linq

Esto es algo útil que se presenta muy seguido la necesidad de ordenar un listado de documentos por mas de una propiedad del documento.

Abajo el código:

Obtenemos el folder raíz de la librería:

var documentos = miWeb.GetFolder(nombreLista);

Obtenemos cada documento en un ciclo:

foreach (SPFile file in documentos.Files) {}

Obtenemos los campos deseados:

private static LibreriaDocumento MapeoSPFileToLibreriaDocumento(SPListItem item)
       {
           var nuevoDocumento = new LibreriaDocumento
           {
               ID = item.ID
                             ,
               Nombre = item.Name
                             ,
               URL = item.Url
               ,
               Title = item.Title
                             ,
               UltimaModificacion = item.File.TimeLastModified
                             ,
               UsuarioUltimaModificacion = item.File.ModifiedBy.ToString()
           };

           return nuevoDocumento;
       }

Ordenamos la lista de Entidad Documento:

misDocumentos.OrderBy(t => t.Title).ThenBy(n => n.Nombre).Select(m => m);

Code4Fun!,

Manolo Herrera

Welcome.ascx no existe al intentar abrir el Central Administration en SharePoint 2010

Este error seguramente le ocurre si modifico la v4.master en el directorio SharePointRoot/Template/Global como se muestra en la imagen de abajo:

image

El detalle del error es el siguiente:

04/28/2011 15:46:35.48     w3wp.exe (0x15F4)                           0x0E30    SharePoint Foundation             Runtime                           tkau    Unexpected    System.IO.FileNotFoundException: El archivo /_catalogs/masterpage/_controltemplates/Welcome.ascx no existe.    at Microsoft.SharePoint.ApplicationRuntime.SPRequestModuleData.GetWebPartPageData(HttpContext context, String path, Boolean throwIfFileNotFound)     at Microsoft.SharePoint.ApplicationRuntime.SPVirtualFile.CalculateFileDependencies(HttpContext context, SPRequestModuleData basicRequestData, ICollection& directDependencies, ICollection& childDependencies)     at Microsoft.SharePoint.ApplicationRuntime.SPDatabaseFile.EnsureDependencies(HttpContext context, SPRequestModuleData requestData)     at Microsoft.SharePoint.ApplicationRuntime.SPDatabaseFile.GetDirectDependencies(HttpContext context, SPRequestModuleData requestData)     at Microsoft.SharePoint.ApplicationRuntime.SPVirtualFile...    126e7c13-e045-47af-8c43-992b846315e5

Lo que debe de hacer es editar la página maestra del SharePointRoot con notepad  o sino editar la página maestra del Central Administration con SharePoint Designer, para este ultimo abra SharePoint Designer primero y luego seleccione la opción de Open Site y escriba la dirección URL del CA.

Que debe de modificar?  Muy sencillo, solo debe de agregar la / antes de _catalogs a los controles de usuarios (ascx) y guardar la página maestra y listo, como lo muestra la imagen de abajo:

FaltaRootSlash

SharePoint4Fun!,

Manolo Herrera