Umfragestandard überschreiben, damit "public=true"

Ich habe mich gefragt, wie viele Seiten damit zu kämpfen haben. Ich hätte es auch gerne standardmäßig öffentlich.

Ich denke auch, dass die Benutzeroberfläche besser sein könnte.

  • Sie können Umfragen mit nur einer Stimme aus Umfragen mit mehreren Stimmen erstellen, daher gibt es meiner Meinung nach keine Notwendigkeit für „nur eine Stimme“.
  • Ich würde immer die erweiterte Benutzeroberfläche anzeigen.
  • Ich hätte gerne die Option Öffentlich=Wahr als Standard oder, wenn einfacher zu implementieren, Anonym=Falsch.
  • Ich würde das Kontrollkästchen für Öffentlich nach oben verschieben oder die Benutzeroberfläche für öffentliche und anonyme Umfragen separat gestalten, es wird zu leicht übersehen.

Ich bin nicht mit der Änderung von Theme-Komponenten vertraut. Wenn es eine einfache Problemumgehung gibt, die jemand erstellt hat, wäre es großartig, diese mit Anweisungen zur Implementierung und zur Überprüfung bei der Aktualisierung von Discourse zu teilen.

2 „Gefällt mir“

Ich bin neu hier, aber daran interessiert, das Problem zu lösen, also habe ich ChatGPT gefragt:

Hier ist die Antwort:

Das von Ihnen gefundene Skript ist ein guter Anfang. Es modifiziert den poll-ui-builder-Controller, um die Eigenschaft publicPoll auf true zu setzen, wenn die onShow()-Funktion des Controllers aufgerufen wird. Dies soll tatsächlich als Theme Component hinzugefügt werden.

Der Code funktioniert jedoch möglicherweise aufgrund der Ausführungsreihenfolge nicht. Die ursprüngliche onShow()-Methode setzt publicPoll auf false und die Modifikation setzt publicPoll anschließend auf true.

Ein korrekter Weg wäre, zuerst die onShow-Methode der übergeordneten Klasse aufzurufen und dann publicPoll auf true zu setzen:

<script type="text/discourse-plugin" version="0.8">
api.modifyClass("controller:poll-ui-builder", {
  onShow() {
    this._super(...arguments);
    this.set('publicPoll', true);
  }
});
</script>

Sie können dieses Skript zu Ihrem Theme hinzufügen, indem Sie die folgenden Schritte ausführen:

  1. Gehen Sie zum Discourse Admin-Dashboard.
  2. Klicken Sie im Abschnitt “Anpassen” auf “Themes”.
  3. Wählen Sie das Theme aus, das Sie ändern möchten.
  4. Klicken Sie auf dem Bildschirm zur Theme-Bearbeitung auf “CSS/HTML bearbeiten”.
  5. Klicken Sie in der linken Seitenleiste auf “</> Common”.
  6. Fügen Sie das obige Skript in den Abschnitt “</> Common” ein.
  7. Klicken Sie auf die Schaltfläche “Speichern”.

Dies wendet die Änderung auf Ihr Theme an. Bitte denken Sie daran, dass Theme-Änderungen nur für Benutzer angewendet werden, die dieses spezielle Theme verwenden. Wenn Sie mehrere Themes haben, müssen Sie diese Modifikation zu jedem hinzufügen.

Denken Sie auch daran, Ihren Browser-Cache zu leeren oder einen Hard-Reload durchzuführen, um sicherzustellen, dass die Änderungen korrekt geladen werden.

Ich werde versuchen, diese Schritte mit dem Administrator unseres Forums zu befolgen, aber das dauert eine Weile. Wenn jemand anderes hier zuerst versuchen möchte, bitte und Feedback geben, ich wäre sehr glücklich.

Eine andere Sache, die ich gerne ändern würde, ist das Verhalten der Benutzeroberfläche. Ich möchte den einfachen Bildschirm überspringen, also habe ich ChatGPT erneut gefragt:

In Ihrem aktuellen Code wird die erweiterte Ansicht durch die Eigenschaft showAdvanced gesteuert. Wenn diese auf true gesetzt ist, wird die erweiterte Ansicht angezeigt.

Um immer die erweiterte Ansicht anzuzeigen, können Sie die Methode onShow() im Controller poll-ui-builder modifizieren, um showAdvanced auf true zu setzen. Sie können diese Modifikation zur zuvor erstellten Theme-Komponente hinzufügen. Hier ist das aktualisierte Skript:

<script type="text/discourse-plugin" version="0.8">
api.modifyClass("controller:poll-ui-builder", {
  onShow() {
    this._super(...arguments);
    this.set('publicPoll', true);
    this.set('showAdvanced', true);
  }
});
</script>

Denken Sie daran, die zuvor beschriebenen Schritte auszuführen, um dieses Skript zu Ihrem Theme hinzuzufügen. Sobald das Skript gespeichert ist, sollte die erweiterte Ansicht immer angezeigt werden, wenn die Umfrage-Benutzeroberfläche geladen wird.

Denken Sie auch daran, Ihren Browser-Cache zu leeren oder einen Hard-Reload durchzuführen, um sicherzustellen, dass die Änderungen korrekt geladen werden.

Ich würde gerne versuchen und selbst testen, aber wie bereits erwähnt, bin ich nur ein Moderator, nicht der Administrator unserer Website, daher wird dies einige Tage oder Wochen dauern.

2 „Gefällt mir“

Toll, dass du es herausgefunden hast. :+1:

Nur als Randnotiz: Wenn du mehrere Eigenschaften ändern möchtest, kannst du diese Syntax verwenden:

    this.setProperties({
        'publicPoll': true,
        'showAdvanced': true
    });
2 „Gefällt mir“

nicht wirklich ich, ich füttere nur Chat-GPT mit dem Code von diesem Link:

und dann gebe ich ihm den ersten Versuch von @JammyDodger und frage, ob er meine beiden Anforderungen lösen könnte :smiley:

Es wäre großartig, wenn es funktioniert und eine weitere coole Sache über Discourse, die ich gelernt habe.

2 „Gefällt mir“

Ich habe es getestet und es funktioniert! :partying_face:

Das ist fantastisch. :slight_smile: Vielen Dank. :pray:

1 „Gefällt mir“

Und hier ist es als Theme-Komponente:

4 „Gefällt mir“

funktioniert für unsere Instanz nicht mehr.
konnte nicht überprüfen, ob der Code-Schnipsel noch enthalten ist, da ich keine Berechtigungen dafür habe.

Funktioniert es in euren Foren noch, @JammyDodger und @nathank?

1 „Gefällt mir“

Ich glaube, es funktioniert jetzt auch auf meiner Testseite nicht mehr. Muss es vielleicht wegen einiger kürzlicher Änderungen aktualisiert werden?

Ich werde das in ein #dev-Thema aufteilen :+1:

2 „Gefällt mir“

Ich habe herausgefunden, dass das Modal, das dies aufgerufen hat, gemäß Folgendem refaktorisiert wurde:

Ich kann jedoch nicht herausfinden, wie ich über die API damit interagieren kann. Die neue Modal-Datei ist hier:

https://github.com/discourse/discourse/blob/main/plugins/poll/assets/javascripts/discourse/components/modal/poll-ui-builder.js

Ich kann nicht herausfinden, wie ich dies jetzt aufrufen kann, da die Dokumentation dies meines Erachtens nicht abdeckt. Kann jemand helfen?

1 „Gefällt mir“

Gute Nachrichten. :slight_smile: Ich glaube, wir haben da etwas für Sie…

6 „Gefällt mir“