在Sharepoint Designer中设置CustomAction

关于在SharepointDesigner中设置CustomAction的备忘,没有啥逻辑性,只是一些知识点。
下面是用SPD的一些限制
  • SPD中只能针对某List设置Custom Action,无法实现一次性为多个List或某一类List批量设置。
  • 无法在Site Actions, SiteSetting等其他地方设置CustomAction。
  • 无法实现根据当前是否有Items处于选择状态或其他因素启用或禁用CustomAction。
  • ...
虽然有很多缺点,但是不需要编码,还是有很多用武之地的。
 
可以在以下5个地方添加Custom Action:
1. List Item Menu (LIM) 
2. Display Form Ribbon 
3. Edit Form Ribbon 
4. New Form Ribbon 
5. View Ribbon 
 
有以下三种CustomAction:
1. Navigate to Form
2. Initiate Workflow
3. Navigate to URL,可以在里面加入javascript,需要注意的是如果在你输入的URL中如果包含某个Workflow的名字,就会被SPD自动替换成Initiate workflow这种Action,我就遇到过这种情况,被折腾得很惨。
 
 
在CustomAction中可以使用一些token,如下表:
TokenDescription
~site The current website (relative link)
~sitecollection The current site collection (relative link)
{ItemId} The (GUID) ID of a list item
{ItemUrl} The URL of a list item
{ListId} The ID of a list
{SiteUrl} The URL of the site (Web) within a site collection
{Source} Fully qualified request URL
{SelectedListId} The (GUID) ID of the list that is currently selected from a list view
{SelectedItemId} The (GUID) ID of the item that is currently selected from the list view
 
You can find further information on using tokens in SharePoint at

在Dialog中启动CustomAction
javascript:SP.UI.ModalDialog.showModalDialog({url:"{SiteUrl}/Lists/CustomList/DispForm.aspx?ID={ItemId}", title: "Custom Form"}); return false;
 
CMDUI.xml,这里面有系统内置的Action的配置,是很好的参考资源
%SystemDrive%\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\GLOBAL\XML\CMDUI.xml
 

Location ID
下表是默认的location,全部的LocationID,请参考:http://msdn.microsoft.com/en-us/library/ee537543.aspx
Ribbon LocationList or LibraryRibbon Control and Group ID
Display Form List Ribbon.ListForm.Display.Manage.Controls._children
  Library Ribbon.ListForm.Display.Actions.Controls._children
Edit Form List Ribbon.ListForm.Edit.Actions.Controls._children
  Library Ribbon.DocLibListForm.Edit.Actions.Controls._children
New Form List Ribbon.ListForm.Edit.Actions.Controls._children
  Library[*] Ribbon.DocLibListForm.New.Actions.Controls._children
View Form List Ribbon.ListItem.Actions.Controls._children
  Library Ribbon.Documents.Manage.Controls._children
Quick Step List Ribbon.ListItem.QuickSteps.Controls._children
  Library Ribbon.Documents.QuickSteps.Controls._children
Rights Mask
 
sequence number 
0 代表在最前,可以在CMDUI.xml中得到内置Action的序列号
 
-------------------------------------------------------------
其他有用的link:
原文地址:https://www.cnblogs.com/teamleader/p/2215081.html