lunes, 3 de febrero de 2014

Modificar los enlaces de navegación en SharePoint 2007 vía programación

Supongamos que tenemos que modificar en forma masiva los enlaces de navegación de nuestro sitio. Por ejemplo, para corregir un error típico como puede ser la eliminación de direcciones absolutas.



Este es un requerimiento que puede resolverse con facilidad vía programación, a través de una página o una aplicación de consola. En este ejemplo, les muestro cómo hacerlo en una página ASPX para todos los sitios de la colección activa.

Espero les resulte útil !

<%@ Assembly Name="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"%>
<%@ Page Language="C#"
         Inherits="Microsoft.SharePoint.WebControls.LayoutsPageBase" EnableViewStateMac="false" EnableViewState="true" MaintainScrollPositionOnPostback="true"%>

<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Import Namespace="Microsoft.SharePoint.Navigation" %>

<script runat="server">

protected override void OnLoad(EventArgs e) {

string reemplazar = "http://misitio.com.ar";
string modificado;
string resultado = "<table><tr><td>It</td><td>Nombre</td><td>Url</td></tr>";

SPSite SI = SPContext.Current.Site;
SPWebCollection WEBS = SI.AllWebs;

foreach (SPWeb WE in WEBS) {

WE.AllowUnsafeUpdates = true;

resultado += "<tr><td><strong>" +  WE.Url + "</strong></td></tr>";

foreach (SPNavigationNode NODO in WE.Navigation.TopNavigationBar) {

resultado += "<tr><td>" +  NODO.Id + "</td><td>" +  NODO.Title + "</td><td>" +  NODO.Url + "</td></tr>";

if (NODO.Url.IndexOf(reemplazar) != -1) {
modificado = NODO.Url.Replace(reemplazar,"");

NODO.Url = modificado;
NODO.Update();

resultado += "<tr><td style='color:red;'>" +  modificado + "</td></tr>";
}

}

WE.Update();
WE.AllowUnsafeUpdates = false;

}


Response.ContentType = "text/plain";
Response.Write(resultado);


}

</script>

0 comentarios:

Publicar un comentario en la entrada