Auto-detect color scheme first, then override with user preference

This commit is contained in:
Kijin Sung 2020-12-13 19:55:37 +09:00
parent 6200e8d4ae
commit 0237d5c759
2 changed files with 21 additions and 10 deletions

View file

@ -2368,7 +2368,7 @@ class Context
public static function getBodyClass()
{
$class_list = self::$_instance->body_class;
if (($color_scheme = Rhymix\Framework\UA::getColorScheme()) !== 'none')
if (($color_scheme = Rhymix\Framework\UA::getColorScheme()) !== 'auto')
{
$class_list[] = 'color_scheme_' . $color_scheme;
}

View file

@ -350,16 +350,11 @@ jQuery(function($) {
});
/* Detect color scheme */
var body_element = $('body');
var color_scheme_cookie = XE.cookie.get('rx_color_scheme');
var color_scheme_check = (window.matchMedia && window.matchMedia('(prefers-color-scheme:dark)').matches) ? 'dark' : 'light';
console.log(color_scheme_check);
if (color_scheme_cookie && color_scheme_cookie !== color_scheme_check) {
XE.cookie.set('rx_color_scheme', color_scheme_check, { path: window.XE.URI(default_url).pathname(), expires: 365 });
$('body').addClass('color_scheme_' + color_scheme_check).removeClass('color_scheme_' + (color_scheme_check === 'dark' ? 'light' : 'dark'));
} else if (color_scheme_check === 'dark') {
XE.cookie.set('rx_color_scheme', color_scheme_check, { path: window.XE.URI(default_url).pathname(), expires: 365 });
$('body').addClass('color_scheme_' + color_scheme_check).removeClass('color_scheme_' + (color_scheme_check === 'dark' ? 'light' : 'dark'));
$('#rhymix_color_scheme').hide();
var color_scheme_detected = (window.matchMedia && window.matchMedia('(prefers-color-scheme:dark)').matches) ? 'dark' : 'light';
if (!color_scheme_cookie || (!body_element.hasClass('color_scheme_light') && !body_element.hasClass('color_scheme_dark'))) {
body_element.addClass('color_scheme_' + color_scheme_detected).removeClass('color_scheme_' + (color_scheme_detected === 'dark' ? 'light' : 'dark'));
}
/* Editor preview replacement */
@ -779,6 +774,22 @@ function setLangType(lang_type) {
XE.cookie.set('lang_type', lang_type, { path: baseurl, expires: 365 });
}
/* 색상 테마 변경 */
function getColorScheme() {
if ($('body').hasClass('color_scheme_light')) {
return 'light';
} else {
return 'dark';
}
}
function setColorScheme(color_scheme) {
if (color_scheme !== 'dark') {
color_scheme = 'light';
}
$('body').addClass('color_scheme_' + color_scheme).removeClass('color_scheme_' + (color_scheme === 'dark' ? 'light' : 'dark'));
XE.cookie.set('rx_color_scheme', color_scheme, { path: window.XE.URI(default_url).pathname(), expires: 365 });
}
/* 미리보기 */
function doDocumentPreview(obj) {
var fo_obj = obj;