Caixas de diálogo para abrir arquivos no SharePoint

Caixas de diálogo para abrir arquivos no SharePoint

2014-01-16 Off Por gambin

Olá Pessoal!

Esta é uma dica bem simples, mas que ajudou a resolver o caso de um cliente que gostaria muito que a seguinte caixa de diálogo fosse exibida ao abrir determinado tipo de arquivo:

SharePoint Open File PopUp

Neste caso podemos ver que trata-se de um arquivo PDF. E o que isto tem a ver com o assunto??

 

#BackToTheFuture

Por padrão os ícones dos arquivos PDF não são exibidos no SharePoint (até na versão 2010), e para configurá-los basta seguir o seguinte o seguinte KB:

http://support.microsoft.com/kb/832809

Basicamente este procedimento explica onde colocar o ícone PNG (ou qualquer outra extensão desejada) para os arquivos PDFs e qual a entrada no arquivo DocIcon.XML que precisamos fazer:

<Mapping Key="pdf" Value="NameofIconFile.gif"/>

Sem dúvida que este procedimento é totalmente funcional para exibir os ícones dos arquivos PDFs (ou qualquer outra extensão não conhecida pelo SharePoint, o procedimento é o mesmo).

Entretanto, após concluir esta configuração seguida de um IISRESET, o que acontece é o seguinte:

Ao clicar no arquivo, a seguinte caixa de diálogo é exibida:

IE Download Bar

 

#Comofas

Bastou analisar o comportamento dos links entre diferentes documentos, utilizando o Internet Explorer Developer Tools (F12).

No exemplo abaixo temos um link que exibe a caixa de diálogo:

Link com caixa de diálogo

E agora o link para nosso arquivo PDF (sem a caixa de diálogo):

Link sem caixa de diálogo

A única diferença fica por conta da função SharePoint.OpenDocuments, que não está sendo passado no link.

Neste caso podem surgir inúmeras maneiras de fazer este ajuste, com código javascript, jQuery e tudo mais, mas é possível resolver de um jeito MUUUUITO mais simples =]

Lembram-se da entrada que configuramos anteriormente no arquivo DocIcon.XML para arquivos PDF (ou qualquer outra extensão)? Pois bem, vale a pena ver de novo:

<Mapping Key="pdf" Value="NameofIconFile.gif"/>

Basta agora incluir o seguinte parâmetro – OpenControl=”SharePoint.OpenDocuments” – conforme o modelo abaixo:

<Mapping Key="pdf" Value="NameofIconFile.gif" OpenControl="SharePoint.OpenDocuments" />

Rode um IISRESET e pronto! A caixa de diálogo do SharePoint será exibida mas pode ser que não seja possível (ainda) abrir o arquivo diretamente…

 

#pq?

Isto pode acontecer por alguns motivos. Um deles pode ser a configuração do Browser File Handling, a nível de Web Application. Para maiores detalhe acesse Central Administration > Application Management > Manage Web Applications.

Selecione o Web Application do site desejado e clique em General Settings. Observe o campo Browser File Handling:

Browser File Handling

Basicamente temos duas opções:

  • Permissive: permite a visualização de qualquer arquivo no browser que esteja dentro da base de dados de conteúdo do SharePoint.
  • Strict: permite apenas a visualização de alguns tipos de arquivos (como “.doc”, “.ppt”, “.xls”), por motivos de segurança (evitando desta forma, ataques como injeção de script). Quando um arquivo não está na lista de “liberados”, por mais que configuremos a caixa de diálogo (como fizemos anteriormente), ele não será exibido no browser.

Maiores detalhes: http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.administration.spwebapplication.browserfilehandling.aspx

Em resumo, a maneira mais fácil é alterar esta opção para Permissive, e a maneira mais segura é configurar o MIME Type (ou tipo/ extensão do arquivo) permitida para este web application via Powershell.

Segue abaixo alguns comandos:

# Consultar MIME types permitidos:
$webApplication = Get-SPWebApplication "http://yourwebapplicationurl"
$webApplication.AllowedInlineDownloadedMimeTypes

# Adicionar novo MIME Type para a lista de "permitidos"
$webApplication = Get-SPWebApplication "http:/yourwebapplicationurl"
$webApplication.AllowedInlineDownloadedMimeTypes.Add("application/pdf")
$webApplication.Update()

# Remover MIME Type da lista de "permitidos"
$webApplication = Get-SPWebApplication "http:/yourwebapplicationurl"
$webApplication.AllowedInlineDownloadedMimeTypes.Remove("application/pdf")
$webApplication.Update()

Para maiores informações sobre Browse File Handling, consulte no seguinte link:

http://social.technet.microsoft.com/wiki/contents/articles/8073.sharepoint-browser-file-handling-deep-dive.aspx#Default_Trusted_file_MIME_types

 

Um outro caso é em relação a abrir arquivos diretamente através do browser ou aplicativos (que também utiliza um download temporário, porém transparente para o usuário).

Para abrir arquivos no browser é necessário que o próprio browser possua determinado plugin, extensão, api, módulo (ou qualquer outra coisa que podemos denominar aplicativo), responsável por renderizar seu conteúdo nesta caixa, que é o navegador.

Para arquivos na extensão PDF precisamos de um plugin compatível, como o Adobe Reader (assim como o QuickTime para “.mov”, o Flash Player para “.swf”, e por aí vai).

Pode ser que seu browser não possua o plugin necessário, e isto impede que o arquivo seja visualizado no próprio browser.

Vale lembrar que alguns browsers como o Google Chrome, já possuem um PDF Viewer nativo!

De qualquer forma a regra é clara:

Para abrir arquivos diretamente sem a necessidade de download, é necessário um plugin ou aplicativo que reconheça o MIME Type do arquivo.

Ahhhh sim, também temos o caso do Office Web Apps (permite a leitura e edição de arquivos do Office através do browser, sem a necessidade do Office Client), mas aí já fica pra outro post 😉

 

Espero que tenha ajudado e até a próxima!

[]’s