You are here

function entityqueue_export_ui_form in Entityqueue 7

Form to edit the settings of a queue.

1 string reference to 'entityqueue_export_ui_form'
entityqueue_entityqueue_export_ui_ctools_export_ui in plugins/ctools/export_ui/entityqueue_export_ui.inc
Implements HOOK_PLUGIN_ctools_export_ui().

File

plugins/ctools/export_ui/entityqueue_export_ui.inc, line 112
Plugin definition for CTools Export UI integration.

Code

function entityqueue_export_ui_form(&$form, &$form_state) {
  global $user;
  if (!user_access('administer entityqueue', $user)) {
    drupal_access_denied();
    drupal_exit();
  }
  _entityqueue_set_breadcrumb();
  ctools_include('plugins');
  $queue =& $form_state['item'];

  // We definitely need a queue label :)
  $form['info']['label']['#required'] = TRUE;
  $handlers = array();
  foreach (ctools_get_plugins('entityqueue', 'handler') as $name => $plugin) {
    $handlers[$name] = $plugin['title'];
  }
  $form['handler'] = array(
    '#title' => t('Handler'),
    '#type' => 'select',
    '#options' => $handlers,
    '#default_value' => !$queue->is_new ? $queue->handler : 'simple',
    '#required' => TRUE,
    '#disabled' => $queue->is_new ? FALSE : TRUE,
  );

  // Get valid target entity types.
  $entity_info = entity_get_info();
  unset($entity_info['entityqueue_subqueue']);
  $entity_types = array();
  foreach ($entity_info as $entity_type => $info) {
    $entity_types[$entity_type] = $info['label'];
  }
  $form['target_type'] = array(
    '#title' => t('Entity type'),
    '#type' => 'select',
    '#options' => $entity_types,
    '#default_value' => $queue->target_type,
    '#required' => TRUE,
    '#disabled' => $queue->is_new ? FALSE : TRUE,
    '#ajax' => array(
      'callback' => 'entityqueue_export_ui_target_type_callback',
      'wrapper' => 'entityqueue-target-bundles',
    ),
  );
  $form['settings'] = array(
    '#type' => 'vertical_tabs',
    '#tree' => TRUE,
  );
  $target_type = !empty($form_state['values']['target_type']) ? $form_state['values']['target_type'] : $queue->target_type;
  $bundles = array();
  foreach ($entity_info[$target_type]['bundles'] as $bundle_name => $bundle_info) {
    $bundles[$bundle_name] = $bundle_info['label'];
  }
  $form['settings']['entityreference_field'] = array(
    '#type' => 'fieldset',
    '#title' => t('Entity reference field settings'),
    '#collapsible' => TRUE,
  );
  $form['settings']['entityreference_field']['target_bundles'] = array(
    '#type' => 'checkboxes',
    '#title' => $target_type == 'node' ? t('Content types') : t('Bundles'),
    '#prefix' => '<div id="entityqueue-target-bundles">',
    '#suffix' => '</div>',
    '#options' => $bundles,
    '#default_value' => !empty($queue->settings['target_bundles']) ? $queue->settings['target_bundles'] : array(),
    '#multiple' => TRUE,
    '#description' => t('The bundles of the entity type that can be referenced. Optional, leave empty for all bundles.'),
  );
  $form['settings']['properties'] = array(
    '#type' => 'fieldset',
    '#title' => t('Queue properties'),
    '#collapsible' => TRUE,
  );
  $form['settings']['properties']['size'] = array(
    '#type' => 'item',
    '#attributes' => array(
      'class' => array(
        'container-inline',
      ),
    ),
    '#title' => t('Queue limits'),
  );
  $form['settings']['properties']['size']['min_size'] = array(
    '#type' => 'textfield',
    '#size' => 3,
    '#attributes' => array(
      'style' => 'width: auto;',
    ),
    '#default_value' => isset($queue->settings['min_size']) ? $queue->settings['min_size'] : 0,
    '#field_prefix' => t('Restrict this queue to a minimum of'),
    '#field_suffix' => t('items'),
    '#parents' => array(
      'settings',
      'properties',
      'min_size',
    ),
  );
  $form['settings']['properties']['size']['max_size'] = array(
    '#type' => 'textfield',
    '#size' => 3,
    '#attributes' => array(
      'style' => 'width: auto;',
    ),
    '#default_value' => isset($queue->settings['max_size']) ? $queue->settings['max_size'] : 0,
    '#field_prefix' => t('and a maximum of'),
    '#field_suffix' => t('items.'),
    '#parents' => array(
      'settings',
      'properties',
      'max_size',
    ),
  );
  $form['settings']['properties']['act_as_queue'] = array(
    '#type' => 'checkbox',
    '#title' => t('Remove items exceeding maximum limit'),
    '#default_value' => isset($queue->settings['act_as_queue']) ? $queue->settings['act_as_queue'] : 0,
    '#return_value' => 1,
    '#description' => t('When enabled, adding more than the maximum number of items will remove extra items from the queue.'),
    '#states' => array(
      'invisible' => array(
        ':input[name="settings[properties][max_size]"]' => array(
          'value' => 0,
        ),
      ),
    ),
  );
}