3. – What are Custom Actions?
– Demonstrations
• Creating a Simple Custom Action
• Creating a Slightly More Complex Custom Action
• Hiding Custom Actions
• Custom Action Groups
– References
– Q&A
4. Per Microsoft –
“A custom action represents a link, toolbar button, menu item, or
any control that can be added to a toolbar or menu that a user
sees. Custom actions can be bound to list type, content type, file
type, or programmatic identifier (ProgID).”
Source: http://snipurl.com/d8y70
5. What does that mean?
– Custom Actions can be bound to List Types
• A Custom Action can be bound to a Document Library, but, may not
be bound to a Task List
– Example: Check In/Check Out
6. What does that mean?
– Custom Actions can be bound to File Types
• Example: ‘Edit in Microsoft Word’ bound to Word (.doc, .docx, etc.)
Document Content Types
7. What does that mean?
– Custom Actions can be bound to Content Types
• Example: Folders, Document Content Types, List Content Types, etc.
– Programmatic Identifiers
• Example: Task List Identifier (107)
10. Examples of Custom Actions
• Edit Control Block (ECB Menu)
• Toolbars
• Site Actions Menu
11. Examples of Custom Actions
• Edit Control Block (ECB Menu)
• Toolbars
• Site Actions Menu
• Site Settings Page
12. Examples of Custom Actions
• Edit Control Block (ECB Menu)
• Toolbars
• Site Actions Menu
• Site Settings Page
• Central Administration Pages
– Operations, Application Management
13. Examples of Custom Actions
• Edit Control Block (ECB Menu)
• Toolbars
• Site Actions Menu
• Site Settings Page
• Central Administration Pages
– Operations, Application Management
• Shared Service Provider Pages
14. Examples of Custom Actions
• Edit Control Block (ECB Menu)
• Toolbars
• Site Actions Menu
• Site Settings Page
• Central Administration Pages
– Operations, Application Management
• Shared Service Provider Pages
• You get the idea…
15. Examples of Custom Actions
• Edit Control Block (ECB Menu)
• Toolbars
• Site Actions Menu
• Site Settings Page
• Central Administration Pages
– Operations, Application Management
• Shared Service Provider Pages
• You get the idea…
(hopefully?)
16. But wait, there’s more!
– Create links to pages that really should be there…
• Example: There is a link to the Site Collection Recycle Bin on the Site
Settings page, however, there is no link to the current site Recycle
Bin. (Why? Who knows…) Never fear though – you can add one
easily (Demo #1)
– Custom Actions can pass along information to act upon
• Example: Add a “Complete Task” action to an Edit Control
Block, which calls an ASPX page, taking the parameters of the List ID
and Item ID, and updating the task item within a list. (Demo #2)
17. …and more
– Custom Actions can also be hidden
• Example: You do not want site administrators to be able to delete
their sites by using the Delete This Site link on the Site Settings page
– so, we can remove it by using HideCustomAction (Demo #3)
– Create Groupings of Custom Actions by using CustomActionGroup
• Example: Create a grouping of your Custom Actions on the Site
Settings page for all of your Custom Actions… (Demo #4)
18. – Notepad!
– What do I use?
• Visual Studio 2005/2008
• Andrew Connell’s SharePoint Project Utility for Visual Studio
– http://snipurl.com/d8yv9
• WSPBuilder
– http://snipurl.com/d8yxv
21. Scope
– Web
– A “sub-site”
– Only activates the feature on the specific web
– Site
– Site Collection
– Applies to all webs within the site collection
– Web Application
– Applies to all site collections and webs within a web
application
– Farm
– Applies to all web applications, site collections, etc.....
24. Id (optional)
– Specifies a unique identifier for custom action
– May be a GUID or a unique term
– Example: DeleteWeb
GroupID (optional)
– Identifies the unique group that this element is contained in
– Example: SiteAdministration
25. Location (optional)
– Specifies the location for this custom action
– Example: Microsoft.SharePoint.SiteSettings
RegistrationType (optional)
– Specifies the list, item content type, file type, or programmatic
identifier that this action is associated with
– Example: List
26. RegistrationId (optional)
– Specifies the registration attachment for a per-item action
– Example (List Identifier – Task List): 107
Title (required)
– Specifies the name of your action
– Example: DeleteWeb
Description (optional)
– Longer description for action which is shown as a tooltip or sub-
description (where applicable) for the action
27. Sequence (optional)
– The order in which your action will appear.
– If not specified, displayed in the order it is read by SharePoint by
Feature and by order in element listing (XML).
28. Permissions
– RequireSiteAdministrator (optional)
– Boolean (True or False)
– Cannot be used on ECB menu list items
– Rights
– Specify rights needed for this Custom Action to be visible
– Example: “ApproveItems,DeleteListItems”
– Possible Values http://snipurl.com/d8z2l
29. UrlAction Tokens
– ~site
– References the current SPWeb context
– ~sitecollection
– References the current SPSite context
– {ItemId}
– GUID of the item action is called from
– {ItemUrl}
– URL of the item the action is called from
30. UrlAction Tokens
– {ListId}
– GUID representation of the list
– {SiteUrl}
– References the URL of the SPWeb context the action is called
from
– {RecurrenceId}
– Unsupported in context menus
– Source URL
– This token is not available, but there is a way to get it via
JavaScript, which we will see in Demo #2
– http://snipurl.com/d8zb6
34. – My Blog
• http://gvaro.spaces.live.com
– GraceHunt.SharePoint CodePlex Projects
• http://codeplex.com/GraceHunt
– John Holliday’s Custom Action Resources
• Hiding Custom Actions, and a Utility to get all custom action identifiers
http://snipurl.com/d8zea
35. – MSDN
• Custom Action Definitions
– http://snipurl.com/d8zi7
• Default Custom Action Locations and IDs
– http://snipurl.com/d8zka
• How to: Add Custom Actions to the User Interface
– http://snipurl.com/d8zq2
• CustomAction Element
– http://snipurl.com/d9jd4
• CustomActionGroup Element
– http://snipurl.com/d9jfx
• HideCustomAction Element
– http://snipurl.com/d9jhs
Hidden=trueActivate and deactivate via CMD line – why? You do not want site admins, who you are hiding this from, to be able to deactivate the feature to delete the site!stsadm -o activatefeature -name SPS.HideCustomAction -url http://spsaturday.litwareinc.com
Record questions – post answers on my blog following SharePoint Saturday