summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwebchick <webchick@24967.no-reply.drupal.org>2012-03-08 14:18:26 -0800
committerwebchick <webchick@24967.no-reply.drupal.org>2012-03-08 14:18:26 -0800
commit15144d1e3de02bb4b48749f9f06158d362960a69 (patch)
tree08292845dc174b7eb2874b205dc50c0c46c0ccd3
parenta676b090506f8b5580808d8a6b08c3796488112d (diff)
downloadbrdo-15144d1e3de02bb4b48749f9f06158d362960a69.tar.gz
brdo-15144d1e3de02bb4b48749f9f06158d362960a69.tar.bz2
Issue #1431076 by c960657, nod_, purencool, Nor4a: Fixed Overlay does not work with prefixed URL paths .
-rw-r--r--modules/overlay/overlay-parent.js11
-rw-r--r--modules/overlay/overlay.module14
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');
}