मैं एक ऐसी प्रणाली पर काम कर रहा हूँ जहाँ हम डेटाबेस से उपयोगकर्ताओं को ईमेल करने के लिए "व्यवस्थापक / प्रबंधक" पर बहुत भरोसा करते हैं। प्रमुख विशेषताओं में से एक एक ही समय में कई लोगों को ईमेल करने में सक्षम हो रही है, जिनमें से प्रत्येक के लिए विशिष्ट जानकारी प्रासंगिक है। एक अन्य मुख्य विशेषता हाथ से शिल्प ईमेल करने में सक्षम होना है, क्योंकि यह हर बार उन्हें थोड़ा संशोधित करने के लिए आवश्यक हो जाता है, लेकिन एक मूल टेम्पलेट होने से बहुत समय बचता है।
इसके लिए, हमारे पास विशिष्ट "टेम्पलेट" समाधान है, जहां हमारे पास एक टेम्पलेट है जो इस तरह का दिखता है:
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 लौटाता हूं, जो उस चर के संस्करण को प्रभावी ढंग से रोकता है।
यह सही नहीं है, लेकिन यह बहुत सस्ता था, और प्रभावी लगता है।