Come faccio a consentire agli utenti di creare cartelle, ma non le cartelle di eliminazione?

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/5706

  •  16-10-2019
  •  | 
  •  

Domanda

Come posso permettere agli utenti di creare cartelle, ma le cartelle non elimina in SharePoint 2007?

È stato utile?

Soluzione

Creare un ricevitore evento utilizzando il seguente codice e quindi collegare il ricevitore di eventi per le vostre librerie di documenti.

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

Altri suggerimenti

O creare un livello di autorizzazione personalizzato che non permette l'opzione di eliminazione e applicare tale livello di autorizzazione alla biblioteca per gli utenti desiderati. Saranno in grado di aggiungere / modificare gli elementi, ma non eliminare. Un ricevitore evento sembra eccessivo per un semplice cambiamento di autorizzazioni.

potrebbe utilizzare un ricevitore di eventi personalizzato per intrappolare OnDeleting per vedere se l'elemento corrente di essere eliminati è una cartella, e Annulla in caso affermativo, presentando un messaggio di errore mentre facendo così.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top