| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 | 
							- <?php
 
- /**
 
-  * @file
 
-  * Provides a simple "jump menu".
 
-  *
 
-  * A jump menu is a select box and an optional 'go' button which can be removed
 
-  * if javascript is in use. Each item is keyed to the href that the button
 
-  * should go to. With javascript, the page is immediately redirected. Without
 
-  * javascript, the form is submitted and a drupal_goto() is given.
 
-  *
 
-  */
 
- /**
 
-  * 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.
 
-  *
 
-  * @code
 
-  * ctools_include('jump-menu');
 
-  * $output = drupal_get_form('ctools_jump_menu', $targets, $options);
 
-  * @endcode
 
-  *
 
-  * @param $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.
 
-  *
 
-  * @param $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.
 
-  */
 
- 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;
 
- }
 
- /**
 
-  * Submit handler for the jump menu.
 
-  *
 
-  * This is normally only invoked upon submit without javascript enabled.
 
-  */
 
- function ctools_jump_menu_submit($form, &$form_state) {
 
-   if ($form_state['values']['jump'] === '') {
 
-     // We have nothing to do when the user has not selected any value.
 
-     return;
 
-   }
 
-   // If the path we are redirecting to contains the string :: then treat the
 
-   // the string after the double colon as the path to redirect to.
 
-   // This allows duplicate paths to be used in jump menus for multiple options.
 
-   $redirect_array = explode("::", $form_state['values']['jump']);
 
-   if(isset($redirect_array[1]) && !empty($redirect_array[1])){
 
-     $redirect = $redirect_array[1];
 
-   }
 
-   else {
 
-     $redirect = $form_state['values']['jump'];
 
-   }
 
-   // If the path we are redirecting to starts with the base path (for example,
 
-   // "/somepath/node/1"), we need to strip the base path off before passing it
 
-   // to $form_state['redirect'].
 
-   $base_path = base_path();
 
-   if (strpos($redirect, $base_path) === 0) {
 
-     $redirect = substr($redirect, strlen($base_path));
 
-   }
 
-   // Parse the URL so that query strings and fragments are preserved in the
 
-   // redirect.
 
-   $redirect = drupal_parse_url($redirect);
 
-   $redirect['path'] = urldecode($redirect['path']);
 
-   $form_state['redirect'] = array($redirect['path'], $redirect);
 
- }
 
 
  |