merge of '521ea089e2f431d8a0e1e6c022b351e76fbe5621'

and 'f0e213596b61da3ea457a1a0a14230911c3b4fe6'

Monotone-Parent: 521ea089e2f431d8a0e1e6c022b351e76fbe5621
Monotone-Parent: f0e213596b61da3ea457a1a0a14230911c3b4fe6
Monotone-Revision: bef1f662e1701b836a89ce52809aac40d4c7a964

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2008-08-21T15:56:11
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Wolfgang Sourdeau
2008-08-21 15:56:11 +00:00
3 changed files with 190 additions and 105 deletions
+33 -25
View File
@@ -1,11 +1,15 @@
/* JavaScript for SOGoContacts */
var cachedContacts = {};
var currentAddressBook = null;
var usersRightsWindowHeight = 200;
var usersRightsWindowWidth = 450;
var Contact = {
currentAddressBook: null,
currentContact: null
};
function validateEditorInput(sender) {
var errortext = "";
var field;
@@ -26,10 +30,10 @@ function validateEditorInput(sender) {
}
function openContactsFolder(contactsFolder, reload, idx) {
if ((contactsFolder && contactsFolder != currentAddressBook)
if ((contactsFolder && contactsFolder != Contact.currentAddressBook)
|| reload) {
currentAddressBook = contactsFolder;
var url = URLForFolderID(currentAddressBook) +
Contact.currentAddressBook = contactsFolder;
var url = URLForFolderID(Contact.currentAddressBook) +
"/view?noframe=1";
var searchValue = search["value"];
@@ -45,7 +49,7 @@ function openContactsFolder(contactsFolder, reload, idx) {
if (idx) {
selection = [idx];
}
else if (contactsFolder == currentAddressBook) {
else if (contactsFolder == Contact.currentAddressBook) {
var contactsList = $("contactsList");
if (contactsList)
selection = contactsList.getSelectedRowsId();
@@ -66,7 +70,7 @@ function openContactsFolder(contactsFolder, reload, idx) {
function openContactsFolderAtIndex(element) {
var idx = element.getAttribute("idx");
var url = URLForFolderID(currentAddressBook) + "/view?noframe=1&idx=" + idx;
var url = URLForFolderID(Contact.currentAddressBook) + "/view?noframe=1&idx=" + idx;
if (document.contactsListAjaxRequest) {
document.contactsListAjaxRequest.aborted = true;
@@ -285,12 +289,13 @@ function loadContact(idx) {
document.contactAjaxRequest.abort();
}
if (cachedContacts[currentAddressBook + "/" + idx]) {
if (cachedContacts[Contact.currentAddressBook + "/" + idx]) {
var div = $('contactView');
div.innerHTML = cachedContacts[currentAddressBook + "/" + idx];
Contact.currentContact = idx;
div.innerHTML = cachedContacts[Contact.currentAddressBook + "/" + idx];
}
else {
var url = (URLForFolderID(currentAddressBook)
var url = (URLForFolderID(Contact.currentAddressBook)
+ "/" + idx + "/view?noframe=1");
document.contactAjaxRequest
= triggerAjaxRequest(url, contactLoadCallback, idx);
@@ -304,7 +309,8 @@ function contactLoadCallback(http) {
&& http.status == 200) {
document.contactAjaxRequest = null;
var content = http.responseText;
cachedContacts[currentAddressBook + "/" + http.callbackData] = content;
cachedContacts[Contact.currentAddressBook + "/" + http.callbackData] = content;
Contact.currentContact = http.callbackData;
div.innerHTML = content;
}
else {
@@ -346,7 +352,7 @@ function moveTo(uri) {
function onContactRowDblClick(event) {
var contactId = this.getAttribute('contactid');
openContactWindow(URLForFolderID(currentAddressBook)
openContactWindow(URLForFolderID(Contact.currentAddressBook)
+ "/" + contactId + "/edit", contactId);
return false;
@@ -359,8 +365,10 @@ function onContactSelectionChange(event) {
var node = $(rows[0]);
loadContact(node.getAttribute('contactid'));
}
else if (rows.length > 1)
else if (rows.length > 1) {
$('contactView').update();
Contact.currentContact = null;
}
}
function onMenuEditContact(event) {
@@ -395,7 +403,7 @@ function onToolbarEditSelectedContacts(event) {
}
for (var i = 0; i < rows.length; i++) {
openContactWindow(URLForFolderID(currentAddressBook)
openContactWindow(URLForFolderID(Contact.currentAddressBook)
+ "/" + rows[i] + "/edit", rows[i]);
}
@@ -413,7 +421,7 @@ function onToolbarWriteToSelectedContacts(event) {
}
openMailComposeWindow(ApplicationBaseURL + "../Mail/compose"
+ "?folder=" + currentAddressBook.substring(1)
+ "?folder=" + Contact.currentAddressBook.substring(1)
+ "&uid=" + rows.join("&uid="));
if (document.body.hasClassName("popup"))
@@ -428,14 +436,11 @@ function onToolbarDeleteSelectedContacts(event) {
if (rows.length) {
for (var i = 0; i < rows.length; i++) {
delete cachedContacts[currentAddressBook + "/" + rows[i]];
var urlstr = (URLForFolderID(currentAddressBook) + "/"
delete cachedContacts[Contact.currentAddressBook + "/" + rows[i]];
var urlstr = (URLForFolderID(Contact.currentAddressBook) + "/"
+ rows[i] + "/delete");
triggerAjaxRequest(urlstr, onContactDeleteEventCallback, rows[i]);
}
var contactView = $('contactView');
contactView.update();
}
else {
window.alert(labels["Please select a contact."]);
@@ -449,6 +454,8 @@ function onContactDeleteEventCallback(http) {
if (isHttpStatus204(http.status)) {
var row = $(http.callbackData);
row.parentNode.removeChild(row);
if (Contact.currentContact == http.callbackData)
$("contactView").update();
}
else if (parseInt(http.status) == 403) {
var row = $(http.callbackData);
@@ -494,7 +501,7 @@ function onHeaderClick(event) {
}
function newContact(sender) {
openContactWindow(URLForFolderID(currentAddressBook) + "/newcontact");
openContactWindow(URLForFolderID(Contact.currentAddressBook) + "/newcontact");
return false; /* stop following the link */
}
@@ -510,7 +517,8 @@ function onFolderSelectionChange(event) {
}
$("contactView").update();
Contact.currentContact = null;
if (nodes[0].hasClassName("denied")) {
var div = $("contactsListContent");
div.update();
@@ -525,12 +533,12 @@ function onFolderSelectionChange(event) {
}
function refreshCurrentFolder() {
openContactsFolder(currentAddressBook, true);
openContactsFolder(Contact.currentAddressBook, true);
}
function onConfirmContactSelection(event) {
var tag = this.getAttribute("name");
var folderLi = $(currentAddressBook);
var folderLi = $(Contact.currentAddressBook);
var currentAddressBookName = folderLi.innerHTML;
var selectorList = null;
var initialValues = null;
@@ -562,8 +570,8 @@ function onConfirmContactSelection(event) {
}
function refreshContacts(contactId) {
openContactsFolder(currentAddressBook, true, contactId);
delete cachedContacts[currentAddressBook + "/" + contactId];
openContactsFolder(Contact.currentAddressBook, true, contactId);
delete cachedContacts[Contact.currentAddressBook + "/" + contactId];
loadContact(contactId);
return false;
-3
View File
@@ -485,9 +485,6 @@ function initMailEditor() {
if (listContent.length > 0)
$("attachmentsArea").setStyle({ display: "block" });
var list = $("addressList");
TableKit.Resizable.init(list, {'trueResize' : true, 'keepWidth' : true});
var textarea = $("text");
var textContent = textarea.getValue();
var sigLimit = textContent.lastIndexOf("--");
+157 -77
View File
@@ -2,8 +2,8 @@
*
* Copyright (c) 2007 Andrew Tetlaw & Millstream Web Software
* http://www.millstream.com.au/view/code/tablekit/
* Version: 1.2.1 2007-03-11
*
* Version: 1.3b 2008-03-23
*
* Permission is hereby granted, free of charge, to any person
* obtaining a copy of this software and associated documentation
* files (the "Software"), to deal in the Software without
@@ -63,19 +63,18 @@ Object.extend(TableKit, {
getBodyRows : function(table) {
table = $(table);
var id = table.id;
if(!TableKit.rows[id]) {
TableKit.rows[id] = (table.tHead && table.tHead.rows.length > 0) ? $A(table.tBodies[0].rows) : $A(table.rows).without(table.rows[0]);
if(!TableKit.tables[id].dom.rows) {
TableKit.tables[id].dom.rows = (table.tHead && table.tHead.rows.length > 0) ? $A(table.tBodies[0].rows) : $A(table.rows).without(table.rows[0]);
}
return TableKit.rows[id];
return TableKit.tables[id].dom.rows;
},
getHeaderCells : function(table, cell) {
if(!table) { table = $(cell).up('table'); }
var id = table.id;
if(!TableKit.heads[id]) {
//TableKit.heads[id] = $A((table.tHead && table.tHead.rows.length > 0) ? table.tHead.rows[table.tHead.rows.length-1].cells : table.rows[0].cells);
TableKit.heads[id] = $A((table.tHead && table.tHead.rows.length > 0) ? table.tHead.rows[0].cells : table.rows[0].cells);
if(!TableKit.tables[id].dom.head) {
TableKit.tables[id].dom.head = $A((table.tHead && table.tHead.rows.length > 0) ? table.tHead.rows[table.tHead.rows.length-1].cells : table.rows[0].cells);
}
return TableKit.heads[id];
return TableKit.tables[id].dom.head;
},
getCellIndex : function(cell) {
return $A(cell.parentNode.cells).indexOf(cell);
@@ -85,30 +84,42 @@ Object.extend(TableKit, {
},
getCellText : function(cell, refresh) {
if(!cell) { return ""; }
TableKit.registerCell(cell);
var data = TableKit.cells[cell.id];
var data = TableKit.getCellData(cell);
if(refresh || data.refresh || !data.textContent) {
data.textContent = cell.textContent ? cell.textContent : cell.innerText;
data.refresh = false;
}
return data.textContent;
},
getCellData : function(cell) {
var t = null;
if(!cell.id) {
t = $(cell).up('table');
cell.id = t.id + "-cell-" + TableKit._getc();
}
var tblid = t ? t.id : cell.id.match(/(.*)-cell.*/)[1];
if(!TableKit.tables[tblid].dom.cells[cell.id]) {
TableKit.tables[tblid].dom.cells[cell.id] = {textContent : '', htmlContent : '', active : false};
}
return TableKit.tables[tblid].dom.cells[cell.id];
},
register : function(table, options) {
if(!table.id) {
TableKit._tblcount += 1;
table.id = "tablekit-table-" + TableKit._tblcount;
table.id = "tablekit-table-" + TableKit._getc();
}
var id = table.id;
TableKit.tables[id] = TableKit.tables[id] ? Object.extend(TableKit.tables[id], options || {}) : Object.extend({sortable:false,resizable:false,editable:false}, options || {});
TableKit.tables[id] = TableKit.tables[id] ?
Object.extend(TableKit.tables[id], options || {}) :
Object.extend(
{dom : {head:null,rows:null,cells:{}},sortable:false,resizable:false,editable:false},
options || {}
);
},
registerCell : function(cell) {
if(!cell.id) {
TableKit._cellcount += 1;
cell.id = "tablekit-cell-" + TableKit._cellcount;
}
if(!TableKit.cells[cell.id]) {
TableKit.cells[cell.id] = {textContent : '', htmlContent : '', active : false};
notify : function(eventName, table, event) {
if(TableKit.tables[table.id] && TableKit.tables[table.id].observers && TableKit.tables[table.id].observers[eventName]) {
TableKit.tables[table.id].observers[eventName](table, event);
}
TableKit.options.observers[eventName](table, event)();
},
isSortable : function(table) {
return TableKit.tables[table.id] ? TableKit.tables[table.id].sortable : false;
@@ -139,9 +150,6 @@ Object.extend(TableKit, {
},
tables : {},
_opcache : {},
cells : {},
rows : {},
heads : {},
options : {
autoLoad : true,
stripe : true,
@@ -154,6 +162,7 @@ Object.extend(TableKit, {
columnClass : 'sortcol',
descendingClass : 'sortdesc',
ascendingClass : 'sortasc',
defaultSortDirection : 1,
noSortClass : 'nosort',
sortFirstAscendingClass : 'sortfirstasc',
sortFirstDecendingClass : 'sortfirstdesc',
@@ -165,10 +174,77 @@ Object.extend(TableKit, {
formClassName : 'editable-cell-form',
noEditClass : 'noedit',
editAjaxURI : '/',
editAjaxOptions : {}
editAjaxOptions : {},
observers : {
'onSortStart' : function(){},
'onSort' : function(){},
'onSortEnd' : function(){},
'onResizeStart' : function(){},
'onResize' : function(){},
'onResizeEnd' : function(){},
'onEditStart' : function(){},
'onEdit' : function(){},
'onEditEnd' : function(){}
}
},
_c : 0,
_getc : function() {return TableKit._c += 1;},
unloadTable : function(table){
table = $(table);
if(!TableKit.tables[table.id]) {return;} //if not an existing registered table return
var cells = TableKit.getHeaderCells(table);
var op = TableKit.option('sortable resizable editable noSortClass descendingClass ascendingClass columnClass sortFirstAscendingClass sortFirstDecendingClass', table.id);
//unregister all the sorting and resizing events
cells.each(function(c){
c = $(c);
if(op.sortable) {
if(!c.hasClassName(op.noSortClass)) {
Event.stopObserving(c, 'mousedown', TableKit.Sortable._sort);
c.removeClassName(op.columnClass);
c.removeClassName(op.sortFirstAscendingClass);
c.removeClassName(op.sortFirstDecendingClass);
//ensure that if table reloaded current sort is remembered via sort first class name
if(c.hasClassName(op.ascendingClass)) {
c.removeClassName(op.ascendingClass);
c.addClassName(op.sortFirstAscendingClass)
} else if (c.hasClassName(op.descendingClass)) {
c.removeClassName(op.descendingClass);
c.addClassName(op.sortFirstDecendingClass)
}
}
}
if(op.resizable) {
Event.stopObserving(c, 'mouseover', TableKit.Resizable.initDetect);
Event.stopObserving(c, 'mouseout', TableKit.Resizable.killDetect);
}
});
//unregister the editing events and cancel any open editors
if(op.editable) {
Event.stopObserving(table.tBodies[0], 'click', TableKit.Editable._editCell);
for(var c in TableKit.tables[table.id].dom.cells) {
if(TableKit.tables[table.id].dom.cells[c].active) {
var cell = $(c);
var editor = TableKit.Editable.getCellEditor(cell);
editor.cancel(cell);
}
}
}
//delete the cache
TableKit.tables[table.id].dom = {head:null,rows:null,cells:{}}; // TODO: watch this for mem leaks
},
reloadTable : function(table){
table = $(table);
TableKit.unloadTable(table);
var op = TableKit.option('sortable resizable editable', table.id);
if(op.sortable) {TableKit.Sortable.init(table);}
if(op.resizable) {TableKit.Resizable.init(table);}
if(op.editable) {TableKit.Editable.init(table);}
},
reload : function() {
for(var k in TableKit.tables) {
TableKit.reloadTable(k);
}
},
_tblcount : 0,
_cellcount : 0,
load : function() {
if(TableKit.options.autoLoad) {
if(TableKit.options.sortable) {
@@ -288,15 +364,16 @@ TableKit.Sortable = {
table = table ? $(table) : cell.up('table');
index = TableKit.getCellIndex(cell);
}
var op = TableKit.option('noSortClass descendingClass ascendingClass', table.id);
var op = TableKit.option('noSortClass descendingClass ascendingClass defaultSortDirection', table.id);
if(cell.hasClassName(op.noSortClass)) {return;}
order = order ? order : (cell.hasClassName(op.descendingClass) ? 1 : -1);
//TableKit.notify('onSortStart', table);
order = order ? order : op.defaultSortDirection;
var rows = TableKit.getBodyRows(table);
if(cell.hasClassName(op.ascendingClass) || cell.hasClassName(op.descendingClass)) {
rows.reverse(); // if it was already sorted we just need to reverse it.
order = cell.hasClassName(op.descendingClass) ? 1 : -1;
} else {
var datatype = TableKit.Sortable.getDataType(cell,index,table);
var tkst = TableKit.Sortable.types;
@@ -317,10 +394,8 @@ TableKit.Sortable = {
c.removeClassName(op.descendingClass);
if(index === i) {
if(order === 1) {
c.removeClassName(op.descendingClass);
c.addClassName(op.ascendingClass);
} else {
c.removeClassName(op.ascendingClass);
c.addClassName(op.descendingClass);
}
}
@@ -341,14 +416,16 @@ TableKit.Sortable = {
var cache = colcache[table.id] ? colcache[table.id] : (colcache[table.id] = {});
if(!cache[index]) {
var t = '';
var t = false;
// first look for a data type id on the heading row cell
if(cell.id && TableKit.Sortable.types[cell.id]) {
t = cell.id;
t = cell.id
}
if(!t) {
t = $w(cell.className).detect(function(n){ // then look for a data type classname on the heading row cell
return (TableKit.Sortable.types[n]) ? true : false;
});
}
t = cell.classNames().detect(function(n){ // then look for a data type classname on the heading row cell
return (TableKit.Sortable.types[n]) ? true : false;
});
if(!t) {
var rows = TableKit.getBodyRows(table);
cell = rows[0].cells[index]; // grab same index cell from body row to try and match data type
@@ -442,9 +519,14 @@ TableKit.Sortable.addSortType(
var mo_num = parseInt(r[2],10)-1;
var day_num = r[1];
var hr_num = r[4] ? r[4] : 0;
if(r[7] && r[7].toLowerCase().indexOf('p') !== -1) {
hr_num = parseInt(r[4],10) + 12;
}
if(r[7]) {
var chr = parseInt(r[4],10);
if(r[7].toLowerCase().indexOf('p') !== -1) {
hr_num = chr < 12 ? chr + 12 : chr;
} else if(r[7].toLowerCase().indexOf('a') !== -1) {
hr_num = chr < 12 ? chr : 0;
}
}
var min_num = r[5] ? r[5] : 0;
var sec_num = r[6] ? r[6] : 0;
return new Date(yr_num, mo_num, day_num, hr_num, min_num, sec_num, 0).valueOf();
@@ -458,9 +540,14 @@ TableKit.Sortable.addSortType(
var mo_num = parseInt(r[1],10)-1;
var day_num = r[2];
var hr_num = r[4] ? r[4] : 0;
if(r[7] && r[7].toLowerCase().indexOf('p') !== -1) {
hr_num = parseInt(r[4],10) + 12;
}
if(r[7]) {
var chr = parseInt(r[4],10);
if(r[7].toLowerCase().indexOf('p') !== -1) {
hr_num = chr < 12 ? chr + 12 : chr;
} else if(r[7].toLowerCase().indexOf('a') !== -1) {
hr_num = chr < 12 ? chr : 0;
}
}
var min_num = r[5] ? r[5] : 0;
var sec_num = r[6] ? r[6] : 0;
return new Date(yr_num, mo_num, day_num, hr_num, min_num, sec_num, 0).valueOf();
@@ -516,7 +603,7 @@ TableKit.Sortable.addSortType(
return TableKit.Sortable.Type.compare(new Date(ds + a),new Date(ds + b));
}}),
new TableKit.Sortable.Type('currency',{
pattern : /^[$£¥€¤]/, // dollar,pound,yen,euro,generic currency symbol
pattern : /^[$]/, // dollar,pound,yen,euro,generic currency symbol
normal : function(v) {
return v ? parseFloat(v.replace(/[^-\d\.]/g,'')) : 0;
}})
@@ -530,21 +617,10 @@ TableKit.Resizable = {
var cells = TableKit.getHeaderCells(table);
cells.each(function(c){
c = $(c);
//log ("init on " + c.firstChild.nodeValue);
Event.observe(c, 'mouseover', TableKit.Resizable.initDetect);
Event.observe(c, 'mouseout', TableKit.Resizable.killDetect);
});
},
reload : function(table) {
table = $(table);
var cells = TableKit.getHeaderCells(table);
cells.each(function(c){
c = $(c);
Event.stopObserving(c, 'mouseover', TableKit.Resizable.initDetect);
Event.stopObserving(c, 'mouseout', TableKit.Resizable.killDetect);
});
TableKit.Resizable.init(table);
},
resize : function(table, index, w) {
var cell;
if(typeof index === 'number') {
@@ -561,6 +637,7 @@ TableKit.Resizable = {
}
var pad = parseInt(cell.getStyle('paddingLeft'),10) + parseInt(cell.getStyle('paddingRight'),10);
w = Math.max(w-pad, TableKit.option('minWidth', table.id)[0]);
cell.setStyle({'width' : w + 'px'});
},
initDetect : function(e) {
@@ -584,14 +661,13 @@ TableKit.Resizable = {
e = TableKit.e(e);
TableKit.Resizable._onHandle = false;
var cell = Event.element(e);
if (!cell.tagName || cell.tagName != 'TD') return;
Event.stopObserving(cell, 'mousemove', TableKit.Resizable.detectHandle);
Event.stopObserving(cell, 'mousedown', TableKit.Resizable.startResize);
cell.removeClassName(TableKit.option('resizeOnHandleClass', cell.up('table').id)[0]);
},
startResize : function(e) {
e = TableKit.e(e);
if(!TableKit.Resizable._onHandle) { return;}
if(!TableKit.Resizable._onHandle) {return;}
var cell = Event.element(e);
Event.stopObserving(cell, 'mousemove', TableKit.Resizable.detectHandle);
Event.stopObserving(cell, 'mousedown', TableKit.Resizable.startResize);
@@ -601,7 +677,7 @@ TableKit.Resizable = {
TableKit.Resizable._tbl = table;
if(TableKit.option('showHandle', table.id)[0]) {
TableKit.Resizable._handle = $(document.createElement('div')).addClassName('resize-handle').setStyle({
'top' : Position.cumulativeOffset(cell)[1] + 'px',
'top' : cell.cumulativeOffset()[1] + 'px',
'left' : Event.pointerX(e) + 'px',
'height' : table.getDimensions().height + 'px'
});
@@ -614,7 +690,7 @@ TableKit.Resizable = {
endResize : function(e) {
e = TableKit.e(e);
var cell = TableKit.Resizable._cell;
TableKit.Resizable.resize(null, cell, (Event.pointerX(e) - Position.cumulativeOffset(cell)[0]));
TableKit.Resizable.resize(null, cell, (Event.pointerX(e) - cell.cumulativeOffset()[0]));
Event.stopObserving(document, 'mousemove', TableKit.Resizable.drag);
Event.stopObserving(document, 'mouseup', TableKit.Resizable.endResize);
if(TableKit.option('showHandle', TableKit.Resizable._tbl.id)[0]) {
@@ -630,7 +706,7 @@ TableKit.Resizable = {
e = TableKit.e(e);
if(TableKit.Resizable._handle === null) {
try {
TableKit.Resizable.resize(TableKit.Resizable._tbl, TableKit.Resizable._cell, (Event.pointerX(e) - Position.cumulativeOffset(TableKit.Resizable._cell)[0]));
TableKit.Resizable.resize(TableKit.Resizable._tbl, TableKit.Resizable._cell, (Event.pointerX(e) - TableKit.Resizable._cell.cumulativeOffset()[0]));
} catch(e) {}
} else {
TableKit.Resizable._handle.setStyle({'left' : Event.pointerX(e) + 'px'});
@@ -638,7 +714,7 @@ TableKit.Resizable = {
return false;
},
pointerPos : function(element, x, y) {
var offset = Position.cumulativeOffset(element);
var offset = $(element).cumulativeOffset();
return (y >= offset[1] &&
y < offset[1] + element.offsetHeight &&
x >= offset[0] + element.offsetWidth - 5 &&
@@ -661,9 +737,13 @@ TableKit.Editable = {
_editCell : function(e) {
e = TableKit.e(e);
var cell = Event.findElement(e,'td');
TableKit.Editable.editCell(null, cell);
if(cell) {
TableKit.Editable.editCell(null, cell, null, e);
} else {
return false;
}
},
editCell : function(table, index, cindex) {
editCell : function(table, index, cindex, event) {
var cell, row;
if(typeof index === 'number') {
if(!table || (table.tagName && table.tagName !== "TABLE")) {return;}
@@ -677,7 +757,7 @@ TableKit.Editable = {
row = $(table.tBodies[0].rows[index]);
cell = $(row.cells[cindex]);
} else {
cell = $(index);
cell = $(event ? Event.findElement(event, 'td') : index);
table = (table && table.tagName && table.tagName !== "TABLE") ? $(table) : cell.up('table');
row = cell.up('tr');
}
@@ -687,21 +767,25 @@ TableKit.Editable = {
var head = $(TableKit.getHeaderCells(table, cell)[TableKit.getCellIndex(cell)]);
if(head.hasClassName(op.noEditClass)) {return;}
TableKit.registerCell(cell);
var data = TableKit.cells[cell.id];
var data = TableKit.getCellData(cell);
if(data.active) {return;}
data.htmlContent = cell.innerHTML;
var ftype = TableKit.Editable.types['text-input'];
var ftype = TableKit.Editable.getCellEditor(null,null,head);
ftype.edit(cell, event);
data.active = true;
},
getCellEditor : function(cell, table, head) {
var head = head ? head : $(TableKit.getHeaderCells(table, cell)[TableKit.getCellIndex(cell)]);
var ftype = TableKit.Editable.types['text-input'];
if(head.id && TableKit.Editable.types[head.id]) {
ftype = TableKit.Editable.types[head.id];
} else {
var n = head.classNames().detect(function(n){
var n = $w(head.className).detect(function(n){
return (TableKit.Editable.types[n]) ? true : false;
});
ftype = n ? TableKit.Editable.types[n] : ftype;
}
ftype.edit(cell);
data.active = true;
return ftype;
},
types : {},
addCellEditor : function(o) {
@@ -793,7 +877,7 @@ TableKit.Editable.CellEditor.prototype = {
this.ajax = new Ajax.Updater(cell, op.ajaxURI || TableKit.option('editAjaxURI', table.id)[0], Object.extend(op.ajaxOptions || TableKit.option('editAjaxOptions', table.id)[0], {
postBody : s,
onComplete : function() {
var data = TableKit.cells[cell.id];
var data = TableKit.getCellData(cell);
data.active = false;
data.refresh = true; // mark cell cache for refreshing, in case cell contents has changed and sorting is applied
}
@@ -806,7 +890,7 @@ TableKit.Editable.CellEditor.prototype = {
},
cancel : function(cell) {
this.ajax = null;
var data = TableKit.cells[cell.id];
var data = TableKit.getCellData(cell);
cell.innerHTML = data.htmlContent;
data.htmlContent = '';
data.active = false;
@@ -851,8 +935,4 @@ TableKit.Bench = {
}
} */
if(window.FastInit) {
FastInit.addOnLoad(TableKit.load);
} else {
Event.observe(window, 'load', TableKit.load);
}
document.observe("dom:loaded", TableKit.load);