Custom Action Menu for particular Sharepoint List

Khurram Aziz picture Khurram Aziz · Jan 4, 2010 · Viewed 10.1k times · Source

I want my Custom Action Menu to be applied to particular list; currently its specified with the following XML and it gets applied to all the lists!

More specifically speaking; I even want this custom action to be applied to a particular view of the particular list...

<CustomAction
    Id="MyCustomActionId"
    Title="My Custom Action"
    Description="My Custom Action Description"
    RequireSiteAdministrator="FALSE"
    RegistrationType="List"
    GroupId="ActionsMenu"
    Sequence="1000"
    Location="Microsoft.SharePoint.StandardMenu" >
    <UrlAction Url="{SiteUrl}/_layouts/MySharepointArtifacts/MyCustomAction.aspx?ListId={ListId}"/>
  </CustomAction>

How can I do this?

Answer

Tomso picture Tomso · Jan 28, 2010

Creeate a content type (based on the item you want to create the ECB menu on) and add the content type to your list. Create a customAction and register it to the content type. The ECB menu will only show on items of the given content type in lists where you added the content type.

Here is a Content type base on the build in document content type:

    <?xml version="1.0" encoding="utf-8"?>
<Elements Id="f55bc095-86f5-4c0a-961e-0e8f8e6c50ed" xmlns="http://schemas.microsoft.com/sharepoint/">
  <ContentType ID="0x0101002936a05e70da4cf2a6846c669da7fdb6"
               Name="CTName"
               Group="CT group Name"
               Description="CT description"
               Version="0">
    <FieldRefs>...

Create a custom action to the content type (ref. content type id):

    <CustomAction
        Id="MyCustomActionId"
        Title="My Custom Action"
        Description="My Custom Action Description"
        RequireSiteAdministrator="FALSE"
        RegistrationType="ContentType"
RegistrationId="0x0101002936a05e70da4cf2a6846c669da7fdb6"
        GroupId="ActionsMenu"
        Sequence="1000"
        Location="EditControlBlock" >
        <UrlAction Url="{SiteUrl}/_layouts/MySharepointArtifacts/MyCustomAction.aspx?ListId={ListId}"/>
      </CustomAction>