Discourse-Symbol

:discourse2: Zusammenfassung Discourse Icon ermöglicht die Verwendung von Symbolen aus Ihrem SVG-Symbol-Subset in einem Beitrag.
:eyeglasses: Vorschau Vorschau im Discourse Theme Creator
:hammer_and_wrench: Repository-Link https://github.com/discourse/discourse-icon
:open_book: Neu bei Discourse Themes? Anfängerleitfaden zur Verwendung von Discourse Themes

Dieses Theme-Component installieren

Funktionen

Verwendung:

[wrap=icon id=square][/wrap]

Beispiel:
Dies ist das -Symbol und das -Symbol.

Dies ist das [wrap=icon id=far-square][/wrap]-Symbol und das [wrap=icon id=pencil][/wrap]-Symbol.

Hinweis: Wenn das Symbol nicht angezeigt wird, liegt dies daran, dass es nicht in Ihrem Subset enthalten ist. Als Administrator können Sie es in Ihren Site-Einstellungen unter svg icon subset hinzufügen.


:discourse2: Von uns gehostet? Theme-Components stehen in unseren Standard-, Business- und Enterprise-Plänen zur Verfügung.

31 „Gefällt mir“

Toll! Das ist ikonisch!

(meta hat sehr viele Themes, aber glücklicherweise haben wir dank @kris.kotlarek einen Button, um alle Themes hinzuzufügen… wir müssen den Fortschritt dort noch ordnen, da es eine Weile dauert, bis er seine Magie entfaltet)

13 „Gefällt mir“

Ja, wollte es vorerst nicht überall hinzufügen, da ich es gerade erst fertig programmiert habe :grin:, werde es aber jetzt tun.

Edit: Oh, schon erledigt.

10 „Gefällt mir“

Danke, das macht richtig Spaß! :sunglasses:

Ich habe mich nie mit BB-Script-Tags beschäftigt und habe FontAwesome auch nie manuell codiert, daher kam mir die Praxis, ein leeres Tag-Paar zu verwenden, schon immer seltsam vor. Ist das eine gängige Konvention, oder gibt es einen webtechnischen Grund, Tag-Paare zu verwenden? Können sie auch Inhalte zwischen sich haben, und beeinflusst das den Text?

3 „Gefällt mir“

Hier gibt es mehrere Ursachen.

Zunächst: Als ich die Wrap-BBCode-Funktion entwickelt habe, hat @sam ausdrücklich darum gebeten, drei Formate zu unterstützen:

[wrap=foo][/wrap]
[wrap=foo]bar[/wrap]
[wrap=foo]
bar
[/wrap]

Dies dient der Konsistenz mit unserer bestehenden BBCode-Nutzung in Discourse.

Ich hätte auch eine bessere Syntax wie [icon=times] verwenden können, aber dann müsste es ein Plugin und kein Theme-Komponente sein.

Als Experiment finde ich die aktuelle Lösung in Ordnung. Falls die Funktion häufig genutzt wird, könnten wir überlegen, dies durch ein Plugin mit einer kompakteren Syntax umzusetzen.

Eine weitere Idee, die ich hatte, besteht darin, eine API hinzuzufügen, um im Editor Autocomplete-Symbole hinzuzufügen – ähnlich wie wir es bereits für Benutzer/Kategorien/Emojis haben. Ich befürchte jedoch, dass dies ein Albtraum werden könnte, wenn mehrere Komponenten jeweils eigene Symbole auswählen.

5 „Gefällt mir“

Ah! Ich muss die Unterstützung für ein weiteres BBCode hinzufügen. Ich dachte, ich würde dies als Ausgangspunkt nutzen, aber du sagst, dass das Einpacken (Wrap) im Kern behandelt wird, was erklärt, warum ich nicht finde, wie es von deiner Theme-Komponente gehandhabt wird.

Meine aktuelle Lösung besteht darin, die verlinkten Wörter-Komponente und eine hässliche Regex zu verwenden, aber ich habe immer noch Schwierigkeiten, die erforderlichen Klassen zu den Links hinzuzufügen.

3 „Gefällt mir“

Ja, lesen Sie dieses Thema, um mehr zu erfahren:

4 „Gefällt mir“

Gut, ich habe es ein Dutzend Mal betrachtet. Und den Code für deine Komponente ausgedruckt und stundenlang darauf gestarrt, um zu verstehen, inwiefern es JavaScript oder Ember ist, das ich nicht verstehe. Kann ich kein [foo]-Tag ohne ein Plugin hinzufügen? Oder kann ich irgendwie ‘wrap’ in deinem Code durch ‘foo’ ersetzen, um meinen neuen BBCode abzudecken?

1 „Gefällt mir“

Nein, das geht nicht, da ein Teil davon serverseitig erfolgt. Wenn du dein eigenes benutzerdefiniertes BBCode-Format möchtest, musst du ein Plugin schreiben und dir beispielsweise ansehen, wie wrap implementiert ist:

https://github.com/discourse/discourse/blob/master/app/assets/javascripts/pretty-text/engines/discourse-markdown/d-wrap.js.es6

5 „Gefällt mir“

Danke! Es fängt an, Sinn zu ergeben. Seit C++ und Objective Pascal im Jahr 1990 hatte ich so große Schwierigkeiten beim Erlernen einer neuen Sprache nicht mehr.

Mein aktueller Regex-Hack funktioniert fast. Ich muss entscheiden, ob ich den Plugin-Weg gehe oder bei meinem Hack bleibe (und herausfinde, wie ich die Klassen hinzufüge).

Zumindest verstehe ich jetzt, warum ich das Wrap in der Theme-Komponente nicht finden konnte!

3 „Gefällt mir“

Ich kann mir ein paar mögliche Syntax-Layouts vorstellen, die ich zum Wrap-Plugin hinzufügen könnte:

[wrap=foo /]
[wrap/=foo]

(die XMLs selbstschließende Tags nachahmen), aber beide sind ziemlich hässlich :confused:

Hat jemand großartige Ideen für etwas, das gut aussieht?

3 „Gefällt mir“

Ich bin nicht wirklich ein Fan davon :confused:

6 „Gefällt mir“

Ich habe einen großen Fehler gefunden…

Wenn Sie eine Icon-Umhüllung verwenden und dann ein Zitat hervorheben, wird das resultierende Bild stark vergrößert:

  • Verwenden Sie eine Icon-Umhüllung in einem Satz in einem Beitrag. z. B. Dies ist ein Icon [wrap=icon id=far-check-square][/wrap]
  • Heben Sie den relevanten Text hervor und wählen Sie „Zitat“.
  • Das Icon wird im zitierten Auszug riesig.

So sieht die Syntax aus, wenn sie als Zitat hervorgehoben wird:

[quote="JammyDodger, post:1, topic:294, full:true"]
Dies ist ein Icon ![](/svg-sprite/grumpy.jammydodger.monster/icon/222222/far-check-square.svg)
[/quote]

Dies ist eine Antwort, bei der es riesig wird

Das Zitieren mit der Sprechblase in der Formatleiste funktioniert jedoch einwandfrei.

4 „Gefällt mir“

Wie können Sie das Symbol hervorheben? Auf meiner Testseite wird das Symbol übersprungen.

Ich bin mir nicht sicher? Ich benutze nur die Maus.

Welchen Browser verwenden Sie?

Mit der Maus habe ich es mit Chrome und Firefox getestet und konnte das Symbol nicht auswählen. :thinking:


EDIT:

Wenn Sie ein Symbol, das im aktuellen Subset nicht verfügbar ist, einpacken, wird stattdessen ein SVG-Bild erstellt.
Dann können Sie es zitieren.

2 „Gefällt mir“

Können Sie ein Beispiel geben? Ihr Screenshot zeigt ein angekreuztes Kontrollkästchen, und ich habe keine Probleme, es in meiner Testinstanz auszuwählen (ebenso wie andere Symbole, die wahrscheinlich nicht von Discourse verwendet werden, wie z. B. x-ray).

2 „Gefällt mir“

Ich sehe das Problem. Die Komponente sucht, indem sie prüft, ob ein Wrapper mit der Klasse d-wrap vorhanden ist; aber es gibt keinen Wrapper, wenn das bereitgestellte Symbol nicht aus dem Subset stammt. Stattdessen wird ein Bild als SVG erstellt.

Zum Beispiel:

SVG, Symbol innerhalb des Subsets

Bild als SVG, Symbol nicht innerhalb des Subsets

Wenn Sie die Bilder zitieren, tut die Komponente nichts, da kein Wrapper vorhanden ist (und das Bild in Markdown konvertiert wird, was zu einem Bild ohne Klasse führt).

1 „Gefällt mir“

Bedeutet dies, dass ich ein svg_icons-Feld in settings.yml in meinem Theme haben muss? Oder könnte ich jedes svg_icons-Feld verwenden, das von aktivierten Theme-Komponenten verfügbar ist? Und wenn das der Fall ist, wäre es sinnvoll, dieses Feld zu dieser Theme-Komponente hinzuzufügen?

svg_icons:
  default: ''
  type: 'list'
  list_type: 'compact'

Denn meiner Erfahrung nach werden die SVG-Icons in <img />-Tags umgewandelt und erben nicht die currentColor, wenn das Farbschema geändert wird:
Vergleichen Sie bitte den Absatz Beispiel:

2 „Gefällt mir“

Könnte das Rendering im Dark Mode verbessert werden?

Ich hätte gerne die gleichen Farben wie in der Benutzeroberfläche:

3 „Gefällt mir“