Как исправить компонент "Мои правила" для выполнения операций VBO для модуля "Группа"?


Я следовал инструкциям, включенным в ответ на вопрос " Как реализовать массовые операции на странице участников Группы с использованием представлений?". 2 Компонента правил в нем (для блокировки или разблокировки участника) работают нормально (и в моем представлении VBO показаны массовые операции, в которых используются эти 2 компонента правил).

Теперь я хочу создать аналогичный компонент правил для одной из других типичных операций массового обновления (как используется в контексте Группа модуль).

Ниже приведены компоненты правил (в формате экспорта правил) Я создал для этого до сих пор, чтобы "Удалить выбранных участников":

{ "rules_remove_a_group_membership" : {
    "LABEL" : "Remove a group membership",
    "PLUGIN" : "rule",
    "OWNER" : "rules",
    "USES VARIABLES" : { "group_mbrship" : { "label" : "Group membership", "type" : "group_membership" } },
    "DO" : []
  }
}

Этот компонент правил должен реализовывать эквивалент опции обновления " Удалить выбранных участников" ( как показано на group/gid/member, с gid= идентификатор группы).

Мой вопрос:

Что-то кажется неправильным в компоненте правил, показанном выше, так как я не могу заставить его выполнить эквивалент обновления опция модуля группы (с использованием VBO, аналогичная ответу на вопрос, который я упомянул выше).

Итак, как исправить этот компонент правил для выполнения эквивалентной операции с использованием пользовательского действия VBO, созданного с использованием компонента Правил, чтобы с добавлением этого компонента моя пользовательская страница VBO должна быть эквивалентна странице по умолчанию модуля Группы?

Author: Community, 2016-11-17

1 answers

Часть 1. Создание компонента правил

Взгляните на этот компонент Правил (в формате экспорта Правил):

{ "rules_remove_selected_group_members" : {
    "LABEL" : "Remove selected group members",
    "PLUGIN" : "rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules" ],
    "USES VARIABLES" : { "group_mbrship" : { "label" : "Group membership", "type" : "group_membership" } },
    "DO" : [ { "entity_delete" : { "data" : [ "group-mbrship" ] } } ]
  }
}

Некоторые дополнительные детали для дальнейшего объяснения вышеуказанного компонента правил:

  • Он использует "членство в группе" (которое является сущностью, помните!) в качестве параметра.
  • Все, что он делает, это выполняет действие "Удалить сущность " для сущности, указанной в качестве параметра.

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

Если хотите, просто скопируйте компонент экспортированных правил выше и импортируйте его в свою собственную среду. Затем перейдите к admin/config/workflow/rules/components на своем собственном сайте и используйте гиперссылку "выполнить", чтобы проверить его на своем собственном сайте. После того, как вы воспользуетесь этой ссылкой, нажмите кнопку с надписью Переключиться в режим прямого ввода. Тогда вы сможете ввести некоторые Группа идентификатор членства и ударил по Выполнить кнопка. Членство в группе для указанного вами идентификатора будет удалено.

Наконечник: ( временно) улучшите представление о членстве в группе, чтобы также включить поле "Идентификатор участника группы" (=mid). Это позволяет легко узнать, какой идентификатор использовать при тестировании этого компонента правил.

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

Часть 2. Расширьте представление VBO

Типичным следующим шагом при создании пользовательских настроек VBO является редактирование поля VBO в вашем представлении и включение дополнительной операции VBO, соответствующей компоненту Правил, как в части 1.

В моем случае, в представлении VBO, которое я использую, я столкнулся с некоторой ошибкой AJAX, которую не смог сразу устранить. Я был почти уверен, что это НЕ ошибка, а скорее что-то, что я делаю неправильно. Перейдите к части 4, чтобы узнать больше подробнее об этом.

Однако, продолжая исследовать эту ошибку, я понял, что нет никакой необходимости в компоненте правил для реализации этого действия VBO "Удалить выбранных участников". Перейдите к части 3 для получения более подробной информации об этом (иногда решение проблемы заключается в том, чтобы предотвратить возникновение проблемы...).

Часть 3. Включение стандартного действия VBO

Вернитесь к своему полю VBO в вашем представлении и включите "Удалить элемент" (в пределах Выбранного объема Операции). Я предлагаю использовать для этого опцию "Переопределить метку" и присвоить этому действию VBO метку типа "Удалить выбранных участников".

QA-протестируйте это действие VBO, чтобы убедиться, что оно делает то же самое, что и:

  • чего вы пытаетесь достичь с помощью компонента пользовательских правил в пуле 1 вашего вопроса.
  • чего я пытаюсь достичь с помощью моего компонента правил в части 1 этого ответа.

Часть 4: Путь к золотой колыбели (= Решить задачу AJAX ошибка)

Ошибка AJAX, как в части 2, устраняется с помощью этого варианта компонента Правил из части 1:

{ "rules_remove_selected_group_members" : {
    "LABEL" : "Remove selected group members",
    "PLUGIN" : "rule",
    "OWNER" : "rules",
    "REQUIRES" : [ "rules" ],
    "ACCESS_EXPOSED" : "1",
    "USES VARIABLES" : { "group_mbrship" : { "label" : "Group membership", "type" : "group_membership" } },
    "DO" : [
      { "entity_delete" : { "data" : [ "group-mbrship" ] } },
      { "drupal_message" : { "message" : "Membership of group [group-mbrship:group:title] removed for user [group-mbrship:user]." } }
    ]
  }
}

Обратите внимание на "ACCESS_EXPOSED" : "1", добавленное здесь сейчас (кроме дополнительного действия "drupal_message", которое не имеет ничего общего с ошибкой AJAX). Это, оказывается, и есть подсказка чтобы устранить ошибку AJAX. Для (способа) получения более подробной информации об этом см. Комментарий № 13 в выпуске поддержки # 2530000. Мое понимание этого комментария заключается в том, что что-то в Сущности API или правила - это то, что вызывает ошибку AJAX, и с помощью этого параметра доступа вы предотвращаете проблему.

Таким образом, теперь у вас есть 2 решения/ответа для решения вашего вопроса... т. Е. для Удалить выбранных участников. Я предпочитаю использовать компонент Правил из части 4, потому что:

  • Сообщения, которые вы получаете после его выполнения, более подробные по сравнению с частью 3.
  • При желании вы можете добавить любое дополнительное действие или условие правил в Компонент правил.

Вуаля!

 0
Author: Pierre.Vriens, 2016-11-21 07:27:18