Como alternar dinamicamente a página PageLayout e MasterPage of SharePoint Publishing?
Para melhorar a experiência de edição e exibição das páginas de publicação do SharePoint WCM, gostaria de poder mudar para um conjunto especial de Masterpage / PageLayout no modo de edição.
Então em / _catalogs / masterpage eu quero ter:
MyMasterpage.master - página principal para o modo de exibição MyMasterpage-edit.master - página principal para o modo de edição, use apenas se disponível MyPageLayout.aspx - pagelayout para o modo de exibição MyPageLayout-edit.aspx - pagelayout para o modo de edição, use apenas se disponível
Quando crio uma nova página de publicação na biblioteca Pages, seleciono o layout da página MyPageLayou
Ao renderizar a página que gostaria de detectar se estou no modo Editar do vídeo, assim como o controle do servidor. Este controle executa o seguinte código para determinar o modo de renderização:
private void calculateShouldRender()
{
SPControlMode contextualFormModeFromPostedForm = ConsoleUtilities.GetContextualFormModeFromPostedForm();
if ((SPControlMode.Display == contextualFormModeFromPostedForm) && (PageDisplayMode.Display == this.PageDisplayMode))
{
this.shouldRender = true;
}
else if ((SPControlMode.Edit == contextualFormModeFromPostedForm) && (PageDisplayMode.Edit == this.PageDisplayMode))
{
this.shouldRender = true;
}
else
{
this.shouldRender = false;
}
this.Visible = this.shouldRender;
}
Se o modo de renderização for Editar, quero mudar para a página do MyMasterpage-edit.master e para o pagelayout MyPageLayout-edit.asp
Eu poderia fazer uma grande troca na masterpage e no pagelayout controlados pelos controles do servidor, mas gostaria de dividir as responsabilidades. Um analista do SharePoint pode criar páginas ideais do modo de edição, e um desenvolvedor front-end pode criar páginas limpas e bonitas do modo de exibição sem toda a confusão de ediçã
Alguma idéia de como fazer isso? A mudança de masterpage não parece ser o problema, uma vez escrevi um blogpost nisto. O difícil parece mudar o layout da página.