Dev_Work
(Aleksandr)
24 ديسمبر 2019، 3: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
كيف أتحقق من الحقل؟
{{#if f.field.name == complete }} {{! لا يعمل }}
تم بنجاح
{{/if}}
Dev_Work
(Aleksandr)
24 ديسمبر 2019، 4:32م
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”=>“”
أين الحقل الثاني؟
هذا لا يعمل لأنك لا تستطيع إجراء عملية حسابية منطقية فعلية داخل قالب (Template). يجب معالجة هذا في ملف JavaScript المقابل عبر خاصية محسوبة (Computed Property). تأكد من قراءة أدلة Ember الرسمية (تأكد من اختيار الإصدار نفسه الذي يستخدمه Discourse) واطّلع على الكود في أحد الإضافات (#plugin ) الشائعة هنا للحصول على أمثلة.
Dev_Work
(Aleksandr)
26 ديسمبر 2019، 10:12ص
4
شكرًا على الإجابة، أنا مهتم بالأمثلة من الإضافات
Dev_Work
(Aleksandr)
5 فبراير 2020، 11:28ص
6
مرحباً، لقد تمكنت من معرفة كيفية تجاوز الإجراء في وحدات التحكم.
مثال
import CreateAccount from 'discourse/controllers/create-account';
export default {
name: 'Create-Account-Popup',
initialize: function () {
CreateAccount.reopen({
actions: {
createAccount() {
// my code
}
}
});
}
كيف يمكن إضافة @discourseComputed؟
لقد قمت بما هو موضح في المثال لكن دون جدوى
export default {
name: 'Create-Account-Popup',
@discourseComputed()
ldapForgotPassword() {
console.log('forgot!!');
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 فبراير 2020، 11:55ص
7
حدث من خلال @computed
PreferencesAccount.reopen({
@computed
ldapForgotPassword() {
console.log('تم النسيان!!');
return this.siteSettings.forum_login_popup_use_ldap;
},
يجب عليك استخدام هذا لتجنب تحذير المتصفح.
إنه مجرد استيراد مختلف:
import discourseComputed from "discourse-common/utils/decorators";