summaryrefslogtreecommitdiff
path: root/program/js
diff options
context:
space:
mode:
authorthomascube <thomas@roundcube.net>2009-07-24 09:44:03 +0000
committerthomascube <thomas@roundcube.net>2009-07-24 09:44:03 +0000
commit29f977858ebabb8243e1ef5d2c869279ac1e170e (patch)
tree9ea2bc3db4dde5c5f37cb3903d0eda838fe7ffac /program/js
parent826ceecab857d72d7cf8b2a347537f4f9b4bdd15 (diff)
Register button event handlers in javascript and save some html code
Diffstat (limited to 'program/js')
-rw-r--r--program/js/app.js43
1 files changed, 42 insertions, 1 deletions
diff --git a/program/js/app.js b/program/js/app.js
index b192297f7..c8a8c5875 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -142,6 +142,9 @@ function rcube_webmail()
// find all registered gui objects
for (var n in this.gui_objects)
this.gui_objects[n] = rcube_find_object(this.gui_objects[n]);
+
+ // init registered buttons
+ this.init_buttons();
// tell parent window that this frame is loaded
if (this.env.framed && parent.rcmail && parent.rcmail.set_busy)
@@ -3343,12 +3346,50 @@ function rcube_webmail()
// eable/disable buttons for page shifting
this.set_page_buttons = function()
- {
+ {
this.enable_command('nextpage', (this.env.pagecount > this.env.current_page));
this.enable_command('lastpage', (this.env.pagecount > this.env.current_page));
this.enable_command('previouspage', (this.env.current_page > 1));
this.enable_command('firstpage', (this.env.current_page > 1));
+ };
+
+ // set event handlers on registered buttons
+ this.init_buttons = function()
+ {
+ for (var cmd in this.buttons) {
+ if (typeof cmd != 'string')
+ continue;
+
+ for (var i=0; i< this.buttons[cmd].length; i++) {
+ var prop = this.buttons[cmd][i];
+ var elm = document.getElementById(prop.id);
+ if (!elm)
+ continue;
+
+ var preload = false;
+ if (prop.type == 'image') {
+ elm = elm.parentNode;
+ preload = true;
+ new Image().src = prop.sel;
+ }
+
+ elm._command = cmd;
+ elm._id = prop.id;
+ if (prop.sel) {
+ elm.onmousedown = function(e){ return rcmail.button_sel(this._command, this._id); };
+ elm.onmouseup = function(e){ return rcmail.button_out(this._command, this._id); };
+ if (preload)
+ new Image().src = prop.sel;
+ }
+ if (prop.over) {
+ elm.onmouseover = function(e){ return rcmail.button_over(this._command, this._id); };
+ elm.onmouseout = function(e){ return rcmail.button_out(this._command, this._id); };
+ if (preload)
+ new Image().src = prop.over;
+ }
+ }
}
+ };
// set button to a specific state
this.set_button = function(command, state)