Yedek değişkenlerle e-posta şablonlarını düzenlemek için kullanıcı dostu bir çözüm nedir?


9

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.


Benden daha fazla temsilcisi olan kişilere yorum yapın: (UX'da yeniyim) Lütfen bu soruyu etiketleyebilir misiniz? Düşündüğüm tüm etiketler henüz mevcut değil: şablon değişkenleri kullanıcı arayüzü kullanıcı dostu kullanıcı tarafından düzenlenebilir

Bu şablonlar nasıl sunulur? Bir editördeki düz metin midir?
ChrisF

Şu anda, evet, bir grup insan seçtiğinizde ve "İleti" yi tıkladığınızda, şablon içeriğinin bulunduğu büyük bir metin alanına sahip bir "pop-in" iletişim kutusu alırsınız. Aslında markDown, açıkçası kullanıcılarımız buna alışık olmasa da, düz metin gibi görünüyor. Bir wysiwyg editörümüz yok ve yardımcı olacaksa birini kullanmaya açıkız, ancak kendi başına, insanlar hala değişkenleri anlamayacaklar

Buradaki temel sorun , yöneticilerinizin değişkenleri anlamadığıdır. Bu sorunu düzeltmedikçe, belirtilere çözüm getirme. Tüm sorunların bir kodlama çözümüne ihtiyacı yoktur.
Darknight

Kabul. İnsanları eğitmeyi çok isterim, ancak onlardan kılavuz okumalarını isteyemeyiz. Fikirler?
Daniel Magliola

Yanıtlar:


3

ChrisF'in cevabındaki yorumların talebi üzerine, geçmişte kullandığım bir çözüm var:

  • Kullanıcının şablon metnini düzenlemesine izin vermek için bir WinForms RichTextBox kullanın.
  • Değişkenlerin veya yer tutucuların RichTextBox'a sürüklenmesine / bırakılmasına (veya başka bir eklenmesine) izin verin.
  • Değişkenlerinizin sınırlayıcılarını (örneğin {{ve}} sembolleri) imlecin geçerli yeri etrafında kontrol ederek değişkenlerin kendilerinin düzenlenmesine izin verme.

Uygulamam şöyle bir şey aradı:

RichTextBox örneği

Standart metinden ayırmak için değişkenin isteğe bağlı vurgulanması vardır.
Değişken sınırlayıcılar aslında orada, sadece aynı ön plan ve arka plan renklerine sahipler.

Açıkçası, bu HTML tabanlı olan uygulamanızdan oldukça farklıdır. Muhtemelen Gmail'in düzenleyicisinin nasıl uygulandığını inceleyeceğim; bir metin alanına benzer gibi görünüyor, ancak aradığınız davranışa benzeyen satır içi görüntülere (ifadeler vb.) sahip olabilir.


4

Kodun değiştirilemeyen parçalarını düzenlenebilir olmayan hale getirebilmeniz için şablonun kullanıcıya nasıl sunulduğunu değiştirmeyi düşünürüm. Bunun gibi bir şey:

model

Kullanıcının değiştirmesini istemediğiniz bitler artık düzenlenemez. İhtiyaç duymadıkları takdirde öğeleri kaldırabilmeleri için bir kapatma düğmesi ekleyebilirsiniz. Ayrıca {{...}}bitlerin ne anlama geldiğini ve neden yalnız bırakılmaları gerektiğini açıklayan metin ve / veya araç ipuçları da ekleyebilirsiniz .

WrapPanelHer paragraf için Silverlight / WPF gibi bir şey kullanmak , kullanıcı tarafından denetlenen metin büyüdükçe ve küçüldükçe her parçanın (düzenlenebilir ve düzenlenemez) akmasına izin veren bir şey verebilir.


Buradaki temel sorun, metin kutularını hem "satır içi" hem de "çok satırlı" yapamam ... Ve böylece düzen son derece garip olurdu ... Eğer "Sevgili" yi düzenleyebilirseniz ve değişken hareket ederse doğru ve sihirli bir şekilde sarılmış başka bir metin kutusu vardı, bu harika olurdu. Ama bunu nasıl uygulayabileceğimi anlamıyorum. Çalışmaya çalıştığımız alternatif, büyük bir metin alanının içinde "düzenlenemez" bloklara sahip olmaktır, böylece içeriklerini değiştiremezsiniz, ancak bunları kaldırabilirsiniz ("X" ile). Bu işi yapamadık. Bir yerde gördün mü? Teşekkürler!!!

@DanielMagliola WrapPanelher paragraf için Silverlight / WPF gibi bir şey size istediğiniz gibi bir şey verebilir.
ChrisF

@DanielMagliola geçmişte, bunu bir WinForms RichTextBox ile başardım. "Değişkenler" zengin metin kutusuna sürükleyip bırakılabilir ve stilin bir yer tutucu olduğunu açıkça belirtmek için ona uygulanır. Zor kısmı değişkenlerde değişiklik yapılmasını engelliyor. Çözümlerden biri, etiket karakterleriniz için geçerli imleç yerleşimini kontrol etmek ve bu durumda düzenlemeye izin vermemektir.
Daniel B

Bundan bahsetmeyi unuttum, bu bir HTML uygulaması, ama yine de bu fikir uygulanabilir. Ben "imleç konumunu kontrol ve düzenleme fikrine izin verme" gibi, bunun için teşekkür ederim !!
Daniel Magliola

@DanielB: Aslında, lütfen bir cevap verebilir misiniz, galip geldiğinizi düşünüyorum! Teşekkür ederim!!
Daniel Magliola
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.