Monotone-Parent: c494ba259363880f5d46e8931a1708d1ba1aed45

Monotone-Revision: 5f57280bc0c8371b942a310b60e1dfa1a790fb84

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2010-09-30T18:05:14
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Wolfgang Sourdeau
2010-09-30 18:05:14 +00:00
parent 80df885644
commit 79fc9f4c26
30 changed files with 712 additions and 10 deletions
+39 -1
View File
@@ -2370,6 +2370,28 @@ function onMessageListMenuPrepareVisibility() {
return true;
}
function onAccountIconMenuPrepareVisibility() {
/* This methods disables or enables the "Delegation..." menu option on
mail accounts. */
if (document.menuTarget) {
var mbx = document.menuTarget.getAttribute("dataname");
if (mbx) {
var lis = this.getElementsByTagName("li");
var li = lis[lis.length - 1];
var parts = mbx.split("/");
var acctNbr = parseInt(parts[1]);
if (acctNbr > 0) {
li.addClassName("disabled");
}
else {
li.removeClassName("disabled");
}
}
}
return true;
}
function onFolderMenuPrepareVisibility() {
/* This methods disables or enables the "Sharing" menu option on
mailboxes. */
@@ -2485,9 +2507,15 @@ function onMenuArchiveFolder(event) {
event.stop();
}
function onMenuAccountDelegation(event) {
var folderID = document.menuTarget.getAttribute("dataname");
var urlstr = ApplicationBaseURL + folderID + "/delegation";
openAclWindow(urlstr);
}
function getMenus() {
var menus = {
accountIconMenu: [ null, null, onMenuCreateFolder, null, null, null ],
accountIconMenu: [ null, null, onMenuCreateFolder, null, null, onMenuAccountDelegation ],
inboxIconMenu: [ null, null, null, "-", null,
onMenuCreateFolder, onMenuExpungeFolder,
onMenuArchiveFolder, "-", null,
@@ -2555,6 +2583,11 @@ function getMenus() {
labelMenu.prepareVisibility = onLabelMenuPrepareVisibility;
}
var labelMenu = $("label-menu");
if (labelMenu) {
labelMenu.prepareVisibility = onLabelMenuPrepareVisibility;
}
var markMenu = $("mark-menu");
if (markMenu) {
markMenu.prepareVisibility = onMarkMenuPrepareVisibility;
@@ -2568,6 +2601,11 @@ function getMenus() {
}
}
var accountIconMenu = $("accountIconMenu");
if (accountIconMenu) {
accountIconMenu.prepareVisibility = onAccountIconMenuPrepareVisibility;
}
var folderMenus = [ "inboxIconMenu", "trashIconMenu", "mailboxIconMenu" ];
for (var i = 0; i < folderMenus.length; i++) {
var menu = $(folderMenus[i]);
@@ -205,7 +205,7 @@ function onConfirmFolderSelection(event) {
var email = (span.innerHTML
.replace("&lt;", "<", "g")
.replace("&gt;", ">", "g"));
folderName = email;
folderName = email.replace(/>,.*$/, ">", "g");
}
else {
var resource = $(topNode.selectedEntry).down("SPAN.nodeName");
@@ -214,8 +214,8 @@ function onConfirmFolderSelection(event) {
.replace("&lt;", "<", "g")
.replace("&gt;", ">", "g"));
folderName = resource.innerHTML + ' (' + email + ')';
folderName = folderName.replace(/>,.*(\))?$/, ">)$1", "g");
}
folderName = folderName.replace(/>,.*(\))?$/, ">)$1", "g");
var data = { folderName: folderName, folder: folder, window: window };
if (parent$(accessToSubscribedFolder(folder)))
@@ -0,0 +1,58 @@
DIV.delegation
{ position: absolute;
top: 0px;
left: 0px;
right: 0px;
bottom: 0px;
padding: 0px;
border: 0px;
margin: 0px; }
DIV.delegation LABEL
{ white-space: nowrap;
width: 100%; }
#delegateRoles
{ position: absolute;
top: 5px;
left: 0px;
right: 0px;
bottom: 0px; }
#delegateSelectorButtons
{ margin-left: 5px;
padding-bottom: 2px; }
UL#delegateList
{ position: absolute;
left: 0px;
right: 0px;
top: 40px;
bottom: 0px;
padding: 0px;
margin: 0px;
white-space: nowrap;
overflow: auto;
border-bottom: 1px solid #fff;
border-right: 1px solid #fff;
border-top: 1px solid #909090;
border-left: 1px solid #909090;
background-color: #CCDDEC;
list-style-type: none;
list-style-image: none; }
UL#delegateList LI
{ clear: both;
cursor: pointer;
height: 20px;
margin-left: 0px;
padding-left: 24px;
background-repeat: no-repeat;
background-position: 4px center;
background-image: url("abcard.png"); }
DIV#delegateSelectorButtons A.smallToolbarButton
{ float: left; }
SPAN.userFullName
{ margin-top: 2px; }
@@ -0,0 +1,111 @@
var contactSelectorAction = 'delegation-contacts';
function addDelegate(delegateName, delegateID) {
var result = false;
if (!$(delegateID)) {
var ul = $("delegateList");
var newNode = nodeForDelegate(delegateName, delegateID);
ul.appendChild(newNode);
var url = window.location.href;
var elements = url.split("/");
elements[elements.length-1] = ("addDelegate?uid="
+ delegateID);
triggerAjaxRequest(elements.join("/"), addDelegateCallback, newNode);
result = true;
}
return result;
}
function addDelegateCallback(http) {
if (http.readyState == 4) {
if (!isHttpStatus204(http.status)) {
var node = http.callbackData;
node.parentNode.removeChild(node);
}
}
}
function setEventsOnDelegateNode(node) {
node.observe("mousedown", listRowMouseDownHandler);
node.observe("selectstart", listRowMouseDownHandler);
node.observe("click", onRowClick);
}
function nodeForDelegate(delegateName, delegateId) {
var node = createElement("li");
node.id = delegateId;
var span = createElement("span");
span.addClassName("userFullName");
span.appendChild(document.createTextNode(" " + delegateName));
node.appendChild(span);
setEventsOnDelegateNode(node);
return node;
}
function onDelegateAdd(event) {
openUserFolderSelector(null, "user");
preventDefault(event);
}
function removeDelegateCallback(http) {
var node = http.callbackData;
if (http.readyState == 4
&& isHttpStatus204(http.status))
node.parentNode.removeChild(node);
else
log("error deleting delegate: " + node.getAttribute("id"));
}
function onDelegateRemove(event) {
var delegateList = $("delegateList");
var nodes = delegateList.getSelectedRows();
var url = window.location.href;
var elements = url.split("/");
elements[elements.length-1] = "removeDelegate?uid=";
var baseURL = elements.join("/");
for (var i = 0; i < nodes.length; i++) {
var delegateId = nodes[i].id;
triggerAjaxRequest(baseURL + delegateId, removeDelegateCallback,
nodes[i]);
}
preventDefault(event);
}
function subscribeToFolder(refreshCallback, refreshCallbackData) {
var result = true;
if (UserLogin != refreshCallbackData["folder"]) {
result = addDelegate(refreshCallbackData["folderName"],
refreshCallbackData["folder"]);
}
else
refreshCallbackData["window"].alert(_("You cannot subscribe to a folder that you own!"));
return result;
}
function onDelegationLoadHandler() {
var ul = $("delegateList");
var lis = ul.childNodesWithTag("li");
for (var i = 0; i < lis.length; i++)
setEventsOnDelegateNode(lis[i]);
var buttonArea = $("delegateSelectorButtons");
if (buttonArea) {
var buttons = buttonArea.childNodesWithTag("a");
$("addDelegate").stopObserving ("click");
$("deleteDelegate").stopObserving ("click");
$("addDelegate").observe("mousedown", onDelegateAdd);
$("deleteDelegate").observe("mousedown", onDelegateRemove);
}
Event.observe(window, "unload", onDelegationCloseHandler);
}
document.observe("dom:loaded", onDelegationLoadHandler);