En este pequeño código vamos a mostrar como trabajar programáticamente desde c# con plantillas de sitio en SharePoint 2010 con el objetivo de
- Crearlas
- Desactivarlas
- Eliminarlas
Para ello trabajaremos tanto con soluciones (SPUserSolution) como con el catálogo de soluciones (SPList). Espero les sea útil:
public static string nuevoTemplateProyecto(SPSite sitio)
{
string prefijo = "Sitio de proyecto";
string resultado = "";
// Tabla con las soluciones a eliminar
DataTable dtSoluciones = new DataTable();
dtSoluciones.Columns.Add("ID", typeof(string));
foreach (SPUserSolution solucion in sitio.RootWeb.Site.Solutions)
{
if (solucion.Name.StartsWith(prefijo))
dtSoluciones.Rows.Add(solucion.SolutionId);
else
resultado += "<span style='color: blue'> Solución no desactivada: " + solucion.Name + "</span><br>";
}
// Desactivación de soluciones
if (dtSoluciones != null) foreach (DataRow filaSolucion in dtSoluciones.Rows)
{
Guid solucionGuid = new Guid(filaSolucion["ID"].ToString());
SPUserSolution solucion = sitio.RootWeb.Site.Solutions[solucionGuid];
sitio.RootWeb.Site.Solutions.Remove(solucion);
sitio.RootWeb.Update();
resultado += "<span style='color: green'> Solución desactivada: " + solucion.Name + "</span><br>";
}
resultado += "<hr>";
// Eliminación de soluciones
SPList solucionesGaleria = sitio.RootWeb.Site.GetCatalog(SPListTemplateType.SolutionCatalog);
SPListItemCollection solucionesItems = solucionesGaleria.Items;
int totalSol = solucionesItems.Count -1;
for (int i = totalSol; i >= 0; i--)
{
SPListItem solucionesItem = solucionesItems[i];
string nombre = solucionesItem.Name.ToString();
if (nombre.StartsWith(prefijo))
{
solucionesItem.Delete();
resultado += "<span style='color: green'> Solución eliminada: " + nombre +"</span><br>";
}
else
resultado += "<span style='color: blue'> Solución no eliminada / eliminada: " + nombre + "</span><br>";
}
resultado += "<hr>";
// Nueva solución
string nombrePlantillaProyecto = prefijo + " v" + DateTime.Today.ToString("yyMMdd") + " b" + DateTime.Now.ToString("HHmmss"); ;
SPWeb plantilla = SPContext.Current.Site.AllWebs["plantilla_proyecto"];
plantilla.SaveAsTemplate(nombrePlantillaProyecto, nombrePlantillaProyecto, "", false);
return resultado + "<span style='color: green'>" + nombrePlantillaProyecto + " -> PLANTILLA ALMACENADA.</span><br>";
}
0 comentarios:
Publicar un comentario