This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository faxtomail. See https://gitlab.nuiton.org/codelutin/faxtomail.git commit d70df1e81a634de58b05ba40102d19adaad8bf99 Author: Kevin Morin <morin@codelutin.com> Date: Mon Apr 18 17:06:49 2016 +0200 Correction du transfert de réponse (fixes #8259) --- .../demande/replies/DemandRepliesUIHandler.java | 24 ++++++++----- .../ui/swing/content/reply/ReplyFormUIHandler.java | 40 +++++++++++++--------- .../content/reply/actions/SenderChangedAction.java | 7 ++-- .../faxtomail/ui/swing/util/FaxToMailUIUtil.java | 9 +++++ .../i18n/faxtomail-ui-swing_fr_FR.properties | 2 +- 5 files changed, 53 insertions(+), 29 deletions(-) diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUIHandler.java index 19226b1..0f8226c 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUIHandler.java @@ -33,13 +33,13 @@ import com.franciaflex.faxtomail.persistence.entities.Reply; import com.franciaflex.faxtomail.persistence.entities.ReplyContent; import com.franciaflex.faxtomail.services.FaxToMailServiceUtils; import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; -import com.franciaflex.faxtomail.ui.swing.content.demande.replies.actions.OpenReplyAction; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; +import com.franciaflex.faxtomail.ui.swing.content.demande.replies.actions.OpenReplyAction; import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyAttachmentModel; import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUI; import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUIModel; -import com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupHandler; import com.franciaflex.faxtomail.ui.swing.util.FaxToMailUIUtil; +import com.franciaflex.faxtomail.ui.swing.util.toolbar.AbstractToolbarPopupHandler; import com.google.common.collect.Iterables; import jaxx.runtime.JAXXUtil; import jaxx.runtime.validator.swing.SwingValidator; @@ -57,7 +57,9 @@ import javax.mail.Message; import javax.mail.Part; import javax.mail.internet.MimeMultipart; import javax.mail.internet.MimeUtility; -import javax.swing.*; +import javax.swing.AbstractCellEditor; +import javax.swing.JComponent; +import javax.swing.JTable; import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; import javax.swing.table.AbstractTableModel; @@ -67,11 +69,13 @@ import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel; import javax.swing.table.TableModel; -import java.awt.*; +import java.awt.Component; +import java.awt.Dimension; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.ByteArrayOutputStream; import java.nio.charset.Charset; +import java.util.regex.Pattern; import static org.nuiton.i18n.I18n.t; @@ -217,12 +221,12 @@ public class DemandRepliesUIHandler extends AbstractToolbarPopupHandler<DemandeU } // XXX: à verifier pour le format, et si on quote ou pas encore le forward - String quotedReply = t("faxtomail.reply.message", - decorate(reply.getSentDate()), - message.getFrom()[0].toString(), - replyModel.getMessage().replaceAll("\n", "\n> ")); + String quotedReply = FaxToMailUIUtil.getQuotedReplyContent(dialogContent.getHandler().createSigning(replyModel.getFrom()), + decorate(reply.getSentDate()), + message.getFrom()[0].toString(), + replyModel.getMessage().replaceAll("\n", "<br/> ")); replyModel.setMessage(quotedReply); - + openFrame(dialogContent, t("faxtomail.reply.forward", message.getSubject()), new Dimension(800, 600)); } catch (Exception e) { @@ -252,6 +256,8 @@ public class DemandRepliesUIHandler extends AbstractToolbarPopupHandler<DemandeU if (bp.isMimeType("text/*") && !Part.ATTACHMENT.equals(disposition)) { Charset charset = FaxToMailServiceUtils.getCharset(bp); String content = IOUtils.toString(bp.getInputStream(), charset); + content = Pattern.compile("<html>.*<body>", Pattern.DOTALL).matcher(content).replaceAll(""); + content = Pattern.compile("</body>.*</html>", Pattern.DOTALL).matcher(content).replaceAll(""); reply.setMessage(content); // if it is multipart part, decompose it diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java index cd29d89..55abd5c 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/ReplyFormUIHandler.java @@ -195,7 +195,6 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo initBeanFilterableComboBox(ui.getContactField(), getContext().getContactCache(), null); // signatures - signingClass = SIGNING_CLASS_PREFIX + new Date().getTime(); signing = getSigningParagraph(createSigning(recipient)); } else { @@ -206,11 +205,7 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo String plainContent = StringUtils.join(demand.getPlainContent(), CONTENT_SEPARATOR); String quotedText = plainContent != null ? plainContent.replaceAll("\n", "<br/> ") : ""; - String quotedReply = t("faxtomail.reply.message", - signing, - decorate(demand.getReceptionDate()), - demand.getSender(), - quotedText); + String quotedReply = FaxToMailUIUtil.getQuotedReplyContent(signing, decorate(demand.getReceptionDate()), demand.getSender(), quotedText); model.setMessage(quotedReply); } }); @@ -236,6 +231,7 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo ReplyFormUIModel model = (ReplyFormUIModel) evt.getSource(); if (!model.isReadonly()) { getContext().getActionEngine().runAction(senderChangedAction); + ui.getMessage().setCaretPosition(0); } } }); @@ -473,13 +469,13 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo ReplyFormUIModel replyModel = dialogContent.getModel(); replyModel.fromModel(ui.getModel()); - // XXX: à verifier pour le format, et si on quote ou pas encore le forward - String quotedReply = t("faxtomail.reply.message", - decorate(replyModel.getReadSentDate()), - replyModel.getFrom(), - replyModel.getMessage().replaceAll("\n", "\n> ")); - replyModel.setMessage(quotedReply); - replyModel.setSubject(t("faxtomail.reply.forwardsubject", replyModel.getSubject())); + Date readSentDate = replyModel.getReadSentDate(); + String replyFrom = replyModel.getFrom(); + + String content = replyModel.getMessage(); + content = Pattern.compile("<html>.*<body>", Pattern.DOTALL).matcher(content).replaceAll(""); + content = Pattern.compile("</body>.*</html>", Pattern.DOTALL).matcher(content).replaceAll(""); + String originalReply = content.replaceAll("\n", "<br/> "); // clear fields that need to be filled by hand replyModel.setReadonly(false); @@ -488,6 +484,13 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo replyModel.setTo(null); replyModel.setCc(null); replyModel.setCci(null); + replyModel.setSubject(t("faxtomail.reply.forwardsubject", replyModel.getSubject())); + + String quotedReply = FaxToMailUIUtil.getQuotedReplyContent(dialogContent.getHandler().createSigning(replyModel.getFrom()), + decorate(readSentDate), + replyFrom, + originalReply); + replyModel.setMessage(quotedReply); openModalFrame(dialogContent, t("faxtomail.reply.forward", getModel().getSubject()), new Dimension(800, 600)); @@ -547,7 +550,7 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo public void replaceSigning() { ReplyFormUIModel model = getModel(); - String signing = createSigning(model.getFrom()); + String signing = createSigningContent(model.getFrom()); String message = model.getMessage(); if (message != null) { message = Pattern.compile(getSigningParagraph(".*?"), Pattern.DOTALL).matcher(message).replaceFirst(getSigningParagraph(signing)); @@ -555,7 +558,13 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo } } - protected String createSigning(String from) { + public String createSigning(String from) { + signingClass = SIGNING_CLASS_PREFIX + new Date().getTime(); + String signing = createSigningContent(from); + return getSigningParagraph(signing); + } + + protected String createSigningContent(String from) { FaxToMailUser currentUser = getContext().getCurrentUser(); String signing = currentUser.getFirstName() + " " + currentUser.getLastName() + "<br/>"; if (from != null) { @@ -574,7 +583,6 @@ public class ReplyFormUIHandler extends AbstractFaxToMailUIHandler<ReplyFormUIMo } } } - return signing; } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/SenderChangedAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/SenderChangedAction.java index 82d3eff..47ecf34 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/SenderChangedAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/reply/actions/SenderChangedAction.java @@ -30,7 +30,6 @@ import com.franciaflex.faxtomail.ui.swing.actions.AbstractFaxToMailAction; import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUI; import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUIHandler; import com.franciaflex.faxtomail.ui.swing.content.reply.ReplyFormUIModel; -import com.google.common.base.Optional; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -61,8 +60,10 @@ public class SenderChangedAction extends AbstractFaxToMailAction<ReplyFormUIMode public void doAction() throws Exception { ReplyFormUIModel model = getModel(); FaxToMailServiceContext serviceContext = getContext().newServiceContext(); - Optional<SigningForDomain> signingForEmailAddress = serviceContext.getConfigurationService().getSigningForEmailAddress(model.getFrom()); - signingForDomain = signingForEmailAddress.orNull(); + signingForDomain = null; + if (model.getFrom() != null) { + signingForDomain = serviceContext.getConfigurationService().getSigningForEmailAddress(model.getFrom()).orNull(); + } } @Override diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java index 4deca44..c2f35ca 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/FaxToMailUIUtil.java @@ -881,4 +881,13 @@ public final class FaxToMailUIUtil extends ApplicationUIUtil { return textPane; } + public static String getQuotedReplyContent(String signing, String receptionDate, String sender, String originalEmail) { + String quotedReply = t("faxtomail.reply.message", + signing, + receptionDate, + sender, + originalEmail); + return quotedReply; + } + } diff --git a/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties b/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties index 24c8a37..a71c22c 100644 --- a/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties +++ b/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties @@ -303,7 +303,7 @@ faxtomail.reply.label.contact=Contact \: faxtomail.reply.label.from=De \: faxtomail.reply.label.subject=Objet \: faxtomail.reply.label.to=À \: -faxtomail.reply.message=<html><body><p></p>%s<p>Le %s, %s a écrit \:</p><p style\='border-left\: 2px solid blue;padding-left\: 5px;'>%s</p> +faxtomail.reply.message=<html><body><p></p>%s<p>Le %s, %s a écrit \:</p><div style\='border-left\: 2px solid blue;padding-left\: 5px;'>%s</div> faxtomail.reply.subject=Re \: %s faxtomail.reply.title=Réponse à \: %s faxtomail.search.action.error=Erreur lors de la recherche -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.