Index: branches/RC/core/admin_templates/js/script.js =================================================================== diff -u -N -r11930 -r11931 --- branches/RC/core/admin_templates/js/script.js (.../script.js) (revision 11930) +++ branches/RC/core/admin_templates/js/script.js (.../script.js) (revision 11931) @@ -255,28 +255,28 @@ var $window_name = 'select_' + t.replace(/(\/|-)/g, '_'); var $options = { - onAfterShow: function () { - getFrame('main').initTranslatorOnAfterShow(prefix, field, t, multi_line, $before_callback); + onAfterShow: function ($popup_window) { + if ($modal_windows) { + getFrame('main').initTranslatorOnAfterShow(prefix, field, t, multi_line, $before_callback); + } + else { + initTranslatorOnAfterShow(prefix, field, t, multi_line, $before_callback, $popup_window); + } } }; openwin('', $window_name, 750, 400, $options); } -function initTranslatorOnAfterShow(prefix, field, t, multi_line, $before_callback) { - var $popup_window = $('#' + TB.getId('TB_iframeContent')).get(0).contentWindow; +function initTranslatorOnAfterShow(prefix, field, t, multi_line, $before_callback, $popup_window) { + var $window_name = 'select_' + t.replace(/(\/|-)/g, '_'); - if (!$.isFunction($popup_window.onLoad)) { + $popup_window = onAfterWindowOpen($window_name, undefined, $popup_window); + if ($popup_window === false) { // iframe onload happens on frame content change too -> don't react on it return ; } - var $window_name = 'select_' + t.replace(/(\/|-)/g, '_'); - - $popup_window.onLoad(); - $popup_window.name = $window_name; - TB.setWindowMetaData('window_name', $window_name); // used to simulate window.opener functionality - var $opener = getWindowOpener($popup_window); var $prev_opener = get_hidden_field('m_opener'); @@ -335,49 +335,70 @@ var $settings = { url: base_url + 'core/admin_templates/blank.html?width=' + $width + '&height=' + $height + '&TB_iframe=true&modal=true', caption: 'Loading ...', - onAfterShow: function () { - getFrame('main').onAfterWindowOpen($url, $name); + onAfterShow: function ($popup_window) { + if ($modal_windows) { + getFrame('main').onAfterWindowOpen($name, $url); + } + else { + onAfterWindowOpen($name, $url, $popup_window); + } } }; if ($options !== undefined) { $.extend($settings, $options); } - if (window.name != 'main') { - // all popups are opened based on main frame - return getFrame('main').TB.show($settings); - } + if ($modal_windows) { + if (window.name != 'main') { + // all popups are opened based on main frame + return getFrame('main').TB.show($settings); + } - TB.show($settings); + TB.show($settings); - return ; + return ; + } // prevent window from opening larger, then screen resolution on user's computer (to Kostja) + var left = Math.round((screen.width - $width) / 2); + var top = Math.round((screen.height - $height) / 2); + var cur_x = document.all ? window.screenLeft : window.screenX; + var cur_y = document.all ? window.screenTop : window.screenY; - var left = Math.round((screen.width - $width)/2); - var top = Math.round((screen.height - $height)/2); + var $window_params = 'left='+left+',top='+top+',width='+$width+',height='+$height+',status=yes,resizable=yes,menubar=no,scrollbars=yes,toolbar=no'; + var $popup_window = window.open($url, $name, $window_params); - cur_x = is.ie ? window.screenLeft : window.screenX; - cur_y = is.ie ? window.screenTop : window.screenY; + if ( $.isFunction($settings.onAfterShow) ) { + $settings.onAfterShow($popup_window); + } - var $window_params = 'left='+left+',top='+top+',width='+$width+',height='+$height+',status=yes,resizable=yes,menubar=no,scrollbars=yes,toolbar=no'; - return window.open($url,$name,$window_params); + return $popup_window; } -function onAfterWindowOpen($url, $window_name) { +function onAfterWindowOpen($window_name, $url, $popup_window) { // this is always invoked from "main" frame - var $popup_window = $('#' + TB.getId('TB_iframeContent')).get(0).contentWindow; - if (!$.isFunction($popup_window.onLoad)) { - // iframe onload happens on frame content change too -> don't react on it - return ; + if ($popup_window === undefined) { + var $popup_window = $('#' + TB.getId('TB_iframeContent')).get(0).contentWindow; + if (!$.isFunction($popup_window.onLoad)) { + // iframe onload happens on frame content change too -> don't react on it + return false; + } + + $popup_window.onLoad(); } - $popup_window.onLoad(); $popup_window.name = $window_name; - $popup_window.location.href = $url; - TB.setWindowMetaData('window_name', $window_name); // used to simulate window.opener functionality + if ($url !== undefined) { + $popup_window.location.href = $url; + } + + if ($modal_windows) { + TB.setWindowMetaData('window_name', $window_name); // used to simulate window.opener functionality + } + + return $popup_window; } function OnResizePopup(e) { @@ -427,32 +448,34 @@ var $window_name = $t.replace(/(\/|-)/g, '_'); // replace "/" and "-" with "_" var $options = { - onAfterShow: function () { - getFrame('main').onAfterOpenPopup($prefix_special, $event, $t); + onAfterShow: function ($popup_window) { + if ($modal_windows) { + getFrame('main').onAfterOpenPopup($prefix_special, $event, $t); + } + else { + onAfterOpenPopup($prefix_special, $event, $t, $popup_window); + } + if ($onAfterOpenPopup !== undefined && $.isFunction($onAfterOpenPopup)) { - $onAfterOpenPopup(); + $onAfterOpenPopup($popup_window); } } }; openwin('', $window_name, $window_size[0], $window_size[1], $options); } -function onAfterOpenPopup($prefix_special, $event, $t) { +function onAfterOpenPopup($prefix_special, $event, $t, $popup_window) { // this is always invoked from "main" frame - var $popup_window = $('#' + TB.getId('TB_iframeContent')).get(0).contentWindow; - if (!$.isFunction($popup_window.onLoad)) { + var $window_name = $t.replace(/(\/|-)/g, '_'); // replace "/" and "-" with "_" + + $popup_window = onAfterWindowOpen($window_name, undefined, $popup_window); + if ($popup_window === false) { // iframe onload happens on frame content change too -> don't react on it return ; } - var $window_name = $t.replace(/(\/|-)/g, '_'); // replace "/" and "-" with "_" - - $popup_window.onLoad(); - $popup_window.name = $window_name; - TB.setWindowMetaData('window_name', $window_name); // used to simulate window.opener functionality - var $opener = getWindowOpener($popup_window); if ($opener === null) { // we are already in main window @@ -825,7 +848,10 @@ } $window.top.document.title = (main_title.length ? main_title + ' - ' : '') + $title; - $window.TB.setWindowTitle($title); + + if ($modal_windows) { + $window.TB.setWindowTitle($title); + } } function set_filter($prefix_special, $filter_id, $filter_value, $ajax) @@ -1687,6 +1713,10 @@ function getWindowOpener($window) { // use this intead of "window.opener" + if (!$modal_windows) { + return $window.opener; + } + if ($window.name == 'main' || $window.name == 'main_frame') { return null; } @@ -1696,6 +1726,16 @@ function window_close($close_callback) { // use this instead of "window.close();" + if (!$modal_windows) { + if ($.isFunction($close_callback)) { + // use close callback, because iframe will be removed later in this method + $close_callback(); + } + + window.close(); + return ; + } + if (window.name == 'main') { return ; }