Improve JavaScript of Mail module
- activated file uploader of mail editor - renamed method $update to $reload - automatically mark messages as read - use ui-sref-active from ui-router instead of ng-class
This commit is contained in:
parent
533d7110c7
commit
3aec2828b4
|
@ -149,12 +149,12 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @function $update
|
* @function $reload
|
||||||
* @memberof Mailbox.prototype
|
* @memberof Mailbox.prototype
|
||||||
* @desc Fetch the messages metadata of the mailbox.
|
* @desc Fetch the messages metadata of the mailbox.
|
||||||
* @returns a promise of the HTTP operation
|
* @returns a promise of the HTTP operation
|
||||||
*/
|
*/
|
||||||
Mailbox.prototype.$update = function() {
|
Mailbox.prototype.$reload = function() {
|
||||||
var futureMailboxData;
|
var futureMailboxData;
|
||||||
|
|
||||||
futureMailboxData = Mailbox.$$resource.post(this.id, 'view', {sortingAttributes: {sort: 'date', asc: false}});
|
futureMailboxData = Mailbox.$$resource.post(this.id, 'view', {sortingAttributes: {sort: 'date', asc: false}});
|
||||||
|
|
|
@ -157,12 +157,12 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @function $update
|
* @function $reload
|
||||||
* @memberof Message.prototype
|
* @memberof Message.prototype
|
||||||
* @desc Fetch the viewable message body along with other metadata such as the list of attachments.
|
* @desc Fetch the viewable message body along with other metadata such as the list of attachments.
|
||||||
* @returns a promise of the HTTP operation
|
* @returns a promise of the HTTP operation
|
||||||
*/
|
*/
|
||||||
Message.prototype.$update = function() {
|
Message.prototype.$reload = function() {
|
||||||
var futureMessageData;
|
var futureMessageData;
|
||||||
|
|
||||||
futureMessageData = Message.$$resource.fetch(this.id, 'view');
|
futureMessageData = Message.$$resource.fetch(this.id, 'view');
|
||||||
|
@ -191,7 +191,7 @@
|
||||||
return Message.$$resource.save(this.$absolutePath({asDraft: true}), data).then(function(response) {
|
return Message.$$resource.save(this.$absolutePath({asDraft: true}), data).then(function(response) {
|
||||||
Message.$log.debug('save = ' + JSON.stringify(response, undefined, 2));
|
Message.$log.debug('save = ' + JSON.stringify(response, undefined, 2));
|
||||||
_this.$setUID(response.uid);
|
_this.$setUID(response.uid);
|
||||||
_this.$update(); // fetch a new viewable version of the message
|
_this.$reload(); // fetch a new viewable version of the message
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -247,6 +247,13 @@
|
||||||
_this.$formatFullAddresses();
|
_this.$formatFullAddresses();
|
||||||
deferred.resolve(_this);
|
deferred.resolve(_this);
|
||||||
});
|
});
|
||||||
|
if (!_this.isread) {
|
||||||
|
Message.$$resource.fetch(_this.id, 'markMessageRead').then(function() {
|
||||||
|
Message.$timeout(function() {
|
||||||
|
_this.isread = true;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
}, function(data) {
|
}, function(data) {
|
||||||
angular.extend(_this, data);
|
angular.extend(_this, data);
|
||||||
_this.isError = true;
|
_this.isError = true;
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
angular.module('SOGo.Common', []);
|
angular.module('SOGo.Common', []);
|
||||||
angular.module('SOGo.ContactsUI', []);
|
angular.module('SOGo.ContactsUI', []);
|
||||||
|
|
||||||
angular.module('SOGo.MailerUI', ['ngSanitize', 'ui.router', 'mm.foundation', 'vs-repeat', 'ck', 'ngTagsInput', 'SOGo.Common', 'SOGo.UICommon', 'SOGo.UIDesktop', 'SOGo.ContactsUI'])
|
angular.module('SOGo.MailerUI', ['ngSanitize', 'ui.router', 'mm.foundation', 'vs-repeat', 'ck', 'ngTagsInput', 'angularFileUpload', 'SOGo.Common', 'SOGo.UICommon', 'SOGo.UIDesktop', 'SOGo.ContactsUI'])
|
||||||
|
|
||||||
.constant('sgSettings', {
|
.constant('sgSettings', {
|
||||||
baseURL: ApplicationBaseURL,
|
baseURL: ApplicationBaseURL,
|
||||||
|
@ -84,7 +84,7 @@
|
||||||
return _find(stateAccount.$mailboxes);
|
return _find(stateAccount.$mailboxes);
|
||||||
}],
|
}],
|
||||||
stateMessages: ['stateMailbox', function(stateMailbox) {
|
stateMessages: ['stateMailbox', function(stateMailbox) {
|
||||||
return stateMailbox.$update();
|
return stateMailbox.$reload();
|
||||||
}]
|
}]
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -97,12 +97,15 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
resolve: {
|
resolve: {
|
||||||
stateMessage: ['$stateParams', 'stateMailbox', 'stateMessages', function($stateParams, stateMailbox, stateMessages) {
|
stateMessage: ['$stateParams', '$state', 'stateMailbox', 'stateMessages', function($stateParams, $state, stateMailbox, stateMessages) {
|
||||||
var message = _.find(stateMessages, function(messageObject) {
|
var message = _.find(stateMessages, function(messageObject) {
|
||||||
return messageObject.uid == $stateParams.messageId;
|
return messageObject.uid == $stateParams.messageId;
|
||||||
});
|
});
|
||||||
|
|
||||||
return message.$update();
|
if (message)
|
||||||
|
return message.$reload();
|
||||||
|
else
|
||||||
|
$state.go('mail.account.mailbox', { accountId: stateMailbox.$account.id, mailboxId: encodeUriFilter(stateMailbox.path) });
|
||||||
}]
|
}]
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
@ -230,7 +233,7 @@
|
||||||
};
|
};
|
||||||
}])
|
}])
|
||||||
|
|
||||||
.controller('MessageEditorCtrl', ['$scope', '$rootScope', '$stateParams', '$state', '$q', 'stateAccounts', 'stateMessage', '$timeout', '$modal', 'sgFocus', 'sgDialog', 'sgAccount', 'sgMailbox', 'sgAddressBook', function($scope, $rootScope, $stateParams, $state, $q, stateAccounts, stateMessage, $timeout, $modal, focus, Dialog, Account, Mailbox, AddressBook) {
|
.controller('MessageEditorCtrl', ['$scope', '$rootScope', '$stateParams', '$state', '$q', 'FileUploader', 'stateAccounts', 'stateMessage', '$timeout', '$modal', 'sgFocus', 'sgDialog', 'sgAccount', 'sgMailbox', 'sgAddressBook', function($scope, $rootScope, $stateParams, $state, $q, FileUploader, stateAccounts, stateMessage, $timeout, $modal, focus, Dialog, Account, Mailbox, AddressBook) {
|
||||||
if (angular.isDefined(stateMessage)) {
|
if (angular.isDefined(stateMessage)) {
|
||||||
$scope.message = stateMessage;
|
$scope.message = stateMessage;
|
||||||
}
|
}
|
||||||
|
@ -250,6 +253,22 @@
|
||||||
});
|
});
|
||||||
return deferred.promise;
|
return deferred.promise;
|
||||||
};
|
};
|
||||||
|
$scope.uploader = new FileUploader({
|
||||||
|
url: stateMessage.$absolutePath({asDraft: true}) + '/save',
|
||||||
|
autoUpload: true,
|
||||||
|
alias: 'attachments',
|
||||||
|
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));
|
||||||
|
},
|
||||||
|
onErrorItem: function(item, response, status, headers) {
|
||||||
|
console.debug(item); console.debug('error = ' + JSON.stringify(response, undefined, 2));
|
||||||
|
}
|
||||||
|
});
|
||||||
}]);
|
}]);
|
||||||
|
|
||||||
})();
|
})();
|
||||||
|
|
|
@ -96,7 +96,7 @@
|
||||||
return _find(stateAccount.$mailboxes);
|
return _find(stateAccount.$mailboxes);
|
||||||
}],
|
}],
|
||||||
stateMessages: ['stateMailbox', function(stateMailbox) {
|
stateMessages: ['stateMailbox', function(stateMailbox) {
|
||||||
return stateMailbox.$update();
|
return stateMailbox.$reload();
|
||||||
}]
|
}]
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
|
@ -215,6 +215,9 @@ $column-gutter: 0;
|
||||||
font-weight: normal;
|
font-weight: normal;
|
||||||
font-size: smaller;
|
font-size: smaller;
|
||||||
}
|
}
|
||||||
|
&._selected {
|
||||||
|
background-color: #fff;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
&.unread {
|
&.unread {
|
||||||
a {
|
a {
|
||||||
|
@ -227,23 +230,8 @@ $column-gutter: 0;
|
||||||
}
|
}
|
||||||
&:hover,
|
&:hover,
|
||||||
&:active {
|
&:active {
|
||||||
background-color: $f-dropdown-list-hover-bg;
|
|
||||||
//background-color: scale-color($f-dropdown-list-hover-bg, $lightness: 28%);
|
|
||||||
background-color: #fff;
|
background-color: #fff;
|
||||||
}
|
}
|
||||||
&._selected,
|
|
||||||
&._selected span {
|
|
||||||
//background-color: $module-light-color;
|
|
||||||
//background-color: $sub-nav-active-bg-hover;
|
|
||||||
//background-color: $f-dropdown-list-hover-bg;
|
|
||||||
background-color: $module-color;
|
|
||||||
background-color: #fff;
|
|
||||||
//color: $module-color;
|
|
||||||
//color: $module-secondary-color;
|
|
||||||
.name {
|
|
||||||
//color: #fff;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue