summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Machniak <alec@alec.pl>2013-05-20 09:35:02 +0200
committerAleksander Machniak <alec@alec.pl>2013-05-20 09:35:02 +0200
commitc8bc8c97f3f6e5c04fa7b459bdb1c922d7f4e6ad (patch)
tree178573a031c14ba4ea8fb7b9370c11bf0a65716c
parent68684a89828db7b929d596f7b80e4cbf9fae9bfc (diff)
Improved attachment reminder dialog (#1489091)
Improved core show_popup_dialog() function
-rwxr-xr-xplugins/attachment_reminder/attachment_reminder.js41
-rwxr-xr-xplugins/attachment_reminder/attachment_reminder.php1
-rw-r--r--plugins/attachment_reminder/package.xml3
-rw-r--r--program/js/app.js20
4 files changed, 44 insertions, 21 deletions
diff --git a/plugins/attachment_reminder/attachment_reminder.js b/plugins/attachment_reminder/attachment_reminder.js
index a4f3e6325..50d661b3b 100755
--- a/plugins/attachment_reminder/attachment_reminder.js
+++ b/plugins/attachment_reminder/attachment_reminder.js
@@ -14,7 +14,7 @@ function rcmail_get_compose_message()
}
return msg;
-}
+};
function rcmail_check_message(msg)
{
@@ -24,12 +24,33 @@ 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) {
@@ -37,15 +58,11 @@ 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;
}
});
}
diff --git a/plugins/attachment_reminder/attachment_reminder.php b/plugins/attachment_reminder/attachment_reminder.php
index 0a2597329..a215ff57c 100755
--- a/plugins/attachment_reminder/attachment_reminder.php
+++ b/plugins/attachment_reminder/attachment_reminder.php
@@ -38,6 +38,7 @@ class attachment_reminder extends rcube_plugin
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') {
diff --git a/plugins/attachment_reminder/package.xml b/plugins/attachment_reminder/package.xml
index 43861182e..78768d534 100644
--- a/plugins/attachment_reminder/package.xml
+++ b/plugins/attachment_reminder/package.xml
@@ -15,9 +15,10 @@
<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>
diff --git a/program/js/app.js b/program/js/app.js
index af09572ff..b98272493 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -5659,11 +5659,11 @@ function rcube_webmail()
};
// 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;
}
@@ -5671,17 +5671,21 @@ function rcube_webmail()
.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