From fc52af24f1418d6590a2d37a0d8cc31b123e38f6 Mon Sep 17 00:00:00 2001 From: Thomas Bruederli <thomas@roundcube.net> Date: Tue, 19 Aug 2014 12:08:35 -0400 Subject: [PATCH] Fix merge error that disabled contact drag'n'drop --- program/steps/mail/attachments.inc | 56 +++++++++++++++++++++++++++++++++----------------------- 1 files changed, 33 insertions(+), 23 deletions(-) diff --git a/program/steps/mail/attachments.inc b/program/steps/mail/attachments.inc index 4674034..85aa954 100644 --- a/program/steps/mail/attachments.inc +++ b/program/steps/mail/attachments.inc @@ -6,7 +6,10 @@ | | | This file is part of the Roundcube Webmail client | | Copyright (C) 2005-2009, The Roundcube Dev Team | - | Licensed under the GNU GPL | + | | + | 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: | | Upload, remove, display attachments in compose form | @@ -14,9 +17,6 @@ +-----------------------------------------------------------------------+ | Author: Thomas Bruederli <roundcube@gmail.com> | +-----------------------------------------------------------------------+ - - $Id$ - */ // Upload progress update @@ -25,9 +25,14 @@ } $COMPOSE_ID = get_input_value('_id', RCUBE_INPUT_GPC); -$_SESSION['compose'] = $_SESSION['compose_data'][$COMPOSE_ID]; +$COMPOSE = null; -if (!$_SESSION['compose']) { +if ($COMPOSE_ID && $_SESSION['compose_data_' . $COMPOSE_ID]) { + $SESSION_KEY = 'compose_data_' . $COMPOSE_ID; + $COMPOSE =& $_SESSION[$SESSION_KEY]; +} + +if (!$COMPOSE) { die("Invalid session var!"); } @@ -38,15 +43,15 @@ $id = 'undefined'; if (preg_match('/^rcmfile(\w+)$/', $_POST['_file'], $regs)) $id = $regs[1]; - if ($attachment = $_SESSION['compose']['attachments'][$id]) + if ($attachment = $COMPOSE['attachments'][$id]) $attachment = $RCMAIL->plugins->exec_hook('attachment_delete', $attachment); if ($attachment['status']) { - if (is_array($_SESSION['compose']['attachments'][$id])) { - unset($_SESSION['compose']['attachments'][$id]); + if (is_array($COMPOSE['attachments'][$id])) { + $RCMAIL->session->remove($SESSION_KEY.'.attachments.'.$id); $OUTPUT->command('remove_from_attachment_list', "rcmfile$id"); } } - + $OUTPUT->send(); exit; } @@ -56,16 +61,16 @@ $id = 'undefined'; if (preg_match('/^rcmfile(\w+)$/', $_GET['_file'], $regs)) $id = $regs[1]; - if ($attachment = $_SESSION['compose']['attachments'][$id]) + if ($attachment = $COMPOSE['attachments'][$id]) $attachment = $RCMAIL->plugins->exec_hook('attachment_display', $attachment); - + if ($attachment['status']) { if (empty($attachment['size'])) $attachment['size'] = $attachment['data'] ? strlen($attachment['data']) : @filesize($attachment['path']); header('Content-Type: ' . $attachment['mimetype']); header('Content-Length: ' . $attachment['size']); - + if ($attachment['data']) echo $attachment['data']; else if ($attachment['path']) @@ -74,11 +79,7 @@ exit; } -// attachment upload action - -if (!is_array($_SESSION['compose']['attachments'])) { - $_SESSION['compose']['attachments'] = array(); -} +/***** attachment upload action *****/ // clear all stored output properties (like scripts and env vars) $OUTPUT->reset(); @@ -86,6 +87,8 @@ $uploadid = get_input_value('_uploadid', RCUBE_INPUT_GET); if (is_array($_FILES['_attachments']['tmp_name'])) { + $multiple = count($_FILES['_attachments']['tmp_name']) > 1; + foreach ($_FILES['_attachments']['tmp_name'] as $i => $filepath) { // Process uploaded attachment if there is no error $err = $_FILES['_attachments']['error'][$i]; @@ -107,22 +110,26 @@ // store new attachment in session unset($attachment['status'], $attachment['abort']); - $_SESSION['compose']['attachments'][$id] = $attachment; + $RCMAIL->session->append($SESSION_KEY.'.attachments', $id, $attachment); - if (($icon = $_SESSION['compose']['deleteicon']) && is_file($icon)) { + if (($icon = $COMPOSE['deleteicon']) && is_file($icon)) { $button = html::img(array( 'src' => $icon, 'alt' => rcube_label('delete') )); } - else { + else if ($COMPOSE['textbuttons']) { $button = Q(rcube_label('delete')); + } + else { + $button = ''; } $content = html::a(array( 'href' => "#delete", 'onclick' => sprintf("return %s.command('remove-attachment','rcmfile%s', this)", JS_OBJECT_NAME, $id), 'title' => rcube_label('delete'), + 'class' => 'delete', ), $button); $content .= Q($attachment['name']); @@ -131,6 +138,7 @@ 'html' => $content, 'name' => $attachment['name'], 'mimetype' => $attachment['mimetype'], + 'classname' => rcmail_filetype2classname($attachment['mimetype'], $attachment['name']), 'complete' => true), $uploadid); } else { // upload failed @@ -144,8 +152,10 @@ $msg = rcube_label('fileuploaderror'); } - $OUTPUT->command('display_message', $msg, 'error'); - $OUTPUT->command('remove_from_attachment_list', $uploadid); + if ($attachment['error'] || $err != UPLOAD_ERR_NO_FILE) { + $OUTPUT->command('display_message', $msg, 'error'); + $OUTPUT->command('remove_from_attachment_list', $uploadid); + } } } } -- Gitblit v1.9.1