Show/Hide Toolbars

Руководство администратора

Изменение параметров задачи по кнопке из портального блока

Ссылки Назад Вверх Вперед

Пример: в портальном блоке отображается список задач — мероприятий. Для каждой задачи есть кнопка "Записаться". По нажатию кнопки пользователь, нажавший на нее, добавляется в соответствующую задачу в ДП "Выбор пользователей".

1.Настроим портальный блок Smart Html со списком задач из категории. Кнопкам назначим общий класс btnapply и уникальные ID, равные номеру задачи.

{{#smart999}}
  <br>{{description}} <button class="btnapply" id="{{taskID}}">Записаться</button>
{{/smart999}}

где 999 — ID смарт-выражения, отбирающего задачи в список.

2.Добавим на портал JS-вставку, которая назначает обработчик события для кнопок "Записаться". ID пользователя, нажавшего на кнопку, получаем с помощью функции getSessionUserInfo().

const info = getSessionUserInfo();
 
(window.firstForma.portal.block(111)).onLoaded(function () {

  function apply(taskid) {
    var surl = '/app/v1.2/api/publications/action/apply?taskid='+ taskid + '&userid=' + info.responseJSON.data.userId;
    return new Promise(resolve => {
        let xhr = new XMLHttpRequest();
        xhr.open('GET', surl, true);
        xhr.send();
           alert('Вы записаны')
     });
  }

  var arr = document.getElementsByClassName('btnapply');
    for (var i = 0; i < arr.length; i++) {
      document.getElementById(arr[i].id).addEventListener('click', function(taskid) {
          apply(this.id);    
      });
    }  
});

где 111 — ID портального блока, apply — alias публикации, которую мы создадим дальше, а btnapply — класс, который назначен кнопке

3.Настроим публикацию пакета действий, которая будет добавлять ID текущего пользователя в ДП "Выбор пользователей" в соответствующей задаче. Не забудьте настроить доступ к публикации.

В публикацию должны передаваться два параметра — ID задачи и ID пользователя.

Кликните мышью для просмотра изображения в полном размере

Публикация.

 

Пакет действий должен включать смарт-действие "Изменить значение ДП", а также обязательное для публикации смарт-действие "HTTP-ответ".

publication-apply-2

Пакет действий.

В смарт-действии "Изменить значение ДП" в ДП "Выбор пользователей" добавляется ID пользователя, нажавшего на кнопку.

publication-apply-3

Смарт-действие "Изменить значение ДП".

Смарт-выражения сохраняются в формате TSQL:

Смарт-выражение для номера задачи использует параметр публикации taskid:

select JSON_VALUE ( @eventParam0, '$.queryString.taskid')

 

Смарт-выражение для значения ДП использует параметр публикации userid (формат смарт-выражения для ДП "Выбор пользователей" можно посмотреть здесь):

select '{"Users":{"Added":[' + JSON_VALUE ( @eventParam0, '$.queryString.userid') + ']}}'

 

Смарт-действие "HTTP ответ" может возвращать любое значение, например:

publication-apply-4

Смарт-действие "HTTP ответ".

Полезные ссылки