Index: branches/RC/themes/default2009/platform/inc/jquery/thickbox/thickbox.js =================================================================== diff -u -r11337 -r11427 --- branches/RC/themes/default2009/platform/inc/jquery/thickbox/thickbox.js (.../thickbox.js) (revision 11337) +++ branches/RC/themes/default2009/platform/inc/jquery/thickbox/thickbox.js (.../thickbox.js) (revision 11427) @@ -43,7 +43,7 @@ // function called when the user clicks on a thickbox link TB.show = function (params) { -// caption, url, imageGroup, showCallback, postParams +// caption, url, imageGroup, onDataReceived, onAfterShow, postParams try { if (typeof document.body.style.maxHeight === 'undefined') { @@ -79,7 +79,7 @@ var baseURL; if (params.url.indexOf('?') !== -1) { - // ff there is a query string involved + // ff there is a query string involved baseURL = params.url.substr(0, params.url.indexOf('?')); } else { baseURL = params.url; @@ -127,7 +127,7 @@ if (params.imageGroup) { // scan images in group to create Prev/Next links - var TB_TempArray = $('a[@rel=' + params.imageGroup + ']').get(); + var TB_TempArray = $('a[rel=' + params.imageGroup + ']').get(); for (var TB_Counter = 0; ((TB_Counter < TB_TempArray.length) && (TB_NextHTML === '')); TB_Counter++) { var urlTypeTemp = TB_TempArray[TB_Counter].href.toLowerCase().match(urlString); if (!(TB_TempArray[TB_Counter].href == params.url)) { @@ -290,11 +290,11 @@ $('#TB_closeWindowButton').click(TB.remove); if (params.url.indexOf('TB_inline') != -1) { - $('#TB_ajaxContent').append( $('#' + url_params['inlineId']).children() ); + $('#TB_ajaxContent').html( $('#' + url_params['inlineId']).html() ); $('#TB_window').unload( function () { // move elements back when you're finished - $('#' + url_params['inlineId']).append( $('#TB_ajaxContent').children() ); + $('#' + url_params['inlineId']).html( $('#TB_ajaxContent').html() ); } ); @@ -310,7 +310,27 @@ $('#TB_window').css('display', 'block'); } } else { - $('#TB_ajaxContent').load( + var $content_url = params.url + '&random=' + (new Date().getTime()); + + if (params.postParams === undefined) { + $.get( + $content_url, + function ($data) { + TB.onDataReceived($data, params); + } + ); + } + else { + $.post( + $content_url, + params.postParams, + function ($data) { + TB.onDataReceived($data, params); + } + ); + } + + /*$('#TB_ajaxContent').load( params.url += '&random=' + (new Date().getTime()), params.postParams, function() { @@ -324,10 +344,47 @@ params.showCallback(); } } - ); + );*/ } } +TB.parseRedirect = function ($data) { + var $match_redirect = new RegExp('^#redirect#(.*)').exec($data); + if ($match_redirect != null) { + // redirect to external template requested + return $match_redirect[1]; + } + + return false; +} + +TB.onDataReceived = function ($data, $params) { + if ( $.isFunction($params.onDataReceived) ) { + if (!$params.onDataReceived($data)) { + // this callback even could prevent redirect action + // callback requested to stop processing + return ; + } + } + + var $redirect = TB.parseRedirect($data); + if ($redirect !== false) { + window.location.href = $redirect; + return ; + } + + $('#TB_ajaxContent').html($data); + + TB.position(); + $('#TB_load').remove(); + TB.init('#TB_ajaxContent a.thickbox'); + $('#TB_window').css('display', 'block'); + + if ( $.isFunction($params.onAfterShow) ) { + $params.onAfterShow(); + } +} + TB.showIframe = function () { $('#TB_load').remove(); $('#TB_window').css('display', 'block');