Index: branches/RC/core/admin_templates/js/script.js =================================================================== diff -u -r11525 -r11538 --- branches/RC/core/admin_templates/js/script.js (.../script.js) (revision 11525) +++ branches/RC/core/admin_templates/js/script.js (.../script.js) (revision 11538) @@ -467,7 +467,7 @@ return $prev_opener; } -function open_popup($prefix_special, $event, $t, $window_size) { +function open_popup($prefix_special, $event, $t, $window_size, $onAfterOpenPopup) { if (!$window_size) { // if no size given, then query it from ajax var $default_size = '750x400'; @@ -479,7 +479,7 @@ // invalid responce was received, may be php fatal error during AJAX request $responce = $default_size; } - open_popup($prefix_special, $event, $t, $responce); + open_popup($prefix_special, $event, $t, $responce, $onAfterOpenPopup); } $pm.GetSize($t); return ; @@ -493,6 +493,10 @@ var $options = { onAfterShow: function () { getFrame('main').onAfterOpenPopup($prefix_special, $event, $t); + + if ($onAfterOpenPopup !== undefined && $.isFunction($onAfterOpenPopup)) { + $onAfterOpenPopup(); + } } }; @@ -541,59 +545,54 @@ function openSelector($prefix, $url, $dst_field, $window_size, $event) { - // if url has additional params - store it and make hidden fields from it (later, below) - var $additional = []; - if ($url.match('(.*?)&(.*)')) { - $url = RegExp.$1; - var tmp = RegExp.$2; - var pairs = tmp.split('&'); - - for (var i in pairs) { - var data = pairs[i].split('='); - $additional[data[0]] = data[1]; - } - } - // get template name from url var $regex = new RegExp('(.*)\?env=(' + document.getElementById('sid').value + ')?-(.*?):(m[^:]+)'); $regex = $regex.exec($url); var $t = $regex[3]; - if ($regex[4].match(/^m([\d]+)-/)) { - // remember category from url - $additional['m_cat_id'] = RegExp.$1; - } // substitute form action with selector's url var $kf = document.getElementById($form_name); var $prev_action = $kf.action; + $kf.action = $url; // check parameter values - if (!isset($event)) $event = ''; + if (!isset($event)) { + $event = ''; + } Application.processHooks($prefix + ':OnBeforeOpenSelector'); // set variables need for selector to work set_hidden_field('main_prefix', $prefix); set_hidden_field('dst_field', $dst_field); - for (var i in $additional) - { - set_hidden_field(i, $additional[i]); - } - - open_popup($prefix, $event, $t, $window_size); - - // restore form action back - $kf.action = $prev_action; + open_popup( + $prefix, $event, $t, $window_size, + function() { + // restore form action back + $kf.action = $prev_action; + } + ); } function translate_phrase($label, $template) { set_hidden_field('phrases_label', $label); open_popup('phrases', 'OnNew', $template); } +function direct_edit($prefix_special, $url) { + if (use_popups($prefix_special, '')) { + openSelector($prefix_special, $url); + } + else { + redirect($url); + } + + return false; +} + function std_precreate_item(prefix_special, edit_template) { set_hidden_field(prefix_special+'_mode', 't'); @@ -603,7 +602,7 @@ else { opener_action('d'); submit_event(prefix_special,'OnPreCreate', edit_template); - } + } // set_hidden_field(prefix_special+'_mode', ''); } @@ -618,11 +617,11 @@ } } -function std_edit_item(prefix_special, edit_template) +function std_edit_item(prefix_special, edit_template, $onAfterOpenPopup) { set_hidden_field(prefix_special+'_mode', 't'); if (use_popups(prefix_special, 'OnEdit')) { - open_popup(prefix_special, 'OnEdit', edit_template); + open_popup(prefix_special, 'OnEdit', edit_template, null, $onAfterOpenPopup); } else { opener_action('d');