SharePoint menú contextual personalizado en la lista personalizada aparece en las carpetas y no sólo los archivos
-
09-09-2019 - |
Pregunta
He creado una lista personalizada aquí es la plantilla de lista:
<ListTemplate Name="CustomDocumentLibrary"
DisplayName="Document Library"
Description=""
BaseType="1"
Type="10101"
OnQuickLaunch="TRUE"
SecurityBits="11"
Sequence="110"
Image="/_layouts/images/itdl.gif"
DocumentTemplate="101" />
He añadido una acción personalizada:
<CustomAction
Id="1611D96C-ABBD-4021-9183-60D8440BEB95"
Location="EditControlBlock"
Title="Send to Document Management"
ImageUrl="/_layouts/images/cmCopy.gif"
RegistrationType="List"
RegistrationId="10101">
<UrlAction Url="~site/Lists/DocumentLibrary/Forms/SendToDM.aspx?ListId={ListId}&ListItemID={ItemId}&Action=Copy"/>
Aparece este menú contextual de los archivos y carpetas, es posible que mi contexto memu aparezca en los archivos sólo?
Solución 2
Nunca me di cuenta de cómo hacer esto en el código o XML, pero tengo que trabajar en JavaScript.
He añadido el código siguiente a la AllItems.aspx:
<script type="text/javascript">
function Custom_AddDocLibMenuItems(m, ctx) {
var otype = currentItemFSObjType = GetAttributeFromItemTable(itemTable, "OType", "FSObjType");
if (otype != 1) { // 1=folder
var itemId = GetAttributeFromItemTable(itemTable, "ItemId", "Id");
var listId = ctx.listName;
var action = 'Go_To_Page("' + ctx.HttpRoot + '/_layouts/MyPage.aspx?ListId=' + listId + '&ListItemID=' + itemId + '");';
var option = CAMOpt(m, 'Do Something', action, '/_layouts/IMAGES/10.gif', '', 1110);
option.id = "ID_Do_Something";
}
return false;
}
function Go_To_Page(page) {
window.location = page;
}
</script>
Un efecto secundario desafortunado es el elemento es siempre el primero en el menú contextual.
Otros consejos
Puede registrar la acción en el tipo de contenido en su lugar. Pero eso podría no ser adecuado en su situación?
<CustomAction
Id="ContextMenu"
Location="EditControlBlock"
Title=Permissions"
**RegistrationType="ContentType"**
ShowInLists="FALSE"
ImageUrl ="~Site/_layouts/nks.PNG"
**RegistrationId="0x0101"**>
<UrlAction Url="your URL"/>
</CustomAction>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow