SharePoint List UserCustomAction,在整个sitecollection中

时间:2016-05-16 14:54:08

标签: sharepoint sharepoint-2013 sharepoint-online

如果我选择一个特定的列表来添加动作,我就可以使用了。是否有一种简单的方法可以在整个sitecollection中对所有文档库启用此自定义操作?

代码示例:

function createUserCustomActionList() {
    var cmd = "<CommandUIExtension><CommandUIDefinitions><CommandUIDefinition Location=\"Ribbon.Documents.Manage.Controls._children\">" +
        "<Button Id=\"DiaryAction.Button\" TemplateAlias=\"o1\" Command=\"DiaryCommand\" CommandType=\"General\" LabelText=\"Dela flera\" Image32by32=\"https://eolusvind.sharepoint.com/sites/intranet/_layouts/15/1033/Images/formatmap32x32.png?rev=23\"" +
    " Image32by32Top=\"-271\" Image32by32Left=\"-109\"  />" +
        "</CommandUIDefinition></CommandUIDefinitions><CommandUIHandlers>" +
            "<CommandUIHandler Command =\"DiaryCommand\" CommandAction=\"javascript:alert('Hej');\" EnabledScript=\"javascript:SP.ListOperation.Selection.getSelectedItems().length > 1;\" />" +
    "</CommandUIHandlers></CommandUIExtension>";

    var ctx = new SP.ClientContext.get_current();
    var list = ctx.get_web().get_lists().getByTitle('Dokument');
    var uca = list.get_userCustomActions();

    var oUserCustomAction = uca.add();
    oUserCustomAction.set_location('CommandUI.Ribbon.ListView');
    oUserCustomAction.set_commandUIExtension(cmd);
    oUserCustomAction.set_sequence(100);
    oUserCustomAction.set_title('Dela flera');
    oUserCustomAction.update();

    ctx.load(list, 'Title' ,'UserCustomActions');

    ctx.executeQueryAsync(function () {
        alert('Custom action created for ' + list.get_title())
    }, function (sender, args) {
        alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
    });
}

1 个答案:

答案 0 :(得分:0)

我建议以下方法在网站集中的文档库中注册自定义按钮

  • 使用RegistrationType设置为2(ContentType),RegistrationId设置为0x0101(适用于Document内容类型)以通过内容类型注册自定义操作
  • 使用网站范围用户自定义操作在所有网站上应用更改 集合

示例

var cmd = "<CommandUIExtension>" +
"<CommandUIDefinitions>" +
"<CommandUIDefinition Location=\"Ribbon.Documents.Manage.Controls._children\">" +
"<Button Id=\"ClickAction.Button\" TemplateAlias=\"o1\" Command=\"ViewCustomPropertiesCommand\" CommandType=\"General\" LabelText=\"View Custom Properties\" Image32by32=\"/_layouts/15/1033/Images/formatmap32x32.png?rev=23\" Image32by32Top=\"-1\" Image32by32Left=\"-171\"  />" +
"</CommandUIDefinition></CommandUIDefinitions><CommandUIHandlers>" +
"<CommandUIHandler Command =\"ViewCustomPropertiesCommand\" CommandAction=\"javascript:console.log('View Custom Properties');\" EnabledScript=\"javascript:SP.ListOperation.Selection.getSelectedItems().length > 0;\" />" +
"</CommandUIHandlers>" +
"</CommandUIExtension>";

var ctx = new SP.ClientContext.get_current();
var customAction = ctx.get_site().get_userCustomActions().add();  //1. apply via site scope user custom action
customAction.set_location('CommandUI.Ribbon.ListView');
customAction.set_commandUIExtension(cmd);
customAction.set_sequence(112);
customAction.set_registrationType(2);  //2.set to ContentType
customAction.set_registrationId("0x0101");  //2.set Document content type
//customAction.set_title('Document custom button');
customAction.update();

ctx.executeQueryAsync(function () {
    console.log('Button has been registered');
}, function (sender, args) {
    console.log('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
});