Changeset 4032 in subversion
- Timestamp:
- Oct 4, 2010 8:27:06 AM (3 years ago)
- Location:
- trunk/roundcubemail
- Files:
-
- 2 added
- 15 edited
-
CHANGELOG (modified) (1 diff)
-
program/include/rcube_imap_generic.php (modified) (1 diff)
-
program/include/rcube_message.php (modified) (1 diff)
-
program/js/app.js (modified) (5 diffs)
-
program/localization/en_US/labels.inc (modified) (4 diffs)
-
program/steps/mail/compose.inc (modified) (10 diffs)
-
program/steps/mail/func.inc (modified) (2 diffs)
-
program/steps/mail/sendmail.inc (modified) (1 diff)
-
program/steps/mail/show.inc (modified) (1 diff)
-
skins/default/common.css (modified) (2 diffs)
-
skins/default/functions.js (modified) (2 diffs)
-
skins/default/images/dbutton.png (added)
-
skins/default/includes/replyallmenu.html (added)
-
skins/default/mail.css (modified) (3 diffs)
-
skins/default/templates/compose.html (modified) (4 diffs)
-
skins/default/templates/mail.html (modified) (2 diffs)
-
skins/default/templates/message.html (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/roundcubemail/CHANGELOG
r4029 r4032 18 18 - Fix handling of Thunderbird's vCards (#1487024) 19 19 - Fix mailto optional params in plain text messages aren't handled (#1487026) 20 - Add Reply-to-List feature (#1484252) 21 - Add Mail-Followup-To/Mail-Reply-To support (#1485547) 20 22 21 23 RELEASE 0.4.1 -
trunk/roundcubemail/program/include/rcube_imap_generic.php
r4007 r4032 1072 1072 $request .= "CONTENT-TRANSFER-ENCODING CONTENT-TYPE MESSAGE-ID "; 1073 1073 $request .= "REFERENCES DISPOSITION-NOTIFICATION-TO X-PRIORITY "; 1074 $request .= "X-DRAFT-INFO".$add.")])"; 1074 $request .= "X-DRAFT-INFO LIST-POST MAIL-FOLLOWUP-TO MAIL-REPLY-TO "; 1075 $request .= "RETURN-PATH".$add.")])"; 1075 1076 1076 1077 if (!$this->putLine($request)) { -
trunk/roundcubemail/program/include/rcube_message.php
r4015 r4032 116 116 public function get_header($name, $raw = false) 117 117 { 118 $value = $this->headers->$name; 118 if ($this->headers->$name) 119 $value = $this->headers->$name; 120 else if ($this->headers->others[$name]) 121 $value = $this->headers->others[$name]; 122 119 123 return $raw ? $value : $this->imap->decode_header($value); 120 124 } -
trunk/roundcubemail/program/js/app.js
r4027 r4032 200 200 this.set_alttext('delete', 'movemessagetotrash'); 201 201 202 this.env.message_commands = ['show', 'reply', 'reply-all', 'forward', 'moveto', 'copy', 'delete', 203 'open', 'mark', 'edit', 'viewsource', 'download', 'print', 'load-attachment', 'load-headers']; 202 this.env.message_commands = ['show', 'reply', 'reply-all', 'reply-list', 'forward', 203 'moveto', 'copy', 'delete', 'open', 'mark', 'edit', 'viewsource', 'download', 204 'print', 'load-attachment', 'load-headers']; 204 205 205 206 if (this.env.action=='show' || this.env.action=='preview') { 206 207 this.enable_command(this.env.message_commands, this.env.uid); 208 this.enable_command('reply-list', this.env.list_post); 207 209 208 210 if (this.env.next_uid) { … … 883 885 884 886 case 'reply-all': 887 case 'reply-list': 885 888 case 'reply': 886 889 var uid; 887 if (uid = this.get_single_uid()) 888 this.goto_url('compose', '_reply_uid='+uid+'&_mbox='+urlencode(this.env.mailbox)+(command=='reply-all' ? '&_all=1' : ''), true); 890 if (uid = this.get_single_uid()) { 891 var url = '_reply_uid='+uid+'&_mbox='+urlencode(this.env.mailbox); 892 if (command == 'reply-all') 893 // do reply-list, when list is detected and popup menu wasn't used 894 url += '&_all=' + (!props && this.commands['reply-list'] ? 'list' : 'all'); 895 else if (command == 'reply-list') 896 url += '&_all=list'; 897 898 this.goto_url('compose', url, true); 899 } 889 900 break; 890 901 … … 1367 1378 1368 1379 this.enable_command(this.env.message_commands, selected); 1369 // Hide certain command buttons when Drafts folder is selected 1370 if (selected && this.env.mailbox == this.env.drafts_mailbox) { 1371 this.enable_command('reply', 'reply-all', 'forward', false); 1380 if (selected) { 1381 // Hide certain command buttons when Drafts folder is selected 1382 if (this.env.mailbox == this.env.drafts_mailbox) 1383 this.enable_command('reply', 'reply-all', 'reply-list', 'forward', false); 1384 // Disable reply-list when List-Post header is not set 1385 else { 1386 var msg = this.env.messages[list.get_single_selection()]; 1387 if (!msg.ml) 1388 this.enable_command('reply-list', false); 1389 } 1372 1390 } 1373 1391 // Multi-message commands … … 1547 1565 parent_uid: flags.parent_uid?flags.parent_uid:0, 1548 1566 selected: this.select_all_mode || this.message_list.in_selection(uid), 1567 ml: flags.ml?1:0, 1549 1568 // flags from plugins 1550 1569 flags: flags.extra_flags … … 5016 5035 // re-enable commands on move/delete error 5017 5036 this.enable_command(this.env.message_commands, true); 5037 if (!this.env.list_post) 5038 this.enable_command('reply-list', false); 5018 5039 } 5019 5040 else if (this.task == 'addressbook') { -
trunk/roundcubemail/program/localization/en_US/labels.inc
r4012 r4032 47 47 $labels['bcc'] = 'Bcc'; 48 48 $labels['replyto'] = 'Reply-To'; 49 $labels['mailreplyto'] = 'Mail-Reply-To'; 50 $labels['mailfollowupto'] = 'Mail-Followup-To'; 49 51 $labels['date'] = 'Date'; 50 52 $labels['size'] = 'Size'; … … 54 56 // aliases 55 57 $labels['reply-to'] = $labels['replyto']; 58 $labels['mailreply-to'] = $labels['mailreplyto']; 59 $labels['mailfollowup-to'] = $labels['mailfollowupto']; 56 60 57 61 $labels['mailboxlist'] = 'Folders'; … … 122 126 $labels['writenewmessage'] = 'Create a new message'; 123 127 $labels['replytomessage'] = 'Reply to sender'; 124 $labels['replytoallmessage'] = 'Reply to sender and all recipients'; 128 $labels['replytoallmessage'] = 'Reply to list or to sender and all recipients'; 129 $labels['replyall'] = 'Reply all'; 130 $labels['replylist'] = 'Reply list'; 125 131 $labels['forwardmessage'] = 'Forward the message'; 126 132 $labels['deletemessage'] = 'Delete message'; … … 234 240 $labels['addbcc'] = 'Add Bcc'; 235 241 $labels['addreplyto'] = 'Add Reply-To'; 242 $labels['addmailreplyto'] = 'Add Mail-Reply-To'; 243 $labels['addmailfollowupto'] = 'Add Mail-Followup-To'; 236 244 237 245 // mdn -
trunk/roundcubemail/program/steps/mail/compose.inc
r4022 r4032 167 167 168 168 if (!empty($_SESSION['compose']['param']['all'])) 169 $MESSAGE->reply_all = 1;169 $MESSAGE->reply_all = $_SESSION['compose']['param']['all']; 170 170 171 171 $OUTPUT->set_env('compose_mode', 'reply'); … … 246 246 $fname = '_replyto'; 247 247 $param = 'replyto'; 248 $header = 'reply-to'; 249 250 case 'mailreplyto': 251 case 'mailreply-to': 252 if (!$fname) { 253 $fname = '_mailreplyto'; 254 $param = 'mailreplyto'; 255 $header = 'mailreply-to'; 256 } 257 258 case 'mailfollowupto': 259 case 'mailfollowup-to': 260 if (!$fname) { 261 $fname = '_mailfollowupto'; 262 $param = 'mailfollowupto'; 263 $header = 'mailfollowup-to'; 264 } 265 248 266 $allow_attrib = array('id', 'class', 'style', 'size', 'tabindex'); 249 267 $field_type = 'html_inputfield'; … … 259 277 else if ($header && $compose_mode == RCUBE_COMPOSE_REPLY) { 260 278 // get recipent address(es) out of the message headers 261 if ($header=='to' && !empty($MESSAGE->headers->replyto)) 262 $fvalue = $MESSAGE->headers->replyto; 263 else if ($header=='to' && !empty($MESSAGE->headers->from)) 264 $fvalue = $MESSAGE->headers->from; 279 if ($header == 'to') { 280 $mailfollowup = $MESSAGE->headers->others['mail-followup-to']; 281 $mailreplyto = $MESSAGE->headers->others['mail-reply-to']; 282 283 if ($MESSAGE->reply_all == 'list' && $mailfollowup) 284 $fvalue = $mailfollowup; 285 else if ($MESSAGE->reply_all == 'list' 286 && preg_match('/<mailto:([^>]+)>/i', $MESSAGE->headers->others['list-post'], $m)) 287 $fvalue = $m[1]; 288 else if ($mailreplyto) 289 $fvalue = $mailreplyto; 290 else if (!empty($MESSAGE->headers->replyto)) 291 $fvalue = $MESSAGE->headers->replyto; 292 else if (!empty($MESSAGE->headers->from)) 293 $fvalue = $MESSAGE->headers->from; 294 } 265 295 // add recipent of original message if reply to all 266 else if ($header =='cc' && !empty($MESSAGE->reply_all)) {296 else if ($header == 'cc' && !empty($MESSAGE->reply_all) && $MESSAGE->reply_all != 'list') { 267 297 if ($v = $MESSAGE->headers->to) 268 298 $fvalue .= $v; 269 270 299 if ($v = $MESSAGE->headers->cc) 271 300 $fvalue .= (!empty($fvalue) ? ', ' : '') . $v; … … 306 335 else if ($header=='bcc' && !empty($MESSAGE->headers->bcc)) 307 336 $fvalue = $MESSAGE->get_header('bcc'); 337 else if ($header=='reply-to' && !empty($MESSAGE->headers->replyto)) 338 $fvalue = $MESSAGE->get_header('reply-to'); 339 else if ($header=='mail-reply-to' && !empty($MESSAGE->headers->others['mail-reply-to'])) 340 $fvalue = $MESSAGE->get_header('followup-to'); 341 else if ($header=='mail-followup-to' && !empty($MESSAGE->headers->others['mail-followup-to'])) 342 $fvalue = $MESSAGE->get_header('mail-followup-to'); 308 343 309 344 $addresses = $IMAP->decode_address_list($fvalue); … … 365 400 { 366 401 if (!empty($addr['mailto'])) 367 $a_recipients[] = mb_strtolower(idn_to_utf8($addr['mailto']));402 $a_recipients[] = strtolower($addr['mailto']); 368 403 } 369 404 … … 374 409 { 375 410 if (!empty($addr['mailto'])) 376 $a_recipients[] = mb_strtolower(idn_to_utf8($addr['mailto']));411 $a_recipients[] = strtolower($addr['mailto']); 377 412 } 378 413 } … … 384 419 if (count($user_identities)) 385 420 { 386 $from_id = 0;387 421 $a_signatures = array(); 388 422 … … 390 424 $select_from = new html_select($field_attrib); 391 425 426 // create SELECT element 392 427 foreach ($user_identities as $sql_arr) 393 428 { 394 $ sql_arr['email']= mb_strtolower(idn_to_utf8($sql_arr['email']));429 $email = mb_strtolower(idn_to_utf8($sql_arr['email'])); 395 430 $identity_id = $sql_arr['identity_id']; 396 $select_from->add(format_email_recipient($ sql_arr['email'], $sql_arr['name']), $identity_id);431 $select_from->add(format_email_recipient($email, $sql_arr['name']), $identity_id); 397 432 398 433 // add signature to array … … 409 444 410 445 if ($compose_mode == RCUBE_COMPOSE_REPLY && is_array($MESSAGE->compose_from)) 411 $MESSAGE->compose_from[] = $sql_arr['email']; 412 413 if (empty($_POST['_from']) && empty($_SESSION['compose']['param']['from'])) 414 { 415 // set draft's identity 416 if ($compose_mode == RCUBE_COMPOSE_DRAFT && strstr($MESSAGE->headers->from, $sql_arr['email'])) 417 $from_id = $sql_arr['identity_id']; 418 // set identity if it's one of the reply-message recipients (with prio for default identity) 419 else if (in_array($sql_arr['email'], $a_recipients) && (empty($from_id) || $sql_arr['standard'])) 420 $from_id = $sql_arr['identity_id']; 421 } 422 } 446 $MESSAGE->compose_from[] = $email; 447 } 448 449 $from_id = 0; 423 450 424 451 // overwrite identity selection with post parameter … … 427 454 else if (!empty($_SESSION['compose']['param']['from'])) 428 455 $from_id = $_SESSION['compose']['param']['from']; 456 else { 457 $return_path = $MESSAGE->headers->others['return-path']; 458 459 // Set identity 460 foreach ($user_identities as $sql_arr) { 461 // set draft's identity 462 if ($compose_mode == RCUBE_COMPOSE_DRAFT) { 463 if (strstr($MESSAGE->headers->from, $sql_arr['email'])) 464 $from_id = $sql_arr['identity_id']; 465 break; 466 } 467 // set identity if it's one of the reply-message recipients (with prio for default identity) 468 else if (in_array($sql_arr['email'], $a_recipients) && (empty($from_id) || $sql_arr['standard'])) 469 $from_id = $sql_arr['identity_id']; 470 // set identity when replying to mailing list 471 else if (strpos($return_path, str_replace('@', '=', $sql_arr['email']).'@') !== false) 472 $from_id = $sql_arr['identity_id']; 473 474 if ($from_id) 475 break; 476 } 477 } 429 478 430 479 $out = $select_from->show($from_id); -
trunk/roundcubemail/program/steps/mail/func.inc
r4024 r4032 339 339 if ($header->flagged) 340 340 $a_msg_flags['flagged'] = 1; 341 if ($header->others['list-post']) 342 $a_msg_flags['ml'] = 1; 341 343 if (preg_match("/(application\/|multipart\/m)/i", $header->ctype)) 342 344 $a_msg_flags['attachment'] = 1; … … 943 945 944 946 // show these headers 945 $standard_headers = array('subject', 'from', 'to', 'cc', 'bcc', 'replyto', 'date'); 947 $standard_headers = array('subject', 'from', 'to', 'cc', 'bcc', 'replyto', 948 'mail-reply-to', 'mail-followup-to', 'date'); 946 949 $output_headers = array(); 947 950 948 951 foreach ($standard_headers as $hkey) { 949 if (!$headers[$hkey]) 952 if ($headers[$hkey]) 953 $value = $headers[$hkey]; 954 else if ($headers['others'][$hkey]) 955 $value = $headers['others'][$hkey]; 956 else 950 957 continue; 951 958 952 959 if ($hkey == 'date') { 953 960 if ($PRINT_MODE) 954 $header_value = format_date($ headers[$hkey], $RCMAIL->config->get('date_long', 'x'));961 $header_value = format_date($value, $RCMAIL->config->get('date_long', 'x')); 955 962 else 956 $header_value = format_date($ headers[$hkey]);963 $header_value = format_date($value); 957 964 } 958 965 else if ($hkey == 'replyto') { 959 966 if ($headers['replyto'] != $headers['from']) 960 $header_value = rcmail_address_string($ headers['replyto'], null, true, $attrib['addicon']);967 $header_value = rcmail_address_string($value, null, true, $attrib['addicon']); 961 968 else 962 969 continue; 963 970 } 971 else if ($hkey == 'mail-reply-to') { 972 if ($headers['mail-replyto'] != $headers['reply-to'] 973 && $headers['reply-to'] != $headers['from'] 974 ) 975 $header_value = rcmail_address_string($value, null, true, $attrib['addicon']); 976 else 977 continue; 978 } 979 else if ($hkey == 'mail-followup-to') { 980 $header_value = rcmail_address_string($value, null, true, $attrib['addicon']); 981 } 964 982 else if (in_array($hkey, array('from', 'to', 'cc', 'bcc'))) 965 $header_value = rcmail_address_string($ headers[$hkey], null, true, $attrib['addicon']);966 else if ($hkey == 'subject' && empty($ headers[$hkey]))983 $header_value = rcmail_address_string($value, null, true, $attrib['addicon']); 984 else if ($hkey == 'subject' && empty($value)) 967 985 $header_value = rcube_label('nosubject'); 968 986 else 969 $header_value = trim($IMAP->decode_header($ headers[$hkey]));970 971 $output_headers[$hkey] = array('title' => rcube_label($hkey), 'value' => $header_value, 'raw' => $ headers[$hkey]);987 $header_value = trim($IMAP->decode_header($value)); 988 989 $output_headers[$hkey] = array('title' => rcube_label($hkey), 'value' => $header_value, 'raw' => $value); 972 990 } 973 991 -
trunk/roundcubemail/program/steps/mail/sendmail.inc
r4009 r4032 315 315 $headers['Reply-To'] = rcmail_email_input_format($identity_arr['reply-to'], false, true); 316 316 317 if (!empty($_POST['_mailfollowupto'])) 318 $headers['Mail-Followup-To'] = rcmail_email_input_format(get_input_value('_mailfollowupto', RCUBE_INPUT_POST, TRUE, $message_charset)); 319 if (!empty($_POST['_mailreplyto'])) 320 $headers['Mail-Reply-To'] = rcmail_email_input_format(get_input_value('_mailreplyto', RCUBE_INPUT_POST, TRUE, $message_charset)); 321 317 322 if (!empty($_SESSION['compose']['reply_msgid'])) 318 323 $headers['In-Reply-To'] = $_SESSION['compose']['reply_msgid']; -
trunk/roundcubemail/program/steps/mail/show.inc
r4011 r4032 62 62 if ($CONFIG['display_next']) 63 63 $OUTPUT->set_env('display_next', true); 64 if ($MESSAGE->headers->others['list-post']) 65 $OUTPUT->set_env('list_post', true); 64 66 65 67 if (!$OUTPUT->ajax_call) -
trunk/roundcubemail/skins/default/common.css
r3989 r4032 463 463 } 464 464 465 .dropbutton, 466 .dropbutton span 467 { 468 float: left; 469 height: 32px; 470 } 471 472 .dropbutton:hover 473 { 474 background: url(images/dbutton.png) 0 0 no-repeat transparent; 475 } 476 477 .dropbutton span 478 { 479 width: 9px; 480 background: url(images/dbutton.png) -53px 0 no-repeat transparent; 481 } 482 483 .dropbutton span:hover 484 { 485 cursor: pointer; 486 background-position: -64px 0; 487 } 488 465 489 466 490 /***** common table settings ******/ … … 753 777 font-weight: bold; 754 778 } 755 -
trunk/roundcubemail/skins/default/functions.js
r4027 r4032 30 30 this.popups = { 31 31 markmenu: {id:'markmessagemenu'}, 32 replyallmenu: {id:'replyallmenu'}, 32 33 searchmenu: {id:'searchmenu', editable:1}, 33 34 messagemenu: {id:'messagemenu'}, … … 294 295 init_compose_form: function() 295 296 { 296 var cc_field = document.getElementById('_cc'), 297 bcc_field = document.getElementById('_bcc'), 297 var f, field, fields = ['cc', 'bcc', 'replyto', 'mailreplyto', 'mailfollowupto'], 298 298 div = document.getElementById('compose-div'), 299 299 headers_div = document.getElementById('compose-headers-div'); 300 300 301 if (cc_field && cc_field.value != '')302 rcmail_ui.show_header_form('cc');303 304 if (bcc_field && bcc_field.value != '')305 rcmail_ui.show_header_form('bcc');301 // Show input elements with non-empty value 302 for (f=0; f<fields.length; f++) { 303 if ((field = $('#_'+fields[f])) && field.length && field.val() != '') 304 rcmail_ui.show_header_form(fields[f]); 305 } 306 306 307 307 // prevent from form data loss when pressing ESC key in IE -
trunk/roundcubemail/skins/default/mail.css
r4008 r4032 14 14 } 15 15 16 #messagetoolbar >a16 #messagetoolbar a 17 17 { 18 18 display: block; … … 28 28 height: 32px; 29 29 padding: 0; 30 margin -right: 10px;30 margin: 0 5px; 31 31 overflow: hidden; 32 32 background: url(images/mail_toolbar.png) 0 0 no-repeat transparent; … … 1229 1229 #compose-cc, 1230 1230 #compose-bcc, 1231 #compose-replyto 1231 #compose-replyto, 1232 #compose-mailreplyto, 1233 #compose-mailfollowupto 1232 1234 { 1233 1235 display: none; -
trunk/roundcubemail/skins/default/templates/compose.html
r4008 r4032 79 79 </td> 80 80 <td class="editfield"><roundcube:object name="composeHeaders" part="replyto" form="form" id="_replyto" size="70" tabindex="5" /></td> 81 </tr><tr id="compose-mailreplyto"> 82 <td class="title top"> 83 <a href="#mailreplyto" onclick="return rcmail_ui.hide_header_form('mailreplyto');"><img src="/images/icons/minus.gif" alt="" title="<roundcube:label name='delete' />" /></a> 84 <label for="_mailreplyto"><roundcube:label name="mailreplyto" /></label> 85 </td> 86 <td class="editfield"><roundcube:object name="composeHeaders" part="mailreplyto" form="form" id="_mailreplyto" size="70" tabindex="6" /></td> 87 </tr><tr id="compose-mailfollowupto"> 88 <td class="title top"> 89 <a href="#mailfollowupto" onclick="return rcmail_ui.hide_header_form('mailfollowupto');"><img src="/images/icons/minus.gif" alt="" title="<roundcube:label name='delete' />" /></a> 90 <label for="_mailfollowupto"><roundcube:label name="mailfollowupto" /></label> 91 </td> 92 <td class="editfield"><roundcube:object name="composeHeaders" part="mailfollowupto" form="form" id="_mailfollowupto" size="70" tabindex="7" /></td> 81 93 </tr><tr> 82 94 <td></td> … … 87 99 <span class="separator">|</span> 88 100 <a href="#reply-to" onclick="return rcmail_ui.show_header_form('replyto')" id="replyto-link"><roundcube:label name="addreplyto" /></a> 101 <span class="separator">|</span> 102 <a href="#mailreply-to" onclick="return rcmail_ui.show_header_form('mailreplyto')" id="mailreplyto-link"><roundcube:label name="addmailreplyto" /></a> 103 <span class="separator">|</span> 104 <a href="#mailfollowup-to" onclick="return rcmail_ui.show_header_form('mailfollowupto')" id="mailfollowupto-link"><roundcube:label name="addmailfollowupto" /></a> 89 105 </td> 90 106 </tr><tr> 91 107 <td class="title"><label for="compose-subject"><roundcube:label name="subject" /></label></td> 92 <td class="editfield"><roundcube:object name="composeSubject" id="compose-subject" form="form" tabindex=" 6" /></td>108 <td class="editfield"><roundcube:object name="composeSubject" id="compose-subject" form="form" tabindex="8" /></td> 93 109 </tr> 94 110 </table> … … 96 112 <div id="compose-div"> 97 113 <div class="boxlistcontent" style="overflow: hidden; top: 0"> 98 <roundcube:object name="composeBody" id="compose-body" form="form" cols="70" rows="20" tabindex=" 7" />114 <roundcube:object name="composeBody" id="compose-body" form="form" cols="70" rows="20" tabindex="9" /> 99 115 </div> 100 116 <div class="boxfooter"> 101 117 <div id="compose-buttons"> 102 <roundcube:button type="input" command="send" class="button mainaction" label="sendmessage" tabindex=" 8" />103 <roundcube:button type="input" command="list" class="button" label="cancel" tabindex=" 9" />118 <roundcube:button type="input" command="send" class="button mainaction" label="sendmessage" tabindex="10" /> 119 <roundcube:button type="input" command="list" class="button" label="cancel" tabindex="11" /> 104 120 </div> 105 121 <div id="compose-editorfooter"> … … 107 123 <span> 108 124 <label><roundcube:label name="editortype" /></label> 109 <roundcube:object name="editorSelector" editorid="compose-body" tabindex="1 0" />125 <roundcube:object name="editorSelector" editorid="compose-body" tabindex="12" /> 110 126 </span> 111 127 </div> -
trunk/roundcubemail/skins/default/templates/mail.html
r3814 r4032 121 121 <roundcube:button command="compose" type="link" class="button compose" classAct="button compose" classSel="button composeSel" title="writenewmessage" content=" " /> 122 122 <roundcube:button command="reply" type="link" class="buttonPas reply" classAct="button reply" classSel="button replySel" title="replytomessage" content=" " /> 123 <span class="dropbutton"> 123 124 <roundcube:button command="reply-all" type="link" class="buttonPas replyAll" classAct="button replyAll" classSel="button replyAllSel" title="replytoallmessage" content=" " /> 125 <span id="replyallmenulink" onclick="rcmail_ui.show_popup('replyallmenu');return false"></span></span> 124 126 <roundcube:button command="forward" type="link" class="buttonPas forward" classAct="button forward" classSel="button forwardSel" title="forwardmessage" content=" " /> 125 127 <roundcube:button command="delete" type="link" class="buttonPas delete" classAct="button delete" classSel="button deleteSel" title="deletemessage" content=" " /> … … 139 141 </div> 140 142 143 <roundcube:include file="/includes/replyallmenu.html" /> 141 144 <roundcube:include file="/includes/messagemenu.html" /> 142 145 -
trunk/roundcubemail/skins/default/templates/message.html
r3814 r4032 22 22 <roundcube:button command="compose" type="link" class="button compose" classAct="button compose" classSel="button composeSel" title="writenewmessage" content=" " /> 23 23 <roundcube:button command="reply" type="link" class="buttonPas reply" classAct="button reply" classSel="button replySel" title="replytomessage" content=" " /> 24 <span class="dropbutton"> 24 25 <roundcube:button command="reply-all" type="link" class="buttonPas replyAll" classAct="button replyAll" classSel="button replyAllSel" title="replytoallmessage" content=" " /> 26 <span id="replyallmenulink" onclick="rcmail_ui.show_popup('replyallmenu');return false"></span></span> 25 27 <roundcube:button command="forward" type="link" class="buttonPas forward" classAct="button forward" classSel="button forwardSel" title="forwardmessage" content=" " /> 26 28 <roundcube:button command="delete" type="link" class="buttonPas delete" classAct="button delete" classSel="button deleteSel" title="deletemessage" content=" " /> … … 30 32 </div> 31 33 34 <roundcube:include file="/includes/replyallmenu.html" /> 32 35 <roundcube:include file="/includes/messagemenu.html" /> 33 36
Note: See TracChangeset
for help on using the changeset viewer.
