Добавьте 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());
});
}