Index: branches/RC/core/admin_templates/js/script.js =================================================================== diff -u -r11482 -r11483 --- branches/RC/core/admin_templates/js/script.js (.../script.js) (revision 11482) +++ branches/RC/core/admin_templates/js/script.js (.../script.js) (revision 11483) @@ -315,50 +315,68 @@ } // in-portal compatibility functions: end -function InitTranslator(prefix, field, t, multi_line) +function InitTranslator(prefix, field, t, multi_line, $before_callback) { - var $kf = document.getElementById($form_name); - var $window_name = 'select_'+t.replace(/(\/|-)/g, '_'); - var $regex = new RegExp('(.*)\?env=(' + document.getElementById('sid').value + ')?-(.*?):(m[^:]+)'); + var $window_name = 'select_' + t.replace(/(\/|-)/g, '_'); - $regex = $regex.exec($kf.action); -// set_hidden_field('return_m', $regex[4]); + var $options = { + onAfterShow: function () { + getFrame('main').initTranslatorOnAfterShow(prefix, field, t, multi_line, $before_callback); + } + }; + + 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; + + if (!$.isFunction($popup_window.onLoad)) { + // 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'); - if (!isset(multi_line)) multi_line = 0; - openwin('', $window_name, 750, 400); -// set_hidden_field('return_template', $kf.elements['t'].value); // where should return after popup is done - set_hidden_field('m_opener', 'p'); - set_hidden_field('translator_wnd_name', $window_name); - set_hidden_field('translator_field', field); - set_hidden_field('translator_t', t); - set_hidden_field('translator_prefixes', prefix); - set_hidden_field('translator_multi_line', multi_line); - $kf.target = $window_name; + $opener.set_hidden_field('m_opener', 'p'); + $opener.set_hidden_field('translator_wnd_name', $window_name); + $opener.set_hidden_field('translator_field', field); + $opener.set_hidden_field('translator_t', t); + $opener.set_hidden_field('translator_prefixes', prefix); + $opener.set_hidden_field('translator_multi_line', isset(multi_line) ? multi_line : 0); - return $prev_opener; -} + if ($.isFunction($before_callback)) { + $before_callback($opener); + } -function PreSaveAndOpenTranslator(prefix, field, t, multi_line) -{ - var $prev_opener = InitTranslator(prefix, field, t, multi_line); + $opener.document.getElementById($opener.$form_name).target = $window_name; var split_prefix = prefix.split(','); - submit_event(split_prefix[0], 'OnPreSaveAndOpenTranslator'); + $opener.submit_event(split_prefix[0], 'OnPreSaveAndOpenTranslator'); - set_hidden_field('m_opener', $prev_opener); + $opener.set_hidden_field('m_opener', $prev_opener); } +function PreSaveAndOpenTranslator(prefix, field, t, multi_line) +{ + InitTranslator(prefix, field, t, multi_line); +} function PreSaveAndOpenTranslatorCV(prefix, field, t, resource_id, multi_line) { - var $prev_opener = InitTranslator(prefix, field, t, multi_line); - set_hidden_field('translator_resource_id', resource_id); - - var split_prefix = prefix.split(','); - submit_event(split_prefix[0],'OnPreSaveAndOpenTranslator'); - - set_hidden_field('m_opener', $prev_opener); + InitTranslator( + prefix, field, t, multi_line, + function ($opener) { + $opener.set_hidden_field('translator_resource_id', resource_id); + } + ); } function openTranslator(prefix,field,url,wnd) @@ -501,8 +519,7 @@ $opener = window; } - var $kf = $opener.document.getElementById($opener.$form_name); - $kf.target = $window_name; + $opener.document.getElementById($opener.$form_name).target = $window_name; var $prev_opener = $opener.opener_action('p'); event_bak = $opener.get_hidden_field('events[' + $prefix_special + ']')