Pregunta

Estoy agregando un elemento de menú contextual personalizado a los documentos (y no carpetas) en una lista SPDocumentLibrary en SharePoint. El siguiente código funciona, pero siempre añade mi elemento de menú personalizado en la parte superior del menú contextual, lo que no quiero. Yo estaba adivinando que el parámetro final en CAMOpt era un número de secuencia que definiría el orden, pero no parecen tener ningún efecto. ¿Alguien sabe si es posible añadir un elemento de menú contextual personalizado a la parte inferior de la 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;
}
¿Fue útil?

Solución

¿Hay alguna razón por la que no es capaz de utilizar un href="http://msdn.microsoft.com/en-us/library/bb418728.aspx" rel="nofollow noreferrer"> acción personalizada ? Por ejemplo utilizar el código de elemento de función similar a la siguiente, pero modificar el número de secuencia del CustomAction elemento para localizar la opción de menú:

<?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>

Ajuste del tipo de contenido debe garantizar la función no se aplica a las carpetas. Si por alguna razón se está mostrando y no parece haber ninguna manera de desactivarlo, se puede usar JavaScript / jQuery para ocultar la opción de menú de carpetas.

Otros consejos

En el XML elementos para su función de donde se incluye el control de usuario, añadir la secuencia de ahí:

Control Id="AdditionalPageHead"
       ControlSrc="~/_ControlTemplates/blah/blah.ascx" Sequence="229"
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top