merge of '2609687767884b123c1ff765253fde7c75ef81b3'

and '6a69a9438cda177d7f4ada9b069b92023777399b'

Monotone-Parent: 2609687767884b123c1ff765253fde7c75ef81b3
Monotone-Parent: 6a69a9438cda177d7f4ada9b069b92023777399b
Monotone-Revision: 0a5eab06f5b8551e1e9b88968eb183d42fe76a95

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2008-07-16T02:14:50
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Wolfgang Sourdeau
2008-07-16 02:14:50 +00:00
17 changed files with 330 additions and 94 deletions
+7 -2
View File
@@ -20,8 +20,7 @@
*/
DIV#rightPanel
{
position: absolute;
{ position: absolute;
top: 5.5em;
left: 15em;
margin-left: 5px;
@@ -189,6 +188,12 @@ TABLE#contactsList
-khtml-user-select: none;
width: 100%; }
TABLE#contactsList TBODY TD.displayName
{ background-repeat: no-repeat;
background-image: url('/SOGo.woa/WebServerResources/abcard.gif');
background-position: 4px 1px;
padding-left: 24px; }
TABLE#contactsList TD,
TABLE#contactsList TH
{ overflow: hidden;
+138 -12
View File
@@ -185,9 +185,11 @@ function onAddressBooksContextMenu(event) {
}
function onContactContextMenu(event) {
var contactsList = $("contactsList");
var menu = $("contactMenu");
menu.observe("hideMenu", onContactContextMenuHide);
popupMenu(event, "contactMenu", this);
if (contactsList)
popupMenu(event, "contactMenu", contactsList.getSelectedRows());
}
function onContactContextMenuHide(event) {
@@ -231,6 +233,52 @@ function onFolderMenuHide(event) {
topNode.selectedEntry.selectElement();
}
function _onContactMenuAction(folderItem, action, refresh) {
var selectedFolders = $("contactFolders").getSelectedNodes();
var folderId = $(folderItem).readAttribute("folderId").substring(1);
if (Object.isArray(document.menuTarget) && selectedFolders.length > 0) {
var selectedFolderId = $(selectedFolders[0]).readAttribute("id");
var contactIds = $(document.menuTarget).collect(function(row) {
return row.getAttribute("id");
});
var url = ApplicationBaseURL + selectedFolderId + "/" + action + "?folder=" + folderId + "&uid="
+ contactIds.join("&uid=");
if (refresh)
triggerAjaxRequest(url, actionContactCallback, selectedFolderId);
else
triggerAjaxRequest(url, actionContactCallback);
}
}
function onContactMenuCopy(event) {
_onContactMenuAction(this, "copy", false);
}
function onContactMenuMove(event) {
_onContactMenuAction(this, "move", true);
}
function actionContactCallback(http) {
if (http.readyState == 4)
if (isHttpStatus204(http.status)) {
var refreshFolderId = http.callbackData;
if (refreshFolderId)
openContactsFolder(refreshFolderId, true);
}
else {
var html = new Element("div").update(http.responseText);
var error = html.select("p").first().firstChild.nodeValue.trim();
log("actionContactCallback failed: error " + http.status + " (" + error + ")");
if (parseInt(http.status) == 403)
window.alert(labels["You cannot delete the selected contact(s)"]);
else if (error)
window.alert(labels[error]);
refreshCurrentFolder();
}
}
function loadContact(idx) {
if (document.contactAjaxRequest) {
document.contactAjaxRequest.aborted = true;
@@ -392,7 +440,7 @@ function onToolbarDeleteSelectedContacts(event) {
new Ajax.Request(url, {
method: 'post',
onFailure: function(transport) {
log("Ajax error: can't delete contact");
window.alert(labels["You cannot delete the selected contact(s)"]);
refreshCurrentFolder();
},
onSuccess: function(transport) {
@@ -555,10 +603,12 @@ function appendAddressBook(name, folder) {
li.setAttribute("id", folder);
li.setAttribute("owner", owner);
li.addClassName("local");
li.appendChild(document.createTextNode(name
.replace("&lt;", "<", "g")
.replace("&gt;", ">", "g")));
setEventsOnAddressBook(li);
updateAddressBooksMenus();
}
return result;
@@ -720,6 +770,61 @@ function configureAddressBooks() {
}
}
function onAddressBookMenuPrepareVisibility() {
var selectedFolder = $("contactFolders").getSelectedNodes()[0];
if (selectedFolder) {
var selectedFolderId = selectedFolder.readAttribute("id");
$(this).select("li").each(function(menuEntry) {
if (menuEntry.readAttribute("folderId") == selectedFolderId)
menuEntry.addClassName("disabled");
else
menuEntry.removeClassName("disabled");
});
}
}
function updateAddressBooksMenus() {
var contactFoldersList = $("contactFolders");
if (contactFoldersList) {
var pageContent = $("pageContent");
var contactFolders = contactFoldersList.select("li");
var contactActions = new Hash({ move: onContactMenuMove,
copy: onContactMenuCopy });
var actions = contactActions.keys();
for (var j = 0; j < actions.size(); j++) {
var key = actions[j];
var callbacks = new Array();
var menuId = key + "ContactMenu";
var menuDIV = $(menuId);
if (menuDIV)
menuDIV.parentNode.removeChild(menuDIV);
menuDIV = document.createElement("div");
pageContent.appendChild(menuDIV);
var menu = document.createElement("ul");
menuDIV.appendChild(menu);
$(menuDIV).addClassName("menu");
menuDIV.setAttribute("id", menuId);
var submenuIds = new Array();
for (var i = 0; i < contactFolders.length; i++) {
if (contactFolders[i].hasClassName("local")) {
var menuEntry = new Element("li",
{ folderId: contactFolders[i].readAttribute("id"),
owner: contactFolders[i].readAttribute("owner") }
).update(contactFolders[i].innerHTML);
menu.appendChild(menuEntry);
callbacks.push(contactActions.get(key));
}
}
menuDIV.prepareVisibility = onAddressBookMenuPrepareVisibility;
initMenu(menuDIV, callbacks);
}
}
}
function setEventsOnAddressBook(folder) {
var node = $(folder);
@@ -797,23 +902,42 @@ function onAddressBooksMenuPrepareVisibility() {
}
function onContactMenuPrepareVisibility() {
var contactId = document.menuTarget.getAttribute('id');
var contactRow = $(contactId);
var elements = $(this).down("ul").childElements();
var contactRows = document.menuTarget;
var selectedFolder = $("contactFolders").getSelectedNodes()[0];
var options = { write: false,
aim: false };
var elements = $(this).down("ul").childElements();
var writeOption = elements[2];
var emailCell = contactRow.down('td', 1);
if (emailCell.firstChild)
var aimOption = elements[3];
var deleteOption = elements[5];
var moveOption = elements[7];
$A(contactRows).each(function(contactRow) {
var emailCell = contactRow.down('td', 1);
options.write |= (emailCell.firstChild != null);
var aimCell = contactRow.down('td', 2);
options.aim |= (aimCell.firstChild != null);
});
if (options.write)
writeOption.removeClassName("disabled");
else
writeOption.addClassName("disabled");
var aimOption = elements[3];
var aimCell = contactRow.down('td', 2);
if (aimCell.firstChild)
if (options.aim)
aimOption.removeClassName("disabled");
else
aimOption.addClassName("disabled");
if ($(selectedFolder).hasClassName("remote")) {
// Remote address books are always read-only
deleteOption.addClassName("disabled");
moveOption.addClassName("disabled");
}
else {
deleteOption.removeClassName("disabled");
moveOption.removeClassName("disabled");
}
}
function getMenus() {
@@ -823,7 +947,8 @@ function getMenus() {
onMenuSharing);
menus["contactMenu"] = new Array(onMenuEditContact, "-",
onMenuWriteToContact, onMenuAIMContact,
"-", onMenuDeleteContact);
"-", onMenuDeleteContact, "-",
"moveContactMenu", "copyContactMenu");
menus["searchMenu"] = new Array(setSearchCriteria);
var contactFoldersMenu = $("contactFoldersMenu");
@@ -850,6 +975,7 @@ function initContacts(event) {
configureSelectionButtons();
configureAbToolbar();
configureAddressBooks();
updateAddressBooksMenus();
// initDnd();
var table = $("contactsList");
+1
View File
@@ -882,6 +882,7 @@ DIV.gradient, DIV.text
left: 2px;
right: 2px;
bottom: 2px;
height: 100%;
overflow: hidden; }
DIV.gradient > IMG
+1
View File
@@ -1755,6 +1755,7 @@ function configureLists() {
var list = $("tasksList");
list.multiselect = true;
list.observe("mousedown", onTasksSelectionChange);
list.observe("selectstart", listRowMouseDownHandler);
var input = $("showHideCompletedTasks");
input.observe("click", onShowCompletedTasks);
+1 -2
View File
@@ -518,8 +518,7 @@ DIV.dragHandle:active
/* search fields */
DIV#filterPanel
{
height: 2em;
{ height: 2em;
vertical-align: middle;
width: 100%;
}
+3 -5
View File
@@ -780,7 +780,7 @@ function backtrace() {
}
function popupSubmenu(event) {
if (this.submenu && this.submenu != "") {
if (this.submenu && this.submenu != "" && !$(this).hasClassName("disabled")) {
var submenuNode = $(this.submenu);
var parentNode = getParentMenu(this);
if (parentNode.submenu)
@@ -905,10 +905,8 @@ function onSearchMouseDown(event) {
relX = (Event.pointerX(event) - superNode.offsetLeft - this.offsetLeft);
relY = (Event.pointerY(event) - superNode.offsetTop - this.offsetTop);
if (relY < 24) {
event.cancelBubble = true;
event.returnValue = false;
}
if (relX < 24)
Event.stop(event);
}
function onSearchFocus() {
+8
View File
@@ -30,6 +30,9 @@ TD.tbtv_navcell
border-right: 1px solid #666;
border-bottom: 1px solid #666; }
DIV#windowButtons
{ height: 3em; }
A.button,
INPUT.button
{ border: 1px solid #fff;
@@ -38,6 +41,11 @@ INPUT.button
margin: 0px;
padding: 0px; }
A.button
{ color: #000;
padding: 1px 4px; }
A.button IMG
{ margin: 1px; }