Ordem dos itens de menu SPDocumentLibrary usando Custom_AddDocLibMenuItems
-
18-09-2019 - |
Pergunta
Eu estou adicionando um item de menu de contexto personalizado para documentos (e não pastas) em uma lista SPDocumentLibrary no SharePoint. O código a seguir funciona, mas sempre acrescenta meu item de menu personalizado no topo do menu de contexto, o que eu não quero. Eu estava supondo que o parâmetro final em CAMOpt era um número sequencial que definiria a ordem, mas não parece ter qualquer efeito. Alguém sabe se é possível adicionar um item de menu de contexto personalizado para a parte inferior na lista?
function Custom_AddDocLibMenuItems(m, ctx) {
var otype = currentItemFSObjType = GetAttributeFromItemTable(itemTable, "OType", "FSObjType");
if (otype != 1) {
var itemId = GetAttributeFromItemTable(itemTable, "ItemId", "Id");
var listId = ctx.listName;
var action = 'Go_To_Page("' + ctx.HttpRoot + '/_layouts/custom/PAGES/mycustompage.aspx?ListId=' + listId + '&ListItemID=' + itemId + ');';
CAMOpt(m, 'Custom Menu Item', action, '/_layouts/custom/IMAGES/action.gif', '', 110);
CAMSep(m);
}
return false;
}
function Go_To_Page(page) {
window.location = page;
}
Solução
Existe alguma razão para que você não são capazes de usar um ação personalizada recurso ? Por exemplo característica utilização código elemento semelhante à que se segue, mas alterar o número de sequência do CustomAction elemento para localizar a opção de menu:
<?xml version="1.0" encoding="utf-8" ?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<CustomAction
Id="DoSomething"
RegistrationType="ContentType"
RegistrationId="0x0101"
Location="EditControlBlock"
Sequence="10001"
ImageUrl="/_layouts/images/action.gif"
Title="Do Something">
<UrlAction Url="~site/_layouts/custom/PAGES/mycustompage.aspx?ListItemID={ItemId}&ListId={ListId}" />
</CustomAction>
</Elements>
Definir o tipo de conteúdo deve assegurar o recurso não se aplica a pastas. Se por algum motivo ele está mostrando e não parece haver nenhuma maneira de desativá-lo, você pode usar JavaScript / jQuery para ocultar a opção de menu de pastas.
Outras dicas
No elementos XML para o seu recurso em que você inclui o User Control, adicionar a seqüência de lá:
Control Id="AdditionalPageHead"
ControlSrc="~/_ControlTemplates/blah/blah.ascx" Sequence="229"