Aktionsschaltflächen für den aktuellen Benutzer ausblenden, wenn sie markiert sind oder der Markierer

Ich entschuldige mich, falls dies vielleicht nicht der richtige Ort für diese Frage ist. Aber es sieht so aus, als könnte es der sein.

Ich möchte, ich vermute, einen Boolean-Wert verwenden, um den aktuellen Benutzer mit zwei Dingen im Flagging-Review zu vergleichen: dem Flaggensteller und dem Ziel der Flagge.

Wenn der aktuelle Benutzer mit einem davon übereinstimmt, werden die Flagging-Review-Buttons (z. B. Zustimmen/Ablehnen/Aufschieben usw.) ausgeblendet. So können Flaggen nur von einer dritten Partei validiert oder verworfen werden.

Ich glaube nicht, dass du zwingend eine Theme-Einstellung dafür brauchst, es sei denn, du möchtest eine Einstellung in deiner Komponente hinzufügen, die Administratoren ermöglicht, das Erzwingen von Flaggen durch einen Drittanbieter ein- oder auszuschalten.

Im Allgemeinen ist ein Plugin erforderlich, wenn du Standardberechtigungen wie von dir beschrieben ändern möchtest, da Themes/Komponenten nur Frontend-Änderungen vornehmen können und von Benutzern umgangen werden können, wenn sie wissen, wo sie suchen müssen.

Ich suche nur nach einer Möglichkeit, Optionen auszublenden. Sicherlich könnte ein versierter Nutzer den Browser nutzen, um die Buttons wieder einzublenden.

Aber das würde für meine Zwecke ausreichen, um es dem aktuellen Benutzer einfach auszublenden, wenn er der Flaggensteller oder das Ziel der Flagge ist. Es ist eher eine Abschreckung gegen Versuchung (ein Pflaster) als eine endgültige Lösung.

Nach einem kurzen Blick auf den relevanten Code im Core-Bereich musst du die Eigenschaft canPerform (die bestimmt, ob die Buttons „Zustimmen/Abstimmen“ usw. angezeigt werden sollen) in reviewable-item um deine zusätzliche Logik erweitern:

Wenn du so etwas noch nie gemacht hast, ist Developing Discourse Themes & Theme Components ein großartiger Ort, um einzusteigen! Dort wird erklärt, wie man eine Core-Klasse modifiziert, was genau das ist, was du tun musst. Bestehende Themes/Komponenten sind eine hervorragende Ressource, von der du lernen kannst. Sieh dir beispielsweise die Komponente discourse-extra-group-classes an, die dieselbe Technik verwendet, die du ebenfalls benötigen wirst (insbesondere die Datei initialize-extra-group-classes.js.es6).

P.S. Ich werde diese Beiträge aus diesem Thema verschieben, da sie nicht direkt mit den Theme-Einstellungen zusammenhängen.

Vielen Dank, ich werde es prüfen und sehen, was ich lernen kann.