-
+
@@ -220,31 +220,29 @@
uploader="editor.uploader"
ng-show="false"/>
-
-
+
+ readonly="true" class="ng-hide">
{{$chip.filename}}
- close
+ close
-
+
+
+
+
{{$chip.file.name}}
- close
- cancel
- {{$chip.progress}} %
+ close
-
diff --git a/UI/WebServerResources/js/Mailer/MessageEditorController.js b/UI/WebServerResources/js/Mailer/MessageEditorController.js
index 7d3985993..09a007500 100644
--- a/UI/WebServerResources/js/Mailer/MessageEditorController.js
+++ b/UI/WebServerResources/js/Mailer/MessageEditorController.js
@@ -6,8 +6,8 @@
/**
* @ngInject
*/
- MessageEditorController.$inject = ['$stateParams', '$mdDialog', '$mdToast', 'FileUploader', 'stateAccounts', 'stateMessage', 'stateRecipients', '$timeout', 'sgFocus', 'Dialog', 'AddressBook', 'Preferences'];
- function MessageEditorController($stateParams, $mdDialog, $mdToast, FileUploader, stateAccounts, stateMessage, stateRecipients, $timeout, focus, Dialog, AddressBook, Preferences) {
+ MessageEditorController.$inject = ['$stateParams', '$mdDialog', '$mdToast', 'FileUploader', 'stateAccounts', 'stateMessage', 'stateRecipients', '$timeout', 'Dialog', 'AddressBook', 'Preferences'];
+ function MessageEditorController($stateParams, $mdDialog, $mdToast, FileUploader, stateAccounts, stateMessage, stateRecipients, $timeout, Dialog, AddressBook, Preferences) {
var vm = this;
vm.addRecipient = addRecipient;
@@ -18,29 +18,30 @@
vm.hideBcc = true;
vm.cancel = cancel;
vm.send = send;
+ vm.removeAttachment = removeAttachment;
vm.contactFilter = contactFilter;
vm.identities = _.pluck(_.flatten(_.pluck(stateAccounts, 'identities')), 'full');
vm.uploader = new FileUploader({
url: stateMessage.$absolutePath({asDraft: true}) + '/save',
autoUpload: true,
alias: 'attachments',
- onProgressItem: function(item, progress) {
- console.debug(item); console.debug(progress);
- },
+ removeAfterUpload: false,
+ // onProgressItem: function(item, progress) {
+ // console.debug(item); console.debug(progress);
+ // },
onSuccessItem: function(item, response, status, headers) {
stateMessage.$setUID(response.uid);
- stateMessage.$reload();
- console.debug(item); console.debug('success = ' + JSON.stringify(response, undefined, 2));
+ stateMessage.$reload({asDraft: false});
+ //console.debug(item); console.debug('success = ' + JSON.stringify(response, undefined, 2));
},
onCancelItem: function(item, response, status, headers) {
- console.debug(item); console.debug('cancel = ' + JSON.stringify(response, undefined, 2));
-
+ //console.debug(item); console.debug('cancel = ' + JSON.stringify(response, undefined, 2));
// We remove the attachment
stateMessage.$deleteAttachment(item.file.name);
this.removeFromQueue(item);
},
onErrorItem: function(item, response, status, headers) {
- console.debug(item); console.debug('error = ' + JSON.stringify(response, undefined, 2));
+ //console.debug(item); console.debug('error = ' + JSON.stringify(response, undefined, 2));
}
});
@@ -61,16 +62,45 @@
else if ($stateParams.actionName == 'forward') {
stateMessage.$forward().then(function(msgObject) {
vm.message = msgObject;
+ addAttachments();
});
}
else if (angular.isDefined(stateMessage)) {
vm.message = stateMessage;
+ addAttachments();
}
if (angular.isDefined(stateRecipients)) {
vm.message.editable.to = _.union(vm.message.editable.to, _.pluck(stateRecipients, 'full'));
}
+ function addAttachments() {
+ // Add existing attached files to uploader
+ var i, data, fileItem;
+ if (vm.message.attachmentAttrs)
+ for (i = 0; i < vm.message.attachmentAttrs.length; i++) {
+ data = {
+ name: vm.message.attachmentAttrs[i].filename,
+ type: vm.message.attachmentAttrs[i].mimetype,
+ size: parseInt(vm.message.attachmentAttrs[i].size)
+ };
+ fileItem = new FileUploader.FileItem(vm.uploader, data);
+ fileItem.progress = 100;
+ fileItem.isUploaded = true;
+ fileItem.isSuccess = true;
+ vm.uploader.queue.push(fileItem);
+ }
+ }
+
+ function removeAttachment(item) {
+ if (item.isUploading)
+ vm.uploader.cancelItem(item);
+ else {
+ vm.message.$deleteAttachment(item.file.name);
+ item.remove();
+ }
+ }
+
function cancel() {
// TODO: delete draft?
if (vm.autosave)
@@ -126,10 +156,12 @@
vm.autosave = $timeout(vm.autosaveDrafts, Preferences.defaults.SOGoMailAutoSave*1000*60);
}
- // Select list based on user's settings
+ // Read user's defaults
Preferences.ready().then(function() {
if (Preferences.defaults.SOGoMailAutoSave)
+ // Enable auto-save of draft
vm.autosave = $timeout(vm.autosaveDrafts, Preferences.defaults.SOGoMailAutoSave*1000*60);
+ // Set the locale of CKEditor
vm.localeCode = Preferences.defaults.LocaleCode;
});
}
diff --git a/UI/WebServerResources/scss/components/chips/chips.scss b/UI/WebServerResources/scss/components/chips/chips.scss
index cc51bec5c..c398df657 100644
--- a/UI/WebServerResources/scss/components/chips/chips.scss
+++ b/UI/WebServerResources/scss/components/chips/chips.scss
@@ -23,6 +23,28 @@ md-chips {
}
}
}
+ .sg-chip-progress {
+ border-radius: $chip-height / 2;
+ bottom: 0;
+ left: 0;
+ overflow: hidden;
+ position: absolute;
+ right: 0;
+ top: 0;
+ transition: $swift-ease-in-out;
+ &.ng-hide {
+ background-color: #fff;
+ }
+ span {
+ bottom: 0;
+ left: 0;
+ opacity: 0.5;
+ position: absolute;
+ top: 0;
+ transition: $swift-ease-in-out;
+ width: 0;
+ }
+ }
}
// Enlarge the default autocompletion menu