Ben veritabanından kullanıcılara e-posta gönderme "yöneticileri / yöneticileri" çok güvenen bir sistem üzerinde çalışıyorum. Temel özelliklerden biri, aynı anda birkaç kişiye e-posta gönderebilmesidir ve her biri ile ilgili özel bilgiler vardır. Diğer bir önemli özellik, e-postaları el ile yapabilmektir, çünkü her seferinde onları biraz değiştirmek gerekebilir, ancak temel bir şablona sahip olmak çok zaman kazandırır.
Bunun için, tipik bir "şablonlar" çözümüne sahibiz, burada şöyle bir şablon var:
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
Sahip olduğumuz sorun, (beklediğimiz gibi) yöneticilerin tüm "değişkenler" fikrini almadıkları ve bunların üzerine yazmak gibi şeyler yapıyorlar, ki bu da bir kerede birden fazla kişiye e-posta göndermelerine izin vermiyor bunlar değiştirilmeyecek ve sistem bozulacak, hatta "Merhaba {{John}}" gibi açıklanamayan şeyler olacak.
Büyük sorun, bunun her zamanki gibi, yalnızca birkaç güç kullanıcısının otomatik olarak gönderilen şablonları düzenlemeye erişimi olduğu ve ne yaptıklarını bilmesi beklenen bir "yönetici" bölümüne indirilmemesidir. Sistemin her kullanıcısı bu soruna maruz kalır.
Bariz çözüm , kullanıcının bu şablonu düzenlemesi için göstermeden önce değişkenleri değiştirmek olacaktır , ancak birkaç kişiye e-posta gönderirken bu işe yaramaz.
Bu oldukça yaygın bir sorun gibi görünüyor ve birisinin bunu zaten çözdüğünü umuyoruz.
Herhangi bir yerde gördünüz / yarattınız / bu soruna iyi çözümler düşünebiliyor musunuz?
Güncelleme
Daniel B'nin cevabına dayanarak yaptığım şey, imleç konumuna ve kullanıcının şu anda "bir değişkenin içinde mi yoksa" dışında "mı olduğu koddaki {{}} konumunu tespit etmekti. İçeride, büyük metin alanının altında bunun yerine geçeceğini ve istedikleri takdirde tamamen kaldırabileceklerini, ancak düzenleyemediklerini açıklayan küçük bir metin parçası gösteriyorum.
Bunu onClick, onChange, onKeyDown, onKeyUp'ta yapıyorum. "Key" olayları için, eğer bir değişkenin içindeysek, sadece keyCode birkaç "navigasyon" anahtarından biriyse TRUE değerini döndürürüm. Aksi takdirde, bu değişkenin baskısını etkili bir şekilde önleyen FALSE değerini döndürürüm.
Mükemmel değil, ama çok ucuz ve etkili görünüyor.