설정으로 qa enable likes on answers가 활성화되어 있지만,
이(가) 표시되지 않습니다.
또한 공식 플러그인인 Discourse Reactions도 설치되어 있습니다. 이 플러그인이 버그의 원인이 될 수 있을까요?
설정으로 qa enable likes on answers가 활성화되어 있지만,
이(가) 표시되지 않습니다.
또한 공식 플러그인인 Discourse Reactions도 설치되어 있습니다. 이 플러그인이 버그의 원인이 될 수 있을까요?
테스트 사이트에서 이 기능을 확인하려고 이모지 반응을 켜고 끌어 봤는데, 연결되어 있는 것 같습니다. 이건 이 버그 수정 Thumbs up, twice의 결과일까요?
안녕하세요,
CSS를 통해 투표가 있는 게시물 주제에서는 기본적으로 반응 기능이 비활성화(숨김)되어 있습니다.
컴포넌트 Common/CSS에 작은 CSS를 추가하여 이를 다시 활성화할 수 있습니다. ![]()
.post-voting-topic,
.post-voting-topic-sort-by-activity {
.discourse-reactions-actions {
display: inline-flex;
}
}
매우 감사합니다!
기본적으로 제한을 두는 것은 이해할 수 있습니다(피드백을 위한 옵션이 너무 많으면 혼란스러울 수 있으니까요). 하지만 관리자가 "좋아요"를 활성화할 수 있는 설정이 있고, 해당 관리자가 이미 자신의 사이트에서 이모지 반응을 활성화해 두었다면, 설정을 활성화했을 때 투표 게시글에서도 이모지 반응을 활성화하는 것이 논리적일 것입니다.
그리고 어떤 경우든, 관리자들이 CSS 코드를 확인하고 수정하기보다는 버그라고 생각하는 경우가 더 많을 것이라고 생각합니다. ![]()
| reactions 설치 여부 | post voting 설치 여부 | 답변에 좋아요 활성화 | removePostMenuButton(‘like’) 호출? |
|---|---|---|---|
| 아니요 | 아니요 | 아니요 (해당 없음) | 아니요, |
| 예 | 아니요 | 해당 없음 | 예, 좋아요 버튼 제거, 리액션 표시 |
| 아니요 | 예 | 아니요 | 예, 답변의 좋아요 버튼 제거 |
| 아니요 | 예 | 예 | 아니요, 모든 게시물에 |
| 예 | 예 | 아니요 | 예, 좋아요 버튼 제거, 리액션은 첫 게시물에만 표시하고 답변에는 표시하지 않음 |
| 예 | 예 | 예 | 예, 좋아요 버튼 제거, 모든 게시물에 리액션 표시 |
여기서 진리표(truth table)와 유사한 것을 작성해 보았습니다. 사이트 설정, 특히 답변에 좋아요 활성화 설정에 따라 각 게시물에 리액션이 다르게 표시되도록 프로그래밍 방식으로 구현해야 하며, 단순히 css display:none을 사용하는 방식으로는 안 됩니다.
@tgxworld가 당시 이 문제를 어느 정도 짚어 주며, discourse-reactions에 API를 노출하는 것이 좋겠다고 제안했습니다(t/67550/10). 이를 고려해 볼 필요가 있을 것 같습니다.
// `like` 버튼 제거
api.removePostMenuButton("like");
// 그리고 다시 추가
api.decorateWidget("post-menu:before-extra-controls", (dec) => {
return dec.attach("discourse-reactions-actions", {
이렇게 하는 대신
코어 플러그인 API에 replacePostMenuButton 메서드를 추가하고 리액션 플러그인에서 이를 사용해야 합니다. 그렇게 하면 게시물 투표 플러그인에서 리액션 버튼에 대한 별도의 로직이 필요하지 않게 됩니다.
우회 방법이 있으므로, 다음 릴리스 이후에 이 변경 사항을 적용하겠습니다.
이 작업에는 3개의 PR이 필요했지만, @vinothkannans 님의 구현 아이디어는 정말 훌륭했어요. 완벽하게 작동합니다. 이 PR들이 모두 머지되면 다시 올릴게요 ![]()
PR이 병합되었으며, 이제 (Discourse 인스턴스가 업데이트되면) qa_enable_likes_on_answers 설정이 반영되어 답변에 대한 반응(좋아요)이 해당 설정을 따릅니다. 버그 보고해 주셔서 감사합니다, @icaria36 !
병합된 PR들이 discourse의 안정 버전 릴리스를 깨뜨립니다. JavaScript 오류로 인해 사이트가 로드되지 않습니다.
Uncaught (in promise) TypeError: e.replacePostMenuButton is not a function
u discourse-reactions.js:12
withPluginApi plugin-api.js:2247
initialize discourse-reactions.js:165
initialize app.js:173
runInstanceInitializers Ember
each dag-map.js:192
walk dag-map.js:121
each dag-map.js:66
topsort dag-map.js:72
Ember 4
invoke queue.ts:201
flush queue.ts:98
flush deferred-action-queues.ts:75
_end index.ts:616
_boundAutorunEnd index.ts:257
discourse-reactions.js:12
네, 예상했어야 했는데. replacePostMenuButton가 존재하지 않을 경우 폴백하도록 리액션 플러그인에 수정 사항을 배포하겠습니다.
수정: 후방 호환성을 추가하는 변경 사항을 병합했습니다.
이 주제는 4일 후 자동으로 닫혔습니다. 더 이상 새 답변이 허용되지 않습니다.