Author: thomas
Date: Tue Feb 23 08:10:07 2010
New Revision: 30618
Log:
re #4932: merged 4892-jquery branch, landing multiselection on the trunk
Added:
webmailer/gocept.webmail/trunk/gocept/webmail/browser/resources/select.js
- copied unchanged from r30617,
webmailer/gocept.webmail/branches/4892-jquery/gocept/webmail/browser/resources/select.js
webmailer/gocept.webmail/trunk/selection.txt
- copied unchanged from r30617,
webmailer/gocept.webmail/branches/4892-jquery/selection.txt
webmailer/gocept.webmail/trunk/selection_scaling.txt
- copied unchanged from r30617,
webmailer/gocept.webmail/branches/4892-jquery/selection_scaling.txt
Modified:
webmailer/gocept.webmail/trunk/ (props changed)
webmailer/gocept.webmail/trunk/TODO.txt
webmailer/gocept.webmail/trunk/gocept/webmail/browser/resources/message.js
webmailer/gocept.webmail/trunk/gocept/webmail/browser/resources/runner.js
webmailer/gocept.webmail/trunk/gocept/webmail/browser/resources/utilities.js
webmailer/gocept.webmail/trunk/gocept/webmail/browser/resources/webmailer-main.js
Modified: webmailer/gocept.webmail/trunk/TODO.txt
==============================================================================
--- webmailer/gocept.webmail/trunk/TODO.txt (original)
+++ webmailer/gocept.webmail/trunk/TODO.txt Tue Feb 23 08:10:07 2010
(at)(at) -1,6 +1,7 (at)(at)
-Todo new:
+Todo
+====
-entirely new features:
+new features:
* when someone sends an overly long line, we don't want a horizontal
scrollbar but wrap the text somehow (Thomas)
(at)(at) -18,9 +19,31 (at)(at)
* Allow downloading messages into mbox files. (Thomas)
-* Implement multi-selection of messages in a folder, apply operations
- such as deletion or moving to all selected messages instead of just
- one. (Martijn)
+* Implement operations on selection of multiple messages in a folder
(Martijn):
+
+ * downloading
+
+ * possibly printing the number of selected messages and size in
+ table caption
+
+ * do we want a copy or cut button and/or menu entry? We have a drag
+ & drop implementation.
+
+ * should a message be opened by default (and perhaps selected?) when
+ we first enter a folder?
+
+ * there is a mysterious URL being generated somewhere at some point to
+ here:
+
+ http://localhost:8080/test/admin/user-localhost/+INBOX/(at)(at)delete_messages/delete_messages
+
+ Figure out what is going on.
+
+ * Nicer interaction when deleting, instead of the reloading of the
+ table that happens now, perhaps delete removed rows from it?
+
+ * prevent DOS attacks from happening when a huge amount of messages
+ are range-selected.
* Some way of catching Javascript problems in a way that enables any
user to submit meaningful bug reports. This should be implemented in
(at)(at) -42,10 +65,9 (at)(at)
* when editing a draft message that's being displayed, update the preview
-new features:
+newly discovered features:
-* multi select: retain multiselections after scrolling, what to do
- with "select all" (Martijn)
+* keyboard shortcuts for various operations (navigation, copy & paste,
etc)
code structure:
(at)(at) -112,3 +134,4 (at)(at)
see a completely empty and therefore not very clear draft)
* improve testing
+
Modified:
webmailer/gocept.webmail/trunk/gocept/webmail/browser/resources/message.js
==============================================================================
---
webmailer/gocept.webmail/trunk/gocept/webmail/browser/resources/message.js (original)
+++
webmailer/gocept.webmail/trunk/gocept/webmail/browser/resources/message.js Tue
Feb 23 08:10:07 2010
(at)(at) -1,4 +1,4 (at)(at)
-Def(function() {
+(function($){
YAHOO.gocept.webmailer.onMessageListResized = new
YAHOO.util.CustomEvent("onMessageListResized");
YAHOO.gocept.webmailer.onDraftModified = new
YAHOO.util.CustomEvent("onDraftModified");
(at)(at) -6,10 +6,9 (at)(at)
YAHOO.gocept.webmailer.onFolderInfoUpdated = new
YAHOO.util.CustomEvent("onFolderInfoUpdated");
YAHOO.gocept.webmailer.onOpenComposer = new
YAHOO.util.CustomEvent("onOpenComposer");
-});
-
-
-(function($){
+/* the maximum amount of popups that should pop up when
+ opening multiple messages */
+var MAXIMUM_POPUP_WINDOWS = 1;
YAHOO.gocept.webmailer.Container = Class(
{
(at)(at) -60,7 +59,7 (at)(at)
apply_to_message_container: function(callback) {
var self = this;
self.apply_to_children(function(children) {
- $(children).each(function(index, child) {
+ $.each(children, function(index, child) {
if (child.name == 'INBOX') {
callback(child);
return false;
(at)(at) -76,11 +75,10 (at)(at)
address_name: 'from_name',
address_heading: 'Absender',
- canBeRaw: true,
- canEdit: false,
- canDelete: true,
- canForward: true,
- canReply: true,
+ allowed_operations: {'raw': null,
+ 'delete': null,
+ 'forward': null,
+ 'reply': null},
messages_view: 'messages',
(at)(at) -103,11 +101,9 (at)(at)
address_name: 'to',
address_heading: 'Empfänger',
- canBeRaw: true,
- canEdit: true,
- canDelete: true,
- canForward: false,
- canReply: false,
+ allowed_operations: {'raw': null,
+ 'edit': null,
+ 'delete': null},
messages_view: 'drafts'
});
(at)(at) -124,7 +120,7 (at)(at)
var cell_content = '';
var seen = false;
- $(flags).each(function(index, flag){
+ $.each(flags, function(index, flag){
if (flag == '\\Seen') {
seen = true;
}
(at)(at) -156,10 +152,7 (at)(at)
document.App.preferences.set("sort", [index, sortorder]);
};
-var open_message = function(rowId, status) {
- if (!status) {
- return;
- }
+var open_message = function(rowId) {
// jqgrid does not retain information about the original row data but only
// keeps the formatted cell contents. We therefore need to remove the
(at)(at) -168,15 +161,7 (at)(at)
$('#message-table tr#'+escaped_rowId+' td img.message_unread').remove();
document.App.preview_pane.loading();
- var folder = document.App.selected_folder;
- return document.App.preview_pane.load({
- url: rowId,
- canBeRaw: folder.canBeRaw,
- canEdit: folder.canEdit,
- canDelete: folder.canDelete,
- canForward: folder.canForward,
- canReply: folder.canReply
- });
+ return document.App.preview_pane.load(rowId);
};
var start_drag = function(event) {
(at)(at) -186,13 +171,21 (at)(at)
}
// we want the tr
- var element = event.target.parentNode;
+ var row = event.target.parentNode;
+
+ var tableselect = $('#message-table').existingTableSelect();
+
+ // if the tr isn't selected, and we aren't holding down
+ // the ctrl key, we need to single-select it first
+ if (!event.ctrlKey && !tableselect.is_selected(row.id)) {
+ tableselect.single_select(row.id);
+ }
- ddRow = YAHOO.gocept.webmailer.util.get_dd_proxy(element.id);
+ ddRow = YAHOO.gocept.webmailer.util.get_dd_proxy(row.id);
ddRow.handleMouseDown(event);
ddRow.getSource = function() {
- return {url: element.id};
+ return {message_urls: tableselect.get_selected_rowids()};
};
ddRow.onDragDrop = function(ev, id) {
(at)(at) -200,15 +193,16 (at)(at)
var target = this.getTarget(id);
if (!this.checkDropTarget(source, target))
return;
- var method = '/(at)(at)move';
+ var method = '/(at)(at)move_messages';
var source_changed = true;
if (ev.ctrlKey) {
- method = '/(at)(at)copy';
+ method = '/(at)(at)copy_messages';
source_changed = false;
- };
- url = source.url + method;
+ }
+ var folder_url = target.url;
+ var url = folder_url + method;
document.Connection.post(
- url, {folder_url: target.url}, function(result) {
+ url, source, function(result) {
YAHOO.util.DragDropMgr.stopDrag(ev, true);
if (source_changed) {
YAHOO.gocept.webmailer.onFolderContentsChanged.fire();
(at)(at) -218,6 +212,12 (at)(at)
};
};
+// information about the last server request made
+var last_page = null;
+var last_sord = null;
+var last_idx = null;
+var last_rownum = 50;
+
// Beware the magic number.
var message_table_height = 219;
(at)(at) -228,6 +228,7 (at)(at)
var load = function(folder) {
document.App.preview_pane.reset();
+ disable_message_buttons_and_menu();
document.App.selected_folder = folder;
var init_sort = document.App.preferences.data['sort'];
(at)(at) -240,14 +241,25 (at)(at)
$('#message-table').jqGrid('GridUnload');
$('#message-table').unbind('mousedown');
+ var tableselect = $('#message-table').existingTableSelect()
+ if (tableselect !== null) {
+ tableselect.unload();
+ }
+
+ tableselect = $('#message-table').tableSelect({
+ 'update_selection': update_selection
+ });
+
+ var json_url = folder.url + '/(at)(at)' + folder.messages_view + '_jqgrid'
// XXX REST
+
var options = {
+ afterInsertRow: tableselect.select_if_needed,
autowidth: true,
- beforeSelectRow: function(){
- // XXX temporary fix for jqgrid's behaviour, should be removed
- // when merging the multiselection feature
- $('#message-table tr').removeClass('ui-state-highlight');
- $('#message-table tr').attr('aria-selected', 'false');
- return true;
+ beforeSelectRow: function(rowid, e) {
+ tableselect.handle_select_event(last_page, rowid, e);
+ // this function returns false to take over jqgrid's
+ // native selection mechanism completely
+ return false;
},
caption: folder.name,
colModel: [{name: 'flags',
(at)(at) -264,17 +276,58 (at)(at)
height: message_table_height,
hidegrid: false,
loadComplete: function(data) { set_folder_total(folder, data); },
-// multiselect: true,
- onSelectRow: open_message,
onSortCol: save_sorting_state,
- rowNum: 50,
+ rowNum: last_rownum, // this is never updated, so we just set it
scroll: 1,
sortname: sortname,
sortorder: sortorder,
- url: folder.url + '/(at)(at)' + folder.messages_view + '_jqgrid' //
XXX REST
+ url: json_url
};
- $('#message-table').jqGrid(options);
+ var grid = $('#message-table').jqGrid(options);
+
+ /* this sets up a hackish way to maintain the current page we're loading
*/
+ grid.setGridParam({
+ 'gridComplete': function(xhr) {
+ last_page = grid.getGridParam('page');
+ last_sord = grid.getGridParam('sortorder');
+ last_sidx = grid.getGridParam('sortname');
+ }
+ });
+
+ tableselect.config('batched_rowids', function(from_batch, to_batch,
callback) {
+ /* batch 0 doesn't exist */
+ if (from_batch == 0) {
+ from_batch = 1;
+ }
+
+ var rowids = [];
+
+ /* retrieve all batches in order, and finally call callback
+ when all batches have been retrieved */
+ var get_batch = function(batch) {
+ $.getJSON(json_url,
+ {'page': batch,
+ 'nd': new Date().getTime(),
+ 'rows': last_rownum,
+ 'sidx': last_sidx,
+ 'sord': last_sord
+ },
+ function(json) {
+ $.each(json.rows, function(i, value) {
+ rowids.push(value.id);
+ });
+ var next_batch = batch + 1;
+ if (next_batch <= to_batch) {
+ get_batch(next_batch);
+ } else {
+ callback(rowids);
+ }
+ });
+ }
+ get_batch(from_batch);
+ });
+
$('#message-table').mousedown(start_drag);
};
(at)(at) -331,80 +384,174 (at)(at)
'dependent=yes,location=no,menubar=no,toolbar=no,width=800,height=540');
});
-})(jQuery);
+var get_selected_rowids = function() {
+ return $('#message-table').existingTableSelect().get_selected_rowids();
+};
+var get_limited_selected_messageids = function() {
+ var messageids = get_selected_rowids();
+ if (messageids.length > MAXIMUM_POPUP_WINDOWS) {
+ /* XXX we could instead show a feedback message and bail out */
+ messageids = messageids.slice(0, MAXIMUM_POPUP_WINDOWS);
+ }
+ return messageids;
+};
-//
-// Preview pane
-//
+var get_one_selected_messageid = function() {
+ var messageids = get_selected_rowids();
+ if (messageids.length > 1) {
+ /* XXX we could instead show a feedback message and bail out */
+ return messageids[0];
+ } else if (messageids.length == 1) {
+ return messageids[0];
+ } else {
+ return null;
+ }
+};
-Def(function(){
+var update_selection = function(tableselect) {
+ var selected_rowids = tableselect.get_selected_rowids();
- YAHOO.gocept.webmailer.PreviewPane = Class({
- construct: function() {
- var self = this;
- //
- // Register the message-context menu items
- //
- reply = function() {
- document.Connection.post(self.message.url+'/(at)(at)reply',
- null, function(result) {
- var message =
YAHOO.lang.JSON.parse(result.responseText);
-
YAHOO.gocept.webmailer.onOpenComposer.fire(message['url']);
- });
- };
- self.reply_button = YAHOO.gocept.webmailer.util.bind_menu_item(
- 'message-reply', reply);
- self.reply_button.cfg.setProperty('disabled', true);
- self.reply_icon = YAHOO.gocept.webmailer.util.bind_menu_item(
- 'message-reply-icon', reply);
- self.reply_icon.cfg.setProperty('disabled', true);
-
- forward = function() {
- document.Connection.post(self.message.url+'/(at)(at)forward',
- null, function(result) {
- var message =
YAHOO.lang.JSON.parse(result.responseText);
-
YAHOO.gocept.webmailer.onOpenComposer.fire(message['url']);
- });
- };
- self.forward_button = YAHOO.gocept.webmailer.util.bind_menu_item(
- 'message-forward', forward);
- self.forward_button.cfg.setProperty('disabled', true);
- self.forward_icon = YAHOO.gocept.webmailer.util.bind_menu_item(
- 'message-forward-icon', forward);
- self.forward_icon.cfg.setProperty('disabled', true);
-
- self.edit_button = YAHOO.gocept.webmailer.util.bind_menu_item(
- 'message-edit', function() {
- YAHOO.gocept.webmailer.onOpenComposer.fire(self.message.url);
- });
- self.edit_button.cfg.setProperty('disabled', true);
+ // update the preview pane
+ if (selected_rowids.length == 1) {
+ // if there is only a single message selected, show it
+ $.each(selected_rowids, function(i, rowid) {
+ open_message(rowid)
+ });
+ // we do want to show buttons
+ update_message_buttons_and_menu(document.App.selected_folder);
- del = function() {
- document.Connection.post(self.message.url+'/(at)(at)delete',
- null, function(result) {
- document.App.preview_pane.reset();
- YAHOO.gocept.webmailer.onFolderContentsChanged.fire();
- });
- };
- self.delete_button = YAHOO.gocept.webmailer.util.bind_menu_item(
- 'message-delete', del);
- self.delete_button.cfg.setProperty('disabled', true);
- self.delete_icon = YAHOO.gocept.webmailer.util.bind_menu_item(
- 'message-delete-icon', del);
- self.delete_icon.cfg.setProperty('disabled', true);
-
- self.raw_button = YAHOO.gocept.webmailer.util.bind_menu_item(
- 'message-raw', function() {
- document.App.preview_pane.load_raw(self.message);
- });
- self.raw_button.cfg.setProperty('disabled', true);
- },
+ } else if (selected_rowids.length > 1) {
+ // if are multiple messages selected, empty preview area
+ document.App.preview_pane.reset();
+ // we do want to show buttons
+ update_message_buttons_and_menu(document.App.selected_folder);
+ } else {
+ // show nothing is nothing is selected
+ document.App.preview_pane.reset();
+ // also disable buttons
+ disable_message_buttons_and_menu();
+ }
+
+};
- load: function(message) {
- var self = document.App.preview_pane;
- self.message = message;
+var reply = function() {
+ var callback = function(result) {
+ var message = YAHOO.lang.JSON.parse(result.responseText);
+ YAHOO.gocept.webmailer.onOpenComposer.fire(message['url']);
+ };
+
+ $.each(get_limited_selected_messageids(), function(i, messageid) {
+ document.Connection.post(messageid + '/(at)(at)reply', null,
callback);
+ });
+};
+
+var forward = function() {
+ var callback = function(result) {
+ var message = YAHOO.lang.JSON.parse(result.responseText);
+ YAHOO.gocept.webmailer.onOpenComposer.fire(message['url']);
+ };
+
+ $.each(get_limited_selected_messageids(), function(i, messageid) {
+ document.Connection.post(messageid + '/(at)(at)forward', null,
callback);
+ });
+};
+var edit = function() {
+ $.each(get_limited_selected_messageids(), function(i, messageid) {
+ YAHOO.gocept.webmailer.onOpenComposer.fire(messageid);
+ });
+};
+
+var raw = function() {
+ var messageid = get_one_selected_messageid();
+ if (messageid === null) {
+ return;
+ }
+
+ document.App.preview_pane.load_raw(messageid);
+};
+
+var normal = function() {
+ var messageid = get_one_selected_messageid();
+ if (messageid === null) {
+ return;
+ }
+
+ document.App.preview_pane.load(messageid);
+};
+
+var del = function() {
+ var callback = function(result) {
+ document.App.preview_pane.reset();
+ YAHOO.gocept.webmailer.onFolderContentsChanged.fire();
+ };
+
+ var folder_url = document.App.selected_folder.url;
+
+ var messageids = get_selected_rowids();
+ if (messageids.length == 0) {
+ return;
+ }
+ document.Connection.post(folder_url + '/(at)(at)delete_messages',
+ {'message_urls': messageids},
+ callback);
+};
+
+var possible_operations = {
+ reply: { fn: reply, icon: true },
+ forward: { fn: forward, icon: true },
+ edit: { fn: edit, icon: false },
+ 'delete': { fn: del, icon: true },
+ raw: { fn: raw, icon: false }
+};
+
+YAHOO.gocept.webmailer.setup_message_buttons_and_menu = function() {
+ var bind_menu_item = YAHOO.gocept.webmailer.util.bind_menu_item;
+
+ $.each(possible_operations, function(name, info) {
+ var button = bind_menu_item('message-' + name, info.fn);
+ button.cfg.setProperty('disabled', true);
+ if (info.icon) {
+ var icon = bind_menu_item('message-' + name + '-icon', info.fn);
+ icon.cfg.setProperty('disabled', true);
+ }
+ });
+};
+
+var update_message_buttons_and_menu = function(folder) {
+ var enable = YAHOO.gocept.webmailer.util.enable_menu_item;
+ var disable = YAHOO.gocept.webmailer.util.disable_menu_item;
+
+ $.each(possible_operations, function(name, info) {
+ if (name in folder.allowed_operations) {
+ enable('message-' + name);
+ if (info.icon) {
+ enable('message-' + name + '-icon');
+ }
+ } else {
+ disable('message-' + name);
+ if (info.icon) {
+ disable('message-' + name + '-icon');
+ }
+ }
+ });
+};
+
+var disable_message_buttons_and_menu = function() {
+ var disable = YAHOO.gocept.webmailer.util.disable_menu_item;
+
+ $.each(possible_operations, function(name, info) {
+ disable('message-' + name);
+ if (info.icon) {
+ disable('message-' + name + '-icon');
+ }
+ });
+};
+
+
+YAHOO.gocept.webmailer.PreviewPane = Class({
+ load: function(messageid) {
// Load the message content and display it. We need to accept
// errors pages.
var display = function(result) {
(at)(at) -413,69 +560,34 (at)(at)
message_parts['header'] +
message_parts['body'] +
message_parts['footer']);
- self.raw_button.cfg.setProperty('text', 'View raw');
- self.raw_button.cfg.setProperty(
- 'onclick', {fn: function() {
document.App.preview_pane.load_raw(message); }}
- );
+ var button = YAHOO.gocept.webmailer.util.bind_menu_item(
+ 'message-raw', raw);
+ button.cfg.setProperty('text', 'View raw');
};
- document.Connection.get(message.url+'/(at)(at)render', display,
display);
+ document.Connection.get(messageid + '/(at)(at)render', display,
display);
- // Activate menu entries depending on the message's capabilities
- if (message.canReply) {
- self.reply_button.cfg.setProperty('disabled', false);
- self.reply_icon.cfg.setProperty('disabled', false);
- };
- if (message.canForward) {
- self.forward_button.cfg.setProperty('disabled', false);
- self.forward_icon.cfg.setProperty('disabled', false);
- };
- if (message.canEdit) {
- self.edit_button.cfg.setProperty('disabled', false);
- };
- if (message.canDelete) {
- self.delete_button.cfg.setProperty('disabled', false);
- self.delete_icon.cfg.setProperty('disabled', false);
- };
- if (message.canBeRaw) {
- self.raw_button.cfg.setProperty('disabled', false);
- };
},
- load_raw: function(message) {
- var self = document.App.preview_pane;
+ load_raw: function(messageid) {
+ var self = this;
self.loading();
- document.Connection.get(message.url+'/(at)(at)raw',
function(result) {
+ document.Connection.get(messageid + '/(at)(at)raw',
function(result) {
var result = YAHOO.lang.JSON.parse(result.responseText);
$('#preview-pane').html(result['raw']);
- self.raw_button.cfg.setProperty('text', 'View normal');
- self.raw_button.cfg.setProperty('disabled', false);
- document.App.preview_pane.raw_button.cfg.setProperty(
- 'onclick', {fn: function() {
document.App.preview_pane.load(message); }}
- );
+ var button = YAHOO.gocept.webmailer.util.bind_menu_item(
+ 'message-raw', normal);
+ button.cfg.setProperty('text', 'View normal');
});
},
loading: function() {
- var self = this;
$('#preview-pane').html('<img
src="++resource++gocept.webmail/images/mail-loading.gif" style="position:
relative; left: 48%; top: 40%;" />');
},
reset: function() {
- var self = this;
- self.message = null;
$('#preview-pane').html('');
$('#preview-pane').addClass('message-view');
-
- // Deactivate message-context menu items.
- self.reply_button.cfg.setProperty('disabled', true);
- self.reply_icon.cfg.setProperty('disabled', true);
- self.forward_button.cfg.setProperty('disabled', true);
- self.forward_icon.cfg.setProperty('disabled', true);
- self.edit_button.cfg.setProperty('disabled', true);
- self.delete_button.cfg.setProperty('disabled', true);
- self.delete_icon.cfg.setProperty('disabled', true);
- self.raw_button.cfg.setProperty('disabled', true);
}
- });
-
});
+
+})(jQuery);
Modified:
webmailer/gocept.webmail/trunk/gocept/webmail/browser/resources/runner.js
==============================================================================
---
webmailer/gocept.webmail/trunk/gocept/webmail/browser/resources/runner.js (original)
+++
webmailer/gocept.webmail/trunk/gocept/webmail/browser/resources/runner.js Tue
Feb 23 08:10:07 2010
(at)(at) -77,7 +77,9 (at)(at)
add_webmail_js('connection');
add_webmail_js('preferences');
+ add_webmail_js('select', ['jquery']);
add_webmail_js('message', ['jqgrid',
+ 'webmail-select',
'webmail-preferences',
'webmail-webmailer']);
Modified:
webmailer/gocept.webmail/trunk/gocept/webmail/browser/resources/utilities.js
==============================================================================
---
webmailer/gocept.webmail/trunk/gocept/webmail/browser/resources/utilities.js (original)
+++
webmailer/gocept.webmail/trunk/gocept/webmail/browser/resources/utilities.js Tue
Feb 23 08:10:07 2010
(at)(at) -91,21 +91,28 (at)(at)
};
- YAHOO.gocept.webmailer.util.bind_menu_item = function(id, callback) {
- item_id = "menuitem-" + id;
- YAHOO.util.Event.addListener(
- document.getElementById(item_id), "click", callback);
+ YAHOO.gocept.webmailer.util.get_menu_item = function(id) {
+ var item_id = 'menuitem-' + id;
return YAHOO.widget.MenuManager.getMenuItem(item_id);
};
+ YAHOO.gocept.webmailer.util.bind_menu_item = function(id, callback) {
+ var item = YAHOO.gocept.webmailer.util.get_menu_item(id);
+ item.cfg.setProperty('onclick', {fn: callback});
+ return item;
+ };
+
+
YAHOO.gocept.webmailer.util.enable_menu_item = function(id) {
- document.getElementById("menuitem-" + id).disabled = false;
+ var item = YAHOO.gocept.webmailer.util.get_menu_item(id);
+ item.cfg.setProperty('disabled', false);
};
YAHOO.gocept.webmailer.util.disable_menu_item = function(id) {
- document.getElementById("menuitem-" + id).disabled = true;
+ var item = YAHOO.gocept.webmailer.util.get_menu_item(id);
+ item.cfg.setProperty('disabled', true);
};
YAHOO.gocept.webmailer.util.get_dd_proxy = function(id) {
Modified:
webmailer/gocept.webmail/trunk/gocept/webmail/browser/resources/webmailer-main.js
==============================================================================
---
webmailer/gocept.webmail/trunk/gocept/webmail/browser/resources/webmailer-main.js (original)
+++
webmailer/gocept.webmail/trunk/gocept/webmail/browser/resources/webmailer-main.js Tue
Feb 23 08:10:07 2010
(at)(at) -198,6 +198,7 (at)(at)
menubar.render();
self.preview_pane = new YAHOO.gocept.webmailer.PreviewPane();
+ YAHOO.gocept.webmailer.setup_message_buttons_and_menu();
self.reload_tree();
// Menu items
|