summaryrefslogtreecommitdiff
path: root/program/js/common.js
diff options
context:
space:
mode:
authorHugues Hiegel <root@paranoid>2015-04-21 12:49:44 +0200
committerHugues Hiegel <root@paranoid>2015-04-21 12:49:44 +0200
commit733f8e8d0ce6217d906d06dc4fb08e36d48ed794 (patch)
treecff28366ff63ea6596f8026e1698090bd0b9405c /program/js/common.js
parentef2e7b3f9d264ec146d4dae257b1e295ab3b462a (diff)
parenta4ba3df54834ee90fb2c9930669f1229dc80261a (diff)
Merge remote-tracking branch 'origin/master'HEADmaster
Conflicts: composer.json-dist config/defaults.inc.php plugins plugins/acl/acl.js plugins/acl/acl.php plugins/acl/skins/classic/templates/table.html plugins/acl/skins/larry/templates/table.html plugins/enigma/README plugins/enigma/config.inc.php.dist plugins/enigma/enigma.js plugins/enigma/enigma.php plugins/enigma/lib/enigma_driver.php plugins/enigma/lib/enigma_driver_gnupg.php plugins/enigma/lib/enigma_driver_phpssl.php plugins/enigma/lib/enigma_engine.php plugins/enigma/lib/enigma_error.php plugins/enigma/lib/enigma_key.php plugins/enigma/lib/enigma_signature.php plugins/enigma/lib/enigma_subkey.php plugins/enigma/lib/enigma_ui.php plugins/enigma/lib/enigma_userid.php plugins/enigma/localization/en_US.inc plugins/enigma/localization/ja_JP.inc plugins/enigma/localization/ru_RU.inc plugins/enigma/skins/classic/enigma.css plugins/enigma/skins/classic/templates/keys.html plugins/help/config.inc.php.dist plugins/help/help.php plugins/help/localization/en_US.inc plugins/jqueryui/jqueryui.php plugins/managesieve/Changelog plugins/managesieve/composer.json plugins/managesieve/config.inc.php.dist plugins/managesieve/lib/Roundcube/rcube_sieve.php plugins/managesieve/lib/Roundcube/rcube_sieve_engine.php plugins/managesieve/lib/Roundcube/rcube_sieve_vacation.php plugins/managesieve/localization/en_US.inc plugins/managesieve/managesieve.js plugins/managesieve/skins/classic/managesieve.css plugins/managesieve/skins/larry/managesieve.css plugins/password/README plugins/password/config.inc.php.dist plugins/password/drivers/ldap.php plugins/password/drivers/poppassd.php plugins/password/drivers/vpopmaild.php plugins/vcard_attachments/vcardattach.js plugins/zipdownload/zipdownload.php
Diffstat (limited to 'program/js/common.js')
-rw-r--r--program/js/common.js43
1 files changed, 35 insertions, 8 deletions
diff --git a/program/js/common.js b/program/js/common.js
index 2b96a8a30..3babf1efb 100644
--- a/program/js/common.js
+++ b/program/js/common.js
@@ -39,8 +39,6 @@ function roundcube_browser()
{
var n = navigator;
- this.ver = parseFloat(n.appVersion);
- this.appver = n.appVersion;
this.agent = n.userAgent;
this.agent_lc = n.userAgent.toLowerCase();
this.name = n.appName;
@@ -64,19 +62,20 @@ function roundcube_browser()
this.ie = (document.all && !window.opera) || (this.win && this.agent_lc.indexOf('trident/') > 0);
if (this.ie) {
- this.ie7 = this.appver.indexOf('MSIE 7') > 0;
- this.ie8 = this.appver.indexOf('MSIE 8') > 0;
- this.ie9 = this.appver.indexOf('MSIE 9') > 0;
+ this.ie7 = n.appVersion.indexOf('MSIE 7') > 0;
+ this.ie8 = n.appVersion.indexOf('MSIE 8') > 0;
+ this.ie9 = n.appVersion.indexOf('MSIE 9') > 0;
}
else if (window.opera) {
- this.opera = true;
+ this.opera = true; // Opera < 15
this.vendver = opera.version();
}
else {
this.chrome = this.agent_lc.indexOf('chrome') > 0;
- this.safari = !this.chrome && (this.webkit || this.agent_lc.indexOf('safari') > 0);
+ this.opera = this.webkit && this.agent.indexOf(' OPR/') > 0; // Opera >= 15
+ this.safari = !this.chrome && !this.opera && (this.webkit || this.agent_lc.indexOf('safari') > 0);
this.konq = this.agent_lc.indexOf('konqueror') > 0;
- this.mz = this.dom && !this.chrome && !this.safari && !this.konq && this.agent.indexOf('Mozilla') >= 0;
+ this.mz = this.dom && !this.chrome && !this.safari && !this.konq && !this.opera && this.agent.indexOf('Mozilla') >= 0;
this.iphone = this.safari && (this.agent_lc.indexOf('iphone') > 0 || this.agent_lc.indexOf('ipod') > 0);
this.ipad = this.safari && this.agent_lc.indexOf('ipad') > 0;
}
@@ -655,6 +654,34 @@ jQuery.fn.placeholder = function(text) {
});
};
+// function to parse query string into an object
+rcube_parse_query = function(query)
+{
+ if (!query)
+ return {};
+
+ var params = {}, e, k, v,
+ re = /([^&=]+)=?([^&]*)/g,
+ decodeRE = /\+/g, // Regex for replacing addition symbol with a space
+ decode = function (str) { return decodeURIComponent(str.replace(decodeRE, ' ')); };
+
+ query = query.replace(/\?/, '');
+
+ while (e = re.exec(query)) {
+ k = decode(e[1]);
+ v = decode(e[2]);
+
+ if (k.substring(k.length - 2) === '[]') {
+ k = k.substring(0, k.length - 2);
+ (params[k] || (params[k] = [])).push(v);
+ }
+ else
+ params[k] = v;
+ }
+
+ return params;
+};
+
// This code was written by Tyler Akins and has been placed in the
// public domain. It would be nice if you left this header intact.