Changeset f115416 in github for program/steps/mail/func.inc
- Timestamp:
- Apr 28, 2007 2:07:12 PM (6 years ago)
- Branches:
- master, HEAD, courier-fix, dev-browser-capabilities, pdo, release-0.6, release-0.7, release-0.8
- Children:
- 24f8ce48
- Parents:
- 9e5d051
- File:
-
- 1 edited
-
program/steps/mail/func.inc (modified) (35 diffs)
Legend:
- Unmodified
- Added
- Removed
-
program/steps/mail/func.inc
rfd39346 rf115416 6 6 | | 7 7 | This file is part of the RoundCube Webmail client | 8 | Copyright (C) 2005 , RoundCube Dev. - Switzerland|8 | Copyright (C) 2005-2007, RoundCube Dev. - Switzerland | 9 9 | Licensed under the GNU GPL | 10 10 | | … … 26 26 $EMAIL_ADDRESS_PATTERN = '/([a-z0-9][a-z0-9\-\.\+\_]*@[a-z0-9]([a-z0-9\-][.]?)*[a-z0-9]\\.[a-z]{2,5})/i'; 27 27 28 if (empty($_SESSION['mbox'])) {28 if (empty($_SESSION['mbox'])) 29 29 $_SESSION['mbox'] = $IMAP->get_mailbox_name(); 30 }31 30 32 31 // set imap properties and session vars … … 64 63 65 64 // set current mailbox in client environment 66 $OUTPUT->add_script(sprintf("%s.set_env('mailbox', '%s');", $JS_OBJECT_NAME, $IMAP->get_mailbox_name())); 65 $OUTPUT->set_env('mailbox', $IMAP->get_mailbox_name()); 66 //$OUTPUT->set_pagetitle(rcube_charset_convert($IMAP->get_mailbox_name(), 'UTF-7', 'UTF-8')); 67 67 68 68 if ($CONFIG['trash_mbox']) 69 $OUTPUT->add_script(sprintf("%s.set_env('trash_mailbox', '%s');", $JS_OBJECT_NAME, $CONFIG['trash_mbox'])); 70 69 $OUTPUT->set_env('trash_mailbox', $CONFIG['trash_mbox']); 71 70 if ($CONFIG['drafts_mbox']) 72 $OUTPUT->add_script(sprintf("%s.set_env('drafts_mailbox', '%s');", $JS_OBJECT_NAME, $CONFIG['drafts_mbox'])); 73 71 $OUTPUT->set_env('drafts_mailbox', $CONFIG['drafts_mbox']); 74 72 if ($CONFIG['junk_mbox']) 75 $OUTPUT->add_script(sprintf("%s.set_env('junk_mailbox', '%s');", $JS_OBJECT_NAME, $CONFIG['junk_mbox'])); 73 $OUTPUT->set_env('junk_mailbox', $CONFIG['junk_mbox']); 74 75 if (!$OUTPUT->ajax_call) 76 rcube_add_label('checkingmail'); 77 76 78 77 79 // return the mailboxlist in HTML 78 80 function rcmail_mailbox_list($attrib) 79 81 { 80 global $IMAP, $CONFIG, $OUTPUT, $ JS_OBJECT_NAME, $COMM_PATH;82 global $IMAP, $CONFIG, $OUTPUT, $COMM_PATH; 81 83 static $s_added_script = FALSE; 82 84 static $a_mailboxes; … … 137 139 138 140 if ($type=='ul') 139 $OUTPUT->add_ script(sprintf("%s.gui_object('mailboxlist', '%s');", $JS_OBJECT_NAME, $attrib['id']));141 $OUTPUT->add_gui_object('mailboxlist', $attrib['id']); 140 142 141 143 return $out . "</$type>"; … … 177 179 function rcmail_render_folder_tree_html(&$arrFolders, &$special, &$mbox_name, $maxlength, $nestLevel=0) 178 180 { 179 global $ JS_OBJECT_NAME, $COMM_PATH, $IMAP, $CONFIG, $OUTPUT;181 global $COMM_PATH, $IMAP, $CONFIG, $OUTPUT; 180 182 181 183 $idx = 0; … … 208 210 209 211 // make folder name safe for ids and class names 210 $folder_css = $class_name = preg_replace('/[^a-z0-9\-_]/', '', $folder_lc); 212 $folder_id = preg_replace('/[^A-Za-z0-9\-_]/', '', $folder['id']); 213 $class_name = preg_replace('/[^a-z0-9\-_]/', '', $folder_lc); 211 214 212 215 // set special class for Sent, Drafts, Trash and Junk … … 221 224 222 225 $js_name = htmlspecialchars(JQ($folder['id'])); 223 $out .= sprintf('<li id="rcm bx%s" class="mailbox %s %s%s%s"><a href="%s&_mbox=%s"'.224 ' onclick="return %s.command(\'list\',\'%s\' )"'.225 ' onmouseover="return %s.focus_ mailbox(\'%s\')"' .226 ' onmouseout="return %s.unfocus_ mailbox(\'%s\')"' .227 ' onmouseup="return %s. mbox_mouse_up(\'%s\')"%s>%s</a>',228 $folder_ css,226 $out .= sprintf('<li id="rcmli%s" class="mailbox %s %s%s%s"><a href="%s"'. 227 ' onclick="return %s.command(\'list\',\'%s\',this)"'. 228 ' onmouseover="return %s.focus_folder(\'%s\')"' . 229 ' onmouseout="return %s.unfocus_folder(\'%s\')"' . 230 ' onmouseup="return %s.folder_mouse_up(\'%s\')"%s>%s</a>', 231 $folder_id, 229 232 $class_name, 230 233 $zebra_class, 231 234 $unread_count ? ' unread' : '', 232 235 $folder['id']==$mbox_name ? ' selected' : '', 233 $COMM_PATH, 234 urlencode($folder['id']), 235 $JS_OBJECT_NAME, 236 Q(rcmail_self_url('', array('_mbox' => $folder['id']))), 237 JS_OBJECT_NAME, 236 238 $js_name, 237 $JS_OBJECT_NAME,239 JS_OBJECT_NAME, 238 240 $js_name, 239 $JS_OBJECT_NAME,241 JS_OBJECT_NAME, 240 242 $js_name, 241 $JS_OBJECT_NAME,243 JS_OBJECT_NAME, 242 244 $js_name, 243 245 $title, … … 294 296 function rcmail_message_list($attrib) 295 297 { 296 global $IMAP, $CONFIG, $COMM_PATH, $OUTPUT , $JS_OBJECT_NAME;298 global $IMAP, $CONFIG, $COMM_PATH, $OUTPUT; 297 299 298 300 $skin_path = $CONFIG['skin_path']; … … 359 361 if (!empty($attrib['sortascbutton'])) 360 362 { 361 $sort .= rcube_button(array('command' => 'sort', 362 'prop' => $col.'_ASC', 363 'image' => $attrib['sortascbutton'], 364 'align' => 'absmiddle', 365 'title' => 'sortasc')); 363 $sort .= $OUTPUT->button(array( 364 'command' => 'sort', 365 'prop' => $col.'_ASC', 366 'image' => $attrib['sortascbutton'], 367 'align' => 'absmiddle', 368 'title' => 'sortasc')); 366 369 } 367 370 … … 369 372 if (!empty($attrib['sortdescbutton'])) 370 373 { 371 $sort .= rcube_button(array('command' => 'sort', 372 'prop' => $col.'_DESC', 373 'image' => $attrib['sortdescbutton'], 374 'align' => 'absmiddle', 375 'title' => 'sortdesc')); 374 $sort .= $OUTPUT->button(array( 375 'command' => 'sort', 376 'prop' => $col.'_DESC', 377 'image' => $attrib['sortdescbutton'], 378 'align' => 'absmiddle', 379 'title' => 'sortdesc')); 376 380 } 377 381 } … … 380 384 { 381 385 $col_name = sprintf('<a href="./#sort" onclick="return %s.command(\'sort\',\'%s\',this)" title="%s">%s</a>', 382 $JS_OBJECT_NAME,386 JS_OBJECT_NAME, 383 387 $col, 384 388 rcube_label('sortby'), … … 431 435 $message_icon = $attrib['messageicon']; 432 436 433 // set attachment icon437 // set attachment icon 434 438 if ($attrib['attachmenticon'] && preg_match("/multipart\/[mr]/i", $header->ctype)) 435 439 $attach_icon = $attrib['attachmenticon']; … … 442 446 443 447 $out .= sprintf("<td class=\"icon\">%s</td>\n", $message_icon ? sprintf($image_tag, $skin_path, $message_icon, '') : ''); 444 448 445 449 // format each col 446 450 foreach ($a_show_cols as $col) … … 450 454 else if ($col=='subject') 451 455 { 452 $cont = Q($IMAP->decode_header($header->$col)); 453 if (!$cont) $cont = Q(rcube_label('nosubject')); 454 // firefox/mozilla temporary workaround to pad subject with content so that whitespace in rows responds to drag+drop 455 $cont .= '<img src="./program/blank.gif" height="5" width="1000" alt="" />'; 456 $cont = Q(rcube_imap::decode_mime_string($header->$col, $header->charset)); 457 if (empty($cont)) $cont = Q(rcube_label('nosubject')); 456 458 } 457 459 else if ($col=='size') 458 460 $cont = show_bytes($header->$col); 459 461 else if ($col=='date') 460 $cont = format_date($header->date); //date('m.d.Y G:i:s', strtotime($header->date));462 $cont = format_date($header->date); 461 463 else 462 464 $cont = Q($header->$col); … … 479 481 480 482 // set client env 481 $ javascript .= sprintf("%s.gui_object('mailcontframe', '%s');\n", $JS_OBJECT_NAME, 'mailcontframe');482 $ javascript .= sprintf("%s.gui_object('messagelist', '%s');\n", $JS_OBJECT_NAME, $attrib['id']);483 $ javascript .= sprintf("%s.set_env('messagecount', %d);\n", $JS_OBJECT_NAME, $message_count);484 $ javascript .= sprintf("%s.set_env('current_page', %d);\n", $JS_OBJECT_NAME, $IMAP->list_page);485 $ javascript .= sprintf("%s.set_env('pagecount', %d);\n", $JS_OBJECT_NAME, ceil($message_count/$IMAP->page_size));486 $ javascript .= sprintf("%s.set_env('sort_col', '%s');\n", $JS_OBJECT_NAME, $sort_col);487 $ javascript .= sprintf("%s.set_env('sort_order', '%s');\n", $JS_OBJECT_NAME, $sort_order);483 $OUTPUT->add_gui_object('mailcontframe', 'mailcontframe'); 484 $OUTPUT->add_gui_object('messagelist', $attrib['id']); 485 $OUTPUT->set_env('messagecount', $message_count); 486 $OUTPUT->set_env('current_page', $IMAP->list_page); 487 $OUTPUT->set_env('pagecount', ceil($message_count/$IMAP->page_size)); 488 $OUTPUT->set_env('sort_col', $sort_col); 489 $OUTPUT->set_env('sort_order', $sort_order); 488 490 489 491 if ($attrib['messageicon']) 490 $ javascript .= sprintf("%s.set_env('messageicon', '%s%s');\n", $JS_OBJECT_NAME, $skin_path,$attrib['messageicon']);492 $OUTPUT->set_env('messageicon', $skin_path . $attrib['messageicon']); 491 493 if ($attrib['deletedicon']) 492 $ javascript .= sprintf("%s.set_env('deletedicon', '%s%s');\n", $JS_OBJECT_NAME, $skin_path,$attrib['deletedicon']);494 $OUTPUT->set_env('deletedicon', $skin_path . $attrib['deletedicon']); 493 495 if ($attrib['unreadicon']) 494 $ javascript .= sprintf("%s.set_env('unreadicon', '%s%s');\n", $JS_OBJECT_NAME, $skin_path,$attrib['unreadicon']);496 $OUTPUT->set_env('unreadicon', $skin_path . $attrib['unreadicon']); 495 497 if ($attrib['repliedicon']) 496 $ javascript .= sprintf("%s.set_env('repliedicon', '%s%s');\n", $JS_OBJECT_NAME, $skin_path,$attrib['repliedicon']);498 $OUTPUT->set_env('repliedicon', $skin_path . $attrib['repliedicon']); 497 499 if ($attrib['attachmenticon']) 498 $javascript .= sprintf("%s.set_env('attachmenticon', '%s%s');\n", $JS_OBJECT_NAME, $skin_path, $attrib['attachmenticon']); 499 500 $javascript .= sprintf("%s.set_env('messages', %s);", $JS_OBJECT_NAME, array2js($a_js_message_arr)); 501 502 $OUTPUT->add_script($javascript); 500 $OUTPUT->set_env('attachmenticon', $skin_path . $attrib['attachmenticon']); 501 502 $OUTPUT->set_env('messages', array2js($a_js_message_arr)); 503 503 504 $OUTPUT->include_script('list.js'); 504 505 505 506 return $out; 506 507 } 507 508 509 508 510 509 … … 512 511 function rcmail_js_message_list($a_headers, $insert_top=FALSE) 513 512 { 514 global $CONFIG, $IMAP; 515 516 $commands = ''; 513 global $CONFIG, $IMAP, $OUTPUT; 514 517 515 $a_show_cols = is_array($CONFIG['list_cols']) ? $CONFIG['list_cols'] : array('subject'); 518 516 519 517 // show 'to' instead of from in sent messages 520 if (($IMAP->get_mailbox_name() ==$CONFIG['sent_mbox'] || $IMAP->get_mailbox_name()==$CONFIG['drafts_mbox'])521 && ( $f = array_search('from', $a_show_cols)) && !array_search('to', $a_show_cols))518 if (($IMAP->get_mailbox_name() == $CONFIG['sent_mbox'] || $IMAP->get_mailbox_name() == $CONFIG['drafts_mbox']) 519 && (($f = array_search('from', $a_show_cols)) !== false) && array_search('to', $a_show_cols) === false) 522 520 $a_show_cols[$f] = 'to'; 523 521 524 $ commands .= sprintf("this.set_message_coltypes(%s);\n", array2js($a_show_cols));522 $OUTPUT->command('set_message_coltypes', $a_show_cols); 525 523 526 524 // loop through message headers … … 530 528 $a_msg_cols = array(); 531 529 $a_msg_flags = array(); 532 530 533 531 // format each col; similar as in rcmail_message_list() 534 532 foreach ($a_show_cols as $col) … … 538 536 else if ($col=='subject') 539 537 { 540 $cont = Q( $IMAP->decode_header($header->$col));538 $cont = Q(rcube_imap::decode_mime_string($header->$col, $header->charset)); 541 539 if (!$cont) $cont = Q(rcube_label('nosubject')); 542 540 } … … 544 542 $cont = show_bytes($header->$col); 545 543 else if ($col=='date') 546 $cont = format_date($header->date); //date('m.d.Y G:i:s', strtotime($header->date));544 $cont = format_date($header->date); 547 545 else 548 546 $cont = Q($header->$col); … … 554 552 $a_msg_flags['unread'] = $header->seen ? 0 : 1; 555 553 $a_msg_flags['replied'] = $header->answered ? 1 : 0; 556 $commands .= sprintf("this.add_message_row(%s, %s, %s, %b, %b);\n", 557 $header->uid, 558 array2js($a_msg_cols), 559 array2js($a_msg_flags), 560 preg_match("/multipart\/m/i", $header->ctype), 561 $insert_top); 562 } 563 564 return $commands; 554 $OUTPUT->command('add_message_row', 555 $header->uid, 556 $a_msg_cols, 557 $a_msg_flags, 558 preg_match("/multipart\/m/i", $header->ctype), 559 $insert_top); 560 } 565 561 } 566 562 … … 569 565 function rcmail_messagecontent_frame($attrib) 570 566 { 571 global $OUTPUT , $JS_OBJECT_NAME;567 global $OUTPUT; 572 568 573 569 if (empty($attrib['id'])) … … 582 578 $attrib_str); 583 579 584 $OUTPUT->add_script("$JS_OBJECT_NAME.set_env('contentframe', '$framename');"); 580 $OUTPUT->set_env('contentframe', $framename); 581 $OUTPUT->set_env('blankpage', $attrib['src'] ? $OUTPUT->abs_url($attrib['src']) : 'program/blank.gif'); 585 582 586 583 return $out; 587 584 } 588 585 589 // return code for search function590 function rcmail_search_form($attrib)591 {592 global $OUTPUT, $JS_OBJECT_NAME;593 594 // add some labels to client595 rcube_add_label('searching');596 597 $attrib['name'] = '_q';598 599 if (empty($attrib['id']))600 $attrib['id'] = 'rcmqsearchbox';601 602 $input_q = new textfield($attrib);603 $out = $input_q->show();604 605 $OUTPUT->add_script(sprintf("%s.gui_object('qsearchbox', '%s');",606 $JS_OBJECT_NAME,607 $attrib['id']));608 609 // add form tag around text field610 if (empty($attrib['form']))611 $out = sprintf('<form name="rcmqsearchform" action="./" '.612 'onsubmit="%s.command(\'search\');return false" style="display:inline;">%s</form>',613 $JS_OBJECT_NAME,614 $out);615 616 return $out;617 }618 619 586 620 587 function rcmail_messagecount_display($attrib) 621 588 { 622 global $IMAP, $OUTPUT , $JS_OBJECT_NAME;589 global $IMAP, $OUTPUT; 623 590 624 591 if (!$attrib['id']) 625 592 $attrib['id'] = 'rcmcountdisplay'; 626 593 627 $OUTPUT->add_script(sprintf("%s.gui_object('countdisplay', '%s');", 628 $JS_OBJECT_NAME, 629 $attrib['id'])); 594 $OUTPUT->add_gui_object('countdisplay', $attrib['id']); 630 595 631 596 // allow the following attributes to be added to the <span> tag … … 642 607 function rcmail_quota_display($attrib) 643 608 { 644 global $OUTPUT, $ JS_OBJECT_NAME, $COMM_PATH;609 global $OUTPUT, $COMM_PATH; 645 610 646 611 if (!$attrib['id']) 647 612 $attrib['id'] = 'rcmquotadisplay'; 648 613 649 $OUTPUT->add_ script(sprintf("%s.gui_object('quotadisplay', '%s');", $JS_OBJECT_NAME, $attrib['id']));614 $OUTPUT->add_gui_object('quotadisplay', $attrib['id']); 650 615 651 616 // allow the following attributes to be added to the <span> tag … … 676 641 { 677 642 $attrib = array('width' => 100, 'height' => 14); 678 $quota_text = sprintf('<img src="%s&_action=quotaimg&u=%s&q=%d&w=%d&h=%d" width="%d" height="%d" alt="%s" title="%s / %s" />', 679 $COMM_PATH, 643 $quota_text = sprintf('<img src="./bin/quotaimg.php?u=%s&q=%d&w=%d&h=%d" width="%d" height="%d" alt="%s" title="%s / %s" />', 680 644 $quota['used'], $quota['total'], 681 645 $attrib['width'], $attrib['height'], … … 724 688 function rcmail_print_body($part, $safe=FALSE, $plain=FALSE) 725 689 { 726 global $IMAP, $REMOTE_OBJECTS , $JS_OBJECT_NAME;690 global $IMAP, $REMOTE_OBJECTS; 727 691 728 692 $body = is_array($part->replaces) ? strtr($part->body, $part->replaces) : $part->body; … … 796 760 797 761 $convert_patterns[] = '/([a-z0-9][a-z0-9\-\.\+\_]*@[a-z0-9]([a-z0-9\-][.]?)*[a-z0-9]\\.[a-z]{2,5})/ie'; 798 $convert_replaces[] = "rcmail_str_replacement('<a href=\"mailto:\\1\" onclick=\"return $JS_OBJECT_NAME.command(\'compose\',\'\\1\',this)\">\\1</a>', \$replace_strings)";762 $convert_replaces[] = "rcmail_str_replacement('<a href=\"mailto:\\1\" onclick=\"return ".JS_OBJECT_NAME.".command(\'compose\',\'\\1\',this)\">\\1</a>', \$replace_strings)"; 799 763 800 764 if ($part->ctype_parameters['format'] != 'flowed') … … 1053 1017 if (!$headers) 1054 1018 $headers = is_object($MESSAGE['headers']) ? get_object_vars($MESSAGE['headers']) : $MESSAGE['headers']; 1055 1019 1056 1020 $header_count = 0; 1057 1021 … … 1073 1037 $header_value = Q(rcmail_address_string($headers[$hkey], NULL, $attrib['addicon']), 'show'); 1074 1038 else 1075 $header_value = Q( $IMAP->decode_header($headers[$hkey]));1039 $header_value = Q(rcube_imap::decode_mime_string($headers[$hkey], $headers['charset'])); 1076 1040 1077 1041 $out .= "\n<tr>\n"; … … 1090 1054 function rcmail_message_body($attrib) 1091 1055 { 1092 global $CONFIG, $OUTPUT, $MESSAGE, $IMAP, $GET_URL, $REMOTE_OBJECTS , $JS_OBJECT_NAME;1056 global $CONFIG, $OUTPUT, $MESSAGE, $IMAP, $GET_URL, $REMOTE_OBJECTS; 1093 1057 1094 1058 if (!is_array($MESSAGE['parts']) && !$MESSAGE['body']) … … 1170 1134 // tell client that there are blocked remote objects 1171 1135 if ($REMOTE_OBJECTS && !$safe_mode) 1172 $OUTPUT-> add_script(sprintf("%s.set_env('blockedobjects', true);", $JS_OBJECT_NAME));1136 $OUTPUT->set_env('blockedobjects', true); 1173 1137 1174 1138 $out .= "\n</div>"; … … 1262 1226 if (stristr((string)$attrib['href'], 'mailto:')) 1263 1227 $attrib['onclick'] = sprintf("return %s.command('compose','%s',this)", 1264 $GLOBALS['JS_OBJECT_NAME'],1228 JS_OBJECT_NAME, 1265 1229 JQ(substr($attrib['href'], 7))); 1266 1230 else if (!empty($attrib['href']) && $attrib['href']{0}!='#') … … 1384 1348 function rcmail_address_string($input, $max=NULL, $addicon=NULL) 1385 1349 { 1386 global $IMAP, $PRINT_MODE, $CONFIG, $OUTPUT, $ JS_OBJECT_NAME, $EMAIL_ADDRESS_PATTERN;1350 global $IMAP, $PRINT_MODE, $CONFIG, $OUTPUT, $EMAIL_ADDRESS_PATTERN; 1387 1351 1388 1352 $a_parts = $IMAP->decode_address_list($input); … … 1404 1368 $out .= sprintf('<a href="mailto:%s" onclick="return %s.command(\'compose\',\'%s\',this)" class="rcmContactAddress" title="%s">%s</a>', 1405 1369 Q($part['mailto']), 1406 $JS_OBJECT_NAME,1370 JS_OBJECT_NAME, 1407 1371 JQ($part['mailto']), 1408 1372 Q($part['mailto']), … … 1411 1375 if ($addicon) 1412 1376 $out .= sprintf(' <a href="#add" onclick="return %s.command(\'add-contact\',\'%s\',this)" title="%s"><img src="%s%s" alt="add" border="0" /></a>', 1413 $JS_OBJECT_NAME,1377 JS_OBJECT_NAME, 1414 1378 urlencode($part['string']), 1415 1379 rcube_label('addtoaddressbook'), … … 1501 1465 unset($_SESSION['compose']); 1502 1466 } 1503 1504 1467 1468 1469 // register UI objects 1470 $OUTPUT->add_handlers(array( 1471 'mailboxlist' => 'rcmail_mailbox_list', 1472 'messages' => 'rcmail_message_list', 1473 'messagecountdisplay' => 'rcmail_messagecount_display', 1474 'quotadisplay' => 'rcmail_quota_display', 1475 'messageheaders' => 'rcmail_message_headers', 1476 'messagebody' => 'rcmail_message_body', 1477 'messagecontentframe' => 'rcmail_messagecontent_frame', 1478 'messagepartframe' => 'rcmail_message_part_frame', 1479 'messagepartcontrols' => 'rcmail_message_part_controls', 1480 'searchform' => 'rcmail_search_form' 1481 )); 1482 1505 1483 ?>
Note: See TracChangeset
for help on using the changeset viewer.
