summaryrefslogtreecommitdiff
path: root/program/js/app.js
diff options
context:
space:
mode:
Diffstat (limited to 'program/js/app.js')
-rw-r--r--program/js/app.js70
1 files changed, 36 insertions, 34 deletions
diff --git a/program/js/app.js b/program/js/app.js
index bbb14e7ad..149736107 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -40,11 +40,6 @@ function rcube_webmail()
this.identifier_expr = new RegExp('[^0-9a-z\-_]', 'gi');
- // mimetypes supported by the browser (default settings)
- this.mimetypes = new Array('text/plain', 'text/html', 'text/xml',
- 'image/jpeg', 'image/gif', 'image/png',
- 'application/x-javascript', 'application/pdf', 'application/x-shockwave-flash');
-
// default environment vars
this.env.keep_alive = 60; // seconds
this.env.request_timeout = 180; // seconds
@@ -90,12 +85,15 @@ function rcube_webmail()
if (over) button_prop.over = over;
this.buttons[command].push(button_prop);
+
+ if (this.loaded)
+ init_button(command, button_prop);
};
// register a specific gui object
this.gui_object = function(name, id)
{
- this.gui_objects[name] = id;
+ this.gui_objects[name] = this.loaded ? rcube_find_object(id) : id;
};
// register a container object
@@ -748,7 +746,7 @@ function rcube_webmail()
var qstring = '_mbox='+urlencode(this.env.mailbox)+'&_uid='+this.env.uid+'&_part='+props.part;
// open attachment in frame if it's of a supported mimetype
- if (this.env.uid && props.mimetype && $.inArray(props.mimetype, this.mimetypes)>=0) {
+ if (this.env.uid && props.mimetype && this.env.mimetypes && $.inArray(props.mimetype, this.env.mimetypes)>=0) {
if (props.mimetype == 'text/html')
qstring += '&_safe=1';
this.attachment_win = window.open(this.env.comm_path+'&_action=get&'+qstring+'&_frame=1', 'rcubemailattachment');
@@ -3505,7 +3503,7 @@ function rcube_webmail()
case 27: // escape
this.ksearch_hide();
- break;
+ return;
case 37: // left
case 39: // right
@@ -4914,6 +4912,34 @@ function rcube_webmail()
/********* GUI functionality *********/
/*********************************************************/
+ var init_button = function(cmd, prop)
+ {
+ var elm = document.getElementById(prop.id);
+ if (!elm)
+ return;
+
+ var preload = false;
+ if (prop.type == 'image') {
+ elm = elm.parentNode;
+ preload = true;
+ }
+
+ 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;
+ }
+ };
+
// enable/disable buttons for page shifting
this.set_page_buttons = function()
{
@@ -4929,31 +4955,7 @@ function rcube_webmail()
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;
- }
-
- 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;
- }
+ init_button(cmd, this.buttons[cmd][i]);
}
}
};
@@ -5566,7 +5568,7 @@ function rcube_webmail()
var base = this.env.comm_path;
// overwrite task name
- if (query._action.match(/([a-z]+)\/([a-z-_]+)/)) {
+ if (query._action.match(/([a-z]+)\/([a-z-_.]+)/)) {
query._action = RegExp.$2;
base = base.replace(/\_task=[a-z]+/, '_task='+RegExp.$1);
}