Pregunta

¿Cómo puedo permitir a los usuarios crear carpetas, pero no elimina las carpetas en SharePoint 2007?

¿Fue útil?

Solución

Crear un receptor de eventos utilizando el siguiente código y luego conectar el receptor de eventos a las bibliotecas de documentos.

private bool CanDeleteFolder(SPWeb web)
{
    //  check to see if the user is in the owners group
    SPUser user = web.CurrentUser;

    if (!user.IsSiteAdmin)
    {
        return false;
    }
    else
    {
        //admins can delete folder
        return true;
    }
}

public override void ItemDeleting(SPItemEventProperties properties)
{
    try
    {
        if (properties.AfterProperties["ContentType"].ToString() == "Folder")
        {
            using (SPWeb web = properties.OpenWeb())
            {
                if (!CanDeleteFolder(web))
                {
                    properties.Cancel = true;
                    properties.ErrorMessage = "Cannot add folder at this location. Please select a sub folder";
                    properties.Status = SPEventReceiverStatus.CancelWithError;
                }
            }
        }
    }
    catch { }
}

Otros consejos

O crear un nivel de permisos personalizado que no permite la opción de borrado y aplicar ese nivel de permisos a la biblioteca para los usuarios deseados. Van a ser capaces de añadir elementos / editar pero no eliminar. Un receptor de eventos parece un exceso de un simple cambio de permisos.

¿Podría utilizar un receptor de eventos personalizado para atrapar OnDeleting para ver si el elemento actual se va a eliminar es una carpeta, y Cancelar si es así, presentar un mensaje de error mientras se realiza.

Licenciado bajo: CC-BY-SA con atribución
scroll top