โซลูชันที่ใช้งานง่ายในการแก้ไขแม่แบบอีเมลด้วยตัวแปรแทนที่คืออะไร


9

ฉันกำลังทำงานกับระบบที่เราพึ่งพา "ผู้ดูแลระบบ / ผู้จัดการ" จำนวนมากที่ส่งอีเมลผู้ใช้จากฐานข้อมูล หนึ่งในคุณสมบัติที่สำคัญคือความสามารถในการส่งอีเมลถึงคนหลายคนในเวลาเดียวกันพร้อมกับข้อมูลเฉพาะที่เกี่ยวข้องกับพวกเขาแต่ละคน คุณสมบัติที่สำคัญอีกประการหนึ่งคือสามารถสร้างอีเมลด้วยมือได้เนื่องจากมีความจำเป็นต้องปรับเปลี่ยนเล็กน้อยในแต่ละครั้ง แต่การมีเทมเพลตพื้นฐานช่วยประหยัดเวลาได้มาก

สำหรับสิ่งนี้เรามีโซลูชัน "แม่แบบ" โดยทั่วไปซึ่งเรามีแม่แบบที่มีลักษณะดังนี้:

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 ซึ่งป้องกันการเปลี่ยนแปลงของตัวแปรนั้นอย่างมีประสิทธิภาพ

มันไม่สมบูรณ์แบบ แต่ราคาถูกมากและดูเหมือนมีประสิทธิภาพ


แสดงความคิดเห็นกับคนที่มีตัวแทนมากกว่าฉัน: (ฉันใหม่กับ UX) คุณช่วยแท็กคำถามนี้ได้ไหม แท็กทั้งหมดที่ฉันคิดว่ายังไม่มีอยู่ที่นี่: แม่แบบตัวแปรส่วนติดต่อผู้ใช้ที่ใช้งานง่ายที่ผู้ใช้สามารถแก้ไขได้

เทมเพลตเหล่านี้มีการนำเสนออย่างไร มันเป็นเพียงข้อความธรรมดาในตัวแก้ไขหรือไม่?
ChrisF

ตอนนี้ใช่เมื่อคุณเลือกคนจำนวนมากและคลิกที่ "ข้อความ" คุณจะได้รับกล่องโต้ตอบ "ป๊อปอัพ" ที่มี textarea ขนาดใหญ่ที่มีเนื้อหาแม่แบบที่นั่น จริงๆแล้วมันคือ markDown แม้ว่าผู้ใช้ของเราจะไม่คุ้นเคย แต่ก็ดูเหมือนข้อความธรรมดา เราไม่มีเครื่องมือแก้ไขแบบ wysiwyg และเราเปิดให้ใช้ถ้ามันจะช่วย แต่ด้วยตัวเองมันไม่ได้ผู้คนจะยังไม่เข้าใจตัวแปร

ปัญหารากที่นี่เป็นที่ผู้จัดการของคุณไม่เข้าใจตัวแปร วิธีการขว้างปาของคุณเป็นอาการ ไม่ใช่ว่าทุกปัญหาจะต้องใช้วิธีการเข้ารหัส
Darknight

ตกลง ฉันชอบที่จะให้การศึกษาแก่ผู้คน แต่เราไม่สามารถขอให้พวกเขาอ่านคู่มือได้อย่างชัดเจนดังนั้นฉันจึงมองหาแนวคิดเกี่ยวกับวิธีทำให้พวกเขาเข้าใจได้ง่าย ไอเดีย?
Daniel Magliola

คำตอบ:


3

จากการร้องขอจากความคิดเห็นในคำตอบของ ChrisF นี่เป็นทางออกหนึ่งที่ฉันเคยใช้ในอดีต:

  • ใช้ WinForms RichTextBox เพื่ออนุญาตให้ผู้ใช้แก้ไขข้อความของแม่แบบ
  • อนุญาตให้ลาก / วาง (หรือแทรกอื่น ๆ ) ของตัวแปรหรือตัวยึดตำแหน่งใน RichTextBox
  • ไม่อนุญาตให้แก้ไขตัวแปรโดยตรวจสอบตำแหน่งปัจจุบันของเคอร์เซอร์เพื่อหาตัวคั่นของตัวแปรของคุณ (สัญลักษณ์ {{และ}} ในตัวอย่างของคุณ)

การนำไปใช้งานของฉันสิ้นสุดลงมีลักษณะเช่นนี้:

ตัวอย่าง RichTextBox

