From fc7b5b8283173ebb5209da124e5b283e5b86dfa7 Mon Sep 17 00:00:00 2001 From: thomascube <thomas@roundcube.net> Date: Fri, 03 Feb 2012 06:12:35 -0500 Subject: [PATCH] Get rid of global $__skin_path variable (#1488336) --- program/steps/mail/compose.inc | 116 ++++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 85 insertions(+), 31 deletions(-) diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc index 76ff31d..cbef368 100644 --- a/program/steps/mail/compose.inc +++ b/program/steps/mail/compose.inc @@ -5,8 +5,11 @@ | program/steps/mail/compose.inc | | | | This file is part of the Roundcube Webmail client | - | Copyright (C) 2005-2011, The Roundcube Dev Team | - | Licensed under the GNU GPL | + | Copyright (C) 2005-2012, The Roundcube Dev Team | + | | + | Licensed under the GNU General Public License version 3 or | + | any later version with exceptions for skins & plugins. | + | See the README file for a full license statement. | | | | PURPOSE: | | Compose a new mail message with all headers and attachments | @@ -56,7 +59,7 @@ $_SESSION['compose_data_'.$COMPOSE_ID] = array( 'id' => $COMPOSE_ID, 'param' => request2param(RCUBE_INPUT_GET), - 'mailbox' => $RCMAIL->imap->get_mailbox_name(), + 'mailbox' => $RCMAIL->storage->get_folder(), ); $COMPOSE =& $_SESSION['compose_data_'.$COMPOSE_ID]; @@ -134,13 +137,10 @@ $OUTPUT->set_env('draft_autosave', $CONFIG['draft_autosave']); } // set current mailbox in client environment -$OUTPUT->set_env('mailbox', $RCMAIL->imap->get_mailbox_name()); +$OUTPUT->set_env('mailbox', $RCMAIL->storage->get_folder()); $OUTPUT->set_env('sig_above', $RCMAIL->config->get('sig_above', false)); $OUTPUT->set_env('top_posting', $RCMAIL->config->get('top_posting', false)); $OUTPUT->set_env('recipients_separator', trim($RCMAIL->config->get('recipients_separator', ','))); - -// use jquery UI for showing prompt() dialogs -$RCMAIL->plugins->load_plugin('jqueryui'); // default font for HTML editor $font = rcube_fontdefs($RCMAIL->config->get('default_font', 'Verdana')); @@ -150,7 +150,7 @@ // get reference message and set compose mode if ($msg_uid = $COMPOSE['param']['draft_uid']) { - $RCMAIL->imap->set_mailbox($CONFIG['drafts_mbox']); + $RCMAIL->storage->set_folder($CONFIG['drafts_mbox']); $compose_mode = RCUBE_COMPOSE_DRAFT; } else if ($msg_uid = $COMPOSE['param']['reply_uid']) @@ -182,10 +182,10 @@ // make sure message is marked as read if ($MESSAGE && $MESSAGE->headers && empty($MESSAGE->headers->flags['SEEN'])) - $RCMAIL->imap->set_flag($msg_uid, 'SEEN'); + $RCMAIL->storage->set_flag($msg_uid, 'SEEN'); if (!empty($MESSAGE->headers->charset)) - $RCMAIL->imap->set_charset($MESSAGE->headers->charset); + $RCMAIL->storage->set_charset($MESSAGE->headers->charset); if ($compose_mode == RCUBE_COMPOSE_REPLY) { @@ -271,7 +271,7 @@ // extract all recipients of the reply-message if (is_object($MESSAGE->headers) && in_array($compose_mode, array(RCUBE_COMPOSE_REPLY, RCUBE_COMPOSE_FORWARD))) { - $a_to = $RCMAIL->imap->decode_address_list($MESSAGE->headers->to); + $a_to = rcube_mime::decode_address_list($MESSAGE->headers->to, null, true, $MESSAGE->headers->charset); foreach ($a_to as $addr) { if (!empty($addr['mailto'])) { $a_recipients[] = strtolower($addr['mailto']); @@ -280,7 +280,7 @@ } if (!empty($MESSAGE->headers->cc)) { - $a_cc = $RCMAIL->imap->decode_address_list($MESSAGE->headers->cc); + $a_cc = rcube_mime::decode_address_list($MESSAGE->headers->cc, null, true, $MESSAGE->headers->charset); foreach ($a_cc as $addr) { if (!empty($addr['mailto'])) { $a_recipients[] = strtolower($addr['mailto']); @@ -423,7 +423,7 @@ // split recipients and put them back together in a unique way if (!empty($fvalue) && in_array($header, array('to', 'cc', 'bcc'))) { - $to_addresses = $RCMAIL->imap->decode_address_list($fvalue, null, $decode_header); + $to_addresses = rcube_mime::decode_address_list($fvalue, null, $decode_header, $MESSAGE->headers->charset); $fvalue = array(); foreach ($to_addresses as $addr_part) { @@ -653,7 +653,7 @@ if ($body && $part && $part->ctype_secondary == 'plain' && $part->ctype_parameters['format'] == 'flowed' ) { - $body = rcube_message::unfold_flowed($body); + $body = rcube_mime::unfold_flowed($body); } } } @@ -775,7 +775,7 @@ $OUTPUT->include_script('googiespell.js'); $OUTPUT->add_script(sprintf( - "var googie = new GoogieSpell('\$__skin_path/images/googiespell/','?_task=utils&_action=spell&lang=', %s);\n". + "var googie = new GoogieSpell('%s/images/googiespell/','%s&lang=', %s);\n". "googie.lang_chck_spell = \"%s\";\n". "googie.lang_rsm_edt = \"%s\";\n". "googie.lang_close = \"%s\";\n". @@ -787,6 +787,8 @@ "googie.setSpellContainer('spellcheck-control');\n". "googie.decorateTextarea('%s');\n". "%s.set_env('spellcheck', googie);", + $RCMAIL->output->get_skin_path(), + $RCMAIL->url(array('_task' => 'utils', '_action' => 'spell')), !empty($dictionary) ? 'true' : 'false', JQ(Q(rcube_label('checkspelling'))), JQ(Q(rcube_label('resumeediting'))), @@ -814,7 +816,7 @@ global $RCMAIL, $MESSAGE, $LINE_LENGTH; // build reply prefix - $from = array_pop($RCMAIL->imap->decode_address_list($MESSAGE->get_header('from'), 1, false)); + $from = array_pop(rcube_mime::decode_address_list($MESSAGE->get_header('from'), 1, false, $MESSAGE->headers->charset)); $prefix = rcube_label(array( 'name' => 'mailreplyintro', 'vars' => array( @@ -1054,12 +1056,12 @@ $temp_dir = unslashify($RCMAIL->config->get('temp_dir')); $path = tempnam($temp_dir, 'rcmAttmnt'); if ($fp = fopen($path, 'w')) { - $RCMAIL->imap->get_raw_body($message->uid, $fp); + $RCMAIL->storage->get_raw_body($message->uid, $fp); fclose($fp); } else return false; } else { - $data = $RCMAIL->imap->get_raw_body($message->uid); + $data = $RCMAIL->storage->get_raw_body($message->uid); } $attachment = array( @@ -1244,7 +1246,7 @@ 'onclick' => sprintf("return %s.command('remove-attachment','rcmfile%s', this)", JS_OBJECT_NAME, $id), 'class' => 'delete'), $button) . Q($a_prop['name'])); - + $jslist['rcmfile'.$id] = array('name' => $a_prop['name'], 'complete' => true, 'mimetype' => $a_prop['mimetype']); } } @@ -1258,14 +1260,14 @@ $OUTPUT->set_env('attachments', $jslist); $OUTPUT->add_gui_object('attachmentlist', $attrib['id']); - + return html::tag('ul', $attrib, $out, html::$common_attrib); } function rcmail_compose_attachment_form($attrib) { - global $RCMAIL, $OUTPUT; + global $OUTPUT; // set defaults $attrib += array('id' => 'rcmUploadbox', 'buttons' => 'yes'); @@ -1276,7 +1278,7 @@ $button = new html_inputfield(array('type' => 'button')); $out = html::div($attrib, - $OUTPUT->form_tag(array('name' => 'uploadform', 'method' => 'post', 'enctype' => 'multipart/form-data'), + $OUTPUT->form_tag(array('id' => $attrib['id'].'Frm', 'name' => 'uploadform', 'method' => 'post', 'enctype' => 'multipart/form-data'), html::div(null, rcmail_compose_attachment_field(array('size' => $attrib['attachmentfieldsize']))) . html::div('hint', rcube_label(array('name' => 'maxuploadsize', 'vars' => array('size' => $max_filesize)))) . (get_boolean($attrib['buttons']) ? html::div('buttons', @@ -1286,7 +1288,7 @@ ) ); - $OUTPUT->add_gui_object('uploadform', $attrib['id']); + $OUTPUT->add_gui_object('uploadform', $attrib['id'].'Frm'); return $out; } @@ -1305,7 +1307,7 @@ function rcmail_priority_selector($attrib) { global $MESSAGE; - + list($form_start, $form_end) = get_form_tags($attrib); unset($attrib['form']); @@ -1342,7 +1344,7 @@ unset($attrib['form']); if (!isset($attrib['id'])) - $attrib['id'] = 'receipt'; + $attrib['id'] = 'receipt'; $attrib['name'] = '_receipt'; $attrib['value'] = '1'; @@ -1385,8 +1387,6 @@ function rcmail_editor_selector($attrib) { - global $CONFIG, $MESSAGE, $compose_mode; - // determine whether HTML or plain text should be checked $useHtml = rcmail_compose_editor_mode(); @@ -1433,16 +1433,16 @@ { global $RCMAIL; - if ($RCMAIL->imap->mailbox_exists($folder, true)) { + if ($RCMAIL->storage->folder_exists($folder, true)) { return true; } // folder may exist but isn't subscribed (#1485241) if ($create) { - if (!$RCMAIL->imap->mailbox_exists($folder)) - return $RCMAIL->imap->create_mailbox($folder, true); + if (!$RCMAIL->storage->folder_exists($folder)) + return $RCMAIL->storage->create_folder($folder, true); else - return $RCMAIL->imap->subscribe($folder); + return $RCMAIL->storage->subscribe($folder); } return false; @@ -1476,6 +1476,58 @@ } +function rcmail_adressbook_list($attrib = array()) +{ + global $RCMAIL, $OUTPUT; + + $attrib += array('id' => 'rcmdirectorylist'); + + $out = ''; + $line_templ = html::tag('li', array( + 'id' => 'rcmli%s', 'class' => '%s'), + html::a(array('href' => '#list', + 'rel' => '%s', + 'onclick' => "return ".JS_OBJECT_NAME.".command('list-adresses','%s',this)"), '%s')); + + foreach ($RCMAIL->get_address_sources() as $j => $source) { + $id = strval(strlen($source['id']) ? $source['id'] : $j); + $js_id = JQ($id); + + // set class name(s) + $class_name = 'addressbook'; + if ($source['class_name']) + $class_name .= ' ' . $source['class_name']; + + $out .= sprintf($line_templ, + html_identifier($id), + $class_name, + $source['id'], + $js_id, (!empty($source['name']) ? Q($source['name']) : Q($id))); + } + + $OUTPUT->add_gui_object('adressbookslist', $attrib['id']); + + return html::tag('ul', $attrib, $out, html::$common_attrib); +} + +// return the contacts list as HTML table +function rcmail_contacts_list($attrib = array()) +{ + global $OUTPUT; + + $attrib += array('id' => 'rcmAddressList'); + + // set client env + $OUTPUT->add_gui_object('contactslist', $attrib['id']); + $OUTPUT->set_env('pagecount', 0); + $OUTPUT->set_env('current_page', 0); + $OUTPUT->include_script('list.js'); + + return rcube_table_output($attrib, array(), array('name'), 'ID'); +} + + + // register UI objects $OUTPUT->add_handlers(array( 'composeheaders' => 'rcmail_compose_headers', @@ -1489,6 +1541,8 @@ 'receiptcheckbox' => 'rcmail_receipt_checkbox', 'dsncheckbox' => 'rcmail_dsn_checkbox', 'storetarget' => 'rcmail_store_target_selection', + 'adressbooks' => 'rcmail_adressbook_list', + 'addresslist' => 'rcmail_contacts_list', )); $OUTPUT->send('compose'); -- Gitblit v1.9.1