- Added message menu (some image needed), removed Print and Source buttons
- Added possibility to save message as .eml file (#1485861)
12 files modified
1 files added
| | |
| | | CHANGELOG RoundCube Webmail |
| | | =========================== |
| | | |
| | | - Add 1 minute interval in autosave options (#1485854) |
| | | - Added message menu, removed Print and Source buttons |
| | | - Added possibility to save message as .eml file (#1485861) |
| | | - Added 1 minute interval in autosave options (#1485854) |
| | | - Support UTF-7 encoding in messages (#1485832) |
| | | - Better support for malformed character names (#1485758) |
| | | |
| | |
| | | else if (in_array($attrib['command'], $a_static_commands)) { |
| | | $attrib['href'] = rcmail_url($attrib['command']); |
| | | } |
| | | else if ($attrib['command'] == 'permaurl' && !empty($this->env['permaurl'])) { |
| | | $attrib['href'] = $this->env['permaurl']; |
| | | } |
| | | } |
| | | |
| | | // overwrite attributes |
| | |
| | | // enable general commands |
| | | this.enable_command('logout', 'mail', 'addressbook', 'settings', true); |
| | | |
| | | if (this.env.permaurl) |
| | | this.enable_command('permaurl', true); |
| | | |
| | | switch (this.task) |
| | | { |
| | | case 'mail': |
| | |
| | | |
| | | if (this.env.action=='show' || this.env.action=='preview') |
| | | { |
| | | this.enable_command('show', 'reply', 'reply-all', 'forward', 'moveto', 'delete', 'mark', 'viewsource', 'print', 'load-attachment', 'load-headers', true); |
| | | this.enable_command('show', 'reply', 'reply-all', 'forward', 'moveto', 'delete', |
| | | 'open', 'mark', 'viewsource', 'download', 'print', 'load-attachment', 'load-headers', true); |
| | | |
| | | if (this.env.next_uid) |
| | | { |
| | | this.enable_command('nextmessage', true); |
| | |
| | | { |
| | | this.enable_command('previousmessage', true); |
| | | this.enable_command('firstmessage', true); |
| | | } |
| | | |
| | | if (this.env.blockedobjects) |
| | | { |
| | | if (this.gui_objects.remoteobjectsmsg) |
| | | this.gui_objects.remoteobjectsmsg.style.display = 'block'; |
| | | this.enable_command('load-images', 'always-load', true); |
| | | } |
| | | } |
| | | |
| | |
| | | { |
| | | this.enable_command('compose', 'add-contact', false); |
| | | parent.rcmail.show_contentframe(true); |
| | | } |
| | | |
| | | if ((this.env.action=='show' || this.env.action=='preview') && this.env.blockedobjects) |
| | | { |
| | | if (this.gui_objects.remoteobjectsmsg) |
| | | this.gui_objects.remoteobjectsmsg.style.display = 'block'; |
| | | this.enable_command('load-images', 'always-load', true); |
| | | } |
| | | |
| | | if (this.env.action=='compose') |
| | |
| | | this.switch_task(command); |
| | | break; |
| | | |
| | | case 'permaurl': |
| | | if (obj && obj.href && obj.target) |
| | | return true; |
| | | else if (this.env.permaurl) |
| | | parent.location.href = this.env.permaurl; |
| | | break; |
| | | case 'open': |
| | | var uid; |
| | | if (uid = this.get_single_uid()) |
| | | { |
| | | obj.href = '?_task='+this.env.task+'&_action=show&_mbox='+urlencode(this.env.mailbox)+'&_uid='+uid; |
| | | return true; |
| | | } |
| | | break; |
| | | |
| | | // misc list commands |
| | | case 'list': |
| | |
| | | var uid; |
| | | if (uid = this.get_single_uid()) |
| | | { |
| | | ref.sourcewin = window.open(this.env.comm_path+'&_action=viewsource&_uid='+this.env.uid+'&_mbox='+urlencode(this.env.mailbox)); |
| | | ref.sourcewin = window.open(this.env.comm_path+'&_action=viewsource&_uid='+uid+'&_mbox='+urlencode(this.env.mailbox)); |
| | | if (this.sourcewin) |
| | | window.setTimeout(function(){ ref.sourcewin.focus(); }, 20); |
| | | } |
| | | break; |
| | | |
| | | case 'download': |
| | | var uid; |
| | | if (uid = this.get_single_uid()) |
| | | this.goto_url('viewsource', '&_uid='+uid+'&_mbox='+urlencode(this.env.mailbox)+'&_save=1'); |
| | | break; |
| | | |
| | | case 'add-contact': |
| | |
| | | if (this.env.mailbox == this.env.drafts_mailbox) |
| | | { |
| | | this.enable_command('reply', 'reply-all', 'forward', false); |
| | | this.enable_command('show', 'print', selected); |
| | | this.enable_command('show', 'print', 'open', 'download', 'viewsource', selected); |
| | | this.enable_command('delete', 'moveto', 'mark', (list.selection.length > 0 ? true : false)); |
| | | } |
| | | else |
| | | { |
| | | this.enable_command('show', 'reply', 'reply-all', 'forward', 'print', selected); |
| | | this.enable_command('show', 'reply', 'reply-all', 'forward', 'print', 'open', 'download', 'viewsource', selected); |
| | | this.enable_command('delete', 'moveto', 'mark', (list.selection.length > 0 ? true : false)); |
| | | } |
| | | |
| | |
| | | $labels['searchmod'] = 'Search modifiers'; |
| | | $labels['msgtext'] = 'Entire message'; |
| | | $labels['openinextwin'] = 'Open in new window'; |
| | | $labels['emlsave'] = 'Save (.eml)'; |
| | | $labels['compose'] = 'Compose a message'; |
| | | $labels['savemessage'] = 'Save this draft'; |
| | | $labels['sendmessage'] = 'Send now'; |
| | |
| | | $labels['msgtext'] = 'Entire message'; |
| | | |
| | | $labels['openinextwin'] = 'Open in new window'; |
| | | $labels['emlsave'] = 'Save (.eml)'; |
| | | |
| | | // message compose |
| | | $labels['compose'] = 'Compose a message'; |
| | |
| | | $labels['searchmod'] = 'Parametry wyszukiwania'; |
| | | $labels['msgtext'] = 'Cała wiadomość'; |
| | | $labels['openinextwin'] = 'Otwórz w nowym oknie'; |
| | | $labels['emlsave'] = 'Zapisz (.eml)'; |
| | | $labels['compose'] = 'Utwórz wiadomość'; |
| | | $labels['savemessage'] = 'Zapisz kopię roboczą'; |
| | | $labels['sendmessage'] = 'Wyślij teraz'; |
| | |
| | | // set environement |
| | | $OUTPUT->set_env('safemode', $MESSAGE->is_safe); |
| | | $OUTPUT->set_env('sender', $MESSAGE->sender['string']); |
| | | $OUTPUT->set_env('permaurl', rcmail_url('show', array('_uid' => $MESSAGE->uid, '_mbox' => $mbox_name))); |
| | | $OUTPUT->set_env('mailbox', $mbox_name); |
| | | if ($CONFIG['trash_mbox']) |
| | | $OUTPUT->set_env('trash_mailbox', $CONFIG['trash_mbox']); |
| | |
| | | $headers = $IMAP->get_headers($uid); |
| | | $charset = $headers->charset ? $headers->charset : $IMAP->default_charset; |
| | | header("Content-Type: text/plain; charset={$charset}"); |
| | | |
| | | if (!empty($_GET['_save'])) { |
| | | $filename = ($headers->subject ? $headers->subject : 'roundcube') . '.eml'; |
| | | $browser = new rcube_browser; |
| | | |
| | | if ($browser->ie && $browser->ver < 7) |
| | | $filename = rawurlencode(abbreviate_string($filename, 55)); |
| | | else if ($browser->ie) |
| | | $filename = rawurlencode($filename); |
| | | else |
| | | $filename = addcslashes($filename, '"'); |
| | | |
| | | header("Content-Disposition: attachment; filename=\"$filename\""); |
| | | } |
| | | |
| | | $IMAP->print_raw_body($uid); |
| | | } |
| | | else |
New file |
| | |
| | | <div id="messagemenu"> |
| | | <ul class="toolbarmenu"> |
| | | <li><roundcube:button command="print" label="printmessage" classAct="active" /></li> |
| | | <li><roundcube:button command="download" label="emlsave" classAct="active" /></li> |
| | | <li><roundcube:button command="viewsource" label="viewsource" classAct="active" /></li> |
| | | <li><hr></li> |
| | | <li><roundcube:button command="open" label="openinextwin" target="_blank" classAct="active" /></li> |
| | | <roundcube:container name="messagemenu" id="messagemenu" /> |
| | | </ul> |
| | | </div> |
| | |
| | | } |
| | | |
| | | #markmessagemenu, |
| | | #searchmenu |
| | | #searchmenu, |
| | | #messagemenu |
| | | { |
| | | position: absolute; |
| | | top: 32px; |
| | |
| | | ul.toolbarmenu li input |
| | | { |
| | | vertical-align: middle; |
| | | } |
| | | |
| | | ul.toolbarmenu li hr |
| | | { |
| | | width: 90%; |
| | | margin: 2px 10px; |
| | | } |
| | | |
| | | #searchfilter |
| | |
| | | #remote-objects-message a:hover |
| | | { |
| | | color: #333333; |
| | | } |
| | | |
| | | #messageviewlink |
| | | { |
| | | position: absolute; |
| | | top: 8px; |
| | | right: 10px; |
| | | width: 15px; |
| | | height: 15px; |
| | | border: 0; |
| | | } |
| | | |
| | | /** message compose styles */ |
| | |
| | | |
| | | <roundcube:include file="/includes/taskbar.html" /> |
| | | <roundcube:include file="/includes/header.html" /> |
| | | <roundcube:include file="/includes/messagemenu.html" /> |
| | | |
| | | <div id="mainscreen"> |
| | | |
| | |
| | | <div id="messagetoolbar"> |
| | | <roundcube:button command="checkmail" imageSel="/images/buttons/inbox_sel.png" imageAct="/images/buttons/inbox_act.png" imagePas="/images/buttons/inbox_pas.png" width="32" height="32" title="checkmail" /> |
| | | <roundcube:button command="compose" imageSel="/images/buttons/compose_sel.png" imageAct="/images/buttons/compose_act.png" imagePas="/images/buttons/compose_pas.png" width="32" height="32" title="writenewmessage" /> |
| | | <roundcube:button name="markreadbutton" id="markreadbutton" image="/images/buttons/markread_act.png" width="32" height="32" title="markmessages" onclick="rcmail_ui.show_markmenu();return false" /> |
| | | <roundcube:button command="reply" imageSel="/images/buttons/reply_sel.png" imageAct="/images/buttons/reply_act.png" imagePas="/images/buttons/reply_pas.png" width="32" height="32" title="replytomessage" /> |
| | | <roundcube:button command="reply-all" imageSel="/images/buttons/replyall_sel.png" imageAct="/images/buttons/replyall_act.png" imagePas="/images/buttons/replyall_pas.png" width="32" height="32" title="replytoallmessage" /> |
| | | <roundcube:button command="forward" imageSel="/images/buttons/forward_sel.png" imageAct="/images/buttons/forward_act.png" imagePas="/images/buttons/forward_pas.png" width="32" height="32" title="forwardmessage" /> |
| | | <roundcube:button command="delete" imageSel="/images/buttons/delete_sel.png" imageAct="/images/buttons/delete_act.png" imagePas="/images/buttons/delete_pas.png" width="32" height="32" title="deletemessage" /> |
| | | <roundcube:button command="print" imageSel="/images/buttons/print_sel.png" imageAct="/images/buttons/print_act.png" imagePas="/images/buttons/print_pas.png" width="32" height="32" title="printmessage" /> |
| | | <roundcube:button name="markreadbutton" id="markreadbutton" image="/images/buttons/markread_act.png" width="32" height="32" title="markmessages" onclick="rcmail_ui.show_markmenu();return false" /> |
| | | <roundcube:button name="messagemenulink" id="messagemenulink" image="/images/icons/extwin.png" width="32" height="32" title="messagemenu" onclick="rcmail_ui.show_messagemenu();return false" /> |
| | | <roundcube:container name="toolbar" id="messagetoolbar" /> |
| | | |
| | | <div id="markmessagemenu"> |
| | |
| | | <roundcube:include file="/includes/links.html" /> |
| | | <link rel="stylesheet" type="text/css" href="/mail.css" /> |
| | | <script type="text/javascript" src="/splitter.js"></script> |
| | | <script type="text/javascript" src="/functions.js"></script> |
| | | <style type="text/css"> |
| | | #mailboxlist-container { width: <roundcube:exp expression="!empty(cookie:mailviewsplitterv) ? cookie:mailviewsplitterv-5 : 160" />px; } |
| | | #messageframe { |
| | |
| | | } |
| | | </style> |
| | | </head> |
| | | <body> |
| | | <body onload="rcube_init_mail_ui()"> |
| | | |
| | | <roundcube:include file="/includes/taskbar.html" /> |
| | | <roundcube:include file="/includes/header.html" /> |
| | | <roundcube:include file="/includes/messagemenu.html" /> |
| | | |
| | | <div id="messagecountbar"> |
| | | <roundcube:button command="firstmessage" imageSel="/images/buttons/first_sel.png" imageAct="/images/buttons/first_act.png" imagePas="/images/buttons/first_pas.png" width="11" height="11" title="firstmessage" /> |
| | |
| | | <roundcube:button command="reply-all" imageSel="/images/buttons/replyall_sel.png" imageAct="/images/buttons/replyall_act.png" imagePas="/images/buttons/replyall_pas.png" width="32" height="32" title="replytoallmessage" /> |
| | | <roundcube:button command="forward" imageSel="/images/buttons/forward_sel.png" imageAct="/images/buttons/forward_act.png" imagePas="/images/buttons/forward_pas.png" width="32" height="32" title="forwardmessage" /> |
| | | <roundcube:button command="delete" imageSel="/images/buttons/delete_sel.png" imageAct="/images/buttons/delete_act.png" imagePas="/images/buttons/delete_pas.png" width="32" height="32" title="deletemessage" /> |
| | | <roundcube:button command="print" imageSel="/images/buttons/print_sel.png" imageAct="/images/buttons/print_act.png" imagePas="/images/buttons/print_pas.png" width="32" height="32" title="printmessage" /> |
| | | <roundcube:button command="viewsource" imageSel="/images/buttons/source_sel.png" imageAct="/images/buttons/source_act.png" imagePas="/images/buttons/source_pas.png" width="32" height="32" title="viewsource" /> |
| | | <roundcube:button name="messagemenulink" image="/images/icons/extwin.png" width="32" height="32" title="messagemenu" onclick="rcmail_ui.show_messagemenu();return false" id="messagemenulink" /> |
| | | <roundcube:object name="mailboxlist" type="select" noSelection="moveto" maxlength="25" onchange="rcmail.command('moveto', this.options[this.selectedIndex].value)" class="mboxlist" /> |
| | | <roundcube:container name="toolbar" id="messagetoolbar" /> |
| | | </div> |
| | |
| | | <body class="iframe"> |
| | | |
| | | <div class="messageheaderbox"> |
| | | <roundcube:button command="permaurl" image="/images/icons/extwin.png" width="15" height="15" title="openinextwin" id="messageviewlink" target="_blank" /> |
| | | <roundcube:button command="messagemenu" image="/images/icons/extwin.png" width="15" height="15" title="messageactions" id="messagemenulink" /> |
| | | <roundcube:object name="messageHeaders" class="headers-table" cellspacing="0" cellpadding="2" addicon="/images/icons/plus.gif" summary="Message headers" /> |
| | | <roundcube:object name="messageAttachments" id="attachment-list" /> |
| | | </div> |