Improved attachment reminder dialog (#1489091)
Improved core show_popup_dialog() function
| | |
| | | } |
| | | |
| | | return msg; |
| | | } |
| | | }; |
| | | |
| | | function rcmail_check_message(msg) |
| | | { |
| | |
| | | rx = new RegExp('(' + keywords.join('|') + ')', 'i'); |
| | | |
| | | return msg.search(rx) != -1; |
| | | } |
| | | }; |
| | | |
| | | function rcmail_have_attachments() |
| | | { |
| | | return rcmail.env.attachments && $('li', rcmail.gui_objects.attachmentlist).length; |
| | | } |
| | | }; |
| | | |
| | | function rcmail_attachment_reminder_dialog() |
| | | { |
| | | var buttons = {}; |
| | | |
| | | buttons[rcmail.gettext('addattachment')] = function() { |
| | | $(this).remove(); |
| | | if (window.UI && UI.show_uploadform) // Larry skin |
| | | UI.show_uploadform(); |
| | | else if (window.rcmail_ui && rcmail_ui.show_popup) // classic skin |
| | | rcmail_ui.show_popup('uploadmenu', true); |
| | | }; |
| | | buttons[rcmail.gettext('send')] = function(e) { |
| | | $(this).remove(); |
| | | rcmail.env.attachment_reminder = true; |
| | | rcmail.command('send', '', e); |
| | | }; |
| | | |
| | | rcmail.env.attachment_reminder = false; |
| | | rcmail.show_popup_dialog(rcmail.gettext('attachment_reminder.forgotattachment'), '', buttons); |
| | | }; |
| | | |
| | | |
| | | if (window.rcmail) { |
| | |
| | | var msg = rcmail_get_compose_message(), |
| | | subject = $('#compose-subject').val(); |
| | | |
| | | if (!rcmail_have_attachments() && (rcmail_check_message(msg) || rcmail_check_message(subject))) { |
| | | if (confirm(rcmail.gettext('forgotattachment', 'attachment_reminder'))) { |
| | | if (window.UI && UI.show_uploadform) // Larry skin |
| | | UI.show_uploadform(); |
| | | else if (window.rcmail_ui && rcmail_ui.show_popup) // classic skin |
| | | rcmail_ui.show_popup('uploadmenu', true); |
| | | |
| | | return false; |
| | | } |
| | | if (!rcmail.env.attachment_reminder && !rcmail_have_attachments() |
| | | && (rcmail_check_message(msg) || rcmail_check_message(subject)) |
| | | ) { |
| | | rcmail_attachment_reminder_dialog(); |
| | | return false; |
| | | } |
| | | }); |
| | | } |
| | |
| | | if ($rcmail->task == 'mail' && $rcmail->action == 'compose') { |
| | | $this->include_script('attachment_reminder.js'); |
| | | $this->add_texts('localization/', array('keywords', 'forgotattachment')); |
| | | $rcmail->output->add_label('addattachment', 'send'); |
| | | } |
| | | |
| | | if ($rcmail->task == 'settings') { |
| | |
| | | <active>yes</active> |
| | | </lead> |
| | | <lead> |
| | | <name>Thomas Yu - Sian , Liu</name> |
| | | <name>Thomas Yu - Sian, Liu</name> |
| | | <active>yes</active> |
| | | </lead> |
| | | <date>2013-05-20</date> |
| | | <version> |
| | | <release>1.1</release> |
| | | <api>1.0</api> |
| | |
| | | }; |
| | | |
| | | // open a jquery UI dialog with the given content |
| | | this.show_popup_dialog = function(html, title) |
| | | this.show_popup_dialog = function(html, title, buttons) |
| | | { |
| | | // forward call to parent window |
| | | if (this.is_framed()) { |
| | | parent.rcmail.show_popup_dialog(html, title); |
| | | parent.rcmail.show_popup_dialog(html, title, buttons); |
| | | return; |
| | | } |
| | | |
| | |
| | | .html(html) |
| | | .dialog({ |
| | | title: title, |
| | | buttons: buttons, |
| | | modal: true, |
| | | resizable: true, |
| | | width: 580, |
| | | width: 500, |
| | | close: function(event, ui) { $(this).remove() } |
| | | }); |
| | | |
| | | // resize and center popup |
| | | var win = $(window), w = win.width(), h = win.height(), |
| | | width = popup.width(), height = popup.height(); |
| | | popup.dialog('option', { height: Math.min(h-40, height+50), width: Math.min(w-20, width+50) }) |
| | | .dialog('option', 'position', ['center', 'center']); // only works in a separate call (!?) |
| | | // resize and center popup |
| | | var win = $(window), w = win.width(), h = win.height(), |
| | | width = popup.width(), height = popup.height(); |
| | | |
| | | popup.dialog('option', { |
| | | height: Math.min(h - 40, height + 75 + (buttons ? 50 : 0)), |
| | | width: Math.min(w - 20, width + 20) |
| | | }); |
| | | }; |
| | | |
| | | // enable/disable buttons for page shifting |