From e9aa642289e05a74f292c57fb283b4a430ebf076 Mon Sep 17 00:00:00 2001 From: webchick <webchick@24967.no-reply.drupal.org> Date: Wed, 7 Mar 2012 10:40:48 -0800 Subject: [PATCH] Issue #1431076 by c960657, nod_, purencool, Nor4a: Fixed Overlay does not work with prefixed URL paths . --- core/modules/overlay/overlay-parent.js | 11 ++++++++--- core/modules/overlay/overlay.module | 7 +++++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/core/modules/overlay/overlay-parent.js b/core/modules/overlay/overlay-parent.js index dd7b7aeb3de8..fe44502bb1df 100644 --- a/core/modules/overlay/overlay-parent.js +++ b/core/modules/overlay/overlay-parent.js @@ -354,9 +354,14 @@ Drupal.overlay.isAdminLink = function (url) { // Turn the list of administrative paths into a regular expression. if (!this.adminPathRegExp) { - var regExpPrefix = '' + Drupal.settings.pathPrefix + '('; - var adminPaths = regExpPrefix + Drupal.settings.overlay.paths.admin.replace(/\s+/g, ')$|' + regExpPrefix) + ')$'; - var nonAdminPaths = regExpPrefix + Drupal.settings.overlay.paths.non_admin.replace(/\s+/g, ')$|'+ regExpPrefix) + ')$'; + var prefix = ''; + if (Drupal.settings.overlay.pathPrefixes.length) { + // Allow path prefixes used for language negatiation followed by slash, + // and the empty string. + prefix = '(' + Drupal.settings.overlay.pathPrefixes.join('/|') + '/|)'; + } + var adminPaths = '^' + prefix + '(' + Drupal.settings.overlay.paths.admin.replace(/\s+/g, '|') + ')$'; + var nonAdminPaths = '^' + prefix + '(' + Drupal.settings.overlay.paths.non_admin.replace(/\s+/g, '|') + ')$'; adminPaths = adminPaths.replace(/\*/g, '.*'); nonAdminPaths = nonAdminPaths.replace(/\*/g, '.*'); this.adminPathRegExp = new RegExp(adminPaths); diff --git a/core/modules/overlay/overlay.module b/core/modules/overlay/overlay.module index 8f62c017a73f..a9813af4db30 100644 --- a/core/modules/overlay/overlay.module +++ b/core/modules/overlay/overlay.module @@ -638,6 +638,13 @@ function overlay_overlay_parent_initialize() { $type = str_replace('<front>', variable_get('site_frontpage', 'user'), $type); } drupal_add_js(array('overlay' => array('paths' => $paths)), 'setting'); + $path_prefixes = array(); + if (module_exists('locale') && variable_get('locale_language_negotiation_url_part', LANGUAGE_NEGOTIATION_URL_PREFIX) == LANGUAGE_NEGOTIATION_URL_PREFIX) { + // Skip the empty string indicating the default language. We always accept + // paths without a prefix. + $path_prefixes = array_values(array_filter(locale_language_negotiation_url_prefixes())); + } + drupal_add_js(array('overlay' => array('pathPrefixes' => $path_prefixes)), 'setting'); // Pass along the Ajax callback for rerendering sections of the parent window. drupal_add_js(array('overlay' => array('ajaxCallback' => 'overlay-ajax')), 'setting'); } -- GitLab