You are here

function rules_admin_form_add_action in Rules 6

Returns the form for the first action add page

File

rules_admin/rules_admin.rule_forms.inc, line 282

Code

function rules_admin_form_add_action(&$form_state, &$element) {
  $vars = $form_state['proxy']
    ->get_available_variables();
  $all_actions = rules_get_actions();
  $satisfied_actions = rules_admin_filter_info($vars, $all_actions);
  $unsatisfied_actions = array_filter(array_diff_assoc($all_actions, $satisfied_actions), 'rules_admin_element_filter');
  $form['name'] = array(
    '#type' => 'select',
    '#title' => t('Select an action to add'),
    '#options' => rules_admin_get_grouped_labels($satisfied_actions),
    '#required' => TRUE,
  );
  if (!empty($unsatisfied_actions)) {

    // Hold all the actions that are disabled because argument(s) are missing.
    $form['unsatisfied'] = array(
      '#type' => 'fieldset',
      '#title' => format_plural(count($unsatisfied_actions), '1 action is not configurable', '@count actions are not configurable'),
      '#description' => t("The following actions aren't available in this context because they require arguments that don't exist in your rule. If you want to use any of these actions, you must first add some action that adds variables of this kind, or have an event that passes the required variables."),
      '#collapsible' => TRUE,
      '#collapsed' => TRUE,
    );
    $form['unsatisfied']['items'] = array(
      '#type' => 'item',
      '#unsatisfied_grouped_options' => $unsatisfied_actions,
      '#theme' => 'rules_admin_unsatisfied_elements',
    );
  }
  $form['submit'] = array(
    '#type' => 'submit',
    '#weight' => 10,
    '#value' => t('Next'),
    '#submit' => array(
      'rules_admin_form_add_submit',
    ),
  );
  return $form;
}