SharePoint - Recurso \ Receptor de Evento

Neste capítulo, aprenderemos a adicionar code handle. Identificadores de código são eventos que são gerados quando um recurso é ativado ou desativado. Em outras palavras, estaremos examinandoFeature Receivers.

O projeto do Visual Studio que criamos no último capítulo tinha um recurso e, quando foi ativado, provisionou nossa lista de contatos, nosso SitePage e o link para o SitePage.

No entanto, quando o Recurso é desativado, o SharePoint remove apenas o link, o SitePage e a lista de Contatos permanecem.

Podemos escrever o código quando o recurso estiver desativado para remover a lista e a página, se quisermos. Neste capítulo, aprenderemos como remover conteúdo e elementos, quando um Recurso é desativado.

Para lidar com os eventos de um recurso, precisamos de um Feature Receiver.

Step 1 - Para obter o receptor do recurso, clique com o botão direito do mouse no recurso no Solution Explorer e escolha Add Event Receiver.

using System;
using System.Runtime.InteropServices;
using System.Security.Permissions;
using Microsoft.SharePoint;

namespace FeaturesAndElements.Features.Sample {
   /// <summary>
      /// This class handles events raised during feature activation, deactivation,
         installation, uninstallation, and upgrade.
   /// </summary>
   /// <remarks>
      /// The GUID attached to this class may be used during packaging and should not be modified.
   /// </remarks>
   [Guid("e873932c-d514-46f9-9d17-320bd3fbcb86")]
  
   public class SampleEventReceiver : SPFeatureReceiver {
      // Uncomment the method below to handle the event raised after a feature has been activated.
      //public override void FeatureActivated(SPFeatureReceiverProperties properties)//{
         //
      }
      // Uncomment the method below to handle the event raised before a feature is deactivated.
      //public override void FeatureDeactivating(SPFeatureReceiverProperties properties)// {
         //
      }
      // Uncomment the method below to handle the event raised after a feature has been installed.
      //public override void FeatureInstalled(SPFeatureReceiverProperties properties)// {
         //
      }
      // Uncomment the method below to handle the event raised before a feature is uninstalled.
      //public override void FeatureUninstalling(SPFeatureReceiverProperties properties)// {
         //
      }
      // Uncomment the method below to handle the event raised when a feature is upgrading.
      //public override void FeatureUpgrading(SPFeatureReceiverProperties
         properties, string upgradeActionName,
         System.Collections.Generic.IDictionary<string, string> parameters) // {
         //
      }
   }
}

Você pode ver o que temos é uma classe que herda de SPFeatureReceiver.

No SharePoint, existem diferentes classes para diferentes tipos de eventos que você pode manipular. Por exemplo, eventos em listas, eventos em itens de listas, eventos em sites. Você pode criar uma classe que é derivada de um receptor de evento específico e, em seguida, pode substituir métodos dentro dessa classe para manipular os eventos.

Os eventos de um recurso são usados ​​quando ele está sendo -

  • Activated
  • Deactivated
  • Installed
  • Uninstalled
  • Upgrading

Em seguida, você precisa anexar essa classe como o manipulador de eventos para o item específico. Por exemplo, se houver um manipulador de eventos que lida com eventos de lista, você precisará anexar essa classe à lista.

Portanto, vamos lidar com dois recursos -

  • Quando o recurso é ativado e

  • Quando está sendo desativado.

Step 2 - Vamos implementar o FeatureActivated e métodos FeatureDeactivated conforme mostrado abaixo -

using System;
using System.Runtime.InteropServices;
using System.Security.Permissions;
using Microsoft.SharePoint;

namespace FeaturesAndElements.Features.Sample {
   /// <summary>
      /// This class handles events raised during feature activation, deactivation,
         installation, uninstallation, and upgrade.
   /// </summary>
   /// <remarks>
      /// The GUID attached to this class may be used during packaging and should
         not be modified.
   /// </remarks>

   [Guid("e873932c-d514-46f9-9d17-320bd3fbcb86")]
   public class SampleEventReceiver : SPFeatureReceiver {
      private const string listName = "Announcements";
      
      public override void FeatureActivated(SPFeatureReceiverProperties properties) {
         var web = properties.Feature.Parent as SPWeb;
         
         if (web == null) return;
         var list = web.Lists.TryGetList(listName);
         
         if (list != null) return;
         var listId = web.Lists.Add(listName, string.Empty,
         SPListTemplateType.Announcements);
         list = web.Lists[listId];
         list.OnQuickLaunch = true;
         list.Update();
      }
      public override void FeatureDeactivating(SPFeatureReceiverProperties properties) {
         var web = properties.Feature.Parent as SPWeb;
         
         if (web == null) return;
         var list = web.Lists.TryGetList(listName);
         
         if (list == null) return;
         if (list.ItemCount == 0) {
            list.Delete();
         }
      }
   }
}

Note -

  • Quando o recurso for ativado, criaremos uma lista de anúncios.

  • Quando o recurso for desativado, verificaremos se a lista de Anúncios está vazia e, se estiver, iremos excluí-la.

Step 3- Agora clique com o botão direito do mouse no Projeto e escolha implantar. Você verá o seguinte aviso de conflito de implantação.

O Visual Studio está nos informando que estamos tentando criar uma lista chamada contatos, mas já existe uma lista no site chamada Contatos. Ele está nos perguntando se queremos substituir a lista existente e, neste caso, cliqueResolve.

Step 4 - Volte para o SharePoint e atualize seu site e vá para Site Actions → Site settings → Manage site features → Sample feature.

Você pode ver que não há lista de anúncios no painel esquerdo.

Step 5 - Deixe-nos ativar o recurso Amostra e você verá a lista de Anúncios, mas ela está vazia agora.

Note - Se você desativar seu recurso de amostra, notará que a lista de anúncios desaparece.

Step 6- Vamos reativar o recurso. Vá para Anúncios e, em seguida, Adicionar um novo anúncio. Chamaremos isso de Teste e clicaremos em Salvar.

Você verá o arquivo de teste em Anúncios.

Agora, ao Desativar Anúncios, você verá que a lista de Anúncios permanece porque não estava vazia.