Frage

Wie kann ich Benutzern ermöglichen, Ordner zu erstellen, aber keine Ordner in SharePoint 2007 zu löschen?

War es hilfreich?

Lösung

Erstellen Sie einen Ereignisreciever mit dem folgenden Code und fügen Sie den Ereignisreciever an Ihre Dokumentbibliotheken hinzu.

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 { }
}

Andere Tipps

Oder erstellen Sie eine benutzerdefinierte Berechtigungsstufe, die die Option Löschen nicht zulässt, und wenden Sie diese Berechtigungsstufe für die gewünschten Benutzer auf die Bibliothek an. Sie können Elemente hinzufügen/bearbeiten, aber nicht löschen. Ein Ereignisempfänger scheint für eine einfache Berechtigungsänderung wie übertrieben zu sein.

Könnte einen benutzerdefinierten Ereignisempfänger verwenden, um das OneDeleting zu fangen, um festzustellen, ob das aktuelle gelöschte Element ein Ordner ist, und in diesem Fall eine Fehlermeldung abbrechen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top