From a266ae30fa03352830216c5f497f25253cff6361 Mon Sep 17 00:00:00 2001 From: Tim Hunt Date: Mon, 16 Apr 2018 16:32:30 +0700 Subject: [PATCH] MDL-50812 core_useragent: classes for Chrome and Edge --- lib/classes/useragent.php | 15 +++++++++++--- lib/tests/useragent_test.php | 25 ++++++++--------------- theme/boost/scss/moodle/core.scss | 2 +- theme/bootstrapbase/less/moodle/core.less | 2 +- theme/bootstrapbase/style/moodle.css | 2 +- theme/upgrade.txt | 13 ++++++++++++ 6 files changed, 37 insertions(+), 22 deletions(-) diff --git a/lib/classes/useragent.php b/lib/classes/useragent.php index 1e6cd3a55d5..2e547086bd7 100644 --- a/lib/classes/useragent.php +++ b/lib/classes/useragent.php @@ -910,7 +910,9 @@ class core_useragent { */ public static function get_browser_version_classes() { $classes = array(); - if (self::is_ie()) { + if (self::is_edge()) { + $classes[] = 'edge'; + } else if (self::is_ie()) { $classes[] = 'ie'; for ($i = 12; $i >= 6; $i--) { if (self::check_ie_version($i)) { @@ -923,12 +925,19 @@ class core_useragent { if (preg_match('/rv\:([1-2])\.([0-9])/', self::get_user_agent_string(), $matches)) { $classes[] = "gecko{$matches[1]}{$matches[2]}"; } + } else if (self::is_chrome()) { + $classes[] = 'chrome'; + if (self::is_webkit_android()) { + $classes[] = 'android'; + } } else if (self::is_webkit()) { - $classes[] = 'safari'; + if (self::is_safari()) { + $classes[] = 'safari'; + } if (self::is_safari_ios()) { $classes[] = 'ios'; } else if (self::is_webkit_android()) { - $classes[] = 'android'; + $classes[] = 'android'; // Old pre-Chrome android browsers. } } else if (self::is_opera()) { $classes[] = 'opera'; diff --git a/lib/tests/useragent_test.php b/lib/tests/useragent_test.php index 3fcf9924c2a..8c0ad127b4d 100644 --- a/lib/tests/useragent_test.php +++ b/lib/tests/useragent_test.php @@ -64,7 +64,7 @@ class core_useragent_testcase extends advanced_testcase { ), 'versionclasses' => array( - 'safari', + 'edge', ), ), ), @@ -97,8 +97,7 @@ class core_useragent_testcase extends advanced_testcase { ), 'versionclasses' => array( - 'safari', - 'android', + 'edge' ), 'devicetype' => 'mobile', @@ -898,8 +897,7 @@ class core_useragent_testcase extends advanced_testcase { 'is_webkit' => true, 'versionclasses' => array( - 'safari', - 'ios', + 'ios' ), 'devicetype' => 'mobile', @@ -922,7 +920,6 @@ class core_useragent_testcase extends advanced_testcase { 'is_webkit' => true, 'versionclasses' => array( - 'safari', 'ios', ), @@ -944,7 +941,6 @@ class core_useragent_testcase extends advanced_testcase { 'is_webkit' => true, 'versionclasses' => array( - 'safari', 'ios', ), @@ -953,7 +949,7 @@ class core_useragent_testcase extends advanced_testcase { ), // Android WebKit 525; G1 Phone. - array( + 'Android WebKit 525; G1 Phone' => array( 'Mozilla/5.0 (Linux; U; Android 1.1; en-gb; dream) AppleWebKit/525.10+ (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2 – G1 Phone', array( 'is_webkit_android' => true, @@ -965,7 +961,6 @@ class core_useragent_testcase extends advanced_testcase { 'versionclasses' => array( 'android', - 'safari', ), 'devicetype' => 'mobile', @@ -975,7 +970,7 @@ class core_useragent_testcase extends advanced_testcase { ), // Android WebKit 530; Nexus. - array( + 'Android WebKit 530; Nexus' => array( 'Mozilla/5.0 (Linux; U; Android 2.1; en-us; Nexus One Build/ERD62) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Mobile Safari/530.17 –Nexus', array( 'is_webkit_android' => true, @@ -988,7 +983,6 @@ class core_useragent_testcase extends advanced_testcase { 'versionclasses' => array( 'android', - 'safari', ), 'devicetype' => 'mobile', @@ -1017,7 +1011,7 @@ class core_useragent_testcase extends advanced_testcase { ), 'versionclasses' => array( - 'safari', + 'chrome', 'android', ), @@ -1045,7 +1039,7 @@ class core_useragent_testcase extends advanced_testcase { ), 'versionclasses' => array( - 'safari', + 'chrome', 'android', ), @@ -1066,7 +1060,7 @@ class core_useragent_testcase extends advanced_testcase { 'is_webkit' => true, 'versionclasses' => array( - 'safari', + 'chrome', ), ), ), @@ -1086,7 +1080,7 @@ class core_useragent_testcase extends advanced_testcase { 'is_webkit' => true, 'versionclasses' => array( - 'safari', + 'chrome', ), ), ), @@ -1231,7 +1225,6 @@ class core_useragent_testcase extends advanced_testcase { ), 'versionclasses' => array( - 'safari', 'ios', ), diff --git a/theme/boost/scss/moodle/core.scss b/theme/boost/scss/moodle/core.scss index bf24aac42eb..af0e685b157 100644 --- a/theme/boost/scss/moodle/core.scss +++ b/theme/boost/scss/moodle/core.scss @@ -1349,7 +1349,7 @@ body#page-lib-editor-tinymce-plugins-moodlemedia-preview { /* Fixed for safari browser on iPhone4S with ios7@mixin */ @media (max-height: 639px) { - .ios.safari .choosercontainer #chooseform .submitbuttons { + .ios .choosercontainer #chooseform .submitbuttons { padding: 45px 0; } } diff --git a/theme/bootstrapbase/less/moodle/core.less b/theme/bootstrapbase/less/moodle/core.less index 98d7c19bfab..ed6680bce35 100644 --- a/theme/bootstrapbase/less/moodle/core.less +++ b/theme/bootstrapbase/less/moodle/core.less @@ -1573,7 +1573,7 @@ body#page-lib-editor-tinymce-plugins-moodlemedia-preview { } /* Fixed for safari browser on iPhone4S with ios7.*/ @media (max-height: 639px) { - .ios.safari .choosercontainer #chooseform .submitbuttons { + .ios .choosercontainer #chooseform .submitbuttons { padding: 45px 0; } } diff --git a/theme/bootstrapbase/style/moodle.css b/theme/bootstrapbase/style/moodle.css index 6b31450aa76..5826b25fe46 100644 --- a/theme/bootstrapbase/style/moodle.css +++ b/theme/bootstrapbase/style/moodle.css @@ -3909,7 +3909,7 @@ body#page-lib-editor-tinymce-plugins-moodlemedia-preview { } /* Fixed for safari browser on iPhone4S with ios7.*/ @media (max-height: 639px) { - .ios.safari .choosercontainer #chooseform .submitbuttons { + .ios .choosercontainer #chooseform .submitbuttons { padding: 45px 0; } } diff --git a/theme/upgrade.txt b/theme/upgrade.txt index 64fdd873bd4..7d2692da249 100644 --- a/theme/upgrade.txt +++ b/theme/upgrade.txt @@ -1,6 +1,19 @@ This files describes API changes in /theme/* themes, information provided here is intended especially for theme designer. +=== 3.6 === + +* The body tag has various browser-specific classes for those cases where some + browser-sniffing is unavoidable. This used not to recognised Microsoft Edge, + but now it does (class 'edge'). Also, both Safari and Chrome used to be + class 'safari', but now there are separate classes 'safari' and 'chrome'. + The body's class should change to match the browser: + - Google Chrome (Mac & Window): The body class should change from safari to chrome. + - Google Chrome (Android) : The body class should change from safari, android to chrome, android. + - Microsoft Edge: The body class should change from safari to edge. + - Mobile safari: The class ios should exist, safari class should be removed. +* Remove class .safari styling from activity chooser dialog for theme boost and bootstrapbase. + === 3.4 === * There was a mustache template login.mustache in /lib/templates/ rendering the login form