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;
}
Foi útil?

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}&amp;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"
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top