SSD: el síndrome de la Sharepoint dependencia

Sharepoint me proporciona seguridad y me hace sentir más fuerte. Las 10 cosas que más me gustan de Sharepoint.

10 puntos para entender a Project Server 2010

Microsoft Project es quizá la herramienta de gestión de proyectos más conocida y utilizada por los líderes de proyectos...

Diseño Gráfico en SharePoint

Serie de artìculos que nos ayudan a incorporar diseño gráfico en las implementaciones de SharePoint...

Revista CompartiMOSS

Artículos publicados en la revista especializada en SharePoint: CompartiMOSS.

Contacto

Enviame un correo :-)

domingo, 19 de abril de 2015

¿Cómo crear, desactivar y eliminar plantillas de sitio en SharePoint con C#?

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>";
}

viernes, 17 de abril de 2015

¿Cómo cambiar un campo en una vista y ordenarlo en una posición en SharePoint con C#?

SPList listaGov = oWebsite.Lists["Hitos"];
SPView view = listaGov.Views["Carga"];
if (view.ViewFields.Exists("Responsable0"))
  contenido.InnerHtml += "Existe";
else
{
  view.ViewFields.Add("Responsable0"); // Nuevo campo
  if (view.ViewFields.Exists("Responsable"))
    view.ViewFields.Delete("Responsable"); // Elimino campo viejo
  view.ViewFields.MoveFieldTo("Responsable0", 6); // Ordeno el campo
  view.Update();
  contenido.InnerHtml += "Modificado";
}

¿Cómo modificar una columna de sitio en SharePoint con C#?

SPSite sitio = SPContext.Current.Site;
SPFieldMultiLineText columnaSitio = (SPFieldMultiLineText)sitio.RootWeb.Fields.GetFieldByInternalName("columna");
columnaSitio.NumberOfLines = 10;
columnaSitio.PushChangesToLists = true;
columnaSitio.Update();
 

sábado, 11 de abril de 2015

¿Cómo agregar un campo a la vista predeterminada de una lista en SharePoint con C#?

try
{
  SPList listaGov = oWebsite.Lists["Governance"];
  SPView view = listaGov.DefaultView;
  if (view.ViewFields.Exists("Responsabilidad"))
    contenido.InnerHtml += "Ya existe";
  else 
  {
    oWebsite.AllowUnsafeUpdates = true;
    view.ViewFields.Add("Responsabilidad");
    view.Update();
    oWebsite.AllowUnsafeUpdates = false;
    contenido.InnerHtml += "Vista default actualizada";
  }
}
catch (Exception error)
{
  contenido.InnerHtml += "Error: " + error;
}


miércoles, 11 de febrero de 2015

No tiene permiso para abrir este sitio web en SharePoint Designer

Descripción del error

Al abrir SharePoint Designer:

"No tiene permiso para abrir este sitio web en SharePoint Designer"

o

"You do not have permission to open this Web site in SharePoint Designer"



Solución

En mi caso, el problema era que el sitio estaba bloqueado, quizá por una falla en un backup. Con STSADM se puede verificar el estado y luego cambiarlo:

stsadm.exe -o getsitelock -url http://blabla

<SiteLock Lock="readonly" />

stsadm.exe -o setsitelock -url http://blabla -lock  none

Operation completed successfully.

stsadm.exe -o getsitelock -url http://blabla

<SiteLock Lock="none" />

Notas

Tengan en cuenta que las causas pueden ser otras. Les recomiendo este link:


Hasta la próxima!

miércoles, 4 de febrero de 2015

Backup rápido y granulado de SharePoint

Interesante herramienta de Codeplex para hacer copias de seguridad mientras desarrollamos. Varias opciones de configuración y posibilidad de seleccionar exactamente lo que queremos respaldar:



martes, 6 de enero de 2015

VMware Player - Error while powering on: Internal error.

Detalle del error

¿Alguna vez se encontraron con este error al tratar de levantar una máquina virtual? -> "VMware Pltaer - Error while powering on: Internal error."


Solución

Dentro de los servicios de Windows, busquen el servicio "VMware Authorization Service" y hagan click en "START".


Todo resuelto!

viernes, 12 de diciembre de 2014

¿Cómo evitar que una solución de SharePoint 2010 se despliegue globalmente a la granja?

Les dejo este enlace que explica paso a paso como cambiar la configuración en Visual Studio 2010:



lunes, 1 de diciembre de 2014

Unknown SPRequest error occurred. More information: 0x80131530

Al tratar de acceder a una vista en MOSS 2007 obtengo el siguiente error:



Consultando el log para ver más detalle, aparece el siguiente código de error y mensaje:

Unknown SPRequest error occurred. More information: 0x80131530

Aparentemente el error se debe a estar sobrepasando uno de los límites de SharePoint. Es mi caso se trataba de una consulta (vista de hoja de datos) con más de 500.000 registros.

Una forma rápida de salir del paso, hasta encontrar una solución más robusta, es filtrar la consulta por una columna indexada, por ejemplo el ID:



Esto nos permitirá salir del paso momentáneamente.

Más información en: