Calion
(Jim Syler)
6월 29, 2023, 6:51오후
1
“새 주제” 버튼을 누르면 새 주제 작성 양식이 바로 표시되지 않습니다. 대신 포럼의 스레드 중 하나를 선택한 후에야 양식이 나타납니다. 여전히 새 주제를 생성하는 것처럼 보이지만, 이는 백그라운드에서 이루어집니다. 기존 주제 중 아무거나 열면, 생성하려 했던 새 주제가 표시됩니다(완전히 정확합니다. 즉, 게시하고자 했던 포럼에 대해, 입력한 주제가 다른 포럼에 있는 경우에도 마찬가지입니다).
이 문제는 특정 사이트(https://discussions.scouting.org/ )에서만 발생하고 있으므로, 해당 사이트에서 설정이 잘못되었을 것으로 추정됩니다. 이 문제를 거기 에서 제기했지만, 아직까지 해결되지 않았습니다.
isaac
(Isaac Janzen)
6월 29, 2023, 10:01오후
4
안전 모드에서는 재현되지 않습니다. 이 문제는 사용자 지정 테마/CSS로 인해 발생합니다.
관리자들이 다음과 같은 CSS 커스터마이징을 추가했습니다:
body:not([class*="category-council-"]):not(.staff).closed-topic .reply,
body:not([class*="category-council-"]):not(.staff).closed-topic #topic-footer-buttons .create,
body:not([class*="category-council-"]):not(.staff).closed-topic .timeline-container .create,
body:not([class*="category-council-"]):not(.staff).closed-topic #reply-control {
display: none !important;
}
처음에는 괜찮아 보이지만, body.closed-topic가 토픽 목록에도 적용되는 것을 볼 수 있습니다… 이는 전혀 합리적으로 보이지 않습니다.
이 클래스는 기본적으로 Discourse에 없으므로, 이 클래스를 추가하는 다른 커스터마이징을 찾아보았습니다…
<script type="text/discourse-plugin" version="0.8">
const container = Discourse.__container__;
const controller = container.lookup("controller:topic");
const currentUser = api.getCurrentUser();
api.onPageChange(() => {
if (!currentUser || currentUser.admin || currentUser.moderator || currentUser.trust_level != 4 ) {
return;
} else {
let model = controller.get("model");
document.querySelector("body").classList.add("closed-topic");
if (model) {
if (!model.closed) {
document.querySelector("body").classList.remove("closed-topic");
}
}
}
});
</script>
즉, 로그인되어 있고, 관리자가 아니며, 모더레이터가 아니며, 신뢰 수준(trust level)이 4인 경우… 페이지 body에 closed-topic 클래스가 추가됩니다.
이 클래스는 model.closed가 false일 때만 제거되므로… 이는 토픽이 닫혀 있지 않은 경우(또는 아예 토픽이 아닌 경우)에도 closed-topic 클래스가 적용됨을 의미합니다.
이 코드 줄:
document.querySelector("body").classList.add("closed-topic");
은 if (model) 블록 내에 있어야 할 것 같습니다. 그렇지 않으면 모델이 존재하지 않을 때(예: 토픽 내부에 있지 않을 때)에도 클래스가 적용됩니다…
원래 의도는 신뢰 수준 4 사용자의 닫힌 토픽에 대한 답글 작성을 방지하는 것이었던 것으로 보이지만, 적용 범위가 지나치게 넓습니다.
Calion
(Jim Syler)
7월 4, 2023, 7:03오후
8
정말 감사합니다. 제가 찾고 있던 바로 그 내용입니다.
Calion
(Jim Syler)
7월 4, 2023, 7:12오후
9
heehe, 그 변경의 이유가 저 때문일지도 모르겠네요. 그 버그를 발견해 아주 적극적으로 악용했거든요. 기존 토픽에 추가 정보를 제공할 때 굳이 새 스레드를 시작해야 하는 이유를 저는 도무지 이해하지 못했습니다.