Introdução
Com a introdução do SharePoint 2010 existiram algumas alterações ao nível do Object Model e estrutura de Páginas Mestras e Layouts de Páginas derivado à introdução da Ribbon e introdução de novos métodos.
O custo de criar um projecto de raiz é enorme e não nos podemos esquecer que nem todos os nossos clientes adoptam ou irão a curto prazo adoptar a versão 2010 em suas Entidades.
O objectivo deste artigo é a conversão de um projecto publishing criado em Visual Studio 2008 utilizando 99% do código existente, implementação de novas Páginas Mestras e Alteração dos Layouts de Páginas existentes
TaskList
1. Montar uma VM com o SharePoint 2010, instalar o Visual Studio 2010 e instalar o WSPBuilder Extensions 2010 BETA 1.4.
2. Converter o Projecto para a versão 2010
A primeira tarefa na nossa TaskList é a conversão do Projecto

3. Remover as DLL’s da versão 12
Eliminar as DLL’s da versão 12 e adicionar as mesmas para a versão 14

4. Alteração de Plataforma e Versão de Framework
Após remover as DLL’s correspondentes, vamos passar o nosso projecto para a plataforma x64 e alterar a versão da Framework em todos os projectos para o mínimo versão 3.5


5. Verificar quais os métodos que ficaram “Obsolete” e “Deprecated”
Vamos compilar o nosso projecto e seguir todos os erros e avisos que o Visual Studio 2010 nos vai dar, do tipo:
'Microsoft.SharePoint.Publishing.PublishingWeb.InheritGlobalNavigation' is obsolete: 'Use PublishingWeb.Navigation.InheritGlobal instead.'
'Microsoft.SharePoint.Publishing.PublishingWeb.IncludePagesInNavigation' is obsolete: 'Use PublishingWeb.Navigation.GlobalIncludePages/CurrentIncludePages instead.'
Temos de alterar todas as indicações que nos vão sendo dadas pois os métodos Obsolete e Deprecated vão gerar erros no SharePoint. Alterar até eliminarmos todos os possíveis erros e ficarmos com um projecto Visual Studio limpo
6. Alteração mandatória das Features (Content Types), TAG’s XML
Existe uma nova Tag mandatória para os Content Types Inherits = TRUE ou FALSE, O valor deste atributo determina se o tipo de conteúdo herda campos de seu tipo de conteúdo pai quando ele é criado. Se Inherits for TRUE, o tipo de conteúdo filho herda todos os campos que estão no pai, incluindo os campos que os utilizadores tenham adicionado.
<?xml version="1.0" encoding="utf-8" ?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<ContentType
ID="0x010100xxx"
Name="Nome"
Group="Grupo"
Description="Descrição"
Inherits="TRUE" >
<FieldRefs>
7. Alteração nas Páginas Mestras
Está é sem dúvida uma alteração de fundo, pois vamos ter de mudar radicalmente o nosso HTML, eu sugiro o download do Starter Master Pages for SharePoint 2010 e encaixar os nossos controlos ou HTML personalizado. Neste caso vamos utilizar a página de tipo publishing.
a. Remover a Ribbon quando o utilizador não tem permissões de edição
Pesquisar:
<div id="s4-ribbonrow" class="s4-pr s4-ribbonrowhidetitle"
Substituir
<div id="s4-ribbonrow" class="s4-pr s4-ribbonrowhidetitle" style="display:none">
<Sharepoint:SPSecurityTrimmedControl ID="SPSecurityTrimmedControl2"
runat="server"
PermissionsString="AddAndCustomizePages">
<script type="text/javascript">
document.getElementById("s4-ribbonrow").style.display = "block";
</script>
</Sharepoint:SPSecurityTrimmedControl>
8. Alteração nos Layouts de Páginas
Existem também alterações de fundo nos Layouts de Páginas, pois agora temos uma divisão entre o conteúdo para os leitores e conteúdo para os utilizadores que podem alterar o conteúdo
<PublishingWebControls:AuthoringContainer DisplayAudience="ReadersOnly" runat="server">
<!— Conteúdo para utilizadores sem permissão de edição vai aqui. -->
</PublishingWebControls:AuthoringContainer>
<PublishingWebControls:AuthoringContainer DisplayAudience="AuthorsOnly" runat="server">
<PublishingWebControls:EditModePanel runat="server" PageDisplayMode="Display">
<!-- Conteúdo para utilizadores com permissão de edição vai aqui. -->
</PublishingWebControls:EditModePanel>
<PublishingWebControls:EditModePanel runat="server" PageDisplayMode="Edit">
<!-- Conteúdo para edição vai aqui. -->
</PublishingWebControls:EditModePanel>
</PublishingWebControls:AuthoringContainer>
Notamos que há uma separação nítida do conteúdo que se quer que os utilizadores sem permissões vejam, mas se queremos apresentar o mesmo conteúdo para ambos vamos ter de repetir o HTML.
O Nosso projecto está pronto para Deploy
Deixe um comentário para outras situações não abrangidas aqui.
Happy Coding!
Escrito por João Tito Lívio
http://msmvps.com/blogs/officept/default.aspx
É MCP e MCTS em SharePoint 2010 Application Development
É Microsoft Most Valuable Professional (MVP) na categoria de Office Systems Development desde 2002