Desenvolvimento - Sharepoint - Dev

Integrando Microsoft ASP .NET AJAX com SharePoint

Veremos neste artigo como podemos integrar o Microsoft ASP .NET AJAX com o SharePoint.

por Thiago Silva



Overview

O SharePoint que conhecemos, além de todos os seus recursos, ele também se parece com um site Web. Eis então, que gostaríamos de adicionar algumas funcionalidades que estamos acostumados a navegar pelos sites na WWW a fora, certo?

Um desses recursos muito legais, é adicionar o AJAX para nossas páginas não terem que dar um refresh completo cada vez que solicitamos uma ação. Assim, apenas o uma parte da página é atualizada quando solicitamos algum post-back ao servidor.

Isso é o que vamos abordar nesse artigo. Como podemos integrar o Microsoft ASP .NET AJAX com o SharePoint?

Solução

Para essa solução vou trabalhar com os seguintes produtos e tecnologias:

· Windows Server 2008;

· Microsoft Office SharePoint Server 2007 com SP2;

· SQL Server 2005 com SP2;

· ASP.NET AJAX 1.0 (disponível em: http://www.microsoft.com/downloads/details.aspx?FamilyID=ca9d90fa-e8c9-42e3-aa19-08e2c027f5d6&displaylang=en);

· Ajaxify MOSS (disponível em: http://www.codeplex.com/ajaxifymoss/Release/ProjectReleases.aspx?ReleaseId=13360);

1. Download, extração e instalação dos executáveis:

1.1. Acesse estes dois links, e salve os arquivos em seu computador:

1.1.1. http://www.codeplex.com/ajaxifymoss/Release/ProjectReleases.aspx?ReleaseId=13360

1.1.2. http://www.microsoft.com/downloads/details.aspx?FamilyID=ca9d90fa-e8c9-42e3-aa19-08e2c027f5d6&displaylang=en

1.2. Primeiro, iremos instalar o AJAX 1.0;

1.3. Prossiga com os passos de instalação, aceite o contrato e finalize a instalação;

1.4. Agora extraia os arquivos do “stsadm.ajaxifymoss.zip” para um pasta de sua escolha, e depois execute o arquivo “deploy.cmd”;

1.4.1. Esse aplicativo vai extender automaticamente o seu webconfig;

Execute a seguinte linha de comando no prompt:

stsadm -o addajax -url http://<yourserver>

1.5. Importante: Verifique as entradas do seu WebConfig em <SafeControl>, se o aplicativo adicionou a seguinte entrada:

<SafeControl Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Namespace="System.Web.UI" TypeName="*" Safe="True" />

1.5.1. Parece que há um pequeno bug na aplicação, às vezes, ele não adiciona esta entrada automaticamente, então adicione-a manualmente.

2. Modificando a MasterPage

2.1. Abra sua MasterPage, utilizando o SharePoint Designer, e siga os passos:

2.2. Procure por <webpartpages:spwebpartmanager id="m" runat="Server"> na sua master page e adicione uma tag Script Manager logo após essa tag.

<asp:ScriptManager runat="server" ID="ScriptManager1"></asp:ScriptManager>

2.3. Adicione a seguinte função JavaScript na sua Master Page, dentro da tag Head:

<script type="text/javascript" language="javascript">

function RestoreToOriginalFormAction()

{

if (_spOriginalFormAction != null) {

if (_spEscapedFormAction==document.forms[0].action){

document.forms[0].action=_spOriginalFormAction;

}

_spOriginalFormAction=null;

_spEscapedFormAction=null;

document.forms[0]._initialAction = document.forms[0].action;

}

</script>

2.4. Adicione o método javascript RestorerToOriginalFormAction() na tag Body onload, como a seguir:

<BODY scroll="yes" onload="javascript:if (typeof(_spBodyOnLoadWrapper) != "undefined") _spBodyOnLoadWrapper(); RestoreToOriginalFormAction();">

3. Modificando o Layout da página

3.1. Nosso ultimo passo, é adicionar um UpdatePanel na página em que queremos utilizar o script para atualizar o conteúdo sem um refresh total da página. Vamos lá:

3.2. Aqui, vou aplicar o UpdatePanel para a WebPart Zone inteira. Adicione um UpdatePanel logo acima da webpart zone que deseja aplicar, como abaixo:

<asp:UpdatePanel id="LeftPanel" runat="server">

<ContentTemplate>

<WebPartPages:WebPartZone runat="server" Title="Left" ID="LeftColumn" Orientation="Vertical">

<ZoneTemplate></ZoneTemplate>

</WebPartPages:WebPartZone>

</ContentTemplate>

</asp:UpdatePanel>

Nota: a parte em negrito é a própria webpart zone do SharePoint, ou seja, o UpdatePanel envolve toda a webpart zone.

Pronto! Acabamos de configurar o SharePoint para integrar com as funcionalidades do Microsoft ASP .Net AJAX.

Façam seus testes! Eu, por exemplo, utilizei essa funcionalidade em uma webpart de enquetes, assim, ao postar uma resposta, apenas a webpart de enquete tem seu refresh. Antes, era necessário atualizar a página toda, quando a webpart de enquete mudava para mostrar os resultados. ;)

Conclusão

Nesse artigo apresentei como podemos aprimorar ainda mais nossas aplicações baseadas na plataforma do Microsoft Office SharePoint Server 2007 e Windows SharePoint Services 3.0 integrando-os com a tecnologia Microsoft ASP.NET AJAX.

Assim, podemos aplicar o AJAX para que apenas “parte” do site tenha refresh do conteúdo, sempre temos partes do site que não precisamos efetuar um refresh completo do site para mostrar algo para o usuário.

Espero que este artigo seja tão útil para vocês, como foi para mim! ;)

Thiago Silva

Thiago Silva - Colunista da maior Comunidade de SharePoint no Brasil (CanalSharePoint), é consultor de Tecnologia da Informação a 5 anos, focado principalmente em tecnologias Microsoft, com experiência em algumas tecnologias de outros fabricantes como Symantec, CA, RIM e outros. Nos últimos dois anos vem se especializando nas Tecnologias SharePoint e .Net.
Possui as certificações Microsoft MCP: Installing, Configuring, and Administering Microsoft Windows XP Professional e Planning, Implementing, and Maintaining a Software Asset Management. E MCTS: Windows SharePoint Services 3.0: Config."
Blog:
http://thiagottss.spaces.live.com/blog.