Custom Actions, Content Types y mayúsculas
Hola a todos.
Últimamente me estoy topando con incidentes relacionados con Custom Actions y Content Types. Resulta que cuando se crea un botón customizado por medio de un custom action éste no aparece cuando se posiciona en el DisplayFormToolBar de una lista. Sin embargo, tenemos codificados los element.xml de la manera correcta, ¿En qué nos estamos equivocando?.
Pues nada más lejos de la realidad, muchos de desarrolladores usan letras minúsculas en los Content Type IDs o los dejan como Visual Studio los genera (con alguna letra minúscula). Esas letras minúsculas no son admitidas por SharePoint ya que espera letras mayúsculas cuando realiza el parseo de los IDs. El resultado sería la no muestra del botón del menú debido a un fallo ¿Y por qué letras mayúsculas? Porque el ID es un número en Hexadecimal y las letras de los números hexadecimales van en mayúsculas.
Por lo cual, aplicad la siguiente Regla de oro: siempre letras mayúsculas en las definiciones de Content Type IDs.
Ejemplo
1: <ContentType
2: ID="0x01004F12A3A65D3740B4BE901471FDEE9E15"
3: Name="CT Héctor Calvarro Martín"
4: Group="CT Test"
5: Description="Esto es un ejemplo. Microsoft no se hace responsable de su funcionamiento"
6: Version="0"
7: Hidden="FALSE"
8: ReadOnly="FALSE"
9: <FieldRefs>
10: <FieldRef Name="Nombre" DisplayName="Nombre"
ReadOnly="FALSE" ID="{fa564e0f-0c70-4ab9-b863-0177e6ddd247}"/>
11: </FieldRefs>
12: </ContentType>
1: <CustomAction
2: Id="Botón especial Hector Calvarro"
3: RegistrationType="ContentType"
4: RegistrationId= "0x01004F12A3A65D3740B4BE901471FDEE9E15"
5: Description="Botón especial creado a base de un custom action
basado en un content type. Héctor Calvarro Martín"
6: Location="DisplayFormToolbar"
7: Sequence="100"
8: Title="Botón Héctor Calvarro">
9: <UrlAction Url=""/Lists/GTSC DSC WE RULES""/>
10: </CustomAction>
Resultado:
Muchas Gracias a todos.
Un saludo.
ACTUALIZACIÓN: Este mismo comportamiento ocurre también con EditformToolbar
Héctor Calvarro Martín. SharePoint Dev. Microsoft Support Engineer for DEV EMEA
Comments
Anonymous
January 01, 2003
@Luis Gracias por el comentario Luis. Sin duda lo que reportas ocurre pero puedes seguir la siguiente guía que expone una manera de soslayar ese punto oscuro. www.nearinfinity.com/.../how_to_add_a_custom_action_to.html Muchas Gracias por seguir nuestro blog. Un saludo. Héctor Calvarro.Anonymous
January 01, 2003
@tdelvidelle. Hi thank you for your post. Yes, it applies to all kind of hexadecimal GUIDS. In theory, It should be work nice. I always do it in that way and so far I didn't experimented any isue. Thanks again for reading our blog. Kind regards. Hector CalvarroAnonymous
March 23, 2010
(sorry I can't talk Spanish, so I post in English) So the best practise is : "Always use upper case content IDs" Does this also applies to all the GUID that are used in all the different XML feature definition fields (example : FieldRef id field, feature id, etc.)?Anonymous
May 06, 2010
Hola, este es un punto importante a tener en cuenta. Pero no deja de ser cierto que hay puntos oscuros en los "Custom Actions". Sin ir más lejos, comprueba como con tu propio elements.xml la acción deja de funcionar (ni siquiera se renderiza) en cuanto cambies a : GroupId="ActionsMenu" Location="Microsoft.SharePoint.StandardMenu" Siempre teniendo en cuenta que actuemos contra un Content Type. Si lo hacemos contra un tipo de Lista Genérico, funciona.