diff --git a/mail/js/app.js b/mail/js/app.js
index 6cac584464..0df9ba9563 100644
--- a/mail/js/app.js
+++ b/mail/js/app.js
@@ -487,7 +487,7 @@ app.classes.mail = AppJS.extend(
if(typeof selected != 'undefined' && selected.length == 1)
{
var _id = this.mail_fetchCurrentlyFocussed(selected);
- dataElem = egw.dataGetUIDdata(_id);
+ dataElem = jQuery.extend(dataElem, egw.dataGetUIDdata(_id));
}
//get_class does not exist yet
//var pAAClass = this.et2.getWidgetById('previewAttachmentArea').get_class();
@@ -500,14 +500,26 @@ app.classes.mail = AppJS.extend(
{
return;
}
+
+ // Widget ID:data key map of widgets we can directly set from cached data
+ var data_widgets = {
+ 'previewFromAddress': 'fromaddress',
+ 'previewToAddress': 'toaddress',
+ 'previewDate': 'date',
+ 'previewSubject': 'subject'
+ };
+
+ // Set widget values from cached data
+ for(var id in data_widgets)
+ {
+ var widget = this.et2.getWidgetById(id);
+ if(widget == null) continue;
+ widget.set_value(dataElem.data[data_widgets[id]] || "");
+ }
+
+ // Leave if we're here and there is nothing selected, too many, or no data
if(typeof selected == 'undefined' || selected.length == 0 || selected.length > 1 || typeof dataElem =='undefined')
{
- this.mail_fetchCurrentlyFocussed();
- var subject ="";
- this.et2.getWidgetById('previewFromAddress').set_value("");
- this.et2.getWidgetById('previewToAddress').set_value("");
- this.et2.getWidgetById('previewDate').set_value("");
- this.et2.getWidgetById('previewSubject').set_value("");
this.et2.getWidgetById('button[showAllAddresses]').set_class('et2_button ui-button mail_DisplayNone');
this.et2.getWidgetById('previewAttachmentArea').set_value({content:[]});
this.et2.getWidgetById('previewAttachmentArea').set_class('previewAttachmentArea noContent mail_DisplayNone');
@@ -516,24 +528,50 @@ app.classes.mail = AppJS.extend(
this.mail_disablePreviewArea(true);
return;
}
+
+ // Set up additional addresses. Too bad they weren't all together somewhere.
+ // We add a new URL widget for each, so they get all the UI
+ // list of keys:
+ var additional_addresses = [
+ {data: 'additionaltoaddress', widget: 'additionalToAddress', line: 'mailPreviewHeadersTo'},
+ {data: 'additionalccaddress', widget: 'additionalCCAddress', line: 'mailPreviewHeadersCC'}
+ ];
+ for(var j = 0; j < additional_addresses.length; j++)
+ {
+ var field = additional_addresses[j];
+ var additional = dataElem.data[field.data] || [];
+
+ // Disable whole box if there are none
+ var line = this.et2.getWidgetById(field.line);
+ if(line != null) line.set_disabled(additional.length == 0);
+
+ var widget = this.et2.getWidgetById(field.widget);
+ if(widget == null) continue;
+ widget.set_disabled(true);
+
+ // Remove any existing
+ var children = widget.getChildren();
+ for(var i = children.length-1; i >= 0; i--)
+ {
+ children[i].destroy();
+ widget.removeChild(children[i]);
+ }
+
+ // Add for current record
+ for(var i = 0; i < additional.length; i++)
+ {
+ var value = additional[i];
+ var email = et2_createWidget('url-email',{value:value,readonly:true},widget);
+ email.loadingFinished();
+ }
+
+ // Set up button
+
+ }
+
//console.log("mail_preview",dataElem);
this.mail_selectedMails.push(_id);
- var subject =dataElem.data.subject;
this.mail_disablePreviewArea(false);
- this.et2.getWidgetById('previewFromAddress').set_value(dataElem.data.fromaddress);
- this.et2.getWidgetById('previewToAddress').set_value(dataElem.data.toaddress);
- this.et2.getWidgetById('previewDate').set_value(dataElem.data.date);
- this.et2.getWidgetById('previewSubject').set_value(subject);
- if (dataElem.data.additionaltoaddress=="null") dataElem.data.additionaltoaddress='';
- if (dataElem.data.ccaddress=='null') dataElem.data.ccaddress='';
- if ((dataElem.data.additionaltoaddress.length+dataElem.data.ccaddress.length)<1)
- {
- this.et2.getWidgetById('button[showAllAddresses]').set_class('et2_button ui-button mail_DisplayNone');
- }
- else
- {
- this.et2.getWidgetById('button[showAllAddresses]').set_class('et2_button ui-button');
- }
if (dataElem.data.attachmentsBlock.length<1)
{
this.et2.getWidgetById('previewAttachmentArea').set_class('previewAttachmentArea noContent mail_DisplayNone');
diff --git a/mail/templates/default/index.xet b/mail/templates/default/index.xet
index 691446449f..bc45f9f0dd 100644
--- a/mail/templates/default/index.xet
+++ b/mail/templates/default/index.xet
@@ -55,7 +55,16 @@
+