mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-04-09 23:38:50 +00:00
merge of '0d9ecc5eae4ad9933bd54376cd8a7db508e6e0cb'
and '2c72d8da724d85fd836b547156f6c653ebb44991' Monotone-Parent: 0d9ecc5eae4ad9933bd54376cd8a7db508e6e0cb Monotone-Parent: 2c72d8da724d85fd836b547156f6c653ebb44991 Monotone-Revision: dbb95940faf0aead19daf176f22e0cd18debcef3 Monotone-Author: ludovic@Sophos.ca Monotone-Date: 2008-09-05T09:41:03 Monotone-Branch: ca.inverse.sogo
This commit is contained in:
@@ -1,5 +1,13 @@
|
||||
2008-09-04 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||
|
||||
* UI/MailPartViewers/UIxMailPartAlternativeViewer.m
|
||||
([UIxMailPartAlternativeViewer -selectPartIndexFromTypes:]): give
|
||||
precedence on multipart/related parts.
|
||||
|
||||
* UI/MailPartViewers/UIxMailRenderingContext.m
|
||||
([UIxMailRenderingContext -viewerForBodyInfo:_info]): add the
|
||||
mixed viewer as the viewer for "multipart/digest" content.
|
||||
|
||||
* UI/MailPartViewers/UIxMailPartTextViewer.m (convertChars):
|
||||
fixed a buffer overflow. Incremented the buffer size to 8192.
|
||||
|
||||
|
||||
@@ -92,6 +92,8 @@
|
||||
if ((count = [_types count]) == 0)
|
||||
return NSNotFound;
|
||||
|
||||
if ((i = [_types indexOfObject:@"multipart/related"]) != NSNotFound)
|
||||
return i;
|
||||
if ((i = [_types indexOfObject:@"text/calendar"]) != NSNotFound)
|
||||
return i;
|
||||
if ((i = [_types indexOfObject:@"text/html"]) != NSNotFound)
|
||||
|
||||
@@ -208,11 +208,14 @@ static BOOL showNamedTextAttachmentsInline = NO;
|
||||
|
||||
if ([mt isEqualToString:@"multipart"])
|
||||
{
|
||||
if ([st isEqualToString:@"mixed"] || [st isEqualToString:@"related"] || [st isEqualToString: @"appledouble"])
|
||||
if ([st isEqualToString: @"mixed"]
|
||||
|| [st isEqualToString: @"digest"]
|
||||
|| [st isEqualToString: @"related"]
|
||||
|| [st isEqualToString: @"appledouble"])
|
||||
return [self mixedViewer];
|
||||
else if ([st isEqualToString:@"signed"])
|
||||
else if ([st isEqualToString: @"signed"])
|
||||
return [self signedViewer];
|
||||
else if ([st isEqualToString:@"alternative"])
|
||||
else if ([st isEqualToString: @"alternative"])
|
||||
return [self alternativeViewer];
|
||||
|
||||
if ([st isEqualToString:@"report"])
|
||||
|
||||
@@ -15,12 +15,13 @@
|
||||
height="14"/></td
|
||||
><td class="tbtv_headercell sortableTableHeader" id="subjectHeader"
|
||||
><var:string label:value="Subject"/></td
|
||||
><td class="tbtv_headercell sortableTableHeader" id="fromHeader"
|
||||
><var:if condition="showToAddress"
|
||||
><td class="tbtv_headercell sortableTableHeader" id="toHeader"
|
||||
><var:string label:value="To"/></td></var:if
|
||||
><var:if condition="showToAddress" const:negate="YES"
|
||||
><var:string label:value="From"/></var:if
|
||||
><var:if condition="showToAddress"
|
||||
><var:string label:value="To"/></var:if
|
||||
></td
|
||||
><td class="tbtv_headercell sortableTableHeader" id="fromHeader"
|
||||
><var:string label:value="From"/></td
|
||||
></var:if
|
||||
><td class="tbtv_headercell" id="messageFlagHeader"
|
||||
><img rsrc:src="title_read_14x14.png"/></td
|
||||
><td class="tbtv_headercell sortableTableHeader" id="dateHeader"
|
||||
@@ -103,10 +104,8 @@
|
||||
></td
|
||||
|
||||
><td class="messageDateColumn"
|
||||
><span class="mailer_datefield"
|
||||
><var:string value="messageDate"
|
||||
/></span
|
||||
><entity name="nbsp"
|
||||
><var:string value="messageDate"
|
||||
/><entity name="nbsp"
|
||||
/></td
|
||||
></tr>
|
||||
</var:foreach>
|
||||
|
||||
@@ -118,6 +118,7 @@
|
||||
<script type="text/javascript" rsrc:src="prototype.js"><!-- space --></script>
|
||||
<script type="text/javascript" rsrc:src="tablekit.js"><!-- space --></script>
|
||||
<script type="text/javascript" rsrc:src="tablekit-trueresize.js"><!-- space --></script>
|
||||
<script type="text/javascript" rsrc:src="tablekit-sogo.js"><!-- space --></script>
|
||||
<script type="text/javascript" rsrc:src="JavascriptAPIExtensions.js"><!-- space --></script>
|
||||
<script type="text/javascript" rsrc:src="HTMLElement.js"><!-- space --></script>
|
||||
<script type="text/javascript" rsrc:src="HTMLInputElement.js"><!-- space --></script>
|
||||
|
||||
@@ -236,11 +236,6 @@ DIV#folderTreeContent TABLE TD
|
||||
|
||||
/* mail tableview */
|
||||
|
||||
span.mailer_datefield
|
||||
{
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
TD.mailer_readmailsubject
|
||||
{
|
||||
padding-left: 20px !important;
|
||||
@@ -421,7 +416,8 @@ TD.mailer_fieldvalue a
|
||||
}
|
||||
|
||||
TR.deleted TD
|
||||
{ text-decoration: line-through; }
|
||||
{ display: none;
|
||||
/* text-decoration: line-through; -- alternative display */ }
|
||||
|
||||
img.mailer_imagecontent
|
||||
{
|
||||
|
||||
@@ -238,15 +238,16 @@ function onDocumentKeydown(event) {
|
||||
|
||||
function deleteSelectedMessages(sender) {
|
||||
var messageList = $("messageList");
|
||||
var rowIds = messageList.getSelectedRowsId();
|
||||
|
||||
if (rowIds.length > 0) {
|
||||
for (var i = 0; i < rowIds.length; i++) {
|
||||
var rows = messageList.down("TBODY").getSelectedNodes();
|
||||
|
||||
if (rows.length > 0) {
|
||||
for (var i = 0; i < rows.length; i++) {
|
||||
var url;
|
||||
var rowId = rowIds[i].substr(4);
|
||||
var rowId = rows[i].readAttribute("id").substr(4);
|
||||
var messageId = Mailer.currentMailbox + "/" + rowId;
|
||||
url = ApplicationBaseURL + messageId + "/trash";
|
||||
deleteMessageRequestCount++;
|
||||
rows[i].addClassName("deleted");
|
||||
var data = { "id": rowId, "mailbox": Mailer.currentMailbox, "messageId": messageId };
|
||||
triggerAjaxRequest(url, deleteSelectedMessagesCallback, data);
|
||||
}
|
||||
@@ -268,16 +269,15 @@ function deleteSelectedMessagesCallback(http) {
|
||||
div.update();
|
||||
Mailer.currentMessages[Mailer.currentMailbox] = null;
|
||||
}
|
||||
|
||||
var row = $("row_" + data["id"]);
|
||||
var nextRow = row.next("tr");
|
||||
if (!nextRow)
|
||||
nextRow = row.previous("tr");
|
||||
// row.addClassName("deleted"); // when we'll offer "mark as deleted"
|
||||
|
||||
if (deleteMessageRequestCount == 0) {
|
||||
var row = $("row_" + data["id"]);
|
||||
var nextRow = row.next("tr");
|
||||
if (!nextRow)
|
||||
nextRow = row.previous("tr");
|
||||
// row.addClassName("deleted"); // when we'll offer "mark as deleted"
|
||||
if (nextRow) {
|
||||
Mailer.currentMessages[Mailer.currentMailbox] = nextRow.getAttribute("id").substr(4);
|
||||
nextRow.selectElement();
|
||||
loadMessage(Mailer.currentMessages[Mailer.currentMailbox]);
|
||||
}
|
||||
refreshCurrentFolder();
|
||||
@@ -539,9 +539,12 @@ function messageListCallback(http) {
|
||||
var tbody = table.tBodies[0];
|
||||
var tmp = document.createElement('div');
|
||||
$(tmp).update(http.responseText);
|
||||
thead.rows[1].parentNode.replaceChild(tmp.firstChild.tHead.rows[1], thead.rows[1]);
|
||||
addressHeaderCell.replaceChild(tmp.firstChild.tHead.rows[0].cells[3].lastChild,
|
||||
|
||||
var newRows = tmp.firstChild.tHead.rows;
|
||||
thead.rows[1].parentNode.replaceChild(newRows[1], thead.rows[1]);
|
||||
addressHeaderCell.replaceChild(newRows[0].cells[3].lastChild,
|
||||
addressHeaderCell.lastChild);
|
||||
addressHeaderCell.setAttribute("id", newRows[0].cells[3].getAttribute("id"));
|
||||
table.replaceChild(tmp.firstChild.tBodies[0], tbody);
|
||||
}
|
||||
else {
|
||||
@@ -560,9 +563,8 @@ function messageListCallback(http) {
|
||||
row.selectElement();
|
||||
lastClickedRow = row.rowIndex - $(row).up('table').down('thead').getElementsByTagName('tr').length;
|
||||
var rowPosition = row.rowIndex * row.getHeight();
|
||||
if ($(row).up('div').getHeight() > rowPosition)
|
||||
rowPosition = 0;
|
||||
div.scrollTop = rowPosition; // scroll to selected message
|
||||
if (rowPosition > div.getHeight())
|
||||
div.scrollTop = rowPosition; // scroll to selected message
|
||||
}
|
||||
else
|
||||
$("messageContent").update();
|
||||
@@ -1102,6 +1104,8 @@ function onHeaderClick(event) {
|
||||
newSortAttribute = "subject";
|
||||
else if (headerId == "fromHeader")
|
||||
newSortAttribute = "from";
|
||||
else if (headerId == "toHeader")
|
||||
newSortAttribute = "to";
|
||||
else if (headerId == "dateHeader")
|
||||
newSortAttribute = "date";
|
||||
else
|
||||
@@ -1208,8 +1212,7 @@ function configureMessageListEvents(table) {
|
||||
if (table) {
|
||||
table.multiselect = true;
|
||||
// Each body row can load a message
|
||||
table.observe("mousedown",
|
||||
onMessageSelectionChange.bindAsEventListener(table));
|
||||
table.observe("mousedown", onMessageSelectionChange);
|
||||
// Sortable columns
|
||||
configureSortableTableHeaders(table);
|
||||
}
|
||||
@@ -1232,10 +1235,10 @@ function configureMessageListBodyEvents(table) {
|
||||
row.observe("selectstart", listRowMouseDownHandler);
|
||||
row.observe("contextmenu", onMessageContextMenu);
|
||||
|
||||
row.dndTypes = function() { return new Array("mailRow"); };
|
||||
row.dndGhost = messageListGhost;
|
||||
row.dndDataForType = messageListData;
|
||||
// document.DNDManager.registerSource(row);
|
||||
//row.dndTypes = function() { return new Array("mailRow"); };
|
||||
//row.dndGhost = messageListGhost;
|
||||
//row.dndDataForType = messageListData;
|
||||
//document.DNDManager.registerSource(row);
|
||||
|
||||
for (var j = 0; j < row.cells.length; j++) {
|
||||
var cell = $(row.cells[j]);
|
||||
|
||||
@@ -564,11 +564,13 @@ function onRowClick(event) {
|
||||
if (isMac() && isSafari())
|
||||
if (event.ctrlKey == 1)
|
||||
isLeftClick = false; // Control-click is equivalent to right-click under Mac OS X
|
||||
else if (event.metaKey == 1) // Command-click
|
||||
isLeftClick = true;
|
||||
else
|
||||
isLeftClick = Event.isLeftClick(event);
|
||||
else
|
||||
isLeftClick = Event.isLeftClick(event);
|
||||
|
||||
|
||||
if (initialSelection.length > 0
|
||||
&& initialSelection.indexOf(node) >= 0
|
||||
&& !isLeftClick)
|
||||
@@ -1435,8 +1437,8 @@ function onBodyClickContextMenu(event) {
|
||||
function configureSortableTableHeaders(table) {
|
||||
var headers = $(table).getElementsByClassName("sortableTableHeader");
|
||||
for (var i = 0; i < headers.length; i++) {
|
||||
var header = headers[i];
|
||||
$(header).observe("click", onHeaderClick);
|
||||
var header = $(headers[i]);
|
||||
header.observe("click", onHeaderClick);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
11
UI/WebServerResources/tablekit-sogo.js
Normal file
11
UI/WebServerResources/tablekit-sogo.js
Normal file
@@ -0,0 +1,11 @@
|
||||
Object.extend(TableKit, {
|
||||
getHeaderCells : function(table, cell) {
|
||||
if(!table) { table = $(cell).up('table'); }
|
||||
var id = table.id;
|
||||
if(!TableKit.tables[id].dom.head) {
|
||||
// If there are tHead parts, use the first part, not the last one.
|
||||
TableKit.tables[id].dom.head = $A((table.tHead && table.tHead.rows.length > 0) ? table.tHead.rows[0].cells : table.rows[0].cells);
|
||||
}
|
||||
return TableKit.tables[id].dom.head;
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user