diff options
| author | thomasb <thomasb@208e9e7b-5314-0410-a742-e7e81cd9613c> | 2009-07-24 09:44:03 +0000 |
|---|---|---|
| committer | thomasb <thomasb@208e9e7b-5314-0410-a742-e7e81cd9613c> | 2009-07-24 09:44:03 +0000 |
| commit | 888df19d4d01b0fd34b174cd6a3d248e9ee41928 (patch) | |
| tree | 2139c5327e4bb36b39dc13d79fbf1664d583c190 /roundcubemail/program/js | |
| parent | 4ca89787bb4717b19519324a21f7a6896c5673df (diff) | |
Register button event handlers in javascript and save some html code
git-svn-id: https://svn.roundcube.net/trunk@2794 208e9e7b-5314-0410-a742-e7e81cd9613c
Diffstat (limited to 'roundcubemail/program/js')
| -rw-r--r-- | roundcubemail/program/js/app.js | 43 |
1 files changed, 42 insertions, 1 deletions
diff --git a/roundcubemail/program/js/app.js b/roundcubemail/program/js/app.js index b192297f7..c8a8c5875 100644 --- a/roundcubemail/program/js/app.js +++ b/roundcubemail/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) |
