merge conflicts

pull/53/head
Alexandre Cloutier 2014-09-02 10:11:27 -04:00
parent 1af52e6d6b
commit 7e26d80c77
4 changed files with 155 additions and 126 deletions

View File

@ -203,74 +203,4 @@
return response;
}
- (WOResponse *) addLabelAction
{
WOResponse *response;
SOGoMailObject *co;
NSException *error;
NSArray *flags;
NSString *flag;
flag = [[[self->context request] formValueForKey: @"flag"] fromCSSIdentifier];
co = [self clientObject];
flags = [NSArray arrayWithObject: flag];
error = [co addFlags: flags];
if (error)
response = (WOResponse *) error;
else
response = [self responseWith204];
return response;
}
- (WOResponse *) removeLabelAction
{
WOResponse *response;
SOGoMailObject *co;
NSException *error;
NSArray *flags;
NSString *flag;
flag = [[[self->context request] formValueForKey: @"flag"] fromCSSIdentifier];
co = [self clientObject];
flags = [NSArray arrayWithObject: flag];
error = [co removeFlags: flags];
if (error)
response = (WOResponse *) error;
else
response = [self responseWith204];
return response;
}
- (WOResponse *) removeAllLabelsAction
{
NSMutableArray *flags;
WOResponse *response;
SOGoMailObject *co;
NSException *error;
NSDictionary *v;
co = [self clientObject];
v = [[[context activeUser] userDefaults] mailLabelsColors];
// We always unconditionally remove the Mozilla tags
flags = [NSMutableArray arrayWithObjects: @"$Label1", @"$Label2", @"$Label3",
@"$Label4", @"$Label5", nil];
[flags addObjectsFromArray: [v allKeys]];
error = [co removeFlags: flags];
if (error)
response = (WOResponse *) error;
else
response = [self responseWith204];
return response;
}
@end

View File

@ -618,4 +618,88 @@
return response;
}
- (WOResponse *) addLabelAction
{
WOResponse *response;
WORequest *request;
SOGoMailFolder *co;
NSException *error;
NSArray *msgUIDs, *flags;
NSString *operation;
NSDictionary *content;
BOOL addOrRemove;
NGImap4Client *client;
request = [context request];
content = [[request contentAsString] objectFromJSONString];
flags = [content objectForKey:@"flags"];
msgUIDs = [content objectForKey:@"msgUIDs"];
operation = [content objectForKey:@"operation"];
if ([operation isEqualToString:@"add"])
addOrRemove = YES;
else
addOrRemove = NO;
co = [self clientObject];
client = [[co imap4Connection] client];
error = [client storeFlags:flags forUIDs:msgUIDs addOrRemove:addOrRemove];
if (error)
response = (WOResponse *) error;
else
response = [self responseWith204];
return response;
}
- (WOResponse *) removeLabelAction
{
WOResponse *response;
SOGoMailObject *co;
NSException *error;
NSArray *flags;
NSString *flag;
flag = [[[self->context request] formValueForKey: @"flag"] fromCSSIdentifier];
co = [self clientObject];
flags = [NSArray arrayWithObject: flag];
error = [co removeFlags: flags];
if (error)
response = (WOResponse *) error;
else
response = [self responseWith204];
return response;
}
- (WOResponse *) removeAllLabelsAction
{
NSMutableArray *flags;
WOResponse *response;
SOGoMailObject *co;
NSException *error;
NSDictionary *v;
co = [self clientObject];
v = [[[context activeUser] userDefaults] mailLabelsColors];
// We always unconditionally remove the Mozilla tags
flags = [NSMutableArray arrayWithObjects: @"$Label1", @"$Label2", @"$Label3",
@"$Label4", @"$Label5", nil];
[flags addObjectsFromArray: [v allKeys]];
error = [co removeFlags: flags];
if (error)
response = (WOResponse *) error;
else
response = [self responseWith204];
return response;
}
@end

View File

@ -181,6 +181,21 @@
pageName = "UIxMailUserRightsEditor";
actionName = "saveUserRights";
};
addLabel = {
protectedBy = "View";
actionClass = "UIxMailFolderActions";
actionName = "addLabel";
};
removeLabel = {
protectedBy = "View";
actionClass = "UIxMailFolderActions";
actionName = "removeLabel";
};
removeAllLabels = {
protectedBy = "View";
actionClass = "UIxMailFolderActions";
actionName = "removeAllLabels";
};
};
};
@ -272,21 +287,6 @@
actionClass = "UIxMailActions";
actionName = "markMessageRead";
};
addLabel = {
protectedBy = "View";
actionClass = "UIxMailActions";
actionName = "addLabel";
};
removeLabel = {
protectedBy = "View";
actionClass = "UIxMailActions";
actionName = "removeLabel";
};
removeAllLabels = {
protectedBy = "View";
actionClass = "UIxMailActions";
actionName = "removeAllLabels";
};
};
};

View File

@ -31,7 +31,7 @@ var pageContent = $("pageContent");
var deleteMessageRequestCount = 0;
var messageCheckTimer;
var refreshViewCheckTimer;
/* We need to override this method since it is adapted to GCS-based folder
references, which we do not use here */
@ -1955,7 +1955,7 @@ function initMailer(event) {
configureMessageListEvents();
initMailboxTree();
initMessageCheckTimer();
initRefreshViewCheckTimer();
Event.observe(document, "keydown", onDocumentKeydown);
@ -1975,23 +1975,27 @@ function initMailer(event) {
Event.observe(window, "resize", onWindowResize);
}
function initMessageCheckTimer() {
var messageCheck = UserDefaults["SOGoMailMessageCheck"];
if (messageCheck && messageCheck != "manually") {
function initRefreshViewCheckTimer() {
// TEMPORARY : to be erase
var refreshViewCheck = UserDefaults["SOGoMailMessageCheck"];
if (refreshViewCheck == null)
refreshViewCheck = UserDefaults["SOGoRefreshViewCheck"];
if (refreshViewCheck && refreshViewCheck != "manually") {
var interval;
if (messageCheck == "once_per_hour")
if (refreshViewCheck == "once_per_hour")
interval = 3600;
else if (messageCheck == "every_minute")
else if (refreshViewCheck == "every_minute")
interval = 60;
else {
interval = parseInt(messageCheck.substr(6)) * 60;
interval = parseInt(refreshViewCheck.substr(6)) * 60;
}
messageCheckTimer = window.setInterval(onMessageCheckCallback,
interval * 1000);
refreshViewCheckTimer = window.setInterval(onRefreshViewCheckCallback,
interval * 1000);
}
}
function onMessageCheckCallback(event) {
function onRefreshViewCheckCallback(event) {
refreshMailbox();
}
@ -2447,8 +2451,8 @@ function onMenuLabelNone() {
messages.push(Mailer.currentMessages[Mailer.currentMailbox]);
else if (Object.isArray(document.menuTarget))
// Menu called from multiple selection in messages list view
$(document.menuTarget).collect(function(rowID) {
messages.push(rowID.substr(4));
$(document.menuTarget).collect(function(row) {
messages.push(row.substr(4));
});
else
// Menu called from one selection in messages list view
@ -2463,40 +2467,51 @@ function onMenuLabelNone() {
}
function onMenuLabelFlag() {
var messages = new Hash();
var flag = this.readAttribute("data-name");
if (document.menuTarget.tagName == "DIV")
// Menu called from message content view
messages.set(Mailer.currentMessages[Mailer.currentMailbox],
$('row_' + Mailer.currentMessages[Mailer.currentMailbox]).getAttribute("labels"));
else if (Object.isArray(document.menuTarget))
// Menu called from multiple selection in messages list view
$(document.menuTarget).collect(function(rowID) {
var row = $(rowID);
if (row)
messages.set(rowID.substr(4),
row.getAttribute("labels"));
});
else
// Menu called from one selection in messages list view
messages.set(document.menuTarget.getAttribute("id").substr(4),
document.menuTarget.getAttribute("labels"));
var url = ApplicationBaseURL + encodeURI(Mailer.currentMailbox) + "/";
messages.keys().each(function(id) {
var flags = messages.get(id).split(" ");
var operation = "add";
var operation = "add";
var msgUIDs;
var msgLabels;
if (!Object.isArray(document.menuTarget)) {
msgUIDs = Mailer.currentMessages[Mailer.currentMailbox];
if (document.menuTarget.tagName == "DIV")
// Menu called from message content view
msgLabels = $('row_' + msgLabels).getAttribute("labels");
else
// Menu called from one selection in messages list view
msgLabels = document.menuTarget.getAttribute("labels");
var flags = msgLabels.split(" ");
if (flags.indexOf(flag) > -1)
operation = "remove";
}
else {
// Menu called from multiple selection in messages list view
var rows = $(document.menuTarget);
var blockedOperation = false;
for (var i = 0; i < rows.length; i++) {
var row = $(rows[i]);
if (row) {
msgUIDs.push(rows[i].substr(4));
msgLabels = row.getAttribute("labels");
var flags = msgLabels.split(" ");
if (flags.indexOf(flag) > -1 && !blockedOperation) {
operation = "remove";
}
else {
blockedOperation = true;
operation = "add";
}
}
}
}
triggerAjaxRequest(url + id + "/" + operation + "Label?flag=" + flag.asCSSIdentifier(),
messageFlagCallback,
{ mailbox: Mailer.currentMailbox, msg: id,
label: operation + flag } );
});
var callbackData = { mailbox: Mailer.currentMailbox, operation: operation, flag: flag };
var content = {flags: flag.asCSSIdentifier(), msgUIDs: msgUIDs, operation: operation};
content = Object.toJSON(content);
triggerAjaxRequest(url + operation + "Label", messageFlagCallback, callbackData, content);
}
function onMenuToggleMessageFlag(event) {