Dev_Work
(Aleksandr)
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
Wie prüfe ich das Feld?
{{#if f.field.name == complete }} {{! funktioniert nicht }}
OK
{{/if}}
Dev_Work
(Aleksandr)
2
input für create-account.hbs festlegen
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()
}
})
Es sieht so aus
Rails.logger.warn(“#{params }”)
Es sieht so aus
"user_fields"=><ActionController::Parameters {"1"=>"true", "2"=>""}
“2”=>“”
Wo ist das zweite Feld?
merefield
(Robert)
3
Das funktioniert nicht, da du die eigentliche Logikberechnung nicht in einer Vorlage durchführen kannst. Dies muss in der entsprechenden JS-Datei durch eine Computed Property behandelt werden. Lies unbedingt die offiziellen Ember-Anleitungen (stelle sicher, dass du dieselbe Version auswählst, die Discourse verwendet) und schaue dir den Code in einem der vielen beliebten #Plugins hier an, um dir Beispiele zu geben.
Dev_Work
(Aleksandr)
4
Danke für die Antwort, ich interessiere mich für Beispiele aus Plugins.
merefield
(Robert)
5
Hier ist ein Beispiel für ein berechnetes Property aus einem PR, den ich kürzlich für Ebsys hervorragendes National Flags-Plugin eingereicht habe: discourse-nationalflags/assets/javascripts/discourse/components/user-nationalflags-preferences.js.es6 at master · Ebsy/discourse-nationalflags · GitHub
Hier ist eines (“showTimezones”), das tatsächlich verwendet wird, um in einer Vorlage auszublenden/einzublenden: https://github.com/paviliondev/discourse-team-timezones/blob/master/assets/javascripts/discourse/components/team-display.js.es6
In unseren Plugins finden Sie jedoch eine Fülle großartiger Muster: Pavilion · GitHub
Dev_Work
(Aleksandr)
6
Hallo, ich habe herausgefunden, wie man die Aktion in den Controllern überschreibt.
Beispiel
import CreateAccount from 'discourse/controllers/create-account';
export default {
name: 'Create-Account-Popup',
initialize: function () {
CreateAccount.reopen({
actions: {
createAccount() {
// my code
}
}
});
}
Wie füge ich deinen @discourseComputed hinzu?
Ich mache es wie im Beispiel, aber es funktioniert nicht
export default {
name: 'Create-Account-Popup',
@discourseComputed()
ldapForgotPassword() {
console.log('forgot!!');
return this.siteSettings.forum_login_popup_use_ldap;
},
Dev_Work
(Aleksandr)
7
Passiert über @computed
PreferencesAccount.reopen({
@computed
ldapForgotPassword() {
console.log('vergessen!!');
return this.siteSettings.forum_login_popup_use_ldap;
},
merefield
(Robert)
8
Du solltest dies verwenden, um eine Browser-Warnung zu vermeiden.
Es ist nur eine andere Import-Anweisung:
import discourseComputed from "discourse-common/utils/decorators";