From 5ccbed256ac3112ea4a62ff6a01663fae074d2f3 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Thu, 6 Dec 2007 20:50:20 +0000 Subject: [PATCH] Monotone-Parent: c6248a9c3f974ff7df67b342040fdd9b3380477f Monotone-Revision: b68be9f250b22568280f0f3fe29f6b42ed225aa1 Monotone-Author: flachapelle@inverse.ca Monotone-Date: 2007-12-06T20:50:20 Monotone-Branch: ca.inverse.sogo --- UI/WebServerResources/ContactsUI.js | 34 ++++++++++++++++++++++++---- UI/WebServerResources/SchedulerUI.js | 22 ++++-------------- UI/WebServerResources/generic.js | 22 ++++++++++++++++++ 3 files changed, 56 insertions(+), 22 deletions(-) diff --git a/UI/WebServerResources/ContactsUI.js b/UI/WebServerResources/ContactsUI.js index 087d4f848..fa2ba949f 100644 --- a/UI/WebServerResources/ContactsUI.js +++ b/UI/WebServerResources/ContactsUI.js @@ -532,16 +532,34 @@ function onAddressBookNew(event) { } function appendAddressBook(name, folder) { - if (folder) + var owner; + + if (folder) { + owner = getSubscribedFolderOwner(folder); folder = accessToSubscribedFolder(folder); + } else folder = "/" + name; + + if (!owner) + owner = UserLogin; + if ($(folder)) window.alert(clabels["You have already subscribed to that folder!"]); else { + var contactFolders = $("contactFolders"); + var items = contactFolders.childNodesWithTag("li"); var li = document.createElement("li"); - $("contactFolders").appendChild(li); + + // Add the calendar to the proper place + var i = getListIndexForFolder(items, owner, name); + if (i != items.length) // User is subscribed to other calendars of the same owner + contactFolders.insertBefore(li, items[i]); + else + contactFolders.appendChild(li); + li.setAttribute("id", folder); + li.setAttribute("owner", owner); li.appendChild(document.createTextNode(name)); setEventsOnContactFolder(li); } @@ -758,12 +776,18 @@ function onContactFoldersMenuPrepareVisibility() { if (selected.length > 0) { var folderOwner = selected[0].getAttribute("owner"); + var modifyOption = $(this).down("ul").childElements().first(); var sharingOption = $(this).down("ul").childElements().last(); - // Disable the "Sharing" option when address book is not owned by user - if (folderOwner == UserLogin || IsSuperUser) + // Disable the "Sharing" and "Modify" options when address book + // is not owned by user + if (folderOwner == UserLogin || IsSuperUser) { + modifyOption.removeClassName("disabled"); sharingOption.removeClassName("disabled"); - else + } + else { + modifyOption.addClassName("disabled"); sharingOption.addClassName("disabled"); + } } } diff --git a/UI/WebServerResources/SchedulerUI.js b/UI/WebServerResources/SchedulerUI.js index 230132804..8dd803d10 100644 --- a/UI/WebServerResources/SchedulerUI.js +++ b/UI/WebServerResources/SchedulerUI.js @@ -1548,25 +1548,13 @@ function appendCalendar(folderName, folderPath) { window.alert(clabels["You have already subscribed to that folder!"]); else { var calendarList = $("calendarList"); - var lis = calendarList.childNodesWithTag("li"); + var items = calendarList.childNodesWithTag("li"); var li = document.createElement("li"); // Add the calendar to the proper place - var previousOwner = null; - for (var i = 0; i < lis.length; i++) { - var currentFolderName = lis[i].lastChild.nodeValue.strip(); - var currentOwner = lis[i].readAttribute('owner'); - if (currentOwner == owner) { - previousOwner = currentOwner; - if (currentFolderName > folderName) - break; - } - else if (previousOwner || - (currentOwner != UserLogin && currentOwner > owner)) - break; - } - if (i != lis.length) // User is subscribed to other calendars of the same owner - calendarList.insertBefore(li, lis[i]); + var i = getListIndexForFolder(items, owner, folderName); + if (i != items.length) // User is subscribed to other calendars of the same owner + calendarList.insertBefore(li, items[i]); else calendarList.appendChild(li); @@ -1575,7 +1563,7 @@ function appendCalendar(folderName, folderPath) { // Generate new color if (calendarColorIndex == null) - calendarColorIndex = lis.length; + calendarColorIndex = items.length; calendarColorIndex++; var colorTable = [1, 1, 1]; var color; diff --git a/UI/WebServerResources/generic.js b/UI/WebServerResources/generic.js index 6313cd2ea..f80417717 100644 --- a/UI/WebServerResources/generic.js +++ b/UI/WebServerResources/generic.js @@ -1070,6 +1070,28 @@ function getSubscribedFolderOwner(serverFolder) { return owner; } +function getListIndexForFolder(items, owner, folderName) { + var i; + var previousOwner = null; + + for (var i = 0; i < items.length; i++) { + var currentFolderName = items[i].lastChild.nodeValue.strip(); + var currentOwner = items[i].readAttribute('owner'); + if (currentOwner == owner) { + previousOwner = currentOwner; + if (currentFolderName > folderName) + break; + } + else if (previousOwner || + (currentOwner != UserLogin && currentOwner > owner)) + break; + else if (currentOwner == "nobody") + break; + } + + return i; +} + function listRowMouseDownHandler(event) { preventDefault(event); //Event.stop(event);