มันมีการเน้นตัวเลือกของตัวแปรเพื่อแยกความแตกต่างจากข้อความมาตรฐาน
ตัวคั่นตัวแปรอยู่ที่นั่นจริงๆแล้วมันมีสีพื้นหน้าและสีพื้นหลังเหมือนกัน

เห็นได้ชัดว่านี่ค่อนข้างแตกต่างจากการใช้งานของคุณซึ่งใช้ HTML ฉันอาจจะดูว่ามีการใช้งานเครื่องมือแก้ไข Gmail อย่างไร ดูเหมือนว่าจะคล้ายกับ textarea แต่สามารถมีรูปภาพแบบอินไลน์ (ยิ้ม, ฯลฯ ) ซึ่งคล้ายกับพฤติกรรมที่คุณกำลังมองหา


4

ฉันจะพิจารณาการเปลี่ยนแปลงวิธีการนำเสนอแม่แบบแก่ผู้ใช้เพื่อให้คุณสามารถสร้างชิ้นส่วนที่จะเปลี่ยนแปลงได้โดยรหัสที่ไม่สามารถแก้ไขได้ บางสิ่งเช่นนี้

รูปจำลอง

บิตที่คุณไม่ต้องการให้ผู้ใช้เปลี่ยนแปลงนั้นไม่สามารถแก้ไขได้ คุณสามารถรวมปุ่มปิดเพื่อให้พวกเขาสามารถลบรายการหากพวกเขาไม่ต้องการ นอกจากนี้คุณยังสามารถใส่ข้อความอธิบายและ / หรือคำแนะนำเครื่องมือเพื่ออธิบายความ{{...}}หมายของบิตและเหตุผลที่ควรทิ้งไว้คนเดียว

การใช้บางอย่างเช่น Silverlight / WPF WrapPanelสำหรับแต่ละย่อหน้าอาจทำให้คุณมีบางสิ่งบางอย่างที่อนุญาตให้แต่ละส่วน (สามารถแก้ไขได้และไม่สามารถแก้ไขได้) เพื่อให้โฟลว์ขณะที่ข้อความที่ผู้ใช้ควบคุมเติบโตและหดตัว


ปัญหาหลักของเรื่องนี้คือฉันไม่สามารถสร้าง textboxes ทั้ง "inline" และ "multi-line" ... และดังนั้นเลย์เอาต์ก็จะแปลกมาก ... ถ้าคุณสามารถแก้ไขได้ว่า "Dear" และตัวแปรจะย้าย ใช่และมีอีกกล่องข้อความที่ถูกห่ออย่างน่าอัศจรรย์นี่จะน่ากลัว แต่ฉันไม่เห็นว่าฉันจะใช้งานได้อย่างไร ทางเลือกอื่นที่เราพยายามทำงานด้วยคือการบล็อก "ไม่สามารถแก้ไขได้" ภายใน textarea ขนาดใหญ่เพื่อให้คุณไม่สามารถเปลี่ยนเนื้อหาได้ แต่คุณสามารถลบได้ (ด้วย "X") เราไม่สามารถทำงานนี้ได้ คุณเคยเห็นมันบ้างไหม? ขอบคุณ !!!

@DanielMagliola เป็นอย่างดีเช่น Silverlight / WPF WrapPanelสำหรับแต่ละย่อหน้าอาจให้สิ่งที่คุณต้องการ
ChrisF

@DanielMagliola ในอดีตฉันสามารถทำสิ่งนี้ได้ด้วย WinForms RichTextBox "ตัวแปร" สามารถลากและวางลงใน richtextbox และสไตล์จะถูกนำไปใช้กับมันเพื่อให้ชัดเจนว่ามันเป็นตัวยึดตำแหน่ง ส่วนที่ยุ่งยากคือการป้องกันการเปลี่ยนแปลงตัวแปร ทางออกหนึ่งคือการตรวจสอบตำแหน่งเคอร์เซอร์ปัจจุบันสำหรับอักขระแท็กของคุณและไม่อนุญาตให้แก้ไขหากเป็นกรณีนี้
Daniel B

ฉันลืมที่จะพูดถึงสิ่งนี้นี่เป็นแอป HTML แต่ก็ยังมีความคิดนั้นที่เกี่ยวข้อง ฉันชอบ "การตรวจสอบตำแหน่งเคอร์เซอร์และไม่อนุญาตให้ใช้แนวคิดการแก้ไข" ขอบคุณสำหรับสิ่งนั้น !!
Daniel Magliola

@DanielB: จริงๆแล้วคุณช่วยตอบได้ไหมฉันคิดว่าคุณมีผู้ชนะ! ขอบคุณ!!
Daniel Magliola
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.