function ctools_jump_menu

Generate a jump menu form.

This can either be used with drupal_get_form() or directly added to a form. The button provides its own submit handler so by default, other submit handlers will not be called.

One note: Do not use #tree = TRUE or it will be unable to find the proper value.

ctools_include('jump-menu');
$output = drupal_get_form('ctools_jump_menu', $targets, $options);

Parameters

$select: An array suitable for use as the #options. The keys will be the direct URLs that will be jumped to, so you absolutely must encode these using url() in order for them to work reliably.

$options: $options may be an array with the following options:

  • 'title': The text to display for the #title attribute.
  • 'description': The text to display for the #description attribute.
  • 'default_value': The text to display for the #default_value attribute.
  • 'hide': If TRUE the go button will be set to hide via javascript and will submit on change.
  • 'button': The text to display on the button.
  • 'image': If set, an image button will be used instead, and the image set to this.
  • 'inline': If set to TRUE (default) the display will be forced inline.
1 call to ctools_jump_menu()
ctools_ajax_sample_jump_menu_form in ctools_ajax_sample/ctools_ajax_sample.module
Helper function to provide a sample jump menu form.

File

includes/jump-menu.inc, line 45

Code

function ctools_jump_menu($form, &$form_state, $select, $options = array()) {
    $options += array(
        'button' => t('Go'),
        'choose' => t('- Choose -'),
        'inline' => TRUE,
        'hide' => TRUE,
    );
    $form['#attached']['js'][] = ctools_attach_js('jump-menu');
    if (!empty($options['choose'])) {
        $select = array(
            '' => $options['choose'],
        ) + $select;
    }
    $form['jump'] = array(
        '#type' => 'select',
        '#options' => $select,
        '#attributes' => array(
            'class' => array(
                'ctools-jump-menu-select',
            ),
        ),
    );
    if (!empty($options['title'])) {
        $form['jump']['#title'] = $options['title'];
    }
    if (!empty($options['description'])) {
        $form['jump']['#description'] = $options['description'];
    }
    if (!empty($options['default_value'])) {
        $form['jump']['#default_value'] = $options['default_value'];
    }
    if (isset($options['image'])) {
        $form['go'] = array(
            '#type' => 'image_button',
            '#src' => $options['image'],
            '#submit' => array(
                'ctools_jump_menu_submit',
            ),
            '#attributes' => array(
                'class' => array(
                    'ctools-jump-menu-button',
                ),
            ),
        );
    }
    else {
        $form['go'] = array(
            '#type' => 'submit',
            '#value' => $options['button'],
            '#submit' => array(
                'ctools_jump_menu_submit',
            ),
            '#attributes' => array(
                'class' => array(
                    'ctools-jump-menu-button',
                ),
            ),
        );
    }
    if ($options['inline']) {
        $form['jump']['#prefix'] = '<div class="container-inline">';
        $form['go']['#suffix'] = '</div>';
    }
    if ($options['hide']) {
        $form['jump']['#attributes']['class'][] = 'ctools-jump-menu-change';
        $form['go']['#attributes']['class'][] = 'ctools-jump-menu-hide';
    }
    return $form;
}