martes, 19 de mayo de 2009

Reparación de Supporting Files: "Las alertas de Sharepoint No funcionan" e "Invalid page URL"

Síntomas:
Tenemos el formulario personalizado listo y funcionando... pero de repente, cuando vamos a utilizar el servicio de alertas de sharepoint, este no funciona.
Arrojando el mensaje "Error Inesperado" al intentar suscribirnos a una alerta.

La opción de Nuevo, Visualizar o Editar elementos de lista, producen errores "Invalid page URL"
Causa:
Que las alertas no funcionen esta relacionado con los mensajes "Invalid page URL:" al crear un newListitem o el error "An unexpected error has occurred" cuando hacemos click la edición de un listItem
ambos se producen al corromper una lista de sharepoint ya que las SupportingFiles quedan desconfiguradas.
El problema ocurre al personalizar una pagina ASPX como editform o newform, porque hemos borrado el ListFormWebPart que viene por defecto.

Procedimiento correcto de personalización (Oficial):
Si quieres personalizar los controles que a aparecen en newForm.aspx, y no quieres mostrar el list Form Webpart que aparece por defecto, podemos ocultarlo en lugar de borrarlo siguiendo estos pasos.


  1. Iniciar Sharepoint Designer 2007y abrir la pagina NewForm.aspx de la lista.
  2. Pulsar el Botón Derecho sobre el List Form Web Part, y después pulsar Web Part Properties.
  3. Expandir Layout, hacer click para seleccionar checkbox Hidden , y finalmente pulsar OK.
Procedimiento para Reparar una pagina o lista ya estropeada:
El procedimiento antiguo era... borrar la lista y crearla de nuevo para personalizarla posteriormente usando el procedimiento, pero hay otra alternativa.

1. Abrir las páginas NewForm.aspx, EditForm.aspx y ViewForm.aspx en Sharepoint Designer

2. Localizar el tag <WebPartPages:WebPartZone runat="server" FrameType="None" ID="Main" Title="loc:Main"><ZoneTemplate> en la pagina Estropeada

3. Pegar entre los tags <ZoneTemplate> pegar aquí </ZoneTemplate>
este código :

<WebPartPages:ListFormWebPart runat="server" __MarkupType="xmlmarkup" WebPart="true" __WebPartId="{MI NUEVO GUID GENERADO}" >
<WebPart xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/WebPart/v2">
<Title>NOMBRE DE LISTA</Title>
<FrameType>None</FrameType>
<Description /> <IsIncluded>true</IsIncluded>
<PartOrder>1</PartOrder>
<FrameState>Normal</FrameState> <Height /> <Width />
<AllowRemove>true</AllowRemove> <AllowZoneChange>true</AllowZoneChange>
<AllowMinimize>true</AllowMinimize>
<AllowConnect>true</AllowConnect>
<AllowEdit>true</AllowEdit> <AllowHide>true</AllowHide>
<IsVisible>false</IsVisible> <DetailLink /> <HelpLink />
<HelpMode>Modeless</HelpMode>
<Dir>Default</Dir> <PartImageSmall /> <MissingAssembly>Cannot import this Web Part.</MissingAssembly>
<PartImageLarge /> <IsIncludedFilter />
<ExportControlledProperties>true</ExportControlledProperties>
<ListName xmlns="http://schemas.microsoft.com/WebPart/v2/ListForm">{MI GUID DE LA LISTA SHAREPOINT}</ListName>
<ListItemId xmlns="http://schemas.microsoft.com/WebPart/v2/ListForm">0</ListItemId>
<ControlMode xmlns="http://schemas.microsoft.com/WebPart/v2/ListForm">Edit</ControlMode> <TemplateName xmlns="http://schemas.microsoft.com/WebPart/v2/ListForm">ListForm</TemplateName> <FormType xmlns="http://schemas.microsoft.com/WebPart/v2/ListForm">6</FormType>
<ViewFlag xmlns="http://schemas.microsoft.com/WebPart/v2/ListForm">1048576</ViewFlag>
<ID>g_MI_NUEVO_GUID_REEMPLAZANDO_GUIONES_POR_GUIONES_BAJOS</ID> </WebPart>
</WebPartPages:ListFormWebPart>

4. En la línea <ControlMode si la pagina es :
- EditForm hay que poner Edit
- NewForm hay que poner New
- DispForm hay que poner Display

5. En la linea <FormType si la pagina es :
- EditForm hay que poner 6
- NewForm hay que poner 8
- DispForm hay que poner 4

6. En la línea <ListName hay que poner el GUID de la lista sharepoint que estamos reparando. Cambiar también <Title poniendo el nombre de la lista.

(Se puede obtener en el sitio de sharepoint personalizando la lista o en "Site Settings > Site Libraries and Lists" mirando el LINK de customize de la lista en cuestión aparece el GUID, con botón derecho del ratón y copiar acceso directo )
La linea quedaría así :
<ListName xmlns="htp://schemas.microsoft.com/WebPart/v2/ListForm">{046F5668-1891-4781-9B44-90AC0C0B600A}</ListName>

7. Generar un nuevo GUID con guidgen.exe o usando la página :http://www.somacon.com/p113.php

8. En la línea <ID poner el GUID nuevo reemplazando los guiones por guiones bajos, dejando un "g_" al principio.
Ejemplo: El GUID es 870850be-fd2c-44d6-818e-ab2914fb2d71 y quedaría así g_870850be_fd2c_44d6_818e_ab2914fb2d71
Quedando así: <ID>g_870850be_fd2c_44d6_818e_ab2914fb2d71</ID>

9. Guardar (No recomiendo guardar antes), es posible que haya que cerrar y abrir la pagina para ver el resultado de la reparación.

10. Repetir la operación para las Páginas NewForm.aspx , EditForm.aspx, DispForm.aspx y todos los vínculos de supporting Files quedaran reparados.

En este punto, habremos reparado la lista, las Alertas y RSS, la acción de Nuevo, Editar y Visualizar por lo que
TODO Funcionaría Correctamente.

Fuente Orientativa (Mirar PostComment): http://blogs.msdn.com/dszabo/archive/2007/02/20/custom-list-newform-aspx-ruined-in-wss-3-0.aspx

He cambiado algunas cosas del procedimiento original para que sea más fácil con un Copy-Paste

Asi quedarían las supporting Files Antes y Después.


Espero os sea de utilidad, saludos a todos.
RobertoMarcos.com

2 comentarios: