C# Geral SharePoint 2013

Criando subsites com base em um template personalizado via Client Object Model no SharePoint

Olá Pessoal!

Hoje venho com uma dica importante sobre automatização que podemos fazer com nosso SharePoint dependendo do modelo de desenvolvimento que adotamos.

Nesse exemplo, vamos descobrir como podemos criar, via código utilizando o Client Side Object Model do SharePoint, um subsite com base em um template personalizado.

Um caso de uso dessa solução seria um cenário onde temos um template de site pré-definido, com várias listas, bibliotecas, páginas e fluxos de trabalho que servem de exemplo e que de tempos em tempos ou por necessidade de negócio, precisamos criar um subsite na nossa intranet com base nesse template.

Precisamos apenas de algumas linhas para recuperar esse template de site SharePoint e depois vamos criar um subsite com base nesse template:

Tendo sua solution já criada e os códigos de conexão com o SharePoint implementados para recuperar o ClientContext do SharePoint CSOM (Em breve vou fazer um post sobre isso e atualizo com o link aqui), vamos fazer o seguinte código:

Snippet

//Recuperando os templates disponíveis para PT-BR (1046) no meu site
var templates = SPContext.Web.GetAvailableWebTemplates(1046, true);
 
SPContext.Load(templates);
SPContext.ExecuteQuery();
 
//Buscando o meu template no array de templates disponíveis
var template = templates.FirstOrDefault(x => x.Title == "Nome do meu Modelo de Site");
 
//Adicionando um objeto WebCreationInformation
SPContext.Web.Webs.Add(new WebCreationInformation
{
           WebTemplate = template.Name,
           Title = "Título do Meu Site",
           Url = "url que quero para o meu site",
           Language = 1046,
           UseSamePermissionsAsParentSite = true
});
 
SPContext.ExecuteQuery();

Explicando o código:

Primeiro vamos recuperar todos os templates de site disponíveis no meu site raiz, passando como parâmetro o id da linguagem do meu template, no caso o nosso template foi criado na linguagem PT-BR.

Depois estamos recuperando o nosso template pelo Titulo na listagem de templates encontrados.

Em seguida vamos adicionar no nosso objeto Webs (ou seja, nos sites do meu site raiz) um objeto WebCreationInformation, utilizado para preencher os dados básicos do nosso site.

O parâmetro responsável por nos ajudar a saber qual é o template que vamos utilizar é o WebTemplate, onde passamos o nome do nosso template.

Os demais parâmetros são parâmetros padronizados e que também existem no momento de criar o site via web, sendo eles o Titulo, Linguagem, se vai utilizar as mesmas permissões do site pai, Descrição e Url.

*Poderíamos também utilizar direto o código de Add do objeto WebCreationInformation passando o nome do nosso template no parâmetro de WebTemplate sem precisar carregar todos os templates disponíveis, mas eu deixei o código de como recuperar para vocês terem um modelo caso precisem fazer uma consulta do template. (no caso de dependendo da regra buscar um template ou outro para criar)

Basta rodar e você verá o resultado!

Espero que ajude e até a próxima =D

 

Anúncios

2 comentários

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s