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 - refresh draft folder after sending a message
- now possible to DnD events in the calendar list - now possible to DnD events in the calendar list
- improved handling of SOGoSubscriptionFolderFormat - improved handling of SOGoSubscriptionFolderFormat
- JSON'ified folder subscription interface
Bug fixes Bug fixes
- fixed weekdays translation in the datepicker - fixed weekdays translation in the datepicker

View File

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

View File

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