From 05c347d2816a4625d045dfeb3b8761ffff18d2c4 Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Wed, 20 Dec 2006 16:45:52 +0000 Subject: [PATCH] Monotone-Parent: 85e8a21a77536298272957804613bdc6189853fc Monotone-Revision: 1166336fab8e7bdf13b850af8c0155fa72c445ff Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2006-12-20T16:45:52 Monotone-Branch: ca.inverse.sogo --- UI/WebServerResources/ContactsUI.js | 26 +++++++----- UI/WebServerResources/SchedulerUI.js | 55 ++++++++++++++++++-------- UI/WebServerResources/UIxAclEditor.css | 1 + UI/WebServerResources/generic.js | 32 +++++++++------ 4 files changed, 76 insertions(+), 38 deletions(-) diff --git a/UI/WebServerResources/ContactsUI.js b/UI/WebServerResources/ContactsUI.js index 00b0e706b..fd7e4002f 100644 --- a/UI/WebServerResources/ContactsUI.js +++ b/UI/WebServerResources/ContactsUI.js @@ -144,18 +144,24 @@ function openContactsFolderAtIndex(element) { function contactsListCallback(http) { - var div = $('contactsListContent'); + var div = $("contactsListContent"); - if (http.readyState == 4 - && http.status == 200) { - document.contactsListAjaxRequest = null; - div.innerHTML = http.responseText; - var selected = http.callbackData; - if (selected) { - for (var i = 0; i < selected.length; i++) - selectNode($(selected[i])); + if (http.readyState == 4) { + if (http.status == 200) { + document.contactsListAjaxRequest = null; + div.innerHTML = http.responseText; + var selected = http.callbackData; + if (selected) { + for (var i = 0; i < selected.length; i++) + selectNode($(selected[i])); + } + configureSortableTableHeaders(); + } else if (http.status == 403) { + window.alert(labels.error_ab_access_denied.decodeEntities()); + openContactsFolder("/personal", null, false); + var cf = $("contactFolders"); + cf.deselectAll(); } - configureSortableTableHeaders(); } else log ("ajax fuckage"); diff --git a/UI/WebServerResources/SchedulerUI.js b/UI/WebServerResources/SchedulerUI.js index fb21b69f8..836f2ca04 100644 --- a/UI/WebServerResources/SchedulerUI.js +++ b/UI/WebServerResources/SchedulerUI.js @@ -855,8 +855,7 @@ function calendarUidsList() { var list = ""; - var clist = $("calendarsList"); - var nodes = clist.childNodes[5].childNodesWithTag("li"); + var nodes = $("uixselector-calendarsList-display").childNodesWithTag("li"); for (var i = 0; i < nodes.length; i++) { var currentNode = nodes[i]; var input = currentNode.childNodesWithTag("input")[0]; @@ -907,8 +906,44 @@ function inhibitMyCalendarEntry() } } +function userCalendarEntry(user, color) { + var li = document.createElement("li"); + li.setAttribute("uid", user); + li.addEventListener("mousedown", listRowMouseDownHandler, false); + li.addEventListener("click", onRowClick, false); + var colorBox = document.createElement("span"); + colorBox.addClassName("colorBox"); + if (color) { + log("color: " + color); + colorBox.style.backgroundColor = color + ";"; + } + li.appendChild(colorBox); + var checkBox = document.createElement("input"); + checkBox.addClassName("checkBox"); + checkBox.type = "checkbox"; + checkBox.addEventListener("change", updateCalendarStatus, false); + li.appendChild(checkBox); + var text = document.createTextNode(" " + user); + li.appendChild(text); + + return li; +} + +function ensureSelfIfPresent() { + var ul = $("uixselector-calendarsList-display"); + var list = ul.childNodesWithTag("li"); + var selfEntry = userCalendarEntry(UserLogin, indexColor(0)); + selfEntry.style.fontWeight = "bold;"; + if (list.length < 1) { + ul.appendChild(selfEntry); + } else if (list[0].getAttribute("uid") != UserLogin) { + ul.insertBefore(selfEntry, list[0]); + } +} + function updateCalendarsList(method) { + ensureSelfIfPresent(); var url = (ApplicationBaseURL + "updateCalendars?ids=" + calendarUidsList()); if (document.calendarsListAjaxRequest) { @@ -963,21 +998,9 @@ function addContact(tag, fullContactName, contactId, contactName, contactEmail) else uids.value = contactId; var names = $("uixselector-calendarsList-display"); - names.innerHTML += ('
  • ' - + ' ' - + ' ' - + contactName + '
  • '); var listElems = names.childNodesWithTag("li"); - var i = (listElems.length - 1); - var colorDef = indexColor(i); - log("colorDef: " + colorDef); - var input = listElems[i].childNodesWithTag("input")[0]; - listElems[i].addEventListener("click", onRowClick, false); - var colorBox = listElems[i].childNodesWithTag("span")[0]; - log("colorBox: " + colorBox); - colorBox.style.backgroundColor = colorDef + ";"; - input.addEventListener("change", updateCalendarStatus, false); + var colorDef = indexColor(listElems.length); + names.appendChild(userCalendarEntry(contactId, colorDef)); var styles = document.getElementsByTagName("style"); styles[0].innerHTML += ('.ownerIs' + contactId + ' {' diff --git a/UI/WebServerResources/UIxAclEditor.css b/UI/WebServerResources/UIxAclEditor.css index ff5bebba1..bbce7a5dc 100644 --- a/UI/WebServerResources/UIxAclEditor.css +++ b/UI/WebServerResources/UIxAclEditor.css @@ -5,6 +5,7 @@ DIV.acls DIV.acls LABEL { position: relative; + white-space: normal; width: 100%; } DIV.acls LABEL > SPAN.value diff --git a/UI/WebServerResources/generic.js b/UI/WebServerResources/generic.js index 9ba0bd815..03ffb46cc 100644 --- a/UI/WebServerResources/generic.js +++ b/UI/WebServerResources/generic.js @@ -940,24 +940,32 @@ function d2h(d) { } function indexColor(number) { - var colorTable = new Array(1, 1, 1); + var color; - var currentValue = number; - var index = 0; - while (currentValue) - { - if (currentValue & 1) - colorTable[index]++; + if (number == 0) + color = "#ccf"; + else { + var colorTable = new Array(1, 1, 1); + + var currentValue = number; + var index = 0; + while (currentValue) + { + if (currentValue & 1) + colorTable[index]++; if (index == 3) index = 0; currentValue >>= 1; index++; - } + } + + color = ("#" + + d2h((256 / colorTable[2]) - 1) + + d2h((256 / colorTable[1]) - 1) + + d2h((256 / colorTable[0]) - 1)); + } - return ("#" - + d2h((256 / colorTable[2]) - 1) - + d2h((256 / colorTable[1]) - 1) - + d2h((256 / colorTable[0]) - 1)); + return color; } var onLoadHandler = {