diff --git a/src/System Application/App/Email/src/Email/Outbox/EmailEditor.Codeunit.al b/src/System Application/App/Email/src/Email/Outbox/EmailEditor.Codeunit.al index c6218cafae..5f27cd2553 100644 --- a/src/System Application/App/Email/src/Email/Outbox/EmailEditor.Codeunit.al +++ b/src/System Application/App/Email/src/Email/Outbox/EmailEditor.Codeunit.al @@ -162,18 +162,24 @@ codeunit 8906 "Email Editor" var FileName: Text; Instream: InStream; - AttachmentName, ContentType : Text[250]; - AttachamentSize: Integer; begin UploadIntoStream('', '', '', FileName, Instream); if FileName = '' then exit; + UploadAttachment(EmailMessageImpl, FileName, Instream); + end; + + procedure UploadAttachment(EmailMessageImpl: Codeunit "Email Message Impl."; FileName: Text; Instream: InStream) + var + AttachmentName, ContentType : Text[250]; + AttachmentSize: Integer; + begin AttachmentName := CopyStr(FileName, 1, 250); ContentType := EmailMessageImpl.GetContentTypeFromFilename(FileName); - AttachamentSize := EmailMessageImpl.AddAttachmentInternal(AttachmentName, ContentType, Instream); + AttachmentSize := EmailMessageImpl.AddAttachmentInternal(AttachmentName, ContentType, Instream); - Session.LogMessage('0000CTX', StrSubstNo(UploadingAttachmentMsg, AttachamentSize, ContentType), Verbosity::Normal, DataClassification::SystemMetadata, TelemetryScope::ExtensionPublisher, 'Category', EmailCategoryLbl); + Session.LogMessage('0000CTX', StrSubstNo(UploadingAttachmentMsg, AttachmentSize, ContentType), Verbosity::Normal, DataClassification::SystemMetadata, TelemetryScope::ExtensionPublisher, 'Category', EmailCategoryLbl); end; procedure DownloadAttachment(MediaID: Guid; FileName: Text) diff --git a/src/System Application/App/Email/src/Message/EmailAttachments.Page.al b/src/System Application/App/Email/src/Message/EmailAttachments.Page.al index 25c935e3ff..232c4c2735 100644 --- a/src/System Application/App/Email/src/Message/EmailAttachments.Page.al +++ b/src/System Application/App/Email/src/Message/EmailAttachments.Page.al @@ -24,6 +24,7 @@ page 8889 "Email Attachments" { repeater(GroupName) { + FileUploadAction = UploadMultiple; field(FileName; Rec."Attachment Name") { ApplicationArea = All; @@ -53,15 +54,41 @@ page 8889 "Email Attachments" { area(Processing) { + fileuploadaction(UploadMultiple) + { + ApplicationArea = All; + Image = Attach; + Caption = 'Add files'; + ToolTip = 'Attach files, such as documents or images, to the email.'; + Scope = Page; + Visible = IsEmailEditable; + trigger OnAction(files: List of [FileUpload]) + var + EmailEditor: Codeunit "Email Editor"; + TempInStream: InStream; + SingleFile: FileUpload; + begin + foreach SingleFile in files do begin + SingleFile.CreateInStream(TempInStream, TextEncoding::UTF8); + if SingleFile.FileName <> '' then + EmailEditor.UploadAttachment(EmailMessageImpl, SingleFile.FileName, TempInStream); + end; + UpdateDeleteActionEnablement(); + end; + } +#if not CLEAN25 action(Upload) { + ObsoleteState = Pending; + ObsoleteReason = 'The action Upload is replaced by the new action UploadMultiple.'; + ObsoleteTag = '25.0'; ApplicationArea = All; Image = Attach; Caption = 'Add file'; ToolTip = 'Attach files, such as documents or images, to the email.'; Scope = Page; - Visible = IsEmailEditable; + Visible = false; trigger OnAction() var @@ -71,7 +98,7 @@ page 8889 "Email Attachments" UpdateDeleteActionEnablement(); end; } - +#endif action(UploadFromScenario) { ApplicationArea = All; diff --git a/src/System Application/Test/Email/src/EmailE2ETests.Codeunit.al b/src/System Application/Test/Email/src/EmailE2ETests.Codeunit.al index 6a9cfbb065..eb24bd1c3b 100644 --- a/src/System Application/Test/Email/src/EmailE2ETests.Codeunit.al +++ b/src/System Application/Test/Email/src/EmailE2ETests.Codeunit.al @@ -529,8 +529,11 @@ codeunit 134692 "Email E2E Tests" Assert.AreEqual(Body, EmailViewer.BodyField.Value(), 'Body field value is incorrect'); Assert.IsFalse(EmailViewer.Attachments.Delete.Visible(), 'Delete attachment is visible'); +#if not CLEAN25 +#pragma warning disable AL0432 Assert.IsFalse(EmailViewer.Attachments.Upload.Visible(), 'Visible attachment is visible'); - +#pragma warning restore +#endif Assert.IsTrue(EmailViewer.Resend.Visible(), 'Resend action should be visible'); Assert.IsTrue(EmailViewer.Resend.Enabled(), 'Resend action should be enabled'); diff --git a/src/System Application/Test/Email/src/EmailTest.Codeunit.al b/src/System Application/Test/Email/src/EmailTest.Codeunit.al index 6aef6b97ad..734d6ac49b 100644 --- a/src/System Application/Test/Email/src/EmailTest.Codeunit.al +++ b/src/System Application/Test/Email/src/EmailTest.Codeunit.al @@ -300,7 +300,11 @@ codeunit 134685 "Email Test" Assert.IsFalse(EmailEditor.BccField.Editable(), 'Bcc field was editable'); Assert.IsFalse(EmailEditor.SubjectField.Editable(), 'Subject field was editable'); Assert.IsFalse(EmailEditor.BodyField.Editable(), 'Body field was editable'); +#if not CLEAN25 +#pragma warning disable AL0432 Assert.IsFalse(EmailEditor.Attachments.Upload.Visible(), 'Upload Action is visible.'); +#pragma warning restore +#endif Assert.IsFalse(EmailEditor.Send.Enabled(), 'Send Action was not disabled.'); EmailOutBox.Status := Enum::"Email Status"::Processing; @@ -317,7 +321,11 @@ codeunit 134685 "Email Test" Assert.IsFalse(EmailEditor.BccField.Editable(), 'Bcc field was editable'); Assert.IsFalse(EmailEditor.SubjectField.Editable(), 'Subject field was editable'); Assert.IsFalse(EmailEditor.BodyField.Editable(), 'Body field was editable'); +#if not CLEAN25 +#pragma warning disable AL0432 Assert.IsFalse(EmailEditor.Attachments.Upload.Visible(), 'Upload Action is visible.'); +#pragma warning restore +#endif Assert.IsFalse(EmailEditor.Send.Enabled(), 'Send Action was not disabled.'); EmailMessageAttachment.SetRange("Email Message Id", EmailMessage.GetId()); EmailMessageAttachment.FindFirst(); @@ -1454,7 +1462,11 @@ codeunit 134685 "Email Test" Assert.IsTrue(EmailEditor.BccField.Editable(), 'Bcc field was not editable'); Assert.IsTrue(EmailEditor.SubjectField.Editable(), 'Subject field was not editable'); Assert.IsTrue(EmailEditor.BodyField.Editable(), 'Body field was not editable'); - Assert.IsTrue(EmailEditor.Attachments.Upload.Visible(), 'Upload Action is not visible.'); +#if not CLEAN25 +#pragma warning disable AL0432 + Assert.IsFalse(EmailEditor.Attachments.Upload.Visible(), 'Upload Action is visible.'); +#pragma warning restore +#endif Assert.IsTrue(EmailEditor.Send.Enabled(), 'Send Action was not enabled.'); end;