2009-08-17 5 views
1

J'ajoute un élément de menu contextuel personnalisé aux documents (et non aux 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 de CAMOpt était un numéro de séquence qui définirait l'ordre, mais cela 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é en bas de la liste?Ordre des éléments du menu SPDocumentLibrary à l'aide de Custom_AddDocLibMenuItems

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; 
} 

Répondre

1

Y at-il des raisons pour lesquelles vous n'êtes pas en mesure d'utiliser un custom action feature? Par exemple, utilisez le code d'élément de fonctionnalité similaire à ce qui suit, mais modifier le numéro de séquence du CustomAction element 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 s'affiche et qu'il semble impossible de le désactiver, vous pouvez utiliser JavaScript/jQuery pour masquer l'option de menu des dossiers.

0

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

Control Id="AdditionalPageHead" 
     ControlSrc="~/_ControlTemplates/blah/blah.ascx" Sequence="229" 
Questions connexes