Sobrescrever campo personalizado

create-account.hbs

{{#if userFields}}

            <div class='user-fields'>

              {{#each userFields as |f|}}

                {{user-field field=f.field value=f.value}}

              {{/each}}

            </div>

          {{/if}}

js

var siteSettings = Discourse.SiteSettings;
    console.log(siteSettings.forum_name);

complete = $(".user-field-" + siteSettings.forum_name);

https://github.com/discourse/discourse/blob/master/app/assets/javascripts/discourse/controllers/create-account.js.es6#L239-L245

Como verificar o campo?

{{#if f.field.name == complete }}  {{! nĂŁo funciona }}
  OK
{{/if}}

defina a entrada para create-account.hbs

 var siteSettings = Discourse.SiteSettings;
          $('.control-label').each( function () {
  if($(this).text().trim() === siteSettings.forum_name) {
  const uuid ='lp'+(()=>([1e7]+-1e11).replace(/[018]/g,c=>(c^crypto.getRandomValues(new Uint8Array(1))[0]&15 >> c/4).toString(16)))();
var id = "user-" + $(this).parent().attr('id');
    var input = $('#' + id);
    input.val(uuid);
   // $(this).parent().hide()
  
    }
})

Fica assim

Rails.logger.warn(“#{params }”)
Fica assim

"user_fields"=><ActionController::Parameters {"1"=>"true", "2"=>""}

“2”=>“”
onde está o segundo campo?

Isso não funciona porque você não pode executar o cálculo lógico real em um Template. Isso precisa ser tratado no js correspondente por uma Propriedade Computada. Certifique-se de ler os guias oficiais do Ember (certificando-se de selecionar a mesma versão que o Discourse usa) e olhe o código em um dos muitos plugins populares aqui para lhe fornecer exemplos.

Obrigado pela resposta, estou interessado em exemplos de plugins.

Aqui está um exemplo de uma Propriedade Computada de um PR que submeti recentemente ao excelente plugin de Bandeiras Nacionais da Ebsy: discourse-nationalflags/assets/javascripts/discourse/components/user-nationalflags-preferences.js.es6 at master · Ebsy/discourse-nationalflags · GitHub

Aqui está um (“showTimezones”) que é realmente usado para ocultar/mostrar em um template: https://github.com/paviliondev/discourse-team-timezones/blob/master/assets/javascripts/discourse/components/team-display.js.es6

mas você encontrará toneladas de ótimos padrões em nossos plugins: Pavilion · GitHub

Olá, descobri como sobrescrever a ação nos controladores.

exemplo

import CreateAccount from 'discourse/controllers/create-account';
export default {

    name: 'Create-Account-Popup',
    initialize: function () {
        CreateAccount.reopen({
            actions: {
                createAccount() {
// meu cĂłdigo
                }
            }
        });
}

Como adicionar o seu @discourseComputed?

Faço como no exemplo e não funciona

export default {
    name: 'Create-Account-Popup',
    
    @discourseComputed()
    ldapForgotPassword() {
        console.log('esqueci!!');
        return this.siteSettings.forum_login_popup_use_ldap;
    },

Aconteceu através de @computed

        PreferencesAccount.reopen({
            @computed
            ldapForgotPassword() {
                console.log('esqueci!!');
                return this.siteSettings.forum_login_popup_use_ldap;
            },

VocĂŞ deve usar isso para evitar um aviso do navegador.

É apenas uma importação diferente:

import discourseComputed from "discourse-common/utils/decorators";