Как создать пользовательское действие кнопки ленты, которое появится на всех видах списков
-
16-10-2019 - |
Вопрос
Я хочу создать кнопку ленты, которая будет работать со всеми видами списков. Я имею в виду, что одно и то же пользовательское действие должно работать против списков, библиотек документов, списков объявлений и т. Д.
Также. Он должен работать независимо от типов контента, содержащихся в списке.
Каким должно быть определение пользовательского действия для этого?
Решение
Просто подключите его к типу контента 0x01.
Пример синтаксиса, используемого в нашем пакете аудита SharePoint, заключается в следующем:
<!-- Add a new action to the SharePoint 2010 Ribbon bar for each list to show all audit entries for a list Item -->
<CustomAction
Id="Muhimbi.SharePoint.Audit.Ribbon.ListItem.Share.ViewAuditLog.Action"
Location="CommandUI.Ribbon"
RegistrationType="ContentType"
RegistrationId="0x01"
>
<CommandUIExtension>
<CommandUIDefinitions>
<CommandUIDefinition
Location="Ribbon.Documents.Share.Controls._children">
<Button Id="Muhimbi.SharePoint.Audit.Ribbon.ListItem.Share.ViewAuditLog.Button"
Command="Muhimbi.SharePoint.Audit.Ribbon.ListItem.Share.ViewAuditLog.Button.Command"
Image16by16="/_layouts/images/Muhimbi.SharePointAudit/Report16.gif"
Image32by32="/_layouts/images/Muhimbi.SharePointAudit/Report.gif"
LabelText="$Resources:MuhimbiAuditProvisioningResources,ECB_ViewAuditLog;"
Sequence="11"
TemplateAlias="o1" />
</CommandUIDefinition>
<CommandUIDefinition
Location="Ribbon.ListItem.Share.Controls._children">
<Button Id="Muhimbi.SharePoint.Audit.Ribbon.ListItem.Share.ViewAuditLog.Button"
Command="Muhimbi.SharePoint.Audit.Ribbon.ListItem.Share.ViewAuditLog.Button.Command"
Image16by16="/_layouts/images/Muhimbi.SharePointAudit/Report16.gif"
Image32by32="/_layouts/images/Muhimbi.SharePointAudit/Report.gif"
LabelText="$Resources:MuhimbiAuditProvisioningResources,ECB_ViewAuditLog;"
Sequence="11"
TemplateAlias="o1" />
</CommandUIDefinition>
<CommandUIDefinition
Location="Ribbon.Calendar.Events.Share.Controls._children">
<Button Id="Muhimbi.SharePoint.Audit.Ribbon.ListItem.Share.ViewAuditLog.Button"
Command="Muhimbi.SharePoint.Audit.Ribbon.ListItem.Share.ViewAuditLog.Button.Command"
Image16by16="/_layouts/images/Muhimbi.SharePointAudit/Report16.gif"
Image32by32="/_layouts/images/Muhimbi.SharePointAudit/Report.gif"
LabelText="$Resources:MuhimbiAuditProvisioningResources,ECB_ViewAuditLog;"
Sequence="11"
TemplateAlias="o1" />
</CommandUIDefinition>
</CommandUIDefinitions>
<CommandUIHandlers>
<CommandUIHandler
Command="Muhimbi.SharePoint.Audit.Ribbon.ListItem.Share.ViewAuditLog.Button.Command"
CommandAction="javascript:window.location='{SiteUrl}/_layouts/Muhimbi.SharePointAudit.Site/AuditLogViewer.aspx?RequestFrom=listitem&ItemId=' + SP.ListOperation.Selection.getSelectedItems()[0].id + '&ListId={ListId}&Source=' + escape(window.location)"
EnabledScript="javascript:function singleEnable()
{
var items = SP.ListOperation.Selection.getSelectedItems();
var ci = CountDictionary(items);
return (ci == 1);
}
singleEnable();" />
</CommandUIHandlers>
</CommandUIExtension>
</CustomAction>
Другие советы
Я использовал немного другой метод. Мне нужно было использовать только одно определение для добавления кнопки для всех различных типов списков сейчас и в будущем.
http://djeeg.blogspot.com/2011/01/ribbon-customaction-on-all-lists.html