Обновление иконки в ленте после ее развертывания - PullRequest
0 голосов
/ 22 мая 2019

Код добавляет пользовательский значок на ленту SharePoint.Я не могу обновить развернутую ленту без повторного развертывания значка, даже когда XML-файл изменен.

Я попытался настроить XML ExecuteOrDelayUntilScriptLoaded (init_HideButton, "sp.ribbon.js");SP.SOD.executeOrDelayUntilScriptLoaded (AddCustomUserAction, "sp.js");

});  

     function AddCustomUserAction() {  
    //alert("test")
    //Get the client context and list object  
    var context = new SP.ClientContext.get_current();  
    var list = context.get_web().get_lists().getByTitle("Icon List 2");  
    var collUserCustomAction = list.get_userCustomActions();

    //Get the custom user action collection and add the user action  



    var customUserAction = list.get_userCustomActions().add();  
     context.load(list,'UserCustomActions','Title');


   //Set the location of the user action  
   customUserAction.set_location('CommandUI.Ribbon.ListView');  
   //Add the properties for the custom action  
   //var customActionEnumerator = collUserCustomAction.getEnumerator();

    var userActionExtension = 
     '<CommandUIExtension                                                             xmlns="http://schemas.microsoft.com/sharepoint/">' + 
           '<CommandUIDefinitions>' +
                           '<CommandUIDefinition                                   Location="Ribbon.List.CustomizeList.Controls._children">' +
                                            '<Button                               Id="Ribbon.Documents.New.RibbonTest1" ' + 
                                            'Command="Notify" '                  + 'Sequence="0" ' +
                                'Image16by16="/_layouts/images/NoteBoard_       16x16.png" ' +
                                            'Image32by32="https://www-            16ev04dev.teachers.ab.ca/Images%202/205153.gif" ' +
                                                            'Description=           "Shows the ID of the current list." ' +
                                            'LabelText="Show ID" ' +
                                           'TemplateAlias="o1"/>' + 
          '</CommandUIDefinition>' + 
        '</CommandUIDefinitions>' +
        '<CommandUIHandlers>' +
               '<CommandUIHandler Command="Notify" ' +
               'CommandAction="javascript:alert();"  />' +
         '</CommandUIHandlers>' +
     '</CommandUIExtension>';  
   //Add the command UI extension and update the custom user action  
    customUserAction.set_commandUIExtension(userActionExtension)  

    customUserAction.update();  

   //Load the client context and execute the batch  
    context.load(list, 'UserCustomActions','Title');  


    context.executeQueryAsync(function() {  

    }, function(sender, args) {  
       console.log(args.get_message());  
    });  
}  
</script>  

Код повторно развертывает значок на ленте, и невозможно изменить предупреждение без повторного развертывания.

Ответы [ 2 ]

0 голосов
/ 23 мая 2019

Ответ на запуск функции JavaScript с помощью нового значка на ленте заключается в простом выполнении этого с помощью конструктора SP или переменной userActionExtension в коде.В моем случае я создал функцию в веб-части редактора контента на странице, а затем обратился к ней через конструктор SP (перейдите к окну URL): JavaScript: GetItemId ();

Развертывание значка на лентесодержит, как описано в записи Lee_MSFT.

Спасибо

0 голосов
/ 22 мая 2019

Попробуйте сценарий ниже.

Изменение пользовательского пользовательского действия с помощью JavaScript

var siteUrl = '/sites/MySiteCollection';

function modifyUserCustomAction() {

    this.clientContext = new SP.ClientContext(siteUrl);
    var oWebsite = clientContext.get_web();
    this.oList = oWebsite.get_lists().getByTitle('My List');
    this.collUserCustomAction = oList.get_userCustomActions();

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

    clientContext.executeQueryAsync(Function.createDelegate(this, this.SetImage), Function.createDelegate(this, this.onQueryFailed));
}

function SetImage() {

    var customActionEnumerator = collUserCustomAction.getEnumerator();

    while (customActionEnumerator.moveNext()) 
    {
        var oUserCustomAction = customActionEnumerator.get_current();

        if (oUserCustomAction.get_title() == 'My First User Custom Action') 
        {
            oUserCustomAction.set_imageUrl('http://MyServer/_layouts/images/MyIcon.png');
            oUserCustomAction.update();

            clientContext.load(oUserCustomAction);

            clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
        }
    }
}

function onQuerySucceeded() {

    alert('Custom action changed for ' + this.oList.get_title());
}

function onQueryFailed(sender, args) {

        alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...