Question

J'ajoute un élément de menu contextuel personnalisé aux documents (et pas des dossiers) dans une liste SPDocumentLibrary dans SharePoint. Le code suivant fonctionne, mais ajoute toujours mon élément de menu personnalisé en haut du menu contextuel, que je ne veux pas. Je devinais que le dernier paramètre CAMOpt était un numéro de séquence qui définirait l'ordre, mais il ne semble pas avoir d'effet. Est-ce que quelqu'un sait s'il est possible d'ajouter un élément de menu contextuel personnalisé vers le bas sur la liste?

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;
}
Était-ce utile?

La solution

Y at-il des raisons pour lesquelles vous n'êtes pas en mesure d'utiliser un action personnalisée fonctionnalité ? Par exemple, utilisez le code d'élément de fonctionnalité similaire à ce qui suit, mais modifier le numéro de séquence du CustomAction élément pour localiser l'option 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>

Réglage du type de contenu doit assurer la fonctionnalité ne concerne pas les dossiers. Si pour une raison quelconque, il montre et il semble y avoir aucun moyen de le désactiver, vous pouvez utiliser JavaScript / JQuery pour cacher l'option de menu à partir des dossiers.

Autres conseils

Dans les éléments XML pour votre fonction où vous incluez le contrôle de l'utilisateur, y ajouter la séquence:

Control Id="AdditionalPageHead"
       ControlSrc="~/_ControlTemplates/blah/blah.ascx" Sequence="229"
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top