ฉันกำลังทำงานกับระบบที่เราพึ่งพา "ผู้ดูแลระบบ / ผู้จัดการ" จำนวนมากที่ส่งอีเมลผู้ใช้จากฐานข้อมูล หนึ่งในคุณสมบัติที่สำคัญคือความสามารถในการส่งอีเมลถึงคนหลายคนในเวลาเดียวกันพร้อมกับข้อมูลเฉพาะที่เกี่ยวข้องกับพวกเขาแต่ละคน คุณสมบัติที่สำคัญอีกประการหนึ่งคือสามารถสร้างอีเมลด้วยมือได้เนื่องจากมีความจำเป็นต้องปรับเปลี่ยนเล็กน้อยในแต่ละครั้ง แต่การมีเทมเพลตพื้นฐานช่วยประหยัดเวลาได้มาก
สำหรับสิ่งนี้เรามีโซลูชัน "แม่แบบ" โดยทั่วไปซึ่งเรามีแม่แบบที่มีลักษณะดังนี้:
Hello {{recipient.full_name}},
Your application to {{activity.title}} has been accepted.
You have requested to participate on dates {{application.dates}}, in role {{application.role}}
Blah blah blah
ปัญหาที่เรามีอยู่เห็นได้ชัดว่า (ตามที่เราคาดไว้) ผู้จัดการไม่ได้รับความคิด "ตัวแปร" ทั้งหมดและพวกเขาทำสิ่งต่าง ๆ เช่นเขียนทับพวกเขาซึ่งไม่อนุญาตให้ส่งอีเมลมากกว่าหนึ่งคนในเวลาเดียวกัน สิ่งเหล่านี้จะไม่ถูกแทนที่และระบบจะพังหรือแม้กระทั่งสิ่งที่ไม่สามารถอธิบายได้เช่น "Hello {{John}}"
ปัญหาใหญ่คือสิ่งนี้ไม่ได้ลดระดับลงตามปกติในส่วน "ผู้ดูแลระบบ" ที่มีผู้ใช้ขั้นสูงเพียงไม่กี่รายเท่านั้นที่สามารถเข้าถึงการแก้ไขเทมเพลตที่ส่งออกโดยอัตโนมัติและพวกเขาคาดหวังว่าจะรู้ว่าพวกเขากำลังทำอะไร ผู้ใช้ทุกคนในระบบได้รับปัญหานี้
วิธีแก้ปัญหาที่ชัดเจนคือการแทนที่ตัวแปรก่อนที่จะแสดงเทมเพลตนี้เพื่อให้ผู้ใช้แก้ไข แต่มันไม่ทำงานเมื่อส่งอีเมลหลาย ๆ คน
นี่เป็นปัญหาที่พบได้ทั่วไปและเราหวังว่าจะมีใครบางคนแก้ไขมัน
คุณเคยเห็นที่ไหน / สร้าง / สามารถคิดถึงวิธีแก้ปัญหาที่ดีสำหรับปัญหานี้หรือไม่?
ปรับปรุง
สิ่งที่ฉันทำลงไปตามคำตอบของ Daniel Bคือการตรวจจับตามตำแหน่งเคอร์เซอร์และตำแหน่ง {{}} ในรหัสไม่ว่าผู้ใช้จะ "อยู่ภายในตัวแปร" หรือ "นอก" ข้างในฉันแสดงข้อความเล็ก ๆ น้อย ๆ ใต้ textarea ขนาดใหญ่อธิบายว่าสิ่งนี้จะถูกแทนที่และพวกเขาสามารถเอาออกได้อย่างสมบูรณ์หากพวกเขาต้องการ แต่พวกเขาไม่สามารถแก้ไขได้
ฉันทำสิ่งนี้กับคลิก, onChange, onKeyDown, onKeyUp สำหรับเหตุการณ์ "คีย์" หากเราอยู่ในตัวแปรฉันจะส่งกลับ TRUE เฉพาะเมื่อ keyCode เป็นหนึ่งในคีย์ "การนำทาง" สองสามตัว ไม่เช่นนั้นฉันจะคืนค่า FALSE ซึ่งป้องกันการเปลี่ยนแปลงของตัวแปรนั้นอย่างมีประสิทธิภาพ
มันไม่สมบูรณ์แบบ แต่ราคาถูกมากและดูเหมือนมีประสิทธิภาพ