الذي أقوم بربطه على موقعي، لجلب المستخدمين إلى المنتدى لطرح سؤال. أستخدم قيمًا مختلفة لـ title لملء العنوان مسبقًا بأي موضوع يتساءلون عنه، وأرغب في أن يكون المحرر هو التركيز.
كنت أبحث عن كيفية تعديل هذا، ووجدت ملف composer.js مع تعريف focusTarget، والذي سيكون من السهل جدًا تعديله لدعم هذا السلوك إذا تم تمرير title.
المشكلة التي أواجهها هي أنني لا أرى أين يتم استدعاء focusTarget بالفعل. لقد كنت أعمل في البرمجة لسنوات عديدة، ولكنني جديد على Ember، وقد قمت ببرمجة JavaScript قليلة نسبيًا.
أي نصائح حول كيفية التعامل مع هذا ستكون موضع تقدير كبير (حتى لو كان هناك دليل مع إشارة إلى دليل معقول).
حسنًا، هذا هو الكود الذي يجعله يعمل. ما لست متأكدًا منه هو الكود الذي أحتاج إلى تعديله حتى تتمكن هذه الطريقة من الحصول على العنوان، حتى أتمكن من تعيين التركيز بشكل مناسب على المحرر هناك…
لقد كدت أنتهي من هذا - عندما يتم تنفيذ الكود، أحصل على خطأ يفيد بأن scheduleOnce غير معرف - لقد جربت api.scheduleOnce، ولكن يبدو أن scheduleOnce هو شيء خاص بـ Ember. لقد حاولت إضافة هذا الاستيراد إلى المكون الخاص بي، ولكني حصلت على خطأ “الاستيرادات مسموح بها فقط في المستوى الأعلى”. import { scheduleOnce } from "@ember/runloop";
أعتقد أن هناك شيئًا صغيرًا أفتقده، وسأستمر في العبث به، لكنني اعتقدت أنني سأرى ما إذا كان واضحًا لك.
في أي ملف يجب أن أضعهم؟ ما كنت أحاول فعله هو استخدامه فقط في <head> – كمكون – هذا ما فعلته، والذي ينتج عنه ظهور السجل “scheduling afterRender”، ثم خطأ بشأن عدم وجود scheduleOnce. لقد حاولت استخدام الاستيراد بعدة طرق، لكنه لا يعمل. أشك في أن قلة خبرتي في الوحدات النمطية في جافاسكريبت تسبب لي مشاكل. ربما لا يمكنني القيام بذلك عبر مكون، وأحتاج إلى القيام بالمزيد من المكون الإضافي. سألقي نظرة على ذلك – شكراً مرة أخرى على مساعدتك
<script type="text/discourse-plugin" version="1.8.0">
api.onAppEvent("composer:open", ({ model }) => {
console.log("composer open happened, model is: ", model);
if (model.title !== "") {
console.log("scheduling afterRender");
scheduleOnce("afterRender", () => {
console.log("after render happening");
api.putCursorAtEnd(document.querySelector("textarea.d-editor-input"));
});
}
});
</script>
على صعيد آخر، أشجعك بشدة على استخدام Theme CLI. يمكنك إنشاء مكون سمة من قالب، ومزامنته مع Discourse مع تحديث مباشر، وتحديث أي تغييرات باستخدام محرر النصوص الخاص بك. إنه أسهل بكثير من استخدام واجهة المستخدم!