저는 초보이지만 문제를 해결하는 데 관심이 있어서 chat-gpt에게 질문했습니다:
여기가 그 답변입니다:
발견하신 스크립트는 좋은 시작입니다. 이 스크립트는 poll-ui-builder 컨트롤러를 수정하여 컨트롤러의 onShow() 함수가 호출될 때 publicPoll 프로퍼티를 true로 설정합니다. 이는 실제로 Theme Component로 추가될 예정인 것입니다.
그러나 실행 순서 때문에 코드가 작동하지 않을 수 있습니다. 원래의 onShow() 메서드가 publicPoll을 false로 설정한 후, 수정된 코드가 그 이후에 publicPoll을 true로 설정하기 때문입니다.
올바른 방법은 먼저 부모의 onShow 메서드를 호출한 다음 publicPoll을 true로 설정하는 것입니다:
<script type="text/discourse-plugin" version="0.8">
api.modifyClass("controller:poll-ui-builder", {
onShow() {
this._super(...arguments);
this.set('publicPoll', true);
}
});
</script>
이 스크립트를 테마에 추가하려면 다음 단계를 따르세요:
- Discourse 관리자 대시보드로 이동합니다.
- “Customize” 섹션에서 "Themes"를 클릭합니다.
- 수정하려는 테마를 선택합니다.
- 테마 편집 화면에서 "Edit CSS/HTML"을 클릭합니다.
- 왼쪽 사이드바에서 "</> Common"을 클릭합니다.
- 위의 스크립트를 “</> Common” 섹션에 붙여넣습니다.
- “Save” 버튼을 클릭합니다.
이렇게 하면 변경 사항이 테마에 적용됩니다. 테마 변경 사항은 해당 테마를 사용하는 사용자에게만 적용된다는 점을 기억하세요. 여러 테마를 사용하고 있다면 이 수정 사항을 각각의 테마에 추가해야 합니다.
또한 변경 사항이 올바르게 로드되도록 브라우저 캐시를 비우거나 하드 리로드를 수행하는 것을 잊지 마세요.
저는 포럼의 관리자분과 함께 이 단계를 따르려고 하지만, 시간이 좀 걸릴 것입니다. 만약 여기에서 다른 분들이 먼저 이걸 시도해 보고 피드백을 주신다면 매우 감사하겠습니다.
또 하나, 제가 바꾸고 싶은 것은 UI의 동작 방식입니다. 간단한 화면을 건너뛰고 싶어서 다시 chat-gpt에게 질문했습니다:
현재 코드에서 확장된 뷰는 showAdvanced 프로퍼티에 의해 제어됩니다. 이 값이 true로 설정되면 고급 뷰가 표시됩니다.
항상 고급 뷰를 표시하려면 poll-ui-builder 컨트롤러의 onShow() 메서드를 수정하여 showAdvanced를 true로 설정할 수 있습니다. 이전에 만든 테마 컴포넌트에 이 수정 사항을 추가할 수 있습니다. 여기 업데이트된 스크립트가 있습니다:
<script type="text/discourse-plugin" version="0.8">
api.modifyClass("controller:poll-ui-builder", {
onShow() {
this._super(...arguments);
this.set('publicPoll', true);
this.set('showAdvanced', true);
}
});
</script>
이전에 설명한 단계를 따라 이 스크립트를 테마에 추가하는 것을 잊지 마세요. 스크립트가 저장되면 투표 UI가 로드될 때 항상 고급 뷰가 표시되어야 합니다.
다시 한번, 변경 사항이 올바르게 로드되도록 브라우저 캐시를 비우거나 하드 리로드를 수행하는 것을 잊지 마세요.
어떻게든 제가 직접 시도하고 테스트하고 싶지만, 이전에 언급했듯이 저는 단지 모더레이터일 뿐 사이트의 관리자가 아니므로, 며칠 또는 몇 주가 걸릴 것입니다.