일부 요소를 숨기는 CSS

관리자/사용자 페이지에서 사용자 impersonate(대리) 및 익명화 버튼을 대상으로 지정하는 방법이 있을까요?

해당 버튼을 숨기고 싶은데, 현재 제가 식별할 수 있는 것은 다음과 같습니다:
.btn-danger, .admin-wizards-custom-fields .btn.destroy
하지만 이렇게 하면 삭제, 병합, 무음, 정지 버튼도 함께 숨겨집니다.

또한, 사용자 카드의 메시지 탭을 숨기는 것도 어려워요. "자기(self)"인 경우에만 해당 요소를 복원/표시할 수 있는 기능을 원합니다.

혹시 아이디어가 있으신가요?

그렇게 보이지 않습니다.

어떤 문제를 해결하려고 하시나요? 관리자가 사용자를 사칭하거나 익명화하지 않을 것이라고 신뢰하지 않는다는 말씀이신가요? 그리고 그들이 safe-mode를 사용하여 이러한 버튼 숨김을 우회하는 방법을 모를 것이라고 생각하시나요? 만약 그렇다면, CSS로 해결할 수 없는 문제입니다.

예전에 이런 작업을 한 적이 있는데, 그때 작성했던 구체적인 CSS 코드를 기억이 나지 않습니다.

이 포럼의 용도는 업무 그룹이지만, 일반적인 업무 그룹과는 다릅니다. 노동조합이며, 특히 선출된 대표들을 위한 것입니다. 일부 대표는 리더십 직책에 있고 일부는 그렇지 않습니다. 어쨌든 리더십 직책에 있는 사람들은 커뮤니티 포럼 관리자처럼 접근하는 방식이 아닌, 기능적인 관리자 권한이 필요합니다.

모더레이션은 전혀 필요 없으며, 누군가의 개인 메시지(PM)를 읽을 만한 정당한 이유는 전혀 없습니다(우리는 이메일을 주요 토론 수단에서 벗어나고자 하지만, 슬랙 같은 채팅 클라이언트는 포럼 형태의 게시판만큼 유용하지 않기 때문입니다). 또한 사용자를 사칭할 필요도 전혀 없습니다. 게다가 익명화도 전혀 필요 없습니다.

또한 관리자(그룹 내 리더십 직책) 중 누구도 IT 배경 지식이 없습니다. 예전에 이 문제를 해결했던 방식은, 커뮤니티 포럼에는 유용하지만 비즈니스 업무 그룹에는 그렇지 않은 요소를 숨기는 테마 컴포넌트를 만드는 것이었습니다. 그런 다음, 해당 테마 컴포넌트가 비활성화되었는지/언제 비활성화되었는지 보여주는 데이터 탐색기 쿼리를 만들었습니다. 이렇게 하면 만약 누군가가 비활성화시킨 경우, 프라이버시나 보호 카테고리에 침입한 사람을 누구나 추궁할 수 있습니다.

이것은 작은 업무 그룹이며, 유지보수를 위한 IT 부서에 접근할 수 없습니다. CSS로 숨기는 방식이고, 네, CLI를 통해 원하는 정보를 파싱할 수 있다는 것을 압니다. 하지만 그 단계에 도달한다면 우리는 훨씬 더 큰 문제에 직면하게 될 것입니다.

글쎄요, 템플릿이 변경되었을 수도 있습니다. 우리 둘 다 해당 버튼만 정확히 표적화하는 방법을 알지 못하기 때문입니다. (다만, 이런 변경 사항은 별로 그럴듯하지 않아 보입니다.)

제 판단으로는, 관리자가 모든 것을 할 수 없다고 가정하기보다는 일반 사용자가 필요한 관리자 기능을 어떻게 추가할지 알아보는 쪽이 나을 것 같습니다.

그 버튼들에 동적 ember가 이전에 없었기 때문에 그런 문제일 수도 있다고 생각합니다.

설정 측면에서 제가 하려는 것이 다소 이상해 보일 수 있지만, 해당 메커니즘을 완전히 이해하고 충분히 고려한 것입니다. 저는 우리 그룹이 사용할 수 있는 모든 측면에서 디스코스가 가장 적합하다고 믿기 때문에, 다른 커뮤니케이션 옵션 대신 디스코스를 활용하고 싶습니다. 다만, 전체적으로 기능을 비활성화할 방법이 없고(로그된 작업이 필요한 경우에만 활성화) 내장된 몇 가지 요소 때문에 도전 과제가 됩니다.

100% 이해하지 못하고 있다면 죄송합니다만, pull-right를 대상으로 지정하면 Impersonate, Anonymise User, Merge 버튼을 숨길 수 있습니다:

.pull-right {
    display: none;
}

맞아요, 하지만 그렇게 하면 사용자 삭제와 병합 버튼도 숨겨져 버립니다. 저는 그 버튼들은 유지하고 싶었거든요.
버튼 자체를 타겟팅하려고 시도하고 있습니다. 사용자 페이지의 메시지 탭에서는 다음과 같은 방식으로 모든 사용자(관리자 포함)에게 숨기고, 본인에게는 다시 표시하도록 했습니다.

.user-main .main-nav a[href$=“/messages”] {
display: none !important;
}
.viewing-self .user-main .main-nav a {
display: inline-block !important;
}

이것도 시도해 봤습니다. 예전에 이렇게 했다고 생각하지만 100% 확신은 없습니다. 꽤 오래됐거든요. 하지만 아쉽게도 작동하지 않습니다..

button[aria-label=“Impersonate”] {
display: none;
}

관리자/사용자 페이지에서 그 기능을 어떻게 재현할 수 있는지 도무지 모르겠습니다.. (전문가가 아닌 아마추어입니다)

여기 몇 가지 클래스를 추가할 텐데, 아주 쉬운 작업입니다.

.pull-right는 여러 곳에서 사용되는 유틸리티 클래스이므로, 이 변경은 부정적인 영향을 미칠 가능성이 높습니다! 일반적으로 CSS에서 특정 요소를 대상으로 하려면 셀렉터가 얼마나 구체적인지 고려해야 합니다. 다른 곳에서도 사용될 수 있는 일반적인 이름처럼 들린다면(예를 들어 .btn처럼) 너무 광범위할 가능성이 큽니다. .admin-user .pull-right와 같은 형태라면 충분히 구체적일 수 있습니다.


어쨌든, 해당 관리자 버튼에 몇 가지 클래스를 추가하는 pull request를 제출했습니다. 이 변경사항은 향후 며칠 안에 Discourse 업데이트를 통해 사용 가능할 것입니다.

이것이 병합되면 다음과 같은 조합을 자유롭게 사용할 수 있습니다.

.btn-user-delete,
.btn-user-merge,
.btn-anonymize,
.btn-impersonate {
  display: none;
}

감사합니다. :slightly_smiling_face: 다른 예제들보다 덜 구체적으로 들리는 이유를 궁금해하고 있었습니다.

크리스, 정말 고마워요! 당신은 여전히 정말 놀랍고, 믿을 수 없을 정도로 도움을 주시며, 진심으로 감사드립니다!