diff --git a/popups.info b/popups.info
index 40c433e..5cefc2a 100644
--- a/popups.info
+++ b/popups.info
@@ -1,5 +1,4 @@
name = Popups API
description = General dialog creation utilities
package = User interface
-core = 6.x
-
+core = 7.x
diff --git a/popups.install b/popups.install
index 3160b71..00b7b35 100644
--- a/popups.install
+++ b/popups.install
@@ -10,5 +10,5 @@
* Ensures popups runs after everything else, since it short circuits in hook_init.
*/
function popups_install() {
- db_query("UPDATE {system} SET weight = %d WHERE name = 'popups'", 9999);
+ db_update('system')->fields(array('weight' => 9999))->condition('name', 'popups')->execute();
}
\ No newline at end of file
diff --git a/popups.js b/popups.js
index 57be2ab..bb4503c 100644
--- a/popups.js
+++ b/popups.js
@@ -1,4 +1,4 @@
-
+(function ($) {
/**
* Popup Modal Dialog API
*
@@ -521,7 +521,6 @@ Popups.addOverlay = function() {
// Doing absolute positioning, so make overlay's size equal the entire body.
var $doc = $(document);
$overlay.width($doc.width()).height($doc.height());
- $overlay.click(function(){Popups.close();});
$('body').prepend($overlay);
}
};
@@ -824,8 +823,12 @@ Popups.openPath = function(element, options, parent) {
// Broadcast an event that the path was opened.
$(document).trigger('popups_open_path_done', [element, href, popup]);
},
- complete: function() {
- $('body').css("cursor", "auto"); // Return the cursor to normal state.
+ complete: function (response, status) {
+ $('body').css("cursor", "auto"); // Return the cursor to normal state.
+ if (status == 'error' || status == 'parsererror') {
+ return ajax.error(response, ajax.url);
+ }
+
}
};
@@ -1079,49 +1082,51 @@ Popups.testContentSelector = function() {
* The jQuery object to apply the behaviors to.
*/
-Drupal.behaviors.popups = function(context) {
- Popups.saveSettings();
-
- var $body = $('body'),
- $popit;
-
- if (!$body.hasClass('popups-processed')) {
- $body.addClass('popups-processed');
- $(document).bind('keydown', Popups.keyHandle);
- $popit = $('#popit');
- if ($popit.length) {
- $popit.remove();
- Popups.message($popit.html());
- }
-
- // Make note of all the CSS and JS on the page so when we load a popup we
- // don't try to add them a second time.
- $('link[rel="stylesheet"][href]').each(function(i, v) {
- Popups.originalCSS[$(this).attr('href').replace(/^(\/.+)\?\w$/, '$1')] = 1;
- });
- if (Drupal.settings.popups && Drupal.settings.popups.originalCSS) {
- $.extend(Popups.originalCSS, Drupal.settings.popups.originalCSS);
- }
- $('script[src]').each(function(i, v) {
- Popups.originalJS[$(this).attr('src').replace(/^(\/.+)\?\w$/, '$1')] = 1;
- });
- if (Drupal.settings.popups && Drupal.settings.popups.originalJS) {
- $.extend(Popups.originalJS, Drupal.settings.popups.originalJS);
- }
- }
-
- // Add the popups-link-in-dialog behavior to links defined in Drupal.settings.popups.links array.
- // Get these from current Drupal.settings, not Popups.originalSettings, as each page has it's own hooks.
- if (Drupal.settings.popups && Drupal.settings.popups.links) {
- $.each(Drupal.settings.popups.links, function (link, options) {
- Popups.attach(context, link, Popups.options(options));
- });
- }
-
- Popups.attach(context, '.popups', Popups.options({updateMethod: 'none'}));
- Popups.attach(context, '.popups-form', Popups.options({updateMethod: 'ajax'})); // ajax reload.
- Popups.attach(context, '.popups-form-reload', Popups.options({updateMethod: 'reload'})); // whole page reload.
- Popups.attach(context, '.popups-form-noupdate', Popups.options({updateMethod: 'none'})); // no reload at all.
+Drupal.behaviors.popups = {
+ attach: function (context, settings) {
+ Popups.saveSettings();
+
+ var $body = $('body'),
+ $popit;
+
+ if (!$body.hasClass('popups-processed')) {
+ $body.addClass('popups-processed');
+ $(document).bind('keydown', Popups.keyHandle);
+ $popit = $('#popit');
+ if ($popit.length) {
+ $popit.remove();
+ Popups.message($popit.html());
+ }
+
+ // Make note of all the CSS and JS on the page so when we load a popup we
+ // don't try to add them a second time.
+ $('link[rel="stylesheet"][href]').each(function(i, v) {
+ Popups.originalCSS[$(this).attr('href').replace(/^(\/.+)\?\w$/, '$1')] = 1;
+ });
+ if (Drupal.settings.popups && Drupal.settings.popups.originalCSS) {
+ $.extend(Popups.originalCSS, Drupal.settings.popups.originalCSS);
+ }
+ $('script[src]').each(function(i, v) {
+ Popups.originalJS[$(this).attr('src').replace(/^(\/.+)\?\w$/, '$1')] = 1;
+ });
+ if (Drupal.settings.popups && Drupal.settings.popups.originalJS) {
+ $.extend(Popups.originalJS, Drupal.settings.popups.originalJS);
+ }
+ }
+
+ // Add the popups-link-in-dialog behavior to links defined in Drupal.settings.popups.links array.
+ // Get these from current Drupal.settings, not Popups.originalSettings, as each page has it's own hooks.
+ if (Drupal.settings.popups && Drupal.settings.popups.links) {
+ $.each(Drupal.settings.popups.links, function (link, options) {
+ Popups.attach(context, link, Popups.options(options));
+ });
+ }
+
+ Popups.attach(context, '.popups', Popups.options({updateMethod: 'none'}));
+ Popups.attach(context, '.popups-form', Popups.options({updateMethod: 'ajax'})); // ajax reload.
+ Popups.attach(context, '.popups-form-reload', Popups.options({updateMethod: 'reload'})); // whole page reload.
+ Popups.attach(context, '.popups-form-noupdate', Popups.options({updateMethod: 'none'})); // no reload at all.
+ }
};
// ****************************************************************************
@@ -1173,3 +1178,4 @@ Drupal.theme.prototype.popupTemplate = function(popupId) {
};
/*jslint devel: true, onevar: false, browser: true, evil: true, undef: true, maxerr: 50, indent: 2 */
+})(jQuery);
\ No newline at end of file
diff --git a/popups.module b/popups.module
index a3211b3..637f27a 100644
--- a/popups.module
+++ b/popups.module
@@ -66,8 +66,10 @@ function popups_init() {
// Move the page_override flag back out of the session.
if (isset($_SESSION['page_override'])) {
// This call will not return on form submission.
- $content = menu_execute_active_handler();
-
+ $content = menu_execute_active_handler(NULL, FALSE);
+ if (is_array($content)) {
+ $content = drupal_render($content);
+ }
// The call did return, so it wasn't a form request,
// so we are returning a result, so clear the session flag.
$override = $_SESSION['page_override'];
@@ -99,7 +101,7 @@ function popups_form_alter(&$form, $form_state, $form_id) {
}
// Alter the theme configuration pages, to add a per-theme-content selector.
- $theme = arg(4);
+ $theme = arg(3);
if ($form_id == 'system_theme_settings' && $theme) {
$form['popups'] = array(
'#type' => 'fieldset',
@@ -133,10 +135,11 @@ function popups_form_alter(&$form, $form_state, $form_id) {
function popups_render_as_json($content) {
// Call theme_page so modules like jquery_update can do their thing. We don't
// really care about the mark up though.
- $ignore = theme('page', $content);
-
+//TODO: check we this line break the code
+// theme_html($variables);
+ //$ignore = theme('page', $content);
$path = $_GET['q']; // Get current path from params.
- return drupal_json(array(
+ return drupal_json_output(array(
'title' => drupal_get_title(),
'messages' => theme('status_messages'),
'path' => $path,
@@ -150,33 +153,28 @@ function popups_render_as_json($content) {
* Get the added JS in a format that is readable by popups.js.
*/
function popups_get_js() {
- $js = array_merge_recursive(drupal_add_js(), drupal_add_js(NULL, NULL, 'footer'));
+//TODO: check if we need the second drupal_add_js.
+ $js = array_merge_recursive(drupal_get_js(), drupal_get_js('footer'));
$query_string = '?'. substr(variable_get('css_js_query_string', '0'), 0, 1);
-
$popup_js = array();
-
- foreach ($js as $type => $data) {
+ foreach ($js as $path => $data) {
if (!$data) continue;
- switch ($type) {
+ switch ($data['type']) {
case 'setting':
// Why not just array_merge_recursive($data);
- $popup_js['setting'] = call_user_func_array('array_merge_recursive', $data);
+ $popup_js['setting'] = call_user_func_array('array_merge_recursive', $data['data']);
break;
case 'inline':
- foreach ($data as $info) {
- $popup_js['inline'][] = '\n";
- }
+ $popup_js['inline'][] = '\n";
break;
default:
- foreach ($data as $path => $info) {
- $popup_js[$type][$path] = '\n";
- }
+ $popup_js[$data['type']][$path] = '\n";
break;
}
}
- unset($popup_js['core']['misc/jquery.js']);
- unset($popup_js['core']['misc/drupal.js']);
+ unset($popup_js['file']['misc/jquery.js']);
+ unset($popup_js['file']['misc/drupal.js']);
if (module_exists('jquery_update')) {
foreach (jquery_update_get_replacements() as $type => $replacements) {
@@ -198,48 +196,53 @@ function popups_get_js() {
* Get the added CSSS in a format that is readable by popups.js.
*/
function popups_get_css() {
- $css = drupal_add_css();
+ $css = drupal_get_css();
$popup_css = array();
$query_string = '?'. substr(variable_get('css_js_query_string', '0'), 0, 1);
// Only process styles added to "all".
$media = 'all';
- foreach ($css[$media] as $type => $files) {
- if ($type == 'module') {
+ $theme_styles = array();
+ foreach ($css as $data) {
+ if ($data['media'] != $media) {
+ continue;
+ }
+ if ($data['group'] == CSS_THEME) {
// Setup theme overrides for module styles.
- $theme_styles = array();
- foreach (array_keys($css[$media]['theme']) as $theme_style) {
- $theme_styles[] = basename($theme_style);
- }
+ $theme_styles[] = basename($data['data']);
}
- foreach ($css[$media][$type] as $file => $preprocess) {
- // If the theme supplies its own style using the name of the module style, skip its inclusion.
- // This includes any RTL styles associated with its main LTR counterpart.
- if ($type == 'module' && in_array(str_replace('-rtl.css', '.css', basename($file)), $theme_styles)) {
- // Unset the file to prevent its inclusion when CSS aggregation is enabled.
- unset($css[$media][$type][$file]);
- continue;
- }
- // Only include the stylesheet if it exists.
- if (file_exists($file)) {
+ }
+ foreach ($css as $data) {
+ if ($data['media'] != $media) {
+ continue;
+ }
+ // If the theme supplies its own style using the name of the module style, skip its inclusion.
+ // This includes any RTL styles associated with its main LTR counterpart.
+ if ($data['group'] != CSS_THEME && in_array(str_replace('-rtl.css', '.css', basename($data['data'])), $theme_styles)) {
+ continue;
+ }
+ // Only include the stylesheet if it exists.
+ if (file_exists($file)) {
+ switch ($data['group']) {
// If a CSS file is not to be preprocessed and it's a module CSS file, it needs to *always* appear at the *top*,
// regardless of whether preprocessing is on or off.
- if ($type == 'module') {
- $popup_css['module'][$file] = ''."\n";
- }
+ case CSS_DEFAULT:
+ case CSS_SYSTEM:
+ $key = 'module';
+ break;
// If a CSS file is not to be preprocessed and it's a theme CSS file, it needs to *always* appear at the *bottom*,
// regardless of whether preprocessing is on or off.
- elseif ($type == 'theme') {
- $popup_css['theme'][$file] = ''."\n";
- }
- else {
- $popup_css['unknown'][$file] = ''."\n";
- }
+ case CSS_THEME:
+ $key = 'theme';
+ break;
+ default:
+ $key = 'unknown';
+ break;
}
+ $popup_css[$key][$data['data']] = ''."\n";
}
}
-
return $popup_css;
}
@@ -300,7 +303,7 @@ function popups_add_popups($rules=NULL) {
}
}
if ($added) {
- drupal_add_js( $settings, 'setting' );
+ drupal_add_js($settings, array('type' => 'setting'));
}
}
if (!$added) {
@@ -378,7 +381,7 @@ function popups_skins($reset = FALSE) {
function popups_popups_skins() {
$skins = array();
$skins_directory = drupal_get_path('module', 'popups') .'/skins';
- $files = file_scan_directory($skins_directory, '\.css$');
+ $files = file_scan_directory($skins_directory, '/\.css$/');
foreach ($files as $file) {
$name = drupal_ucfirst($file->name);
diff --git a/popups_test.info b/popups_test.info
index 602cd9d..f3adef4 100644
--- a/popups_test.info
+++ b/popups_test.info
@@ -1,6 +1,5 @@
name = Popups: Test Page
description = Test the Popups API.
package = User interface
-core = 6.x
+core = 7.x
dependencies[] = popups
-