You are here

function rules_admin_new_variables_form in Rules 6

Returns form elements for new variables

1 call to rules_admin_new_variables_form()
rules_admin_form_edit_action in rules_admin/rules_admin.rule_forms.inc
Returns the edit form for an action

File

rules_admin/rules_admin.rule_forms.inc, line 692

Code

function rules_admin_new_variables_form(&$form, &$form_state, $element) {
  $info = rules_get_element_info($element);
  if (isset($info['new variables']) && count($info['new variables'])) {
    $form['new'] = array(
      '#tree' => TRUE,
    );
    foreach ($info['new variables'] as $name => $var) {
      $form['new'][$name] = array(
        '#type' => 'fieldset',
        '#title' => t('Variable @label settings', array(
          '@label' => $var['label'],
        )),
        '#collapsible' => TRUE,
      );

      // Make sure the variable label is in lower case.
      $var['label'] = drupal_strtolower(drupal_substr($var['label'], 0, 1)) . drupal_substr($var['label'], 1);
      $form['new'][$name]['label'] = array(
        '#type' => 'textfield',
        '#title' => t('Label'),
        '#default_value' => $var['label'],
        '#required' => TRUE,
      );
      $form['new'][$name]['name'] = array(
        '#type' => 'textfield',
        '#title' => t('Machine readable variable name'),
        '#description' => t('Specify a unique name containing only alphanumeric characters, and underscores.'),
        '#default_value' => $name,
        '#required' => TRUE,
      );

      // Preserve its old argument map value or initialize the map
      $element['#settings'] += array(
        '#argument map' => array(),
      );
      $default_name = array_search($name, $element['#settings']['#argument map']);
      $default_name = $default_name === FALSE ? $name : $default_name;
      $form['map'][$default_name] = array(
        '#type' => 'value',
        '#value' => $name,
      );
    }
    $form['submit']['#validate'][] = 'rules_admin_new_variables_form_validate';
  }
}