Dev_Work
(Aleksandr)
1
create-account.hbs
{{#if userFields}}
{{#each userFields as |f|}}
{{user-field field=f.field value=f.value}}
{{/each}}
{{/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
Come verificare il campo?
{{#if f.field.name == complete }} {{! non funziona }}
OK
{{/if}}
Dev_Work
(Aleksandr)
2
Imposta lâinput per 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()
}
})
CosĂŹ appare
Rails.logger.warn(â#{params }â)
CosĂŹ appare
"user_fields"=>ActionController::Parameters {"1"=>"true", "2"=>""}
â2â=>ââ
dovâè il secondo campo?
merefield
(Robert)
3
Questo non funziona perchÊ non è possibile eseguire il calcolo della logica effettiva in un Template. Questo deve essere gestito nel corrispondente file js tramite una Computed Property. Assicurati di leggere le guide ufficiali di Ember (assicurandoti di selezionare la stessa versione utilizzata da Discourse) e di esaminare il codice in uno dei numerosi plugin di Customization > Plugin qui presenti, che ti forniranno degli esempi.
Dev_Work
(Aleksandr)
4
Grazie per la risposta, sono interessato agli esempi forniti dai plugin.
merefield
(Robert)
5
Ecco un esempio di proprietà calcolata da una PR che ho recentemente inviato al plugin eccellente di Ebsy, National Flags: discourse-nationalflags/assets/javascripts/discourse/components/user-nationalflags-preferences.js.es6 at master ¡ Ebsy/discourse-nationalflags ¡ GitHub
Ecco un esempio (âshowTimezonesâ) che viene effettivamente utilizzato per nascondere/mostrare in un template: https://github.com/paviliondev/discourse-team-timezones/blob/master/assets/javascripts/discourse/components/team-display.js.es6
ma troverai unâinfinitĂ di ottimi pattern nei nostri plugin: Pavilion ¡ GitHub
Dev_Work
(Aleksandr)
6
Ciao, ho capito come sovrascrivere lâazione nei controller.
Esempio
import CreateAccount from 'discourse/controllers/create-account';
export default {
name: 'Create-Account-Popup',
initialize: function () {
CreateAccount.reopen({
actions: {
createAccount() {
// il mio codice
}
}
});
}
Come posso aggiungere il mio @discourseComputed?
Ho seguito lâesempio ma non funziona
export default {
name: 'Create-Account-Popup',
@discourseComputed()
ldapForgotPassword() {
console.log('dimenticato!!');
return this.siteSettings.forum_login_popup_use_ldap;
},
Dev_Work
(Aleksandr)
7
Ă successo tramite @computed
PreferencesAccount.reopen({
@computed
ldapForgotPassword() {
console.log('dimenticato!!');
return this.siteSettings.forum_login_popup_use_ldap;
},
Dovresti usare questo per evitare un avviso del browser.
Ă semplicemente un diverso import:
import discourseComputed from "discourse-common/utils/decorators";