diff --git a/NEWS b/NEWS index 22d67d66b..30bc834fd 100644 --- a/NEWS +++ b/NEWS @@ -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 diff --git a/UI/MainUI/SOGoUserHomePage.m b/UI/MainUI/SOGoUserHomePage.m index 4031b4900..36f149b72 100644 --- a/UI/MainUI/SOGoUserHomePage.m +++ b/UI/MainUI/SOGoUserHomePage.m @@ -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; } diff --git a/UI/WebServerResources/UIxContactsUserFolders.js b/UI/WebServerResources/UIxContactsUserFolders.js index d66457835..724f0d060 100644 --- a/UI/WebServerResources/UIxContactsUserFolders.js +++ b/UI/WebServerResources/UIxContactsUserFolders.js @@ -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; }