Usar os ícones de ficheiros do SharePoint para custom controls

O SharePoint já vem com ícones para ficheiros, usados principalmente em listas. Podemos fazer uso destes mesmos ícones, por exemplo, em custom web parts ou custom controls.

Ícones de ficheiros do SharePoint em listas
Ícones de ficheiros do SharePoint em listas

Primeiro, precisamos de saber onde e como o SharePoint guarda estes ícones.

As imagens são guardadas na pasta images na 12 hive:

Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\IMAGES
Pasta dos ícones do SharePoint na 12 hive
Pasta dos ícones do SharePoint na 12 hive

Isto é mapeado na directoria virtual:

/_layouts/images

Existe também um ficheiro XML com informação de como mapear um tipo de ficheiro ou extensão ao ícone apropriado. Este ficheiro pode ser encontrado em:

Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\XML\DOCICON.xml
DOCICON.xml do SharePoint
DOCICON.xml do SharePoint

Se quiserem adicionar ícones para tipos de ficheiros desconhecidos ou alterar ícones existentes, podem actualizar o ficheiro DOCICON.xml e colocar as imagens na pasta mencionada acima.

Para fazer esta associação programaticamente, o SharePoint tem o método MapToIcon, disponível na classe SPUtility no namespace Microsoft.SharePoint.Utilities.

Para ir buscar o caminho para o ficheiro do ícone, o seguinte código pode ser usado:

string iconPath = "/_layouts/images/" + SPUtility.MapToIcon(web, filename, string.Empty);
  • O primeiro parâmetro é a web onde o ficheiro está localizado (normalmente SPContext.Current.Web).
  • O segundo é o nome do ficheiro (e.g. "test.docx").
  • O terceiro é a identificação da aplicação que foi usada para criar o ficheiro (pode ser usada uma string vazia como argumento).

Para ajudar a ir buscar o nome do ficheiro, há também outro método útil: GetUrlFileName. Passando o URL a este método, ele devolve o nome do ficheiro. E.g.:

string filename = SPUtility.GetUrlFileName("http://test.mossdevdomain.com/SiteCollectionDocuments/test.docx");
Nuno Freitas
Publicado por Nuno Freitas em 27 agosto, 2013

Artigos relacionados