게시물 투표에 좋아요가 활성화되어 있지만 표시되지 않습니다

설정으로 qa enable likes on answers가 활성화되어 있지만, :heart: 이(가) 표시되지 않습니다.

또한 공식 플러그인인 Discourse Reactions도 설치되어 있습니다. 이 플러그인이 버그의 원인이 될 수 있을까요?

5개의 좋아요

테스트 사이트에서 이 기능을 확인하려고 이모지 반응을 켜고 끌어 봤는데, 연결되어 있는 것 같습니다. 이건 이 버그 수정 Thumbs up, twice의 결과일까요?

3개의 좋아요

안녕하세요,

CSS를 통해 투표가 있는 게시물 주제에서는 기본적으로 반응 기능이 비활성화(숨김)되어 있습니다.

컴포넌트 Common/CSS에 작은 CSS를 추가하여 이를 다시 활성화할 수 있습니다. :arrow_down_small:

.post-voting-topic,
.post-voting-topic-sort-by-activity {
  .discourse-reactions-actions {
    display: inline-flex;
  }
}
6개의 좋아요

매우 감사합니다!

기본적으로 제한을 두는 것은 이해할 수 있습니다(피드백을 위한 옵션이 너무 많으면 혼란스러울 수 있으니까요). 하지만 관리자가 "좋아요"를 활성화할 수 있는 설정이 있고, 해당 관리자가 이미 자신의 사이트에서 이모지 반응을 활성화해 두었다면, 설정을 활성화했을 때 투표 게시글에서도 이모지 반응을 활성화하는 것이 논리적일 것입니다.

그리고 어떤 경우든, 관리자들이 CSS 코드를 확인하고 수정하기보다는 버그라고 생각하는 경우가 더 많을 것이라고 생각합니다. :slight_smile:

3개의 좋아요
reactions 설치 여부 post voting 설치 여부 답변에 좋아요 활성화 removePostMenuButton(‘like’) 호출?
아니요 아니요 아니요 (해당 없음) 아니요, :heart: 유지
예 아니요 해당 없음 예, 좋아요 버튼 제거, 리액션 표시
아니요 예 아니요 예, 답변의 좋아요 버튼 제거
아니요 예 예 아니요, 모든 게시물에 :heart: 유지
예 예 아니요 예, 좋아요 버튼 제거, 리액션은 첫 게시물에만 표시하고 답변에는 표시하지 않음
예 예 예 예, 좋아요 버튼 제거, 모든 게시물에 리액션 표시

여기서 진리표(truth table)와 유사한 것을 작성해 보았습니다. 사이트 설정, 특히 답변에 좋아요 활성화 설정에 따라 각 게시물에 리액션이 다르게 표시되도록 프로그래밍 방식으로 구현해야 하며, 단순히 css display:none을 사용하는 방식으로는 안 됩니다.

@tgxworld가 당시 이 문제를 어느 정도 짚어 주며, discourse-reactions에 API를 노출하는 것이 좋겠다고 제안했습니다(t/67550/10). 이를 고려해 볼 필요가 있을 것 같습니다.

7개의 좋아요
// `like` 버튼 제거
api.removePostMenuButton("like");
// 그리고 다시 추가
api.decorateWidget("post-menu:before-extra-controls", (dec) => {
  return dec.attach("discourse-reactions-actions", {

이렇게 하는 대신 :arrow_up_small: 코어 플러그인 API에 replacePostMenuButton 메서드를 추가하고 리액션 플러그인에서 이를 사용해야 합니다. 그렇게 하면 게시물 투표 플러그인에서 리액션 버튼에 대한 별도의 로직이 필요하지 않게 됩니다.

우회 방법이 있으므로, 다음 릴리스 이후에 이 변경 사항을 적용하겠습니다.

7개의 좋아요

이 작업에는 3개의 PR이 필요했지만, @vinothkannans 님의 구현 아이디어는 정말 훌륭했어요. 완벽하게 작동합니다. 이 PR들이 모두 머지되면 다시 올릴게요 :slight_smile:

9개의 좋아요

PR이 병합되었으며, 이제 (Discourse 인스턴스가 업데이트되면) qa_enable_likes_on_answers 설정이 반영되어 답변에 대한 반응(좋아요)이 해당 설정을 따릅니다. 버그 보고해 주셔서 감사합니다, @icaria36 !

4개의 좋아요

병합된 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
2개의 좋아요

네, 예상했어야 했는데. replacePostMenuButton가 존재하지 않을 경우 폴백하도록 리액션 플러그인에 수정 사항을 배포하겠습니다.

수정: 후방 호환성을 추가하는 변경 사항을 병합했습니다.

3개의 좋아요

이 주제는 4일 후 자동으로 닫혔습니다. 더 이상 새 답변이 허용되지 않습니다.