Dev_Work
(Aleksandr)
24 Diciembre, 2019 15:08
1
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
¿Cómo verificar el campo?
{{#if (eq f.field.name complete)}} {{! no funciona }}
OK
{{/if}}
Dev_Work
(Aleksandr)
24 Diciembre, 2019 16:32
2
establecer 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()
}
})
Se ve así
Rails.logger.warn(“#{params }”)
Se ve así
"user_fields"=><ActionController::Parameters {"1"=>"true", "2"=>""}
“2”=>“”
¿dónde está el segundo campo?
merefield
(Robert)
26 Diciembre, 2019 10:06
3
Esto no funciona porque no puedes realizar el cálculo lógico real en una plantilla. Esto debe manejarse en el js correspondiente mediante una propiedad computada. Asegúrate de leer las guías oficiales de Ember (asegurándote de seleccionar la misma versión que usa Discourse) y examina el código en uno de los muchos populares #plugin aquí para que te proporcione ejemplos.
Dev_Work
(Aleksandr)
26 Diciembre, 2019 10:12
4
gracias por la respuesta, estoy interesado en ejemplos de plugins
merefield
(Robert)
26 Diciembre, 2019 10:25
5
Dev_Work
(Aleksandr)
5 Febrero, 2020 11:28
6
Hola, he descubierto cómo sobrescribir la acción en los controladores.
Ejemplo
import CreateAccount from 'discourse/controllers/create-account';
export default {
name: 'Create-Account-Popup',
initialize: function () {
CreateAccount.reopen({
actions: {
createAccount() {
// mi código
}
}
});
}
¿Cómo añadir tu @discourseComputed?
Lo hago como en el ejemplo y no funciona
export default {
name: 'Create-Account-Popup',
@discourseComputed()
ldapForgotPassword() {
console.log('¡olvidado!!');
return this.siteSettings.forum_login_popup_use_ldap;
},
Ok, I made it work but its somewhat tricky.
Create a connector class with this code.
import { set } from "@ember/object";
import EmberObject from "@ember/object";
export default {
@discourseComputed("model.user_fields.@each.value")
publicUserFields() {
const siteUserFields = this.site.get("user_fields");
if (!isEmpty(siteUserFields)) {
const userFields = this.get("model.user_fields");
return siteUserFields
.filterBy("show_on_user_card", true)
.sortBy("pos…
Dev_Work
(Aleksandr)
5 Febrero, 2020 11:55
7
Ocurrió a través de @computed
PreferencesAccount.reopen({
@computed
ldapForgotPassword() {
console.log('¡olvidado!!');
return this.siteSettings.forum_login_popup_use_ldap;
},
Deberías usar esto para evitar una advertencia del navegador.
Es simplemente una importación diferente:
import discourseComputed from "discourse-common/utils/decorators";