Поделиться через


Элемент CommandUIHandler

Область применения: SharePoint 2016 | SharePoint Foundation 2013 | SharePoint Online | SharePoint Server 2013

Определяет обработчик для команды.

Определение

<CommandUIHandler
  Command = "Text"
  CommandAction = "Text"
  EnabledScript = "Text"
 />

Элементы и атрибуты

В разделах ниже приводится описание атрибутов, дочерних и родительских элементов.

Атрибуты

Атрибут Описание
Команда Обязательно. Имя команды. Значение этого атрибута совпадает со значением атрибута Command элемента, который определяет элемент управления.
CommandAction

Обязательно. Инструкция скрипта, выполняемая при вызове этого обработчика. Microsoft SharePoint Foundation вызывает метод eval , передавая значение этого атрибута.

Значение атрибута могут содержать маркеры подстановки, которые преобразуются при визуализации. Распознаются следующие маркеры:

  • {ItemId} — идентификатор (GUID), взятый из представления списка.
  • {ItemUrl} — URL-адрес элемента списка (URL-адрес).
  • {RecurrenceId} — идентификатор повторяющегося элемента (RecurrenceID).
  • {SiteUrl} — полный URL-адрес сайта (URL-адрес).
  • {ListId} — идентификатор (GUID) списка (ID).
  • {ListUrlDir} — URL-адрес сайта, относяного к серверу, а также папки списка.
  • {Source} — Полный URL-адрес запроса.
  • {SelectedListId} — идентификатор (GUID) списка, выбранного в настоящее время в представлении списка.
  • {SelectedItemId} — идентификатор элемента, выбранного в настоящее время в представлении списка.
EnabledScript

Примечание. Атрибут EnabledScript не работает с пользовательскими действиями, развернутыми на хост-сайте надстройкой SharePoint.

Оператор скрипта, который выполняется для определения того, включена или отключена команда. Выражение скрипта должно возвращать значение Boolean , true, если команда включена, и значение false если она отключена. Если лента отключена, команды недоступны и их нельзя выполнить.

Как и в случае с атрибутом CommandAction, метод eval вызывается со значением этого атрибута в качестве аргумента. Атрибут EnabledScript не поддерживает маркеры подстановки, описанные для атрибута CommandAction.

Дочерние элементы

Нет

Родительские элементы

CommandUIHandlers

Occurrences

Минимум: 1

Максимум: без ограничений

Пример

В следующем примере определяются команда кнопки и соответствующий обработчик.

    <Elements xmlns="http://schemas.microsoft.com/sharepoint/">
      <CustomAction
       Id="EmailContacts"
       RegistrationType="List"
       RegistrationId="105"
       Location="CommandUI.Ribbon">
        <CommandUIExtension>
          <CommandUIDefinitions>
            <CommandUIDefinition
             Location="Ribbon.ListItem.Actions.Controls._children">
              <Button
                Id="Ribbon.ListItem.Actions.Email"
                Alt="$Resources:core,E-Mail;"
                Sequence="55"
                Command="emailContacts"
                LabelText="$Resources:core,E-Mail;"
                Description="$Resources:core,E-Mail;"
                TemplateAlias="o1"/>
            </CommandUIDefinition>
          </CommandUIDefinitions>
          <CommandUIHandlers>
            <CommandUIHandler
             Command="emailContacts"
             CommandAction="javascript:
               function getItemIds()
               {
                 var itemIds = '';
                 var items = SP.ListOperation.Selection.getSelectedItems();
                 var item;
                 for(var i in items)
                 {
                   item = items[i];
                   if(itemIds != '')
                   {
                     itemIds = itemIds + ',';
                   }
                   itemIds = itemIds + item.id;
                 }
                 return itemIds;
               }
               function handleReadyStateChange()
               {
                 if (client.readyState == 4)
                 {
                   if (client.status == 200)
                   {
                     // client.responseText is mailto string
                     window.location = ('mailto:' + client.responseText);
                   }
                 }
               }
               function invokeEmailContacts()
               {
                 var params = 'itemids=' + getItemIds();
                 // Posting to EmailContacts.ashx to get the mailto string
                 var site='{SiteUrl}';
                 var url = site + '/_layouts/emailcontacts.ashx?listId={ListId}';
                 client = null;
                 client = new XMLHttpRequest();
                 client.onreadystatechange =  handleReadyStateChange;
                 client.open('POST', url, true);
                 client.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
                 client.setRequestHeader('Content-length', params.length);
                 client.send(params);
               }
               invokeEmailContacts();"

          EnabledScript="javascript:
               function enableEmailContacts()
               {
                 var items = SP.ListOperation.Selection.getSelectedItems();
                 return (items.length > 0);
               }
               enableEmailContacts();"/>
          </CommandUIHandlers>
        </CommandUIExtension>
      </CustomAction>
    </Elements>