From a487055c5a517eaeae64e18fa35d5e57f31bcb1a Mon Sep 17 00:00:00 2001 From: Aleksander Machniak Date: Fri, 16 Dec 2016 15:59:58 +0100 Subject: [PATCH] Add possibility to attach contact vCard to composed message (#4997) --- CHANGELOG | 1 + plugins/vcard_attachments/composer.json | 4 +- .../vcard_attachments/localization/en_US.inc | 2 + .../vcard_attachments/skins/classic/style.css | 12 ++ .../vcard_attachments/skins/larry/style.css | 5 + .../vcard_attachments/vcard_attachments.php | 114 +++++++++++++++++- plugins/vcard_attachments/vcardattach.js | 40 +++++- program/steps/addressbook/export.inc | 2 +- program/steps/mail/attachments.inc | 13 +- program/steps/mail/func.inc | 59 +++++---- skins/classic/common.css | 5 + skins/classic/mail.css | 1 + skins/classic/templates/compose.html | 21 ++-- skins/larry/images/buttons.png | Bin 15161 -> 15893 bytes skins/larry/templates/compose.html | 2 +- 15 files changed, 230 insertions(+), 51 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 59b915f70..49c39906a 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,7 @@ CHANGELOG Roundcube Webmail =========================== +- vcard_attachments: Add possibility to attach contact vCard to composed message (#4997) - Preserve message internal/received date on import in mbox format (#5559) - Zipdownload: Fix date format in mbox "From line" - Possibility to display QR code for contacts data (#5030) diff --git a/plugins/vcard_attachments/composer.json b/plugins/vcard_attachments/composer.json index 07105bdf6..504d8a330 100644 --- a/plugins/vcard_attachments/composer.json +++ b/plugins/vcard_attachments/composer.json @@ -1,9 +1,9 @@ { "name": "roundcube/vcard_attachments", "type": "roundcube-plugin", - "description": "This plugin detects vCard attachments/bodies and shows a button(s) to add them to address book", + "description": "Detects vCard attachments and allows to add them to address book. Also allows to attach vCards of your contacts to composed messages", "license": "GPLv3+", - "version": "3.2", + "version": "4.0", "authors": [ { "name": "Thomas Bruederli", diff --git a/plugins/vcard_attachments/localization/en_US.inc b/plugins/vcard_attachments/localization/en_US.inc index a52a93228..65ab8ac24 100644 --- a/plugins/vcard_attachments/localization/en_US.inc +++ b/plugins/vcard_attachments/localization/en_US.inc @@ -19,5 +19,7 @@ $labels = array(); $labels['addvcardmsg'] = 'Add vCard to addressbook'; $labels['vcardsavefailed'] = 'Unable to save vCard'; +$labels['attachvcard'] = 'Attach vCard'; +$labels['vcard'] = 'vCard'; ?> \ No newline at end of file diff --git a/plugins/vcard_attachments/skins/classic/style.css b/plugins/vcard_attachments/skins/classic/style.css index 044d3983e..7c361441f 100644 --- a/plugins/vcard_attachments/skins/classic/style.css +++ b/plugins/vcard_attachments/skins/classic/style.css @@ -15,3 +15,15 @@ p.vcardattachment a { padding: 0.7em 0.5em 0.3em 42px; height: 22px; } + +#abookactions a.vcard span { + text-indent: -5000px; + display: inline-block; + height: 22px; + width: 15px; + background: url(../../../../skins/classic/images/messageicons.png) 0 -168px no-repeat; +} + +#abookactions a.vcard.disabled span { + opacity: 0.5; +} diff --git a/plugins/vcard_attachments/skins/larry/style.css b/plugins/vcard_attachments/skins/larry/style.css index 4f9f61b81..3115f69db 100644 --- a/plugins/vcard_attachments/skins/larry/style.css +++ b/plugins/vcard_attachments/skins/larry/style.css @@ -14,3 +14,8 @@ p.vcardattachment a { background: url(vcard_add_contact.png) 6px 2px no-repeat; padding: 1.2em 0.5em 0.7em 46px; } + +a.listbutton.vcard .inner +{ + background-position: center -2107px; +} diff --git a/plugins/vcard_attachments/vcard_attachments.php b/plugins/vcard_attachments/vcard_attachments.php index ebc494e45..177cb6f8e 100644 --- a/plugins/vcard_attachments/vcard_attachments.php +++ b/plugins/vcard_attachments/vcard_attachments.php @@ -1,7 +1,8 @@ action == 'show' || $rcmail->action == 'preview') { $this->add_hook('message_load', array($this, 'message_load')); $this->add_hook('template_object_messagebody', array($this, 'html_output')); } + else if ($rcmail->action == 'upload') { + $this->add_hook('attachment_from_uri', array($this, 'attach_vcard')); + } + else if ($rcmail->action == 'compose' && !$rcmail->output->framed) { + $skin_path = $this->local_skin_path(); + $btn_class = strpos($skin_path, 'classic') ? 'button' : 'listbutton'; + + $this->add_texts('localization', true); + $this->include_stylesheet($skin_path . '/style.css'); + $this->include_script('vcardattach.js'); + $this->add_button( + array( + 'type' => 'link', + 'label' => 'vcard_attachments.vcard', + 'command' => 'attach-vcard', + 'class' => $btn_class . ' vcard disabled', + 'classact' => $btn_class . ' vcard', + 'title' => 'vcard_attachments.attachvcard', + 'innerclass' => 'inner', + ), + 'compose-contacts-toolbar'); + } else if (!$rcmail->output->framed && (!$rcmail->action || $rcmail->action == 'list')) { $icon = 'plugins/vcard_attachments/' .$this->local_skin_path(). '/vcard.png'; $rcmail->output->set_env('vcard_icon', $icon); @@ -46,13 +70,14 @@ class vcard_attachments extends rcube_plugin // the same with message bodies foreach ((array)$this->message->parts as $part) { if ($this->is_vcard($part)) { - $this->vcard_parts[] = $part->mime_id; + $this->vcard_parts[] = $part->mime_id; $this->vcard_bodies[] = $part->mime_id; } } - if ($this->vcard_parts) + if ($this->vcard_parts) { $this->add_texts('localization'); + } } /** @@ -87,9 +112,9 @@ class vcard_attachments extends rcube_plugin // add box below message body $p['content'] .= html::p(array('class' => 'vcardattachment'), html::a(array( - 'href' => "#", + 'href' => "#", 'onclick' => "return plugin_vcard_save_contact('" . rcube::JQ($part.':'.$idx) . "')", - 'title' => $this->gettext('addvcardmsg'), + 'title' => $this->gettext('addvcardmsg'), ), html::span(null, rcube::Q($display))) ); @@ -222,4 +247,81 @@ class vcard_attachments extends rcube_plugin return $this->abook = $CONTACTS; } + + /** + * Attaches a contact vcard to composed mail + */ + public function attach_vcard($args) + { + if (preg_match('|^vcard://(.+)$|', $args['uri'], $m)) { + list($cid, $source) = explode('-', $m[1]); + + $vcard = $this->get_contact_vcard($source, $cid, $filename); + $params = array( + 'filename' => $filename, + 'mimetype' => 'text/vcard', + ); + + if ($vcard) { + $args['attachment'] = rcmail_save_attachment($vcard, null, $args['compose_id'], $params); + } + } + + return $args; + } + + /** + * Get vcard data for specified contact + */ + private function get_contact_vcard($source, $cid, &$filename = null) + { + $rcmail = rcmail::get_instance(); + $source = $rcmail->get_address_book($source); + $contact = $source->get_record($cid, true); + + if ($contact) { + $fieldmap = $source ? $source->vcard_map : null; + + if (empty($contact['vcard'])) { + $vcard = new rcube_vcard('', RCUBE_CHARSET, false, $fieldmap); + $vcard->reset(); + + foreach ($contact as $key => $values) { + list($field, $section) = explode(':', $key); + // avoid unwanted casting of DateTime objects to an array + // (same as in rcube_contacts::convert_save_data()) + if (is_object($values) && is_a($values, 'DateTime')) { + $values = array($values); + } + + foreach ((array) $values as $value) { + if (is_array($value) || is_a($value, 'DateTime') || @strlen($value)) { + $vcard->set($field, $value, strtoupper($section)); + } + } + } + + $contact['vcard'] = $vcard->export(); + } + + $name = rcube_addressbook::compose_list_name($contact); + $filename = (self::parse_filename($name) ?: 'contact') . '.vcf'; + + // fix folding and end-of-line chars + $vcard = preg_replace('/\r|\n\s+/', '', $contact['vcard']); + $vcard = preg_replace('/\n/', rcube_vcard::$eol, $vcard); + + return rcube_vcard::rfc2425_fold($vcard) . rcube_vcard::$eol; + } + } + + /** + * Helper function to convert contact name into filename + */ + static private function parse_filename($str) + { + $str = preg_replace('/[\t\n\r\0\x0B:\/]+\s*/', ' ', $str); + + return trim($str, " ./_"); + } } diff --git a/plugins/vcard_attachments/vcardattach.js b/plugins/vcard_attachments/vcardattach.js index 400966231..fe505c8f2 100644 --- a/plugins/vcard_attachments/vcardattach.js +++ b/plugins/vcard_attachments/vcardattach.js @@ -4,7 +4,7 @@ * @licstart The following is the entire license notice for the * JavaScript code in this file. * - * Copyright (c) 2012-2014, The Roundcube Dev Team + * Copyright (c) 2012-2016, The Roundcube Dev Team * * The JavaScript code in this page is free software: you can redistribute it * and/or modify it under the terms of the GNU General Public License @@ -33,6 +33,40 @@ function plugin_vcard_insertrow(data) } } -if (window.rcmail && rcmail.gui_objects.messagelist) { - rcmail.addEventListener('insertrow', function(data, evt) { plugin_vcard_insertrow(data); }); +function plugin_vcard_attach() +{ + var id, n, contacts = [], + ts = new Date().getTime(), + args = {_uploadid: ts, _id: rcmail.env.compose_id}; + + for (n=0; n < rcmail.contact_list.selection.length; n++) { + id = rcmail.contact_list.selection[n]; + if (id && id.charAt(0) != 'E' && rcmail.env.contactdata[id]) + contacts.push(id); + } + + if (!contacts.length) + return false; + + args._uri = 'vcard://' + contacts.join(','); + + // add to attachments list + if (!rcmail.add2attachment_list(ts, {name: '', html: rcmail.get_label('attaching'), classname: 'uploading', complete: false})) + rcmail.file_upload_id = rcmail.set_busy(true, 'attaching'); + + rcmail.http_post('upload', args); } + +window.rcmail && rcmail.addEventListener('init', function(evt) { + if (rcmail.gui_objects.messagelist) + rcmail.addEventListener('insertrow', function(data, evt) { plugin_vcard_insertrow(data); }); + + if (rcmail.env.action == 'compose' && rcmail.gui_objects.contactslist) { + rcmail.env.compose_commands.push('attach-vcard'); + rcmail.register_command('attach-vcard', function() { plugin_vcard_attach(); }); + rcmail.contact_list.addEventListener('select', function(list) { + // TODO: support attaching more than one at once + rcmail.enable_command('attach-vcard', list.selection.length == 1 && rcmail.contact_list.selection[0].charAt(0) != 'E'); + }); + } +}); diff --git a/program/steps/addressbook/export.inc b/program/steps/addressbook/export.inc index b056a3e74..ecec53d73 100644 --- a/program/steps/addressbook/export.inc +++ b/program/steps/addressbook/export.inc @@ -109,7 +109,7 @@ if ($plugin['abort']) { } // send downlaod headers -header('Content-Type: text/x-vcard; charset='.RCUBE_CHARSET); +header('Content-Type: text/vcard; charset=' . RCUBE_CHARSET); header('Content-Disposition: attachment; filename="contacts.vcf"'); while ($result && ($row = $result->next())) { diff --git a/program/steps/mail/attachments.inc b/program/steps/mail/attachments.inc index b620cd8f7..21f220871 100644 --- a/program/steps/mail/attachments.inc +++ b/program/steps/mail/attachments.inc @@ -102,13 +102,18 @@ if ($uri) { && $RCMAIL->get_user_name() == rawurldecode($url['user']) ) { $message = new rcube_message($params['_uid'], $params['_mbox']); + + if ($message && !empty($message->headers)) { + $attachment = rcmail_save_attachment($message, $params['_part'], $COMPOSE_ID); + } } } - if ($message && !empty($message->headers) - && ($attachment = rcmail_save_attachment($message, $params['_part'], $COMPOSE_ID)) - ) { - rcmail_attachment_success($attachment, $uploadid); + $plugin = $RCMAIL->plugins->exec_hook('attachment_from_uri', array( + 'attachment' => $attachment, 'uri' => $uri, 'compose_id' => $COMPOSE_ID)); + + if ($plugin['attachment']) { + rcmail_attachment_success($plugin['attachment'], $uploadid); } else { $OUTPUT->command('display_message', $RCMAIL->gettext('filelinkerror'), 'error'); diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc index 19d7e7a8a..2c6a83854 100644 --- a/program/steps/mail/func.inc +++ b/program/steps/mail/func.inc @@ -2248,42 +2248,51 @@ function rcmail_save_attachment($message, $pid, $compose_id, $params = array()) $mimetype = $part->ctype_primary . '/' . $part->ctype_secondary; $filename = $params['filename'] ?: rcmail_attachment_name($part); } - else { + else if (is_object($message)) { // the whole message requested - $size = $message->size; + $size = $message->size; $mimetype = 'message/rfc822'; $filename = $params['filename'] ?: 'message_rfc822.eml'; } + else if (is_string($message)) { + // the whole message requested + $size = strlen($message); + $data = $message; + $mimetype = $params['mimetype']; + $filename = $params['filename']; + } + + if (!isset($data)) { + // don't load too big attachments into memory + if (!rcube_utils::mem_check($size)) { + $temp_dir = unslashify($rcmail->config->get('temp_dir')); + $path = tempnam($temp_dir, 'rcmAttmnt'); + + if ($fp = fopen($path, 'w')) { + if ($pid) { + // part body + $message->get_part_body($pid, false, 0, $fp); + } + else { + // complete message + $storage->get_raw_body($message->uid, $fp); + } - // don't load too big attachments into memory - if (!rcube_utils::mem_check($size)) { - $temp_dir = unslashify($rcmail->config->get('temp_dir')); - $path = tempnam($temp_dir, 'rcmAttmnt'); - - if ($fp = fopen($path, 'w')) { - if ($pid) { - // part body - $message->get_part_body($pid, false, 0, $fp); + fclose($fp); } else { - // complete message - $storage->get_raw_body($message->uid, $fp); + return false; } - - fclose($fp); + } + else if ($pid) { + // part body + $data = $message->get_part_body($pid); } else { - return false; + // complete message + $data = $storage->get_raw_body($message->uid); } } - else if ($pid) { - // part body - $data = $message->get_part_body($pid); - } - else { - // complete message - $data = $storage->get_raw_body($message->uid); - } $attachment = array( 'group' => $compose_id, @@ -2293,7 +2302,7 @@ function rcmail_save_attachment($message, $pid, $compose_id, $params = array()) 'data' => $data, 'path' => $path, 'size' => $path ? filesize($path) : strlen($data), - 'charset' => $part ? $part->charset : null, + 'charset' => $part ? $part->charset : $params['charset'], ); $attachment = $rcmail->plugins->exec_hook('attachment_save', $attachment); diff --git a/skins/classic/common.css b/skins/classic/common.css index 01ed26845..5aa7258c1 100644 --- a/skins/classic/common.css +++ b/skins/classic/common.css @@ -710,6 +710,11 @@ table.records-table tr.selected td background-color: #CC3333; } +table.records-table tr.selected td a +{ + color: #FFFFFF; +} + table.records-table tr.focused td { } diff --git a/skins/classic/mail.css b/skins/classic/mail.css index d275c054a..a45545434 100644 --- a/skins/classic/mail.css +++ b/skins/classic/mail.css @@ -1707,6 +1707,7 @@ input.from_address position: absolute; margin-right: 5px; right: 0; + top: 0; } #abookactions diff --git a/skins/classic/templates/compose.html b/skins/classic/templates/compose.html index ab64e739d..97b39c498 100644 --- a/skins/classic/templates/compose.html +++ b/skins/classic/templates/compose.html @@ -49,7 +49,16 @@
-
+
+ + +
-
diff --git a/skins/larry/images/buttons.png b/skins/larry/images/buttons.png index fb957ea04234b7d4432dbd3efaae8878ef7cd653..b7528cacf8ed8960ab58e62ddf76435727207d1c 100644 GIT binary patch literal 15893 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 literal 15161 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 diff --git a/skins/larry/templates/compose.html b/skins/larry/templates/compose.html index b4c743737..3dcc48c04 100644 --- a/skins/larry/templates/compose.html +++ b/skins/larry/templates/compose.html @@ -58,7 +58,7 @@
- +