Dev_Work
(Aleksandr)
24.Декабрь.2019 15:08:29
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
Как проверить поле?
{{#if f.field.name == complete }} {{! не работает }}
OK
{{/if}}
Dev_Work
(Aleksandr)
24.Декабрь.2019 16:32:08
2
установите ввод для 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()
}
})
Выглядит это так
Rails.logger.warn(“#{params }”)
Выглядит это так
"user_fields"=><ActionController::Parameters {"1"=>"true", "2"=>""}
“2”=>“”
где второе поле?
merefield
(Robert)
26.Декабрь.2019 10:06:05
3
Это не работает, потому что в шаблоне нельзя выполнять фактические логические вычисления. Это должно обрабатываться в соответствующем JS-файле через вычисляемое свойство. Обязательно прочитайте официальные руководства Ember (убедитесь, что выбрали ту же версию, что использует Discourse) и посмотрите код в одном из многих популярных плагинов #plugin здесь, чтобы найти примеры.
Dev_Work
(Aleksandr)
26.Декабрь.2019 10:12:58
4
Спасибо за ответ, меня интересуют примеры из плагинов.
merefield
(Robert)
26.Декабрь.2019 10:25:00
5
Dev_Work
(Aleksandr)
05.Февраль.2020 11:28:34
6
Привет, я разобрался, как переопределить действие в контроллерах.
Пример
import CreateAccount from 'discourse/controllers/create-account';
export default {
name: 'Create-Account-Popup',
initialize: function () {
CreateAccount.reopen({
actions: {
createAccount() {
// мой код
}
}
});
}
Как добавить свой @discourseComputed?
Я делаю как в примере, но это не работает
export default {
name: 'Create-Account-Popup',
@discourseComputed()
ldapForgotPassword() {
console.log('забыл!!');
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)
05.Февраль.2020 11:55:20
7
Произошло через @computed
PreferencesAccount.reopen({
@computed
ldapForgotPassword() {
console.log('забыли!!');
return this.siteSettings.forum_login_popup_use_ldap;
},
merefield
(Robert)
05.Февраль.2020 13:23:46
8
Вам следует использовать это, чтобы избежать предупреждения в браузере.
Это просто другой импорт:
import discourseComputed from "discourse-common/utils/decorators";