Saya sedang mengerjakan suatu sistem di mana kami banyak mengandalkan "admin / manajer" untuk mengirim email kepada pengguna dari basis data. Salah satu fitur utama adalah dapat mengirim email kepada beberapa orang secara bersamaan, dengan informasi spesifik yang relevan bagi mereka masing-masing. Fitur utama lainnya adalah dapat membuat email kerajinan tangan, karena cenderung diperlukan untuk sedikit memodifikasinya setiap kali, tetapi memiliki templat dasar menghemat banyak waktu.
Untuk ini, kami memiliki solusi "template" yang khas, di mana kami memiliki template yang terlihat seperti ini:
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
Masalah yang kita hadapi jelas adalah bahwa (seperti yang kita harapkan), manajer tidak mendapatkan keseluruhan gagasan "variabel", dan mereka melakukan hal-hal seperti menimpa mereka, yang tidak membiarkan mereka mengirim email lebih dari satu orang sekaligus, dengan asumsi itu tidak akan diganti dan sistem rusak, atau bahkan hal-hal yang tidak dapat dijelaskan seperti "Halo {{John}}".
Masalah besar adalah bahwa ini tidak diturunkan, seperti biasa, ke bagian "admin" di mana hanya beberapa pengguna yang memiliki akses untuk mengedit templat yang dikirim secara otomatis, dan mereka diharapkan tahu apa yang mereka lakukan. Setiap pengguna sistem terkena masalah ini.
Solusi yang jelas adalah mengganti variabel sebelum menampilkan templat ini untuk diedit pengguna, tetapi itu tidak berfungsi saat mengirim email ke beberapa orang.
Ini sepertinya masalah yang cukup umum, dan kami berharap seseorang telah menyelesaikannya.
Pernahkah Anda melihat di mana saja / dibuat / dapat memikirkan solusi yang baik untuk masalah ini?
Memperbarui
Apa yang akhirnya saya lakukan berdasarkan jawaban Daniel B mendeteksi, berdasarkan posisi kursor, dan posisi {{}} dalam kode apakah pengguna saat ini "di dalam variabel" atau "di luar". Di dalam, saya menunjukkan sedikit teks di bawah textarea besar yang menjelaskan bahwa ini akan diganti, dan bahwa mereka dapat menghapusnya sepenuhnya jika mereka mau, tetapi mereka tidak dapat mengeditnya.
Saya melakukan ini onClick, onChange, onKeyDown, onKeyUp. Untuk peristiwa "kunci", jika kita berada di dalam variabel, saya hanya mengembalikan TRUE jika keyCode adalah salah satu dari beberapa kunci "navigasi". Kalau tidak, saya mengembalikan FALSE, yang secara efektif mencegah edisi variabel itu.
Itu tidak sempurna, tetapi sangat murah, dan tampaknya efektif.