JSON interface to folder subscriptions

pull/48/merge
Ludovic Marcotte 2014-07-24 14:00:57 -04:00
parent b52289904f
commit 4c21a050d9
3 changed files with 14 additions and 16 deletions

1
NEWS
View File

@ -9,6 +9,7 @@ Enhancements
- refresh draft folder after sending a message
- now possible to DnD events in the calendar list
- improved handling of SOGoSubscriptionFolderFormat
- JSON'ified folder subscription interface
Bug fixes
- fixed weekdays translation in the datepicker

View File

@ -442,10 +442,8 @@
[response setStatus: 200];
[response setHeader: @"text/plain; charset=utf-8"
forKey: @"Content-Type"];
foldersEnum = [folders objectEnumerator];
while ((currentFolder = [foldersEnum nextObject]))
[response appendContentString:
[currentFolder keysWithFormat: @";%{displayName}:%{name}:%{type}:%{formattedName}"]];
[response appendContentString: [folders JSONRepresentation]];
return response;
}

View File

@ -159,17 +159,17 @@ function foldersSearchCallback(http) {
var dd = $("dd" + nodeId);
if (response.length) {
var folders = response.split(";");
var folders = response.evalJSON();
var user = http.callbackData["user"];
dd.innerHTML = '';
for (var i = 1; i < folders.length - 1; i++)
dd.appendChild(addFolderBranchToTree(d, user, folders[i], nodeId, i, false));
for (var i = 0; i < folders.length-1; i++)
dd.appendChild(addFolderBranchToTree(d, user, folders[i], nodeId, i+1, false));
dd.appendChild(addFolderBranchToTree(d, user, folders[folders.length-1], nodeId,
(folders.length - 1), true));
folders.length, true));
//dd.update(str);
for (var i = 1; i < folders.length; i++) {
var sd = $("sd" + (nodeId + i));
for (var i = 0; i < folders.length; i++) {
var sd = $("sd" + (nodeId + i + 1));
sd.on("click", onTreeItemClick);
}
}
@ -185,22 +185,21 @@ function foldersSearchCallback(http) {
}
function addFolderBranchToTree(tree, user, folder, nodeId, subId, isLast) {
var folderInfos = folder.split(":");
var icon = ResourcesURL + '/';
if (folderInfos[2] == 'Contact')
if (folder.type == 'Contact')
icon += 'tb-mail-addressbook-flat-16x16.png';
else
icon += 'calendar-folder-16x16.png';
var folderId = user + ":" + folderInfos[1].substr(1);
var folderId = user + ":" + folder.name.substr(1);
// We sanitize the value to avoid XSS issues
var name = folderInfos[0].escapeHTML();
var name = folder.displayName.escapeHTML();
var node = new dTreeNode(subId, nodeId, name, 0, '#', folderId,
folderInfos[2] + '-folder', '', '', icon, icon);
folder.type + '-folder', '', '', icon, icon);
node._ls = isLast;
var content = tree.node(node, (nodeId + subId), null);
content._formattedName = folderInfos[3];
content._formattedName = folder.formattedName;
return content;
}