1 system.module system_jump_menu_submit($form, &$form_state)

Submit handler for the jump menu.

This is normally only invoked upon submit without javascript enabled.

File

core/modules/system/system.module, line 3426
Configuration system that lets administrators modify the workings of the site.

Code

function system_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 = backdrop_parse_url($redirect);
  $redirect['path'] = urldecode($redirect['path']);
  $form_state['redirect'] = array($redirect['path'], $redirect);
}