Apa solusi ramah pengguna untuk mengedit templat email dengan variabel pengganti?

9

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.

Daniel Magliola
sumber
Komentar kepada orang-orang dengan lebih banyak perwakilan daripada saya: (Saya baru mengenal UX) Bisakah Anda memberi tag pertanyaan ini? Semua tag yang saya pikirkan belum ada di sini: templates variable user-interface user-friendly user-dapat diedit
Bagaimana templat ini disajikan? Apakah itu hanya teks biasa di editor?
ChrisF
Sekarang, ya, ketika Anda memilih sekelompok orang dan mengklik "Pesan", Anda mendapatkan dialog "munculan" dengan textarea besar yang memiliki konten template di sana. Ini sebenarnya markDown, meskipun jelas pengguna kami tidak terbiasa, itu terlihat seperti teks biasa. Kami tidak memiliki editor wysiwyg, dan kami terbuka untuk menggunakannya jika itu akan membantu, tetapi dengan sendirinya tidak, orang-orang masih tidak akan mengerti variabel-variabelnya
Masalah mendasar di sini, adalah manajer Anda tidak memahami variabel. Kecuali Anda memperbaiki masalah itu, solusi melempar Anda pada gejalanya. Tidak semua masalah membutuhkan solusi pengkodean.
Darknight
Sepakat. Saya ingin sekali dapat mendidik orang, tetapi kami tidak dapat meminta mereka untuk membaca manual, jadi saya mencari ide tentang bagaimana membuatnya mudah dimengerti oleh mereka. Ide ide?
Daniel Magliola

Jawaban:

3

Dengan permintaan dari komentar di jawaban ChrisF, berikut ini satu solusi yang pernah saya gunakan:

  • Gunakan WinForms RichTextBox untuk memungkinkan pengguna mengedit teks templat.
  • Izinkan seret / lepas (atau menyisipkan lainnya) variabel atau placeholder ke dalam RichTextBox.
  • Larang pengeditan variabel itu sendiri dengan memeriksa di sekitar tempat kursor saat ini untuk pembatas variabel Anda (simbol {{dan}}, dalam contoh Anda).

Implementasi saya akhirnya terlihat seperti ini:

Contoh RichTextBox

Ini memiliki penyorotan opsional variabel untuk membedakannya dari teks standar.
Pembatas variabel sebenarnya ada, mereka hanya memiliki warna foreground dan background yang sama.

Jelas, ini sangat berbeda dengan implementasi Anda, yang berbasis HTML. Saya mungkin akan melihat bagaimana editor Gmail diterapkan; tampaknya mirip dengan textarea, tetapi mampu memiliki gambar inline (smilies, dll), yang mirip dengan perilaku yang Anda cari.

Daniel B
sumber
4

Saya akan mempertimbangkan untuk mengubah bagaimana template disajikan kepada pengguna sehingga Anda dapat membuat bagian-bagian yang akan diubah oleh kode yang tidak dapat diedit. Sesuatu seperti ini:

maket

Bit yang Anda tidak ingin pengguna ubah sekarang tidak dapat diedit. Anda dapat memasukkan tombol tutup sehingga mereka dapat menghapus item jika mereka tidak membutuhkannya. Anda juga dapat menyertakan teks penjelas dan / atau tooltips untuk menjelaskan apa arti {{...}}bit dan mengapa bit tersebut harus dibiarkan sendiri.

Menggunakan sesuatu seperti Silverlight / WPF WrapPaneluntuk setiap paragraf mungkin memberi Anda sesuatu yang memungkinkan setiap bagian (dapat diedit dan tidak dapat diedit) mengalir saat teks yang dikontrol pengguna tumbuh dan menyusut.

ChrisF
sumber
Masalah utama dengan ini adalah bahwa saya tidak dapat membuat kotak teks "inline" dan "multi-line" ... Dan dengan demikian tata letaknya akan sangat aneh ... Jika Anda dapat mengedit "Dear" dan variabelnya akan bergerak benar, dan ada kotak teks lain di sebelah kanannya yang dibungkus secara ajaib, ini akan MENGAGUMKAN. Tetapi saya tidak melihat bagaimana saya bisa mengimplementasikan ini. Alternatif yang kami coba kerjakan adalah memiliki blok "tidak dapat diedit" di dalam textarea besar, sehingga Anda tidak dapat mengubah kontennya, tetapi Anda dapat menghapusnya (dengan "X"). Kami belum dapat melakukan ini. Pernahkah Anda melihatnya di suatu tempat? Terima kasih!!!
@DanielMagliola juga sesuatu seperti Silverlight / WPF WrapPaneluntuk setiap paragraf mungkin memberi Anda sesuatu seperti yang Anda inginkan.
ChrisF
@DanielMagliola di masa lalu, saya sudah bisa mencapai ini dengan WinForms RichTextBox. "Variabel" bisa diseret-seret ke richtextbox, dan gaya akan diterapkan untuk membuatnya jelas itu adalah placeholder. Bagian yang sulit adalah mencegah perubahan pada variabel. Salah satu solusinya adalah memeriksa di sekitar penempatan kursor saat ini untuk karakter tag Anda, dan melarang pengeditan jika itu masalahnya.
Daniel B
Saya lupa menyebutkan ini, ini adalah aplikasi HTML, tapi tetap saja gagasan itu berlaku. Saya suka "memeriksa posisi kursor dan melarang ide mengedit", terima kasih untuk itu !!
Daniel Magliola
@DanielB: Sebenarnya, bisakah Anda membuat tanggapan, saya pikir Anda memiliki pemenang! Terima kasih!!
Daniel Magliola