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.
Anche se type_supervisor.load_setting non riceve direttamente il valore, ha accesso ai valori predefiniti perché vengono passati quando TypeSupervisor viene inizializzato tramite DefaultsProvider.
type_supervisor.load_setting chiama quindi get_data_type che chiama parse_value_type() che dovrebbe sollevare un ArgumentError se il tipo non può essere rilevato.
Penso che tutta questa sequenza sia chiamata da load_settings nel modello SiteSetting, e non vedo alcuna gestione delle eccezioni in nessuno stack. Ma non vedo alcun output di errore nel log del server, o altrove.
Sembra che dovrebbe esserci un qualche tipo di feedback utente o log di errore per dire che un’impostazione non è stata analizzata correttamente.
Se ho capito bene, stai dicendo che usare -1 come valore predefinito in un’impostazione fa sì che il pulsante "Impostazioni" non appaia. Riesci a riprodurre questo comportamento ogni volta?
È strano. Non vedo nulla di sbagliato nelle tue impostazioni, non sono sicuro di come sia possibile un errore nell’analisi.
Ho distribuito il plugin sul mio sito live utilizzando l’impostazione predefinita di 0 per sicurezza. Il pulsante delle impostazioni viene visualizzato:
Ma quando ci clicco sopra non vengono elencate le impostazioni:
Ok, penso che in entrambi i casi (dev e produzione) sia stato perché la cartella nella directory dei plugin non corrispondeva a county-fence. Questo è il motivo per cui l’impostazione non veniva visualizzata e potrebbe causare anche altri problemi.
Un elenco completo dei tipi di Impostazioni del sito è disponibile nel codice di type_supervisor.rb. Appena sopra è possibile vedere anche le chiavi figlio valide che un’Impostazione del sito accetta.
Un esempio più avanzato che utilizza più opzioni è disponibile nel componente tema discourse-welcome-link. Questi stessi valori dovrebbero funzionare all’interno di un plugin, ma il file si troverebbe invece in config/settings.yml.