diff options
author | webchick <webchick@24967.no-reply.drupal.org> | 2012-03-08 14:18:26 -0800 |
---|---|---|
committer | webchick <webchick@24967.no-reply.drupal.org> | 2012-03-08 14:18:26 -0800 |
commit | 15144d1e3de02bb4b48749f9f06158d362960a69 (patch) | |
tree | 08292845dc174b7eb2874b205dc50c0c46c0ccd3 /modules/overlay | |
parent | a676b090506f8b5580808d8a6b08c3796488112d (diff) | |
download | brdo-15144d1e3de02bb4b48749f9f06158d362960a69.tar.gz brdo-15144d1e3de02bb4b48749f9f06158d362960a69.tar.bz2 |
Issue #1431076 by c960657, nod_, purencool, Nor4a: Fixed Overlay does not work with prefixed URL paths .
Diffstat (limited to 'modules/overlay')
-rw-r--r-- | modules/overlay/overlay-parent.js | 11 | ||||
-rw-r--r-- | modules/overlay/overlay.module | 14 |
2 files changed, 22 insertions, 3 deletions
diff --git a/modules/overlay/overlay-parent.js b/modules/overlay/overlay-parent.js index 3519e84f6..71cf3885c 100644 --- a/modules/overlay/overlay-parent.js +++ b/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/modules/overlay/overlay.module b/modules/overlay/overlay.module index 7609033a7..7b2b2f3cf 100644 --- a/modules/overlay/overlay.module +++ b/modules/overlay/overlay.module @@ -641,6 +641,20 @@ function overlay_overlay_parent_initialize() { $type = str_replace('<front>', variable_get('site_frontpage', 'node'), $type); } drupal_add_js(array('overlay' => array('paths' => $paths)), 'setting'); + $path_prefixes = array(); + if (module_exists('locale') && variable_get('locale_language_negotiation_url_part', LOCALE_LANGUAGE_NEGOTIATION_URL_PREFIX) == LOCALE_LANGUAGE_NEGOTIATION_URL_PREFIX) { + // Get languages grouped by status and select only the enabled ones. + $languages = language_list('enabled'); + $languages = $languages[1]; + + $path_prefixes = array(); + foreach ($languages as $language) { + if ($language->prefix) { + $path_prefixes[] = $language->prefix; + } + } + } + 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'); } |