| | |
| | | if (is_array($_SESSION['compose']['attachments'][$id])) |
| | | { |
| | | @unlink($_SESSION['compose']['attachments'][$id]['path']); |
| | | $_SESSION['compose']['attachments'][$id] = NULL; |
| | | unset($_SESSION['compose']['attachments'][$id]); |
| | | $OUTPUT->command('remove_from_attachment_list', "rcmfile$id"); |
| | | $OUTPUT->send(); |
| | | exit; |
| | | } |
| | | exit; |
| | | } |
| | | |
| | | if ($RCMAIL->action=='display-attachment' && preg_match('/^rcmfile([0-9]+)$/', $_GET['_file'], $regs)) |
| | |
| | | if (!is_array($_SESSION['compose']) || $_SESSION['compose']['id'] != get_input_value('_id', RCUBE_INPUT_GET)) |
| | | { |
| | | rcmail_compose_cleanup(); |
| | | $_SESSION['compose'] = array('id' => uniqid(rand())); |
| | | $_SESSION['compose'] = array('id' => uniqid(rand()), 'param' => array_map('strip_tags', $_GET)); |
| | | |
| | | // process values like "mailto:foo@bar.com?subject=new+message&cc=another" |
| | | if ($_SESSION['compose']['param']['_to']) { |
| | | $mailto = explode('?', $_SESSION['compose']['param']['_to']); |
| | | if (count($mailto) > 1) { |
| | | $_SESSION['compose']['param']['_to'] = $mailto[0]; |
| | | parse_str($mailto[1], $query); |
| | | foreach ($query as $f => $val) |
| | | $_SESSION['compose']['param']["_$f"] = $val; |
| | | } |
| | | } |
| | | |
| | | // redirect to a unique URL with all parameters stored in session |
| | | $OUTPUT->redirect(array('_action' => 'compose', '_id' => $_SESSION['compose']['id'])); |
| | | } |
| | | |
| | | // add some labels to client |
| | |
| | | |
| | | |
| | | // get reference message and set compose mode |
| | | if ($msg_uid = get_input_value('_reply_uid', RCUBE_INPUT_GET)) |
| | | if ($msg_uid = $_SESSION['compose']['param']['_reply_uid']) |
| | | $compose_mode = RCUBE_COMPOSE_REPLY; |
| | | else if ($msg_uid = get_input_value('_forward_uid', RCUBE_INPUT_GET)) |
| | | else if ($msg_uid = $_SESSION['compose']['param']['_forward_uid']) |
| | | $compose_mode = RCUBE_COMPOSE_FORWARD; |
| | | else if ($msg_uid = get_input_value('_draft_uid', RCUBE_INPUT_GET)) |
| | | else if ($msg_uid = $_SESSION['compose']['param']['_draft_uid']) |
| | | $compose_mode = RCUBE_COMPOSE_DRAFT; |
| | | |
| | | |
| | | if (!empty($msg_uid)) |
| | | { |
| | |
| | | $_SESSION['compose']['reply_msgid'] = $MESSAGE->headers->messageID; |
| | | $_SESSION['compose']['references'] = trim($MESSAGE->headers->references . " " . $MESSAGE->headers->messageID); |
| | | |
| | | if (!empty($_GET['_all'])) |
| | | if (!empty($_SESSION['compose']['param']['_all'])) |
| | | $MESSAGE->reply_all = 1; |
| | | } |
| | | else if ($compose_mode == RCUBE_COMPOSE_DRAFT) |
| | | { |
| | | if($MESSAGE->headers->in_reply_to) |
| | | { |
| | | // TODO: how to get reply_uid/forward_uid value, maybe we must set X-Reply-UID/X-Forward-UID |
| | | // $_SESSION['compose']['reply_uid'] = ? |
| | | // $_SESSION['compose']['forward_uid'] = ? |
| | | $_SESSION['compose']['reply_msgid'] = '<'.$MESSAGE->headers->in_reply_to.'>'; |
| | | } |
| | | $_SESSION['compose']['references'] = $MESSAGE->headers->references; |
| | | } |
| | | else if ($compose_mode == RCUBE_COMPOSE_FORWARD) |
| | | { |
| | | $_SESSION['compose']['forward_uid'] = $msg_uid; |
| | | } |
| | | else if ($compose_mode == RCUBE_COMPOSE_DRAFT) |
| | | { |
| | | $_SESSION['compose']['draft_uid'] = $msg_uid; |
| | | } |
| | | } |
| | | |
| | |
| | | $header = 'to'; |
| | | |
| | | // we have a set of recipients stored is session |
| | | if (($mailto_id = get_input_value('_mailto', RCUBE_INPUT_GET)) && $_SESSION['mailto'][$mailto_id]) |
| | | $fvalue = $_SESSION['mailto'][$mailto_id]; |
| | | else if (!empty($_GET['_to'])) |
| | | $fvalue = get_input_value('_to', RCUBE_INPUT_GET); |
| | | |
| | | if (($mailto_id = $_SESSION['compose']['param']['_mailto']) && $_SESSION['mailto'][$mailto_id]) |
| | | $fvalue = urldecode($_SESSION['mailto'][$mailto_id]); |
| | | |
| | | case 'cc': |
| | | if (!$fname) |
| | | { |
| | |
| | | $fname = '_replyto'; |
| | | $allow_attrib = array('id', 'class', 'style', 'size', 'tabindex'); |
| | | $field_type = 'html_inputfield'; |
| | | break; |
| | | break; |
| | | } |
| | | |
| | | if ($fname && !empty($_POST[$fname])) |
| | | $fvalue = get_input_value($fname, RCUBE_INPUT_POST, TRUE); |
| | | else if ($fname && !$fvalue && !empty($_SESSION['compose']['param'][$fname])) |
| | | $fvalue = $_SESSION['compose']['param'][$fname]; |
| | | |
| | | else if ($header && $compose_mode == RCUBE_COMPOSE_REPLY) |
| | | { |
| | |
| | | { |
| | | $to_addresses = $IMAP->decode_address_list($fvalue); |
| | | $fvalue = ''; |
| | | |
| | | foreach ($to_addresses as $addr_part) |
| | | { |
| | | if (!empty($addr_part['mailto']) && !in_array($addr_part['mailto'], $sa_recipients) && (!$MESSAGE->compose_from || !in_array($addr_part['mailto'], $MESSAGE->compose_from))) |
| | | if (!empty($addr_part['mailto']) |
| | | && !in_array($addr_part['mailto'], $sa_recipients) |
| | | && (!$MESSAGE->compose_from |
| | | || !in_array($addr_part['mailto'], $MESSAGE->compose_from) |
| | | || count($to_addresses)==1)) // allow reply to yourself |
| | | { |
| | | $fvalue .= (strlen($fvalue) ? ', ':'').$addr_part['string']; |
| | | $sa_recipients[] = $addr_part['mailto']; |
| | |
| | | if ($fname && $field_type) |
| | | { |
| | | // pass the following attributes to the form class |
| | | $field_attrib = array('name' => $fname); |
| | | $field_attrib = array('name' => $fname, 'spellcheck' => 'false'); |
| | | foreach ($attrib as $attr => $value) |
| | | if (in_array($attr, $allow_attrib)) |
| | | $field_attrib[$attr] = $value; |
| | |
| | | // load draft message body |
| | | else if ($compose_mode == RCUBE_COMPOSE_DRAFT) |
| | | $body = rcmail_create_draft_body($body, $isHtml); |
| | | |
| | | if ($isHtml) { |
| | | // replace cid with href in inline images links |
| | | foreach ((array)$_SESSION['compose']['attachments'] as $pid => $attachment) { |
| | | if ($attachment['content_id']) { |
| | | $body = str_replace('cid:'. $attachment['content_id'], |
| | | $OUTPUT->app->comm_path.'&_action=display-attachment&_file=rcmfile'.$pid, $body); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | else if (!empty($_SESSION['compose']['param']['_body'])) |
| | | { |
| | | $body = $_SESSION['compose']['param']['_body']; |
| | | } |
| | | |
| | | $tinylang = substr($_SESSION['language'], 0, 2); |
| | | if (!file_exists('program/js/tiny_mce/langs/'.$tinylang.'.js')) |
| | | $lang = $tinylang = strtolower(substr($_SESSION['language'], 0, 2)); |
| | | if (!file_exists(INSTALL_PATH . 'program/js/tiny_mce/langs/'.$tinylang.'.js')) |
| | | $tinylang = 'en'; |
| | | |
| | | $OUTPUT->include_script('tiny_mce/tiny_mce.js'); |
| | | $OUTPUT->include_script("editor.js"); |
| | | $OUTPUT->add_script('rcmail_editor_init("$__skin_path", "'.$tinylang.'");'); |
| | | $OUTPUT->add_script('rcmail_editor_init("$__skin_path", "'.JQ($tinylang).'", '.intval($CONFIG['enable_spellcheck']).');'); |
| | | |
| | | $out = $form_start ? "$form_start\n" : ''; |
| | | |
| | |
| | | $msgtype = new html_hiddenfield(array('name' => '_is_html', 'value' => ($isHtml?"1":"0"))); |
| | | $out .= $msgtype->show(); |
| | | |
| | | // If desired, set this text area to be editable by TinyMCE |
| | | if ($isHtml) $attrib['class'] = "mce_editor"; |
| | | // If desired, set this textarea to be editable by TinyMCE |
| | | if ($isHtml) $attrib['class'] = 'mce_editor'; |
| | | $textarea = new html_textarea($attrib); |
| | | $out .= $textarea->show($body); |
| | | $out .= $form_end ? "\n$form_end" : ''; |
| | | |
| | | // include GoogieSpell |
| | | if (!empty($CONFIG['enable_spellcheck']) && !$isHtml) |
| | | { |
| | | $lang_set = ''; |
| | | if (!empty($CONFIG['spellcheck_languages']) && is_array($CONFIG['spellcheck_languages'])) |
| | | $lang_set = "googie.setLanguages(".array2js($CONFIG['spellcheck_languages']).");\n"; |
| | | if (!empty($CONFIG['enable_spellcheck'])) { |
| | | $spellcheck_langs = (array)$RCMAIL->config->get('spellcheck_languages', array('da'=>'Dansk', 'de'=>'Deutsch', 'en' => 'English', 'es'=>'Español', 'fr'=>'Français', 'it'=>'Italiano', 'nl'=>'Nederlands', 'pl'=>'Polski', 'pt'=>'Português', 'fi'=>'Suomi', 'sv'=>'Svenska')); |
| | | if (!$spellcheck_langs[$lang]) |
| | | $lang = 'en'; |
| | | |
| | | $editor_lang_set = array(); |
| | | foreach ($spellcheck_langs as $key => $name) { |
| | | $editor_lang_set[] = ($key == $lang ? '+' : '') . JQ($name).'='.JQ($key); |
| | | } |
| | | |
| | | $OUTPUT->include_script('googiespell.js'); |
| | | $OUTPUT->add_script(sprintf( |
| | |
| | | "googie.lang_rsm_edt = \"%s\";\n". |
| | | "googie.lang_close = \"%s\";\n". |
| | | "googie.lang_revert = \"%s\";\n". |
| | | "googie.lang_no_error_found = \"%s\";\n%s". |
| | | "googie.lang_no_error_found = \"%s\";\n". |
| | | "googie.setLanguages(%s);\n". |
| | | "googie.setCurrentLanguage('%s');\n". |
| | | "googie.decorateTextarea('%s');\n". |
| | | "%s.set_env('spellcheck', googie);", |
| | |
| | | JQ(Q(rcube_label('close'))), |
| | | JQ(Q(rcube_label('revertto'))), |
| | | JQ(Q(rcube_label('nospellerrors'))), |
| | | $lang_set, |
| | | substr($_SESSION['language'], 0, 2), |
| | | json_serialize($spellcheck_langs), |
| | | $lang, |
| | | $attrib['id'], |
| | | JS_OBJECT_NAME), 'foot'); |
| | | |
| | | rcube_add_label('checking'); |
| | | } |
| | | $OUTPUT->set_env('spellcheck_langs', join(',', $editor_lang_set)); |
| | | } |
| | | |
| | | $out .= "\n".'<iframe name="savetarget" src="program/blank.gif" style="width:0;height:0;visibility:hidden;"></iframe>'; |
| | | $out .= "\n".'<iframe name="savetarget" src="program/blank.gif" style="width:0;height:0;border:none;visibility:hidden;"></iframe>'; |
| | | |
| | | return $out; |
| | | } |
| | |
| | | |
| | | function rcmail_create_reply_body($body, $bodyIsHtml) |
| | | { |
| | | global $IMAP, $MESSAGE; |
| | | global $IMAP, $MESSAGE, $OUTPUT; |
| | | |
| | | if (! $bodyIsHtml) |
| | | { |
| | | // soft-wrap message first |
| | | $body = wordwrap($body, 75); |
| | | $body = rcmail_wrap_quoted($body, 75); |
| | | |
| | | // split body into single lines |
| | | $a_lines = preg_split('/\r?\n/', $body); |
| | |
| | | $body = join("\n", $a_lines); |
| | | |
| | | // add title line |
| | | $prefix = sprintf("\n\n\nOn %s, %s wrote:\n", |
| | | $prefix = sprintf("On %s, %s wrote:\n", |
| | | $MESSAGE->headers->date, |
| | | $MESSAGE->get_header('from')); |
| | | |
| | |
| | | } |
| | | else |
| | | { |
| | | $prefix = sprintf("<br /><br />On %s, %s wrote:<br />\n", |
| | | $prefix = sprintf("On %s, %s wrote:<br />\n", |
| | | $MESSAGE->headers->date, |
| | | Q($MESSAGE->get_header('from'))); |
| | | htmlspecialchars(Q($MESSAGE->get_header('from'), 'replace'), ENT_COMPAT, $OUTPUT->get_charset(), true)); |
| | | $prefix .= '<blockquote type="cite" style="padding-left:5px; border-left:#1010ff 2px solid; margin-left:5px; width:100%">'; |
| | | $suffix = "</blockquote>"; |
| | | |
| | | rcmail_write_inline_attachments($MESSAGE); |
| | | } |
| | | |
| | | return $prefix.$body.$suffix; |
| | |
| | | |
| | | function rcmail_create_forward_body($body, $bodyIsHtml) |
| | | { |
| | | global $IMAP, $MESSAGE; |
| | | global $IMAP, $MESSAGE, $OUTPUT; |
| | | |
| | | if (!$bodyIsHtml) |
| | | { |
| | | // soft-wrap message first |
| | | $body = wordwrap($body, 80); |
| | | |
| | | $prefix = sprintf("\n\n\n-------- Original Message --------\nSubject: %s\nDate: %s\nFrom: %s\nTo: %s\n\n", |
| | | $MESSAGE->subject, |
| | | $MESSAGE->headers->date, |
| | | $MESSAGE->get_header('from'), |
| | | $MESSAGE->get_header('to')); |
| | | $prefix = "\n\n\n-------- Original Message --------\n"; |
| | | $prefix .= 'Subject: ' . $MESSAGE->subject . "\n"; |
| | | $prefix .= 'Date: ' . $MESSAGE->headers->date . "\n"; |
| | | $prefix .= 'From: ' . $MESSAGE->get_header('from') . "\n"; |
| | | $prefix .= 'To: ' . $MESSAGE->get_header('to') . "\n"; |
| | | if ($MESSAGE->headers->replyto && $MESSAGE->headers->replyto != $MESSAGE->headers->from) |
| | | $prefix .= 'Reply-To: ' . $MESSAGE->get_header('replyto') . "\n"; |
| | | $prefix .= "\n"; |
| | | } |
| | | else |
| | | { |
| | |
| | | "<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">Subject: </th><td>%s</td></tr>" . |
| | | "<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">Date: </th><td>%s</td></tr>" . |
| | | "<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">From: </th><td>%s</td></tr>" . |
| | | "<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">To: </th><td>%s</td></tr>" . |
| | | "</tbody></table><br>", |
| | | "<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">To: </th><td>%s</td></tr>", |
| | | Q($MESSAGE->subject), |
| | | Q($MESSAGE->headers->date), |
| | | Q($MESSAGE->get_header('from')), |
| | | Q($MESSAGE->get_header('to'))); |
| | | htmlspecialchars(Q($MESSAGE->get_header('from'), 'replace'), ENT_COMPAT, $OUTPUT->get_charset(), true), |
| | | htmlspecialchars(Q($MESSAGE->get_header('to'), 'replace'), ENT_COMPAT, $OUTPUT->get_charset(), true)); |
| | | |
| | | if ($MESSAGE->headers->replyto && $MESSAGE->headers->replyto != $MESSAGE->headers->from) |
| | | $prefix .= sprintf("<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">Reply-To: </th><td>%s</td></tr>", |
| | | htmlspecialchars(Q($MESSAGE->get_header('replyto'), 'replace'), ENT_COMPAT, $OUTPUT->get_charset(), true)); |
| | | |
| | | $prefix .= "</tbody></table><br>"; |
| | | } |
| | | |
| | | // add attachments |
| | | if (!isset($_SESSION['compose']['forward_attachments']) && is_array($MESSAGE->mime_parts)) |
| | | rcmail_write_compose_attachments($MESSAGE); |
| | | rcmail_write_compose_attachments($MESSAGE, $bodyIsHtml); |
| | | |
| | | return $prefix.$body; |
| | | } |
| | |
| | | if (!isset($_SESSION['compose']['forward_attachments']) |
| | | && is_array($MESSAGE->mime_parts) |
| | | && count($MESSAGE->mime_parts) > 0) |
| | | rcmail_write_compose_attachments($MESSAGE); |
| | | rcmail_write_compose_attachments($MESSAGE, $bodyIsHtml); |
| | | |
| | | return $body; |
| | | } |
| | | |
| | | |
| | | function rcmail_write_compose_attachments(&$message) |
| | | function rcmail_write_compose_attachments(&$message, $bodyIsHtml) |
| | | { |
| | | global $RCMAIL, $IMAP; |
| | | |
| | | $temp_dir = unslashify($RCMAIL->config->get('temp_dir')); |
| | | |
| | | if (!is_array($_SESSION['compose']['attachments'])) |
| | | $_SESSION['compose']['attachments'] = array(); |
| | | |
| | | foreach ((array)$message->mime_parts as $pid => $part) |
| | | { |
| | | if ($part->ctype_primary != 'message' && |
| | | ($part->disposition=='attachment' || $part->disposition=='inline' || $part->headers['content-id'] || |
| | | (empty($part->disposition) && $part->filename))) |
| | | if (($part->ctype_primary != 'message' || !$bodyIsHtml) && |
| | | ($part->disposition=='attachment' || $part->disposition=='inline' || $part->headers['content-id'] |
| | | || (empty($part->disposition) && $part->filename))) |
| | | { |
| | | $tmp_path = tempnam($temp_dir, 'rcmAttmnt'); |
| | | if ($fp = fopen($tmp_path, 'w')) |
| | | { |
| | | fwrite($fp, $message->get_part_content($pid)); |
| | | fclose($fp); |
| | | |
| | | $_SESSION['compose']['attachments'][] = array( |
| | | 'mimetype' => $part->ctype_primary . '/' . $part->ctype_secondary, |
| | | 'name' => $part->filename, |
| | | 'path' => $tmp_path |
| | | ); |
| | | } |
| | | if ($attachment = rcmail_save_attachment($message, $pid)) |
| | | $_SESSION['compose']['attachments'][] = $attachment; |
| | | } |
| | | } |
| | | |
| | | $_SESSION['compose']['forward_attachments'] = true; |
| | | } |
| | | |
| | | |
| | | function rcmail_write_inline_attachments(&$message) |
| | | { |
| | | foreach ((array)$message->mime_parts as $pid => $part) |
| | | { |
| | | if ($part->content_id && $part->filename) |
| | | { |
| | | if ($attachment = rcmail_save_attachment($message, $pid)) |
| | | $_SESSION['compose']['attachments'][] = $attachment; |
| | | } |
| | | } |
| | | } |
| | | |
| | | function rcmail_save_attachment(&$message, $pid) |
| | | { |
| | | global $RCMAIL; |
| | | |
| | | $temp_dir = unslashify($RCMAIL->config->get('temp_dir')); |
| | | $tmp_path = tempnam($temp_dir, 'rcmAttmnt'); |
| | | $part = $message->mime_parts[$pid]; |
| | | |
| | | if ($fp = fopen($tmp_path, 'w')) |
| | | { |
| | | $message->get_part_content($pid, $fp); |
| | | fclose($fp); |
| | | |
| | | return array( |
| | | 'mimetype' => $part->ctype_primary . '/' . $part->ctype_secondary, |
| | | 'name' => $part->filename, |
| | | 'path' => $tmp_path, |
| | | 'content_id' => $part->content_id |
| | | ); |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | unset($attrib['form']); |
| | | |
| | | $attrib['name'] = '_subject'; |
| | | $attrib['spellcheck'] = 'true'; |
| | | $textfield = new html_inputfield($attrib); |
| | | |
| | | $subject = ''; |
| | | |
| | | // use subject from post |
| | | if (isset($_POST['_subject'])) |
| | | if (isset($_POST['_subject'])) { |
| | | $subject = get_input_value('_subject', RCUBE_INPUT_POST, TRUE); |
| | | |
| | | } |
| | | // create a reply-subject |
| | | else if ($compose_mode == RCUBE_COMPOSE_REPLY) |
| | | { |
| | | else if ($compose_mode == RCUBE_COMPOSE_REPLY) { |
| | | if (eregi('^re:', $MESSAGE->subject)) |
| | | $subject = $MESSAGE->subject; |
| | | else |
| | | $subject = 'Re: '.$MESSAGE->subject; |
| | | } |
| | | |
| | | // create a forward-subject |
| | | else if ($compose_mode == RCUBE_COMPOSE_FORWARD) |
| | | { |
| | | else if ($compose_mode == RCUBE_COMPOSE_FORWARD) { |
| | | if (eregi('^fwd:', $MESSAGE->subject)) |
| | | $subject = $MESSAGE->subject; |
| | | else |
| | | $subject = 'Fwd: '.$MESSAGE->subject; |
| | | } |
| | | |
| | | // creeate a draft-subject |
| | | else if ($compose_mode == RCUBE_COMPOSE_DRAFT) |
| | | else if ($compose_mode == RCUBE_COMPOSE_DRAFT) { |
| | | $subject = $MESSAGE->subject; |
| | | } |
| | | else if (!empty($_SESSION['compose']['param']['_subject'])) { |
| | | $subject = $_SESSION['compose']['param']['_subject']; |
| | | } |
| | | |
| | | $out = $form_start ? "$form_start\n" : ''; |
| | | $out .= $textfield->show($subject); |
| | |
| | | $button = Q(rcube_label('delete')); |
| | | |
| | | foreach ($_SESSION['compose']['attachments'] as $id => $a_prop) |
| | | { |
| | | if (empty($a_prop)) |
| | | continue; |
| | | |
| | | $out .= html::tag('li', array('id' => "rcmfile".$id), |
| | | html::a(array( |
| | | 'href' => "#delete", |
| | | 'title' => rcube_label('delete'), |
| | | 'onclick' => sprintf("return %s.command(\'remove-attachment\',\'rcmfile%d\', this)", JS_OBJECT_NAME, $id)), |
| | | 'onclick' => sprintf("return %s.command('remove-attachment','rcmfile%d', this)", JS_OBJECT_NAME, $id)), |
| | | $button) . Q($a_prop['name'])); |
| | | } |
| | | } |
| | | |
| | | $OUTPUT->add_gui_object('attachmentlist', $attrib['id']); |
| | |
| | | |
| | | $out = html::div($attrib, |
| | | $OUTPUT->form_tag(array('name' => 'form', 'method' => 'post', 'enctype' => 'multipart/form-data')) . |
| | | rcmail_compose_attachment_field(array()) . html::br() . |
| | | $button->show(rcube_label('close'), array('onclick' => "document.getElementById('$attrib[id]').style.visibility='hidden'")) . |
| | | $button->show(rcube_label('upload'), array('onclick' => JS_OBJECT_NAME . ".command('send-attachment', this.form)")) |
| | | html::div(null, rcmail_compose_attachment_field(array())) . |
| | | html::div('hint', rcube_label(array('name' => 'maxuploadsize', 'vars' => array('size' => show_bytes(parse_bytes(ini_get('upload_max_filesize'))))))) . |
| | | html::div('buttons', |
| | | $button->show(rcube_label('close'), array('onclick' => "document.getElementById('$attrib[id]').style.visibility='hidden'")) . ' ' . |
| | | $button->show(rcube_label('upload'), array('onclick' => JS_OBJECT_NAME . ".command('send-attachment', this.form)"))) |
| | | ); |
| | | |
| | | |
| | |
| | | |
| | | function rcmail_receipt_checkbox($attrib) |
| | | { |
| | | global $MESSAGE; |
| | | global $MESSAGE, $compose_mode; |
| | | |
| | | list($form_start, $form_end) = get_form_tags($attrib); |
| | | unset($attrib['form']); |
| | |
| | | $checkbox = new html_checkbox($attrib); |
| | | |
| | | $out = $form_start ? "$form_start\n" : ''; |
| | | $out .= $checkbox->show($MESSAGE->headers->mdn_to ? 1 : 0); |
| | | $out .= $checkbox->show( |
| | | $compose_mode == RCUBE_COMPOSE_DRAFT && $MESSAGE->headers->mdn_to ? 1 : 0); |
| | | $out .= $form_end ? "\n$form_end" : ''; |
| | | |
| | | return $out; |
| | |
| | | } |
| | | |
| | | return $selector; |
| | | } |
| | | |
| | | |
| | | function rcmail_store_target_selection($attrib) |
| | | { |
| | | $attrib['name'] = '_store_target'; |
| | | $select = rcmail_mailbox_select(array_merge($attrib, array('noselection' => '- '.rcube_label('dontsave').' -'))); |
| | | return $select->show(rcmail::get_instance()->config->get('sent_mbox'), $attrib); |
| | | } |
| | | |
| | | |
| | |
| | | 'priorityselector' => 'rcmail_priority_selector', |
| | | 'editorselector' => 'rcmail_editor_selector', |
| | | 'receiptcheckbox' => 'rcmail_receipt_checkbox', |
| | | 'storetarget' => 'rcmail_store_target_selection', |
| | | )); |
| | | |
| | | /****** get contacts for this user and add them to client scripts ********/ |
| | |
| | | if ($sql_arr['email']) |
| | | $a_contacts[] = format_email_recipient($sql_arr['email'], $sql_arr['name']); |
| | | } |
| | | if (isset($CONFIG['ldap_public'])) |
| | | if (!empty($CONFIG['ldap_public']) && is_array($CONFIG['ldap_public'])) |
| | | { |
| | | /* LDAP autocompletion */ |
| | | foreach ($CONFIG['ldap_public'] as $ldapserv_config) |
| | | { |
| | | if ($ldapserv_config['fuzzy_search'] != 1) |
| | | if ($ldapserv_config['fuzzy_search'] != 1 || |
| | | $ldapserv_config['global_search'] != 1) |
| | | { |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | $LDAP = new rcube_ldap($ldapserv_config); |
| | | $LDAP->connect(); |
| | |
| | | if ($a_contacts) |
| | | { |
| | | $OUTPUT->set_env('contacts', $a_contacts); |
| | | } |
| | | } |
| | | |
| | | $OUTPUT->send('compose'); |
| | | |
| | | ?> |