diff --git a/admin_menu.inc b/admin_menu.inc index 825b27a..8dfe9a9 100644 --- a/admin_menu.inc +++ b/admin_menu.inc @@ -58,6 +58,8 @@ function admin_menu_links_menu($tree) { */ function admin_menu_links_icon() { $destination = drupal_get_destination(); + $destination = explode('=', $destination); + $destination = array($destination[0] => urldecode($destination[1])); $links = array( '#theme' => 'admin_menu_links', @@ -341,7 +343,7 @@ function _admin_menu_form_devel_admin_settings_alter(&$form, $form_state) { * This can save up to 150ms on each uncached page request. */ function admin_menu_toggle_modules() { - if (!isset($_GET['token']) || !drupal_valid_token($_GET['token'], current_path())) { + if (!isset($_GET['token']) || !drupal_valid_token($_GET['token'], $_GET['q'])) { return MENU_ACCESS_DENIED; } @@ -424,7 +426,7 @@ function _admin_menu_developer_modules() { * (optional) Name of cache to flush. */ function admin_menu_flush_cache($name = NULL) { - if (!isset($_GET['token']) || !drupal_valid_token($_GET['token'], current_path())) { + if (!isset($_GET['token']) || !drupal_valid_token($_GET['token'], $_GET['q'])) { return MENU_ACCESS_DENIED; } diff --git a/admin_menu.module b/admin_menu.module index 1f75626..9ac6466 100644 --- a/admin_menu.module +++ b/admin_menu.module @@ -578,10 +578,12 @@ function admin_menu_output() { * Current recursion level; internal use only. */ function theme_admin_menu_links($elements, $depth = 0) { - static $destination; + static $destination, $destination_array; if (!isset($destination)) { $destination = drupal_get_destination(); + $destination_array = explode('=', $destination); + $destination_array = array($destination_array[0] => urldecode($destination_array[1])); } $output = ''; @@ -623,7 +625,7 @@ function theme_admin_menu_links($elements, $depth = 0) { // for our JavaScript behavior instead. $class = FALSE; if (!empty($elements[$path]['#options']['query'])) { - if (is_array($elements[$path]['#options']['query']) && isset($elements[$path]['#options']['query']['destination']) && $elements[$path]['#options']['query']['destination'] == $destination) { + if (is_array($elements[$path]['#options']['query']) && isset($elements[$path]['#options']['query']['destination']) && $elements[$path]['#options']['query']['destination'] == $destination_array['destination']) { unset($elements[$path]['#options']['query']['destination']); $class = TRUE; }