[ Index ]

PHP Cross Reference of Drupal 6 (yi-drupal)

title

Body

[close]

/sites/all/modules/ctools/includes/ -> jump-menu.inc (source)

   1  <?php
   2  // $Id: jump-menu.inc,v 1.1.2.3 2009/10/28 02:05:59 merlinofchaos Exp $
   3  
   4  /**
   5   * @file
   6   * Provides a simple "jump menu".
   7   *
   8   * A jump menu is a select box and an optional 'go' button which can be removed
   9   * if javascript is in use. Each item is keyed to the href that the button
  10   * should go to. With javascript, the page is immediately redirected. Without
  11   * javascript, the form is submitted and a drupal_goto() is given.
  12   *
  13   */
  14  
  15  /**
  16   * Generate a jump menu form.
  17   *
  18   * This can either be used with drupal_get_form() or directly added to a
  19   * form. The button provides its own submit handler so by default, other
  20   * submit handlers will not be called.
  21   *
  22   * One note: Do not use #tree = TRUE or it will be unable to find the
  23   * proper value.
  24   *
  25   * @code
  26   * ctools_include('jump-menu');
  27   * $output = drupal_get_form('ctools_jump_menu', $targets, $options);
  28   * @endcode
  29   *
  30   * @param $select
  31   *   An array suitable for use as the #options. The keys will be the direct
  32   *   URLs that will be jumped to, so you absolutely must encode these using
  33   *   url() in order for them to work reliably.
  34   *
  35   * @param $options
  36   *   $options may be an array with the following options:
  37   *   - 'title': The text to display for the #title attribute.
  38   *   - 'description': The text to display for the #description attribute.
  39   *   - 'default_value': The text to display for the #default_value attribute.
  40   *   - 'hide': If TRUE the go button will be set to hide via javascript and
  41   *     will submit on change.
  42   *   - 'button': The text to display on the button.
  43   *   - 'image': If set, an image button will be used instead, and the image
  44   *     set to this.
  45   *   - 'inline': If set to TRUE (default) the display will be forced inline.
  46   */
  47  function ctools_jump_menu($form_state, $select, $options = array()) {
  48    $options += array(
  49      'button' => t('Go'),
  50      'choose' => t('- Choose -'),
  51      'inline' => TRUE,
  52      'hide' => TRUE,
  53    );
  54  
  55    ctools_add_js('jump-menu');
  56  
  57    if (!empty($options['choose'])) {
  58      $select = array('' => $options['choose']) + $select;
  59    }
  60  
  61    $form['jump'] = array(
  62      '#type' => 'select',
  63      '#options' => $select,
  64      '#attributes' => array(
  65        'class' => 'ctools-jump-menu-select',
  66      ),
  67    );
  68  
  69    if (!empty($options['title'])) {
  70      $form['jump']['#title'] = $options['title'];
  71    }
  72  
  73    if (!empty($options['description'])) {
  74      $form['jump']['#description'] = $options['description'];
  75    }
  76  
  77    if (!empty($options['default_value'])) {
  78      $form['jump']['#default_value'] = $options['default_value'];
  79    }
  80  
  81    if (isset($options['image'])) {
  82      $form['go'] = array(
  83        '#type' => 'image_button',
  84        '#src' => $options['image'],
  85        '#submit' => array('ctools_jump_menu_submit'),
  86        '#attributes' => array(
  87          'class' => 'ctools-jump-menu-button',
  88        ),
  89      );
  90    }
  91    else {
  92      $form['go'] = array(
  93        '#type' => 'submit',
  94        '#value' => $options['button'],
  95        '#attributes' => array(
  96          'class' => 'ctools-jump-menu-button',
  97        ),
  98      );
  99    }
 100  
 101    if ($options['inline']) {
 102      $form['jump']['#prefix'] = '<div class="container-inline">';
 103      $form['go']['#suffix'] = '</div>';
 104    }
 105  
 106    if ($options['hide']) {
 107      $form['jump']['#attributes']['class'] .= ' ctools-jump-menu-change';
 108      $form['go']['#attributes']['class'] .= ' ctools-jump-menu-hide';
 109    }
 110  
 111    return $form;
 112  }
 113  
 114  /**
 115   * Submit handler for the jump menu.
 116   *
 117   * This is normally only invoked upon submit without javascript enabled.
 118   */
 119  function ctools_jump_menu_submit($form, &$form_state) {
 120    $form_state['redirect'] = $form_state['values']['jump'];
 121  }


Generated: Mon Jul 9 18:01:44 2012 Cross-referenced by PHPXref 0.7