자동 다크 모드

모든 사용자의 계정 설정을 무시하고 "자동 다크 모드 색상 스킴"을 활성화하려면 어떻게 해야 하나요?

사용자가 색상을 선택할 수 없도록 설정해서 강제하는 것 같네요.
설정으로 가세요 → 사용자 지정 → 색상 → 사용자가 색 스킴을 선택할 수 있음 ((이것을 비활성화하세요))

그런 다음 스타일로 돌아가서 사용자에게 강제로 표시될 색 스킴을 지정하세요.

도와주려고 해주셔서 감사합니다 :slight_smile:

이미 비활성화되어 있습니다.

여기서 언급한 대로 이 기능을 요청하는 것입니다: Automatic Dark Mode color scheme switching

모든 사용자에게 이 설정을 강제 활성화하고 싶은데, 방법을 찾지 못하겠습니다.

관리자 설정에서 default dark mode color scheme id를 찾으시는 건가요?


Discourse 설정 봇이 말합니다:

다크 컬러 스킴으로 설정되어 있습니다.

몇몇 사용자가 이 설정이 자신들에게 활성화되어 있지 않다고 보고했으며, 다크 모드에서 로고를 제대로 볼 수 없는 문제가 발생한다고 합니다. 설정을 활성화하면 문제가 해결됩니다.

왜 이 설정이 모든 사용자에게 활성화되어 있지 않은지 궁금했습니다. 그래서 모든 사용자에게 강제로 활성화하는 방법을 찾고 있었습니다.

인터페이스에서는 그렇게 할 수 없습니다.
다만, rails 명령을 사용하여 사용자 옵션을 일괄 업데이트할 수는 있지만, 주의가 필요합니다.
예를 들어 데이터 탐색기(data explorer)를 사용하여 이 설정이 비활성화된 사용자가 몇 명인지 먼저 확인해 보시는 것을 권장합니다. 수가 많지 않다면 수동으로 설정하거나 사용자에게 직접 설정하도록 요청할 수 있습니다.

또한 계정 생성 시 기본값이 무엇인지도 확인해야 한다고 생각합니다.

감사합니다. rails 명령어를 알려 주실 수 있을까요?

data explorer를 설치해 두었는데, 이를 활성화한 사용자가 몇 명인지 확인할 수 있는 스크립트를 알려 주실 수 있을까요?

도와주셔서 정말 감사합니다. :heart:

기본적으로 다크 모드 사용자 설정은 "일반과 동일"입니다.

데이터베이스에서는 user_options.dark_scheme 값이 NULL인 것으로 정의됩니다.
"Dark"는 -1입니다. 기타 값은 양의 정수입니다.

기본값이 아닌 사용자를 반환하는 쿼리는 다음과 같습니다:

SELECT 
    u.username,
    up.dark_scheme_id
FROM 
    users AS u
JOIN 
    user_options AS up
ON 
    u.id = up.user_id
WHERE up.dark_scheme_id IS NOT NULL

결과가 59개 있습니다.

rails 명령어로 일괄적으로 설정을 변경하는 방법은 무엇인가요?

요즘 좀 혼란스럽네요. 왜 사용자의 색상 선택을 무시하려는 건가요? 선택지를 제공하기 싫다면 기본 라이트와 다크를 제외한 다른 모든 색상 테마를 제거하면 됩니다. 그게 전부입니다.

이 rails 스크립트를 사용하여 해당 설정을 변경한 사용자의 설정을 초기화할 수 있습니다:

UserOption.where.not(dark_scheme_id: nil).find_each do |uo|
    uo.update(dark_scheme_id: nil)
end

테스트 인스턴스에서 성공적으로 사용했습니다. 하지만 저는 rails 전문가가 아니므로, 물론 항상 먼저 백업을 해두시기 바랍니다. :slight_smile:

선택지가 없습니다. 사이트 설정에서 자동 다크 모드를 위한 어두운 색상 테마를 선택한 후에도 이 설정은 기본적으로 비활성화되어 있습니다.

모든 사용자에게 이 설정이 활성화되기를 원합니다. 하지만 이유를 알 수 없는 59명의 사용자는 기본적으로 이 설정이 비활성화되어 있습니다.

명확히 말씀드리면, 스크린샷에 보이는 설정은 관리자 패널(서버 전체)에서 설정한 것이며, 개인 설정이 아닙니다.

개인 설정은 다음과 같습니다:

image

아니요, 이것은 사용자 설정에서 비롯된 것입니다. 사이트 설정에서 자동 다크 모드를 활성화하면 사용자에게 표시됩니다.

그러니까 명확하게 하려면 이렇게 해야 한다는 거죠:

cd /var/discourse

./launcher enter app

그 다음

UserOption.where.not(dark_scheme_id: nil).find_each do |uo|
    uo.update(dark_scheme_id: nil)
end

맞나요?

아니, 잠깐요. 요청을 완전히 이해하지 못했고, 이 다크 모드 설정에 대한 정보가 부족할 수도 있습니다 :thinking:

제가 찾은 사이트 관리자는 다음과 같습니다:

말씀하신 설정은 어디에 있나요:

?

아래 내용을 확인해 주세요:

이 모든 것이 바로 이 기능에 관한 것입니다.

알겠습니다. 이 옵션이 보이도록 색상을 비활성화해야 했습니다. 이 주제에 대해 다시 한번 살펴보고 더 잘 이해하도록 하겠습니다.

네! "기본 다크 모드 색상 스킴 ID"입니다.

자, 체크 해제하면 user_options.dark_scheme가 -1으로 설정되고, 체크하면 NULL로 설정됩니다.

모든 사용자에게 이 설정을 체크 상태로 두고 싶다면 제 스크립트를 사용할 수 있습니다.

새 사용자가 생성될 때의 기본 설정도 체크 상태입니다.

그 후 rails c를 실행하여 rails 콘솔에 진입하세요.

스크립트가 로그를 출력하는 경우, q를 눌러 종료할 수 있습니다.