diff --git a/lib/moodlelib.php b/lib/moodlelib.php index 057d3e5f301..805b64e36e2 100644 --- a/lib/moodlelib.php +++ b/lib/moodlelib.php @@ -6040,6 +6040,27 @@ function check_php_version($version='4.1.0') { return (version_compare(phpversion(), $version) >= 0); } +/** + * Checks to see if is the browser operating system matches the specified + * brand. + * + * Known brand: 'Windows','Linux','Macintosh','SGI','SunOS','HP-UX' + * + * @uses $_SERVER + * @param string $brand The operating system identifier being tested + * @return bool true if the given brand below to the detected operating system + */ + function check_browser_operating_system($brand) { + if (empty($_SERVER['HTTP_USER_AGENT'])) { + return false; + } + + if (preg_match("/$brand/i", $_SERVER['HTTP_USER_AGENT'])) { + return true; + } + + return false; + } /** * Checks to see if is a browser matches the specified diff --git a/lib/weblib.php b/lib/weblib.php index 425f59b980c..ad1b768aa93 100644 --- a/lib/weblib.php +++ b/lib/weblib.php @@ -1178,7 +1178,9 @@ $targetwindow='self', $selectlabel='', $optionsextra=NULL) { //IE and Opera fire the onchange when ever you move into a dropdwown list with the keyboard. //onfocus will call a function inside dropdown.js. It fixes this IE/Opera behavior. - if (check_browser_version('MSIE') || check_browser_version('Opera')) { + //Note: There is a bug on Opera+Linux with the javascript code (first mouse selection is inactive), + //so we do not fix the Opera behavior on Linux + if (check_browser_version('MSIE') || (check_browser_version('Opera') && !check_browser_operating_system("Linux"))) { $output .= '
'.$selectlabel.$button.'