file (and similar for any other locales you want to support) with the same English tokens but with language specific values and the plugin will use that instead of falling back to the English.
I was looking how to create a site setting that validates a username, but found there’s a username type to do this. Here the list of site setting types we have today:
email
username
integer
regex
string
list
enum
Also, you can do custom validations for your plugin settings, it accepts a validator field that expects a Ruby class. You use it like this.
Again you need to use a Computed Property and format as safe html. This is EmberJS not vanilla JavaScript. You can’t put ‘code’ directly into templates. Read the ember guides.
Obwohl type_supervisor.load_setting nicht direkt den Wert übergeben bekommt, hat es Zugriff auf die Standardwerte, da diese bei der Initialisierung des TypeSupervisor über DefaultsProvider übergeben werden.
type_supervisor.load_setting ruft dann get_data_type auf, was parse_value_type() aufruft, was einen ArgumentError auslösen sollte, wenn der Typ nicht erkannt werden kann.
Ich glaube, diese gesamte Sequenz wird von load_settings im SiteSetting-Modell aufgerufen, und ich sehe nirgendwo im Stack eine Ausnahmebehandlung. Aber ich sehe keine Fehlerausgabe im Serverprotokoll oder anderswo.
Es scheint, als ob es irgendeine Art von Benutzerfeedback oder Fehlerprotokoll geben sollte, das besagt, dass eine Einstellung nicht geparst werden konnte.
Wenn ich Sie richtig verstehe, sagen Sie, dass die Verwendung von -1 als Standardwert für eine Einstellung dazu führt, dass die Schaltfläche „Einstellungen“ nicht angezeigt wird. Können Sie dieses Verhalten jedes Mal reproduzieren?
Das ist seltsam. Ich sehe nichts Falsches an Ihren Einstellungen, ich bin mir nicht sicher, wie es zu einem Fehler beim Parsen kommen kann.
Ok, ich denke, in beiden Fällen (Entwicklung und Produktion) lag es daran, dass der Ordner im Plugins-Verzeichnis nicht mit county-fence übereinstimmte. Deshalb wurde die Einstellung nicht angezeigt und verursachte möglicherweise auch andere Probleme.
Mir ist das unklar. Die meisten Plugins, die ich installiert habe, verwenden nicht plugins:, einschließlich offizieller und neuerer Plugins (auch die Skeleton-Vorlage).
Ich dachte, dieser Teil würde für die Filterung der Einstellungen verwendet, aber ich könnte mich irren.
Eine vollständige Liste der Site Settings-Typen finden Sie im Code von type_supervisor.rb. Direkt darüber sehen Sie auch die gültigen Kindschlüssel, die ein Site Setting akzeptiert.
Ein fortgeschritteneres Beispiel, das mehr dieser Optionen verwendet, finden Sie in der Discourse-Welcome-Link-Theme-Komponente. Dieselben Werte sollten auch innerhalb eines Plugins funktionieren, aber die Datei wäre stattdessen unter config/settings.yml zu finden.