Добавьте UserCustomAction (ECB) для группы проверенных элементов в Sharepoint

В Интернете я нашел много примеров кода, показывающих, как добавить пользовательское действие пользователя в меню ECB из JavaScript в SharePoint. Возьмите это, например.

Я адаптировал и использовал код, и он успешно добавляет пункт меню в меню ECB.

Проблема, с которой я столкнулся, заключается в том, что мне нужно добавить пользовательское действие в раскрывающееся меню, которое отображается, когда в списке документов отмечается (выбирается) более одного элемента.

Я предполагаю, что меню ECB, которое отображается, когда выбран 1 элемент, отличается от того, которое отображается при выборе более 1 элемента.

Для справки, вот пример кода (который добавляет пункт меню в меню ECB, отображаемый, когда из списка выбран только 1 элемент):

$(document).ready(function() {
    SP.SOD.executeFunc('sp.js', 'SP.ClientContext', AddCustomUserAction);
});

function AddCustomUserAction() {
    var clientContext = new SP.ClientContext();  
    var oWeb = clientContext.get_web(); 
    var oList = oWeb.get_lists().getByTitle("Documents");  
    var userCustomActionColl = oList.get_userCustomActions(); 

    clientContext.load(oList,'UserCustomActions','Title');

    clientContext.executeQueryAsync(function() {
        var customActionEnumerator = userCustomActionColl.getEnumerator();
        var foundAction = 0;
        while (customActionEnumerator.moveNext()) 
        {
            var oUserCustomAction = customActionEnumerator.get_current();            
            if (oUserCustomAction.get_title() == "A custom action") 
            {
                foundAction=1;
                break;
            }
        }
        if(foundAction == 0){               
            var oUserCustomAction = userCustomActionColl.add();

            oUserCustomAction.set_location('EditControlBlock');  
            oUserCustomAction.set_sequence(100);
            oUserCustomAction.set_title("A custom action");
            oUserCustomAction.set_url("javascript:console.log('A custom action taking place...');");

            oUserCustomAction.update(); 
            clientContext.load(userCustomActionColl);
            clientContext.executeQueryAsync(function () {
                console.log('Success.');
            }, function (sender, args) {
                console.log('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
            });

        } 
   },
   function(sender,args){
       console.log('Request failed. ' + args.get_message() + '\n' +   args.get_stackTrace());
   });
}

0 ответов

Другие вопросы по тегам