Adicionar um contentype no sharepoint é um pouco trickey para mim no início, eu não consigo entender muito bem, como sempre a documentação da Microsoft é realmente uma porcaria e não está completa e assim e assim.
O código fala mais alto do que funciona, então aqui está,
public void addContentType(ClientContext context, Web web, String cntTypes)
{
dynamic cntJSON = Newtonsoft.Json.JsonConvert.DeserializeObject(cntTypes);
foreach (var ctItem in cntJSON)
{
ContentTypeCollection ContType = web.ContentTypes;
ContentTypeCreationInformation msnContType = new ContentTypeCreationInformation();
msnContType.Name = ctItem.Name;
msnContType.Description = ctItem.Description;
msnContType.Group = ctItem.Group;
if (ctItem.Type == "docset")
{
msnContType.ParentContentType = web.ContentTypes.GetById("0x0120D520");
}
ContentType newCntType = ContType.Add(msnContType);
context.ExecuteQuery();
web.Update();
Console.WriteLine(ctItem.Name + " content type created successfully");
}
}
}
deixe-me explicar o processo para você,
ContentTypeCollection – retém a coleção de tipo de conteúdo do site conforme abaixo
ContentTypeCollection siteContType = web.ContentTypes;
ContentTypeCreationInformation – Contém as informações de tipo de conteúdo recém-criadas, como nome, descrição e outras propriedades.
crie um novo tipo de conteúdo com ContentTypeCreationInformation como abaixo
ContentTypeCreationInformation newContType = new ContentTypeCreationInformation();
Em seguida, adicione as propriedades necessárias conforme abaixo,
msnContType.Name = "IronMan";
msnContType.Description = "Tony Stark Inc.";
msnContType.Group = "Super Heros";Se você deseja criar o tipo de conteúdo docset, você precisa adicionar o ParentContentType conforme abaixo,
newContType.ParentContentType = web.ContentTypes.GetById("0x0120D520");
FYI 0x0120D520 é o id do docset contenttype.
Adicionar contentype recém-criado à coleção de tipo de conteúdo do site conforme abaixo
ContentType newCntType = ContType.Add(msnContType);
Salve suas alterações,
context.ExecuteQuery();
web.Update();
Sinta-se à vontade para compartilhar se achar que existe uma maneira melhor de adicionar tipos de conteúdo.