प्रतिस्थापन चर के साथ ईमेल टेम्पलेट्स को संपादित करने के लिए एक उपयोगकर्ता के अनुकूल समाधान क्या है?


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

हमारे पास जो समस्या है वह स्पष्ट रूप से यह है कि (जैसा कि हम उम्मीद करते थे), प्रबंधकों को पूरे "वैरिएबल" विचार नहीं मिलते हैं, और वे उन्हें ओवरराइट करने जैसी चीजें करते हैं, जो उन्हें एक समय में एक से अधिक लोगों को ईमेल करने की अनुमति नहीं देता है। उन लोगों को प्रतिस्थापित नहीं किया जा रहा है और सिस्टम टूट गया है, या यहां तक ​​कि "हैलो {{जॉन}}" जैसी बेवजह की चीजें भी हैं।

बड़ी समस्या यह है कि यह "सामान्य" खंड के रूप में, सामान्य तौर पर, जहां कुछ बिजली उपयोगकर्ताओं को स्वचालित रूप से बाहर भेजने वाले टेम्पलेट्स को संपादित करने के लिए उपयोग किया जाता है, और उन्हें पता चल जाता है कि वे क्या कर रहे हैं। सिस्टम का प्रत्येक उपयोगकर्ता इस समस्या से अवगत हो जाता है।

स्पष्ट समाधान उपयोगकर्ता को संपादित करने के लिए इस टेम्पलेट को दिखाने से पहले चर को बदलना होगा , लेकिन यह कई लोगों को ईमेल करते समय काम नहीं करता है।

यह एक यथोचित सामान्य समस्या की तरह लगता है, और हम इस तरह की उम्मीद कर रहे हैं कि किसी ने इसे पहले ही हल कर लिया है।

क्या आपने कहीं भी देखा / बनाया है / इस समस्या के अच्छे समाधान के बारे में सोच सकते हैं?

अपडेट करें

डैनियल बी के जवाब के आधार पर मैंने जो किया , वह पता लगा रहा था, कर्सर की स्थिति और कोड में {{}} की स्थिति का पता लगा रहा था कि उपयोगकर्ता वर्तमान में "एक चर के अंदर" या "बाहर" है या नहीं। अंदर, मैं बड़े textarea के नीचे पाठ का एक छोटा सा टुकड़ा दिखा रहा हूं कि यह समझा रहा है कि यह प्रतिस्थापित होने जा रहा है, और वे इसे पूरी तरह से हटा सकते हैं यदि वे चाहते हैं, लेकिन वे इसे संपादित नहीं कर सकते।

मैं यह onClick, onChange, onKeyDown, onKeyUp करता हूं। "कुंजी" घटनाओं के लिए, यदि हम एक चर के अंदर हैं, तो मैं केवल TRUE लौटाता हूं यदि कीकोड कुछ "नेविगेशनल" कुंजियों में से एक है। अन्यथा, मैं FALSE लौटाता हूं, जो उस चर के संस्करण को प्रभावी ढंग से रोकता है।

यह सही नहीं है, लेकिन यह बहुत सस्ता था, और प्रभावी लगता है।


मुझसे अधिक प्रतिनिधि वाले लोगों पर टिप्पणी करें: (मैं UX में नया हूं) क्या आप इस प्रश्न को टैग कर सकते हैं? सभी टैग जो मैं सोच रहा हूँ अभी तक यहाँ मौजूद नहीं हैं: टेम्प्लेट्स वैरिएबल यूज़र-इंटरफ़ेस यूज़र-फ्रेंडली यूज़र-एडिटेबल

ये कैसे प्रस्तुत किए जाते हैं? क्या यह सिर्फ एक संपादक का सादा पाठ है?
ChrisF

अभी, हां, जब आप लोगों का एक समूह चुनते हैं और "संदेश" पर क्लिक करते हैं, तो आपको एक बड़े टेक्स्टारिया के साथ "पॉप-इन" संवाद मिलता है जिसमें टेम्पलेट सामग्री होती है। यह वास्तव में मार्कडाउन है, हालांकि जाहिर है कि हमारे उपयोगकर्ता इसका उपयोग नहीं करते हैं, यह सादे पाठ की तरह दिखता है। हमारे पास एक wysiwyg संपादक नहीं है, और हम एक का उपयोग करने के लिए खुले हैं यदि यह मदद करेगा, लेकिन अपने आप से यह नहीं होता है, तो लोग अभी भी चर समझ नहीं पाएंगे

यहां मूल समस्या यह है कि आपके प्रबंधक चर को नहीं समझ रहे हैं। जब तक आप उस मुद्दे को ठीक नहीं करते हैं, लक्षणों पर आपके फेंकने वाले समाधान। सभी समस्याओं को कोडिंग समाधान की आवश्यकता नहीं है।
डार्क नाइट जूल

माना। मैं लोगों को शिक्षित करने में सक्षम होना पसंद करूंगा, लेकिन हम उन्हें मैनुअल पढ़ने के लिए नहीं कह सकते, जाहिर है, इसलिए मैं उन विचारों की तलाश कर रहा हूं कि कैसे उन्हें आसानी से समझा जा सकता है। विचार?
डैनियल मैगलियोला जूल

जवाबों:


3

क्रिसफ के जवाब में टिप्पणियों से अनुरोध करके, यहां एक समाधान मैंने अतीत में इस्तेमाल किया है:

  • उपयोगकर्ता को टेम्पलेट के पाठ को संपादित करने की अनुमति देने के लिए एक WinForms RichTextBox का उपयोग करें।
  • RichTextBox में चर या प्लेसहोल्डर्स के ड्रैग / ड्रॉप (या अन्य डालने) की अनुमति दें।
  • अपने चर के परिमाण ({{और}} प्रतीकों, आपके उदाहरण में) के लिए कर्सर की वर्तमान जगह के आसपास की जाँच करके स्वयं चर का संपादन अस्वीकार करें।

मेरा कार्यान्वयन कुछ इस तरह से समाप्त हुआ:

रिचटेक्स्टबॉक्स उदाहरण

यह मानक पाठ से अलग करने के लिए चर का वैकल्पिक हाइलाइटिंग है।
परिवर्तनशील सीमांकक वास्तव में होते हैं, वे केवल एक ही अग्रभूमि और पृष्ठभूमि के रंगों के होते हैं।

जाहिर है, यह आपके कार्यान्वयन के लिए काफी अलग है, जो HTML- आधारित है। मैं शायद इस बात पर गौर करूंगा कि जीमेल के संपादक को कैसे लागू किया जाता है; यह एक textarea के समान प्रतीत होता है, लेकिन इनलाइन छवियों (स्माइली, आदि) में सक्षम है, जो आपके द्वारा खोजे जा रहे व्यवहार के समान है।


4

मैं इस बात पर विचार करना चाहूंगा कि उपयोगकर्ता को टेम्प्लेट कैसे प्रस्तुत किया जाता है ताकि आप उन भागों को बना सकें जिन्हें कोड गैर-संपादन योग्य द्वारा बदला जाएगा। कुछ इस तरह:

नकली

बिट्स जो आप उपयोगकर्ता को बदलना नहीं चाहते हैं, अब संपादन योग्य नहीं हैं। आप एक करीबी बटन शामिल कर सकते हैं ताकि वे ज़रूरत पड़ने पर वस्तुओं को हटा सकें। आप यह समझाने के लिए व्याख्यात्मक पाठ और / या टूलटिप्स भी शामिल कर सकते हैं कि {{...}}बिट्स का क्या अर्थ है और उन्हें अकेला क्यों छोड़ा जाना चाहिए।

WrapPanelप्रत्येक पैराग्राफ के लिए सिल्वरलाइट / WPF जैसी किसी चीज़ का उपयोग करने से आपको कुछ ऐसा मिल सकता है जो उपयोगकर्ता नियंत्रित पाठ के बढ़ने और सिकुड़ने के रूप में प्रत्येक भाग (संपादन योग्य और संपादन योग्य) को प्रवाहित करने की अनुमति देता है।


इसके साथ मुख्य समस्या यह है कि मैं टेक्स्टबॉक्स को "इनलाइन" और "मल्टी-लाइन" दोनों नहीं बना सकता ... और इस तरह लेआउट बेहद अजीब होगा ... यदि आप उस "प्रिय" को संपादित कर सकते हैं और चर को स्थानांतरित करेंगे सही है, और यह सही है कि जादुई लिपटे एक और टेक्स्टबॉक्स था, यह भयानक होगा। लेकिन मैं यह नहीं देखता कि मैं इसे कैसे लागू कर सकता हूं। जिस विकल्प के साथ हम काम करने की कोशिश कर रहे हैं, वह एक बड़े टेक्स्टारिया के अंदर "गैर-संपादन योग्य" ब्लॉक है, ताकि आप उनकी सामग्री को बदल न सकें, लेकिन आप उन्हें ("एक्स" के साथ) निकाल सकते हैं। हम यह काम नहीं कर पाए हैं। क्या आपने इसे कहीं देखा है? धन्यवाद!!!

@DanielMagliola अच्छी तरह से WrapPanelप्रत्येक अनुच्छेद के लिए एक Silverlight / WPF की तरह कुछ आप चाहते हैं कि आप कुछ दे सकते हैं।
ChrisF

@DanielMagliola अतीत में, मैं एक WinForms RichTextBox के साथ इसे प्राप्त करने में सक्षम रहा हूं। "वैरिएबल" को रिचटेक्स्टबॉक्स में ड्रैग-एंड-ड्रॉप किया जा सकता है, और यह स्पष्ट करने के लिए इसे लागू किया जाएगा कि यह एक प्लेसहोल्डर है। मुश्किल हिस्सा चर में परिवर्तन को रोक रहा है। एक उपाय यह है कि अपने टैग पात्रों के लिए वर्तमान कर्सर प्लेसमेंट के आसपास की जाँच करें, और यदि ऐसा है तो संपादन को अस्वीकार करने के लिए।
डैनियल बी

मैं इसका उल्लेख करना भूल गया, यह एक HTML ऐप है, लेकिन फिर भी यह विचार लागू है। मुझे "कर्सर की स्थिति जाँचना और संपादन विचार को अस्वीकार करना" पसंद है, इसके लिए आपका धन्यवाद !!
डैनियल मैगलियोला जूल

@ डैनियलबी: वास्तव में, क्या आप कृपया यह प्रतिक्रिया दे सकते हैं, मुझे लगता है कि आपके पास विजेता है! धन्यवाद!!
डैनियल मैगलियोला जूल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.