Improve content frame buttons setup

pull/5742/merge
Aleksander Machniak 7 years ago
parent 12ee7990ee
commit f9a2771a40

@ -151,14 +151,7 @@ function rcube_elastic_ui()
// Move some buttons to the frame footer toolbar // Move some buttons to the frame footer toolbar
$('a[data-content-button]').each(function() { $('a[data-content-button]').each(function() {
var target = $(this), content_buttons.push(create_cloned_button($(this)));
target_id = target.attr('id'),
button_id = target_id + '-clone';
content_buttons.push(create_cloned_button(target));
// Register the button to get active state updates
register_cloned_button(target_id, button_id);
}); });
// Move form buttons from the content frame into the frame footer (on parent window) // Move form buttons from the content frame into the frame footer (on parent window)
@ -175,7 +168,7 @@ function rcube_elastic_ui()
return; return;
} }
content_buttons.push(create_cloned_button(target, true)); content_buttons.push(create_cloned_button(target));
}); });
(is_framed ? parent.UI : ref).register_content_buttons(content_buttons); (is_framed ? parent.UI : ref).register_content_buttons(content_buttons);
@ -309,13 +302,11 @@ function rcube_elastic_ui()
/** /**
* Registers cloned button * Registers cloned button
*/ */
function register_cloned_button(old_id, new_id) function register_cloned_button(old_id, new_id, active_class)
{ {
var button = find_button(old_id); var button = find_button(old_id);
if (button) { if (button) {
rcmail.register_button(button.command, new_id, rcmail.register_button(button.command, new_id, button.data.type, active_class, button.data.sel);
button.data.type, button.data.act, button.data.sel, button.data.over);
} }
}; };
@ -325,19 +316,25 @@ function rcube_elastic_ui()
function create_cloned_button(target, is_ext) function create_cloned_button(target, is_ext)
{ {
var button = $('<a>'), var button = $('<a>'),
button_id = target.attr('id') + '-clone', target_id = target.attr('id'),
button_id = target_id + '-clone',
btn_class = target[0].className; btn_class = target[0].className;
btn_class = $.trim(btn_class.replace('btn-primary', 'primary').replace(/btn(-[a-z+]+)?/g, '')) + ' button disabled'; btn_class = $.trim(btn_class.replace('btn-primary', 'primary').replace(/(btn[a-z-]*|button|disabled)/g, ''))
btn_class += ' button disabled';
button.attr({'onclick': '', id: button_id, href: '#', 'class': btn_class}) button.attr({'onclick': '', id: button_id, href: '#', 'class': btn_class})
.append($('<span class="inner">').text(target.text())) .append($('<span class="inner">').text(target.text()))
.on('click', function(e) { target.click(); }); .on('click', function(e) { target.click(); });
if (is_ext) { if (is_framed) {
button.data('target', target); button.data('target', target);
frame_buttons.push($.extend({button_id: button_id}, find_button(target[0].id))); frame_buttons.push($.extend({button_id: button_id}, find_button(target[0].id)));
} }
else {
// Register the button to get active state updates
register_cloned_button(target_id, button_id, btn_class.replace(' disabled', ''));
}
return button; return button;
}; };

Loading…
Cancel
Save