See ChangeLog.

Monotone-Parent: 1ea08f6ec84d602c5e78b6c440e2f7d6297a82cd
Monotone-Revision: 61b12be970a9603306d37277ee431b6fd5ab89cd

Monotone-Author: flachapelle@inverse.ca
Monotone-Date: 2011-12-02T07:22:47
This commit is contained in:
Francis Lachapelle
2011-12-02 07:22:47 +00:00
parent c2229901b9
commit 03625e4aae
30 changed files with 904 additions and 240 deletions
+4
View File
@@ -201,11 +201,15 @@ TABLE#contactsList
-khtml-user-select: none;
width: 100%; }
TABLE#contactsList TBODY TD
{ cursor: pointer; }
TABLE#contactsList TD,
TABLE#contactsList TH
{ overflow: hidden;
line-height: 16px;
height: 18px;
text-overflow: ellipsis;
white-space: nowrap; } /* pre, normal, nowrap */
TABLE#contactsList TH
+95 -68
View File
@@ -35,7 +35,7 @@ function openContactsFolder(contactsFolder, reload, idx) {
if ((contactsFolder && contactsFolder != Contact.currentAddressBook)
|| reload) {
Contact.currentAddressBook = contactsFolder;
var url = URLForFolderID(Contact.currentAddressBook) +
var url = URLForFolderID(Contact.currentAddressBook, "Contacts") +
"/view?noframe=1";
var searchValue = search["value"];
@@ -63,6 +63,7 @@ function openContactsFolder(contactsFolder, reload, idx) {
document.contactsListAjaxRequest.aborted = true;
document.contactsListAjaxRequest.abort();
}
document.contactsListAjaxRequest
= triggerAjaxRequest(url, contactsListCallback, selection);
}
@@ -77,6 +78,7 @@ function contactsListCallback(http) {
var table = $("contactsList");
var tbody = table.tBodies[0];
var rows = tbody.getElementsByTagName("TR");
var fullView = (table.tHead.rows[0].cells.length > 2);
var data = [];
if (http.responseText.length > 0)
data = http.responseText.evalJSON(true);
@@ -96,9 +98,11 @@ function contactsListCallback(http) {
var cells = row.getElementsByTagName("TD");
$(cells[0]).update(contact["c_cn"]);
$(cells[1]).update(contact["c_mail"]);
$(cells[2]).update(contact["c_screenname"]);
$(cells[3]).update(contact["c_o"]);
$(cells[4]).update(contact["c_telephonenumber"]);
if (fullView) {
$(cells[2]).update(contact["c_screenname"]);
$(cells[3]).update(contact["c_o"]);
$(cells[4]).update(contact["c_telephonenumber"]);
}
}
// Add extra rows
@@ -119,26 +123,31 @@ function contactsListCallback(http) {
null,
row);
cell.appendChild(document.createTextNode(contact["c_cn"]));
cell.title = contact["c_cn"];
cell = document.createElement("td");
row.appendChild(cell);
if (contact["c_mail"])
if (contact["c_mail"]) {
cell.appendChild(document.createTextNode(contact["c_mail"]));
cell.title = contact["c_mail"];
}
cell = document.createElement("td");
row.appendChild(cell);
if (contact["c_screenname"])
cell.appendChild(document.createTextNode(contact["c_screenname"]));
if (fullView) {
cell = document.createElement("td");
row.appendChild(cell);
if (contact["c_screenname"])
cell.appendChild(document.createTextNode(contact["c_screenname"]));
cell = document.createElement("td");
row.appendChild(cell);
if (contact["c_o"])
cell.appendChild(document.createTextNode(contact["c_o"]));
cell = document.createElement("td");
row.appendChild(cell);
if (contact["c_o"])
cell.appendChild(document.createTextNode(contact["c_o"]));
cell = document.createElement("td");
row.appendChild(cell);
if (contact["c_telephonenumber"])
cell.appendChild(document.createTextNode(contact["c_telephonenumber"]));
cell = document.createElement("td");
row.appendChild(cell);
if (contact["c_telephonenumber"])
cell.appendChild(document.createTextNode(contact["c_telephonenumber"]));
}
}
configureDraggables();
@@ -180,9 +189,9 @@ function contactsListCallback(http) {
}
// Restore selection and scroll to first selected node
tbody.refreshSelectionByIds();
var selection = http.callbackData;
if (selection) {
tbody.refreshSelectionByIds(selection);
for (var i = 0; i < selection.length; i++) {
var row = $(selection[i]);
if (row) {
@@ -406,21 +415,23 @@ function onContactRowDblClick(event) {
}
function onContactSelectionChange(event) {
var contactView = $("contactView");
if (event) {
// Update rows selection
var t = getTarget(event);
onRowClick(event, t);
}
var rows = this.parentNode.getSelectedRowsId();
if (contactView) {
var rows = this.parentNode.getSelectedRowsId();
if (rows.length == 1) {
var node = $(rows[0]);
loadContact(node.getAttribute('id'));
}
else if (rows.length > 1) {
$('contactView').update();
Contact.currentContact = null;
if (rows.length == 1) {
var node = $(rows[0]);
loadContact(node.getAttribute('id'));
}
else if (rows.length > 1) {
$('contactView').update();
Contact.currentContact = null;
}
}
}
@@ -626,10 +637,11 @@ function refreshCurrentFolder() {
openContactsFolder(Contact.currentAddressBook, true);
}
/* Only used in UIxMailEditor */
function onConfirmContactSelection(event) {
var tag = this.getAttribute("name");
var folderLi = $(Contact.currentAddressBook);
var currentAddressBookName = folderLi.innerHTML;
var folder = $("contactFolder");
var currentAddressBookName = folder.textContent;
var selectorList = null;
var initialValues = null;
@@ -644,9 +656,8 @@ function onConfirmContactSelection(event) {
else {
var cname = '' + rows[i].readAttribute("contactname");
var email = '' + rows[i].cells[1].innerHTML;
window.opener.addContact(tag, currentAddressBookName + '/' + cname,
cid, cname, email);
addContact(tag, currentAddressBookName + '/' + cname,
cid, cname, email);
}
}
@@ -657,7 +668,7 @@ function onConfirmContactSelection(event) {
}
function addListToOpener (tag, aBookId, aBookName, listId) {
var url = ApplicationBaseURL + "/" + aBookId + "/" + listId + "/properties";
var url = UserFolderURL + "Contacts/" + aBookId + "/" + listId + "/properties";
triggerAjaxRequest (url, addListToOpenerCallback, {
"aBookId": aBookId,
"aBookName": aBookName,
@@ -669,8 +680,8 @@ function addListToOpenerCallback (http) {
var received = http.responseText.evalJSON (true);
for (var i = 0; i < received.length; i++) {
var contact = received[i];
window.opener.addContact(data.tag, data.aBookName + '/' + contact[1],
contact[0], contact[1], contact[2]);
addContact(data.tag, data.aBookName + '/' + contact[1],
contact[0], contact[1], contact[2]);
}
}
@@ -1161,7 +1172,11 @@ function onContactMenuPrepareVisibility() {
return true;
}
function getMenus() {
var originalGetMenus = null;
if (typeof getMenus == 'function') {
originalGetMenus = getMenus;
}
getMenus = function() {
var menus = {};
menus["contactFoldersMenu"] = new Array(onAddressBookModify, "-", newContact,
newList, "-",
@@ -1184,6 +1199,12 @@ function getMenus() {
if (contactMenu)
contactMenu.prepareVisibility = onContactMenuPrepareVisibility;
if (originalGetMenus) {
var originalMenus = originalGetMenus();
if (originalMenus)
menus = Object.extend(menus, originalMenus);
}
return menus;
}
@@ -1197,15 +1218,6 @@ function configureSelectionButtons() {
}
}
function onWindowResize(event) {
var handle = $("dragHandle");
if (handle)
handle.adjust();
handle = $("rightDragHandle");
if (handle)
handle.adjust();
}
function onDocumentKeydown(event) {
var target = Event.element(event);
if (target.tagName != "INPUT") {
@@ -1297,23 +1309,36 @@ function initContacts(event) {
table.multiselect = true;
var tbody = $(table.tBodies[0]);
tbody.on("click", onContactSelectionChange);
tbody.on("dblclick", onContactRowDblClick);
tbody.on("selectstart", listRowMouseDownHandler);
tbody.on("contextmenu", onContactContextMenu);
if ($("contactView")) {
tbody.on("dblclick", onContactRowDblClick);
tbody.on("selectstart", listRowMouseDownHandler);
tbody.on("contextmenu", onContactContextMenu);
resetCategoriesMenu();
TableKit.Resizable.init(table, {'trueResize' : true, 'keepWidth' : true});
}
configureSortableTableHeaders(table);
TableKit.Resizable.init(table, {'trueResize' : true, 'keepWidth' : true});
resetCategoriesMenu();
}
onWindowResize.defer();
Event.observe(window, "resize", onWindowResize);
if (typeof onWindowResize != 'function') {
// When loaded from the mail editor, onWindowResize is
// already registered
onWindowResize.defer();
Event.observe(window, "resize", onWindowResize);
}
// Default sort options
sorting["attribute"] = "c_cn";
sorting["ascending"] = true;
}
function onWindowResize(event) {
var handle = $("dragHandle");
if (handle)
handle.adjust();
handle = $("rightDragHandle");
if (handle)
handle.adjust();
}
function resetCategoriesMenu() {
var menu = $("categoriesMenu");
if (menu) {
@@ -1431,23 +1456,25 @@ function unsetCategoryOnNode(contactNode, category) {
}
function configureDraggables() {
var mainElement = $("dragDropVisual");
Draggables.empty ();
if ($("contactFolders")) {
var mainElement = $("dragDropVisual");
Draggables.empty();
if (mainElement == null) {
mainElement = new Element ("div", {id: "dragDropVisual"});
document.body.appendChild(mainElement);
mainElement.absolutize ();
}
mainElement.hide();
if (mainElement == null) {
mainElement = new Element ("div", {id: "dragDropVisual"});
document.body.appendChild(mainElement);
mainElement.absolutize();
}
mainElement.hide();
new Draggable ("dragDropVisual",
{ handle: "contactsList",
onStart: startDragging,
onEnd: stopDragging,
onDrag: whileDragging,
scroll: window
new Draggable ("dragDropVisual",
{ handle: "contactsList",
onStart: startDragging,
onEnd: stopDragging,
onDrag: whileDragging,
scroll: window
});
}
}
function configureDroppables() {
+3 -1
View File
@@ -261,8 +261,10 @@ Element.addMethods({
element.selectedIds = null;
},
refreshSelectionByIds: function(element) {
refreshSelectionByIds: function(element, selectedIds) {
element = $(element);
if (selectedIds)
element.selectedIds = selectedIds;
if (element.selectedIds) {
for (var i = 0; i < element.selectedIds.length; i++) {
//var e = element.down('#'+element.selectedIds[i]); // buggy with IE
+1 -1
View File
@@ -900,4 +900,4 @@ A#iCalendarDeleteFromCalendar
A#iCalendarAddToCalendar
{ border-left: 2px solid #E6E7E6;
margin-left: 5px;}
margin-left: 5px;}
+34 -13
View File
@@ -35,8 +35,12 @@ var messageCheckTimer;
/* We need to override this method since it is adapted to GCS-based folder
references, which we do not use here */
function URLForFolderID(folderID) {
var url = ApplicationBaseURL + encodeURI(folderID.substr(1));
function URLForFolderID(folderID, application) {
if (application)
application = UserFolderURL + application + "/";
else
application = ApplicationBaseURL;
var url = application + encodeURI(folderID.substr(1));
if (url[url.length-1] == '/')
url = url.substr(0, url.length-1);
@@ -53,6 +57,7 @@ function openMessageWindow(msguid, url) {
markMailReadInWindow(window, msguid);
}
var msgWin = openMailComposeWindow(url, wId);
msgWin.focus();
Mailer.popups.push(msgWin);
@@ -395,7 +400,7 @@ function onDocumentKeydown(event) {
var divDimensions = viewPort.getDimensions();
var centerOffset = divDimensions.height/2;
var rowScrollOffset = nextRow.cumulativeScrollOffset();
var divBottom = divDimensions.height + rowScrollOffset.top;
var divBottom = divDimensions.height + rowScrollOffset.top;
var rowBottom = nextRow.offsetTop + nextRow.getHeight();
if (divBottom < rowBottom)
@@ -458,7 +463,7 @@ function deleteSelectedMessages(sender) {
deleteCachedMessage(path);
if (Mailer.currentMessages[Mailer.currentMailbox] == uid) {
messageContent.innerHTML = '';
if (messageContent) messageContent.innerHTML = '';
Mailer.currentMessages[Mailer.currentMailbox] = null;
}
@@ -490,7 +495,7 @@ function deleteSelectedMessages(sender) {
}
}
}
else {
else if (messageContent) {
messageContent.innerHTML = '';
}
Mailer.dataTable.remove(uid);
@@ -623,7 +628,8 @@ function onMailboxTreeItemClick(event) {
Mailer.currentMailboxType = this.parentNode.getAttribute("datatype");
if (Mailer.currentMailboxType == "account" || Mailer.currentMailboxType == "additional") {
Mailer.currentMailbox = mailbox;
$("messageContent").innerHTML = '';
var messageContent = $("messageContent");
if (messageContent) messageContent.innerHTML = '';
$("messageCountHeader").childNodes[0].innerHTML = '&nbsp;';
Mailer.dataTable._emptyTable();
updateWindowTitle();
@@ -772,7 +778,7 @@ function openMailbox(mailbox, reload) {
if (!reload) {
var messageContent = $("messageContent");
messageContent.innerHTML = '';
if (messageContent) messageContent.innerHTML = '';
$("messageCountHeader").childNodes[0].innerHTML = '&nbsp;';
lastClickedRow = -1; // from generic.js
}
@@ -1171,11 +1177,11 @@ function onMessageSelectionChange(event) {
}
else if (t.className == 'messageUnreadColumn') {
mailListToggleMessagesRead(t.parentNode);
return true;
return false;
}
else if (t.className == 'messageFlagColumn') {
mailListToggleMessagesFlagged(t.parentNode);
return true;
return false;
}
}
}
@@ -1185,15 +1191,16 @@ function onMessageSelectionChange(event) {
// Update rows selection
onRowClick(event, t);
var messageContent = $("messageContent");
var rows = this.getSelectedRowsId();
if (rows.length == 1) {
var idx = rows[0].substr(4);
if (Mailer.currentMessages[Mailer.currentMailbox] != idx) {
Mailer.currentMessages[Mailer.currentMailbox] = idx;
loadMessage(idx);
if (messageContent) loadMessage(idx);
}
}
else if (rows.length > 1)
else if (rows.length > 1 && messageContent)
$('messageContent').innerHTML = '';
return true;
@@ -1206,6 +1213,10 @@ function loadMessage(msguid) {
}
var div = $('messageContent');
if (div == null)
// Single-window mode
return false;
var cachedMessage = getCachedMessage(msguid);
var row = $("row_" + msguid);
var seenStateHasChanged = row && row.hasClassName('mailer_unreadmail');
@@ -1852,6 +1863,7 @@ function refreshMessage(mailbox, messageUID) {
function configureMessageListEvents() {
var headerTable = $("messageListHeader");
var dataTable = $("messageListBody");
var messageContent = $("messageContent");
if (headerTable)
// Sortable columns
@@ -1859,8 +1871,16 @@ function configureMessageListEvents() {
if (dataTable) {
dataTable.multiselect = true;
dataTable.observe("click", onMessageSelectionChange);
dataTable.observe("dblclick", onMessageDoubleClick);
if (messageContent) {
dataTable.observe("click", onMessageSelectionChange);
dataTable.observe("dblclick", onMessageDoubleClick);
}
else {
// Single-window mode
dataTable.observe("click", function(e) {
onMessageSelectionChange.bind(this)(e) &&
onMessageDoubleClick.bind(this)(e); });
}
dataTable.observe("selectstart", listRowMouseDownHandler);
dataTable.observe("contextmenu", onMessageContextMenu);
}
@@ -1890,6 +1910,7 @@ function onMessageListResize(event) {
}
function onWindowResize(event) {
log ("resize mailer");
var handle = $("verticalDragHandle");
if (handle)
handle.adjust();
+1 -2
View File
@@ -131,8 +131,7 @@ function onFnNewValue(event) {
function onEditorCancelClick(event) {
this.blur();
preventDefault(event);
window.close();
onCloseButtonClick(event);
}
function onEditorSubmitClick(event) {
@@ -259,8 +259,10 @@ function onFolderSearchKeyDown(event) {
function initUserFoldersWindow() {
var searchValue = $("searchValue");
searchValue.observe("keydown", onFolderSearchKeyDown);
var addButton = $("addButton");
addButton.observe("click", onConfirmFolderSelection);
$("addButton").observe("click", onConfirmFolderSelection);
$("doneButton").observe("click", onCloseButtonClick);
searchValue.focus();
}
+2
View File
@@ -67,6 +67,8 @@ DIV#windowButtons
vertical-align: middle;
text-align: right; }
INPUT.textField
{ width: 100%; }
DIV#buttons
{ position: fixed;
+1 -6
View File
@@ -142,11 +142,6 @@ function resetTableActions() {
}
}
function onEditorCancelClick(event) {
preventDefault(event);
window.close();
}
function onEditorSubmitClick(event) {
if (validateListEditor())
$("mainForm").submit();
@@ -168,7 +163,7 @@ function initListEditor() {
resetTableActions();
$("referenceAdd").observe("click", onReferenceAdd);
$("referenceDelete").observe("click", onReferenceDelete);
$("cancelButton").observe("click", onEditorCancelClick);
$("cancelButton").observe("click", onCloseButtonClick);
$("submitButton").observe("click", onEditorSubmitClick);
Event.observe(document, "keydown", onDocumentKeydown);
+94 -3
View File
@@ -1,5 +1,30 @@
/* CSS for compose panel */
DIV#leftPanel
{ position: absolute;
top: 52px;
left: 0px;
width: 15em;
bottom: 0px;
overflow: hidden; }
DIV#rightPanel
{ position: absolute;
top: 48px;
left: 0em;
right: 0px;
bottom: 0px;
margin-left: 5px;
overflow: hidden; }
DIV#hiddenDragHandle
{ cursor: e-resize;
border: 0px;
top: 52px;
left: 15em;
width: 5px;
bottom: 0; }
div#compose_panel div table
{ padding: 2px; }
@@ -82,8 +107,7 @@ div#compose_internetmarker
border-style: solid; }
div#headerArea
{ border-top: 1px solid #fff;
padding: 5px 0px; }
{ padding: 5px 0px; }
div#headerArea div.addressList
{ max-height: 10em;
@@ -110,7 +134,7 @@ hr.fieldSeparator
width: 100%; }
input.currentAttachment
{ position: absolute;
{ position: fixed;
top: 1em;
right: 1em; }
@@ -169,3 +193,70 @@ UL#attachments LI IMG
TEXTAREA#text
{ display: none;
background: #fff; }
/* Contacts search pane */
DIV#contactsSearch
{ border-right: 1px solid #fff;
padding-top: 5px;
padding-bottom: 5px;
margin-left: 5px; }
DIV#contactsSearch LABEL
{ display: block;
margin: 0 0 5px 0; }
SELECT#contactFolder
{ margin-bottom: 5px; }
INPUT#searchValue
{ position: absolute;
top: 6.2em;
left: 5px;
right: 0px; /* doesn't work in FF */
display: block;
width: auto; }
DIV#contactsListContent
{ position: absolute;
top: 9em;
left: 0px;
right: 0px;
bottom: 0px;
margin: 0;
border-right: 1px solid #fff;
background-color: #fff; }
TABLE#contactsList
{ width: 100%; }
TABLE#contactsList TD,
TABLE#contactsList TH
{ overflow: hidden;
line-height: 16px;
height: 18px;
text-overflow: ellipsis;
white-space: nowrap; }
TABLE#contactsList TD#nameHeader,
TABLE#contactsList TD#mailHeader
{ width: 50%;
max-width: 50%; }
DIV.contactSelection
{
z-index: 10;
background: inherit;
position: absolute;
bottom: 0em;
padding: 1em;
left: 0px;
right: 0px;
height: 90px;
text-align: right;
background: #E6E7E6;
border-top: 1px solid #fff;
border-left: 0px;
border-right: 0px;
border-bottom: 0px;
}
+69 -45
View File
@@ -3,7 +3,6 @@
var contactSelectorAction = 'mailer-contacts';
var attachmentCount = 0;
var MailEditor = {
addressBook: null,
currentField: null,
selectedIndex: -1,
delay: 750,
@@ -12,24 +11,21 @@ var MailEditor = {
textFirstFocus: true
};
function onContactAdd() {
var selector = null;
var selectorURL = '?popup=YES&selectorId=mailer-contacts';
if (MailEditor.addressBook && MailEditor.addressBook.open && !MailEditor.addressBook.closed)
MailEditor.addressBook.focus();
else {
var urlstr = ApplicationBaseURL
+ "../Contacts/"
+ contactSelectorAction + selectorURL;
MailEditor.addressBook = window.open(urlstr, "_blank",
"width=640,height=400,resizable=1,scrollbars=0");
MailEditor.addressBook.selector = selector;
MailEditor.addressBook.opener = self;
MailEditor.addressBook.focus();
function onContactAdd(button) {
var div = $("contacts");
if (div.visible()) {
$("contacts").hide();
$("rightPanel").setStyle({ left: "0" });
$(button).removeClassName("active");
}
return false;
else {
$("rightPanel").setStyle({ left: $("leftPanel").getStyle("width") });
$("contacts").show();
$(button).addClassName("active");
}
$("hiddenDragHandle").adjust();
onMailEditorResize(null);
}
function addContact(tag, fullContactName, contactId, contactName, contactEmail) {
@@ -60,11 +56,16 @@ function addContact(tag, fullContactName, contactId, contactName, contactEmail)
var select = $(td.childNodesWithTag("select")[0]);
select.value = neededOptionValue;
insertContact($("addr_" + currentIndex), contactName, contactEmail);
onWindowResize(null);
onMailEditorResize(null);
}
}
}
function onContactFolderChange(event) {
initCriteria();
openContactsFolder(this.value);
}
function mailIsRecipient(mailto) {
var isRecipient = false;
@@ -157,11 +158,15 @@ function onPostComplete(response) {
if (response && response.length > 0) {
var jsonResponse = response.evalJSON();
if (jsonResponse["status"] == "success") {
if (window.opener && window.opener.refreshMessage) {
window.opener.refreshMessage(jsonResponse["sourceFolder"],
jsonResponse["messageID"]);
}
window.close();
var p;
if (window.frameElement && window.frameElement.id)
p = parent;
if (window.opener && window.opener.refreshMessage)
p = window.opener;
if (p && p.refreshMessage)
p.refreshMessage(jsonResponse["sourceFolder"],
jsonResponse["messageID"]);
onCloseButtonClick();
}
else {
var message = jsonResponse["message"];
@@ -174,7 +179,7 @@ function onPostComplete(response) {
}
}
else {
window.close();
onCloseButtonClick();
}
}
@@ -207,7 +212,7 @@ function clickedEditorAttach() {
if (!area.style.display) {
area.setStyle({ display: "block" });
onWindowResize(null);
onMailEditorResize(null);
}
var inputs = area.getElementsByTagName("input");
var attachmentName = "attachment" + attachmentCount;
@@ -355,6 +360,18 @@ function initAddresses() {
});
}
/* Overwrites function of MailerUI.js */
function configureDragHandle() {
var handle = $("hiddenDragHandle");
if (handle) {
handle.addInterface(SOGoDragHandlesInterface);
handle.leftMargin = 100;
handle.leftBlock=$("leftPanel");
handle.rightBlock=$("rightPanel");
handle.observe("handle:dragged", onMailEditorResize);
}
}
function initMailEditor() {
if (composeMode != "html" && $("text"))
$("text").style.display = "block";
@@ -396,6 +413,8 @@ function initMailEditor() {
initializePriorityMenu();
configureDragHandle();
var composeMode = UserDefaults["SOGoMailComposeMessageType"];
if (composeMode == "html") {
CKEDITOR.replace('text',
@@ -415,9 +434,13 @@ function initMailEditor() {
focusCKEditor();
}
Event.observe(window, "resize", onWindowResize);
$("contactFolder").observe("change", onContactFolderChange);
Event.observe(window, "resize", onMailEditorResize);
Event.observe(window, "beforeunload", onMailEditorClose);
onWindowResize.defer();
onMailEditorResize.defer();
}
function focusCKEditor(event) {
@@ -459,7 +482,6 @@ function onMenuCheckReturnReceipt(event) {
else {
this.removeClassName("_chosen");
}
var receiptInput = $("receipt");
receiptInput.value = (enabled ? "true" : "false") ;
}
@@ -562,12 +584,13 @@ function onSelectOptions(event) {
}
}
function onWindowResize(event) {
function onMailEditorResize(event) {
if (!document.pageform)
return;
var textarea = document.pageform.text;
var rowheight = (Element.getHeight(textarea) / textarea.rows);
var headerarea = $("headerArea");
var totalwidth = $("rightPanel").getWidth();
var attachmentsarea = $("attachmentsArea");
var attachmentswidth = 0;
@@ -585,15 +608,15 @@ function onWindowResize(event) {
}
// Resize subject field
subjectinput.setStyle({ width: (window.width()
subjectinput.setStyle({ width: (totalwidth
- $(subjectfield).getWidth()
- attachmentswidth
- 12) + 'px' });
- 17) + 'px' });
// Resize from field
$("fromSelect").setStyle({ width: (window.width()
$("fromSelect").setStyle({ width: (totalwidth
- $("fromField").getWidth()
- attachmentswidth
- 10) + 'px' });
- 15) + 'px' });
// Resize address fields
var addresslist = $('addressList');
@@ -608,7 +631,7 @@ function onWindowResize(event) {
if (composeMode == "html") {
var editor = $('cke_text');
if (editor == null) {
onWindowResize.defer();
onMailEditorResize.defer();
return;
}
var ck_top = $("cke_top_text");
@@ -628,25 +651,26 @@ function onWindowResize(event) {
}
else
textarea.rows = Math.floor((window.height() - textarea.offsetTop) / rowheight);
// Resize search contacts addressbook selector
if ($("contacts").visible())
$("contactFolder").setStyle({ width: ($("contactsSearch").getWidth() - 10) + "px" });
}
function onMailEditorClose(event) {
if (window.shouldPreserve)
window.shouldPreserve = false;
else {
if (window.opener && window.opener.open && !window.opener.closed) {
var url = "" + window.location;
var parts = url.split("/");
parts[parts.length-1] = "delete";
url = parts.join("/");
var url = "" + window.location;
var parts = url.split("/");
parts[parts.length-1] = "delete";
url = parts.join("/");
if (window.frameElement && window.frameElement.id)
parent.deleteDraft(url);
else if (window.opener && window.opener.open && !window.opener.closed)
window.opener.deleteDraft(url);
}
}
if (MailEditor.addressBook && MailEditor.addressBook.open
&& !MailEditor.addressBook.closed)
MailEditor.addressBook.close();
Event.stopObserving(window, "beforeunload", onMailEditorClose);
}
+43 -2
View File
@@ -565,6 +565,8 @@ DIV.dialog
DIV.dialog > DIV
{ border: 1px solid #444;
-webkit-box-shadow: 0 5px 10px rgba(0,0,0,.5);
box-shadow: 0 5px 10px rgba(0,0,0,.5);
background-color: #fff;
padding: 5px;
padding-bottom: 26px; }
@@ -617,14 +619,23 @@ DIV.dialog.none P
DIV.dialog.none P.prompt
{ text-align: right; }
DIV#bgFrameDiv
{ position: absolute;
top: 0px; left: 0px;
bottom: 0px;
right: 0px;
z-index: 2;
background: -webkit-radial-gradient(ellipse cover,rgba(0, 0, 0, .1) 0,rgba(0, 0, 0, .1) 20%,rgba(0, 0, 0, .7) 80%);
background: -moz-linear-gradient(top, rgba(0, 0, 0, .5), rgba(0, 0, 0, .1)); }
DIV#bgDialogDiv
{ position: absolute;
top: 0px; left: 0px;
bottom: 0px;
right: 0px;
z-index: 2;
opacity: .3;
background-color: #555 !important; }
background: -webkit-radial-gradient(ellipse cover,rgba(0, 0, 0, .1) 0,rgba(0, 0, 0, .1) 20%,rgba(0, 0, 0, .7) 80%);
background: -moz-linear-gradient(top, rgba(0, 0, 0, .5), rgba(0, 0, 0, .1)); }
DIV#uploadDialog,
DIV#uploadResults
@@ -886,6 +897,36 @@ IFRAME.hidden,
DIV.tab
{ display: none; }
DIV#popupFrame
{ position: absolute;
top: 40px;
bottom: 40px;
left: 15%;
right: 15%;
padding: 4px;
z-index: 2000;
background-color: #E6E7E6;
-webkit-border-radius: 4px 4px 0 0;
border-radius: 4px 4px 0 0;
-webkit-box-shadow: 0 5px 10px rgba(0,0,0,.5);
box-shadow: 0 5px 10px rgba(0,0,0,.5);
}
DIV#popupFrame.small
{ left: 30%;
right: 30%;
}
DIV#popupFrame > IFRAME
{ margin: 0;
padding: 0;
color: #000;
background-color: #E6E7E6;
border: 0;
-webkit-border-radius: 4px 4px 0 0;
border-radius: 4px 4px 0 0;
}
DIV.tabsContainer DIV.active
{ display: block; }
+160 -53
View File
@@ -1,7 +1,7 @@
/* generic.js - this file is part of SOGo
Copyright (C) 2005 SKYRIX Software AG
Copyright (C) 2006-2010 Inverse
Copyright (C) 2006-2011 Inverse
SOGo is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the
@@ -161,46 +161,108 @@ function openUserFolderSelector(callback, type) {
if (! urlstr.endsWith('/'))
urlstr += '/';
urlstr += ("../../" + UserLogin + "/Contacts/userFolders");
var w = window.open(urlstr, "_blank",
"width=322,height=250,resizable=1,scrollbars=0,location=0");
w.opener = window;
window.userFolderCallback = callback;
window.userFolderType = type;
w.focus();
var div = $("popupFrame");
if (div) {
if (!div.hasClassName("small"))
div.addClassName("small");
var iframe = div.down("iframe");
iframe.src = urlstr;
iframe.id = "folderSelectorFrame";
var bgDiv = $("bgFrameDiv");
if (bgDiv) {
bgDiv.show();
}
else {
bgDiv = createElement("div", "bgFrameDiv", ["bgMail"]);
document.body.appendChild(bgDiv);
}
div.show();
}
else {
var w = window.open(urlstr, "_blank",
"width=322,height=250,resizable=1,scrollbars=0,location=0");
w.opener = window;
window.userFolderCallback = callback;
window.userFolderType = type;
w.focus();
}
}
function openContactWindow(url, wId) {
if (!wId)
wId = "_blank";
else
wId = sanitizeWindowName(wId);
var div = $("popupFrame");
if (div) {
if (!div.hasClassName("small"))
div.addClassName("small");
var iframe = div.down("iframe");
iframe.src = url;
iframe.id = "contactEditorFrame";
var bgDiv = $("bgFrameDiv");
if (bgDiv) {
bgDiv.show();
}
else {
bgDiv = createElement("div", "bgFrameDiv");
document.body.appendChild(bgDiv);
}
div.show();
var w = window.open(url, wId,
"width=450,height=530,resizable=0,location=0");
w.focus();
return div;
}
else {
if (!wId)
wId = "_blank";
else
wId = sanitizeWindowName(wId);
return w;
var w = window.open(url, wId,
"width=450,height=530,resizable=0,location=0");
w.focus();
return w;
}
}
function openMailComposeWindow(url, wId) {
var parentWindow = this;
var div = $("popupFrame");
if (div) {
if (div.hasClassName("small"))
div.removeClassName("small");
var iframe = div.down("iframe");
iframe.src = url;
iframe.id = "messageCompositionFrame";
var bgDiv = $("bgFrameDiv");
if (bgDiv) {
bgDiv.show();
}
else {
bgDiv = createElement("div", "bgFrameDiv");
document.body.appendChild(bgDiv);
}
div.show();
if (!wId)
wId = "_blank";
else
wId = sanitizeWindowName(wId);
return div;
}
else {
var parentWindow = this;
if (document.body.hasClassName("popup"))
parentWindow = window.opener;
if (!wId)
wId = "_blank";
else
wId = sanitizeWindowName(wId);
var w = parentWindow.open(url, wId,
"width=680,height=520,resizable=1,scrollbars=1,toolbar=0,"
+ "location=0,directories=0,status=0,menubar=0"
+ ",copyhistory=0");
if (document.body.hasClassName("popup"))
parentWindow = window.opener;
w.focus();
var w = parentWindow.open(url, wId,
"width=680,height=520,resizable=1,scrollbars=1,toolbar=0,"
+ "location=0,directories=0,status=0,menubar=0"
+ ",copyhistory=0");
return w;
w.focus();
return w;
}
}
function openMailTo(senderMailTo) {
@@ -580,7 +642,7 @@ function onRowClick(event, target) {
else
// Not a list; stop here
return true;
var initialSelection = $(node.parentNode).getSelectedNodesId();
if (initialSelection && initialSelection.length > 0
&& initialSelection.indexOf(node.id) >= 0
@@ -803,10 +865,17 @@ function toggleLogConsole(event) {
function log(message) {
if (!logWindow) {
logWindow = window;
try {
while (logWindow.opener && logWindow.opener_logMessage)
logWindow = logWindow.opener;
if (window.frameElement && window.frameElement.id) {
logWindow = parent.window;
while (logWindow.frameElement && window.frameElement.id)
logWindow = logWindow.parent.window;
}
else {
logWindow = window;
while (logWindow.opener && logWindow.opener._logMessage)
logWindow = logWindow.opener;
}
}
catch(e) {}
}
@@ -945,8 +1014,8 @@ function popupSearchMenu(event) {
var popup = $(menuId);
offset = Position.positionedOffset(this);
popup.setStyle({ top: this.offsetHeight + "px",
left: (offset[0] + 3) + "px",
popup.setStyle({ top: (offset.top + this.getHeight()) + "px",
left: (offset.left + 3) + "px",
visibility: "visible" });
document.currentPopupMenu = popup;
@@ -958,6 +1027,9 @@ function setSearchCriteria(event) {
var searchValue = $("searchValue");
var searchCriteria = $("searchCriteria");
if (searchValue.ghostPhrase == searchValue.value)
searchValue.value = "";
searchValue.ghostPhrase = this.innerHTML;
searchCriteria.value = this.getAttribute('id');
@@ -975,13 +1047,6 @@ function setSearchCriteria(event) {
}
}
function checkSearchValue(event) {
var searchValue = $("searchValue");
if (searchValue.value == searchValue.ghostPhrase)
searchValue.value = "";
}
function configureSearchField() {
var searchValue = $("searchValue");
@@ -1368,6 +1433,8 @@ function initMenus() {
var menuDIV = $(menuID);
if (menuDIV)
initMenu(menuDIV, menus[menuID]);
else
log("Can't find menu " + menuID);
}
}
}
@@ -1429,7 +1496,8 @@ function getTopWindow() {
var currentWindow = window;
while (!topWindow) {
if (currentWindow.document.body.hasClassName("popup")
&& currentWindow.opener)
&& currentWindow.opener
&& currentWindow.opener.getTopWindow)
currentWindow = currentWindow.opener;
else
topWindow = currentWindow;
@@ -1535,6 +1603,23 @@ function onLoadHandler(event) {
onFinalLoadHandler();
}
function onCloseButtonClick(event) {
if (event)
Event.stop(event);
if (window.frameElement && window.frameElement.id) {
var div = parent$("popupFrame");
div.hide();
div.down("iframe").src = "/SOGo/loading";
parent$("bgFrameDiv").hide();
}
else {
window.close();
}
return false;
}
function onBodyClickContextMenu(event) {
var target = $(event.target);
if (!(target
@@ -1562,12 +1647,32 @@ function onLinkBannerClick() {
function onPreferencesClick(event) {
var urlstr = UserFolderURL + "preferences";
var w = window.open(urlstr, "_blank",
"width=580,height=450,resizable=1,scrollbars=0,location=0");
w.opener = window;
w.focus();
var div = $("popupFrame");
if (div) {
if (div.hasClassName("small"))
div.removeClassName("small");
var iframe = div.down("iframe");
iframe.src = urlstr;
iframe.id = "preferencesFrame";
var bgDiv = $("bgFrameDiv");
if (bgDiv) {
bgDiv.show();
}
else {
bgDiv = createElement("div", "bgFrameDiv", ["bgMail"]);
document.body.appendChild(bgDiv);
}
div.show(); //setStyle({display: "block"});
}
else {
var w = window.open(urlstr, "_blank",
"width=580,height=450,resizable=1,scrollbars=0,location=0");
w.opener = window;
w.focus();
}
preventDefault(event);
return false;
}
function configureLinkBanner() {
@@ -1688,7 +1793,14 @@ function onFinalLoadHandler(event) {
}
function parent$(element) {
return this.opener.document.getElementById(element);
var div = $("popupFrame");
if (div)
p = parent.document;
else
p = this.opener.document;
return p.getElementById(element);
}
/* stubs */
@@ -1710,12 +1822,7 @@ function _(key) {
value = labels[key];
}
else {
var topWindow = null;
if (!topWindow) {
topWindow = window;
while (topWindow.opener)
topWindow = topWindow.opener;
}
var topWindow = getTopWindow();
if (topWindow && topWindow.clabels && topWindow.clabels[key])
value = topWindow.clabels[key];
}
+13 -2
View File
@@ -6,6 +6,9 @@ FORM
{ padding: 0px;
margin: 0px; }
DIV#loginScreen A.button SPAN
{ padding: 0; }
/* generic */
SPAN.disabledToolbarButton
@@ -38,8 +41,13 @@ DIV.tabsContainer > DIV.scrollToolbar > A > SPAN
DIV.dialog.none DIV
{ padding-bottom: 0px; }
DIV#popupFrame IFRAME
{ height: expression(document.body.clientHeight - 88 + "px") }
DIV#bgFrameDiv,
DIV#bgDialogDiv
{ filter: alpha(opacity=30); }
{ background-color: #555;
filter: alpha(opacity=40); }
/* MailerUI */
@@ -176,7 +184,10 @@ A.smallToolbarButton SPAN, A.smallToolbarButton:hover SPAN
A.toolbarButton:active SPAN {
background-position: auto; /*broken*/
}
A.toolbarButton, A.toolbarButton SPAN, A.button, A.button SPAN
A.toolbarButton, A.toolbarButton SPAN
{ color: #fff; }
A.button, A.button SPAN
{ color: #262B33; }
DIV#toolbar