2009-03-22 14 views
6

स्पष्ट होने के लिए, मैं stackoverflow's forked WMD, original version from attacklab के उपयोग का जिक्र कर रहा हूं।एकाधिक डब्लूएमडी संपादक (एसओ फोर्क संस्करण)?

मैं काँटेदार संस्करण का उपयोग करना चाहते हैं, लेकिन ऐसा लगता है कि div id के जो स्क्रिप्ट के द्वारा उपयोग किया जाता है WMDify लिए पृष्ठ तत्वों की पहचान करने के wmd.js:66 में hardcoded रहे हैं:

// A collection of the important regions on the page. 
// Cached so we don't have to keep traversing the DOM. 
wmd.PanelCollection = function(){ 
    this.buttonBar = doc.getElementById("wmd-button-bar"); 
    this.preview = doc.getElementById("wmd-preview"); 
    this.output = doc.getElementById("wmd-output"); 
    this.input = doc.getElementById("wmd-input"); 
}; 

तो मैं बस चाहता था विभिन्न क्षेत्र के नामों का उपयोग करने के लिए मैं अपने आप ठीक हूं- लेकिन मैं एक पृष्ठ पर एक वैरिएबल नंबर का उपयोग करना चाहता हूं। मुझे पृष्ठ क्षेत्रों के बारे में डब्लूएमडी के प्रत्येक उदाहरण को बताने का एक तरीका चाहिए, लेकिन इसके लिए मुझे कोई 'हुक' नहीं दिख रहा है।

नहीं देख रहा है जेएस ज्ञान की मेरी पूरी कमी की संभावना है। ™ करने के लिए सही बात सिर्फ जावास्क्रिप्ट को ठीक से सीखना है, लेकिन मैं एक समय सीमा के साथ एक परियोजना के बीच में हूं। मैं वास्तव में डब्लूएमडी के इस संस्करण का उपयोग करना चाहता हूं लेकिन मुझे डब्लूएमडी स्क्रिप्ट को संशोधित करने के बारे में कुछ संकेतों की आवश्यकता है, या शायद इस तरह के फैशन में इसे कॉल करने का एक उदाहरण है कि मैं कल्पना कर सकता हूं कि कौन सी div आईडी का उपयोग करना है।

सुराग की सराहना की!

+0

क्या कोई मेरी मदद कर सकता है http://stackoverflow.com/questions/3616788/wmd-how-to-get-the-generated-markdown-html-code – Moon

उत्तर

7

मुझे इसी तरह की समस्याएं थीं इसलिए मैंने डब्लूएमडी को फिर से करने में सक्षम होने के लिए फिर से काम किया। my version of wmd

हाल ही में, मैंने इसे फिर से जांच लिया। Google कोड में संस्करण किसी पृष्ठ पर एकाधिक संस्करणों का समर्थन करता है।
google code fork और वहां नवीनतम है।

+0

काम का एक अच्छा टुकड़ा! – MrFox

+0

धन्यवाद! लेकिन असली कड़ी मेहनत ड्रोबिन द्वारा की गई थी। –

+0

एक कामकाजी लिंक का कोई मौका? – Andy

3

"एक समय सीमा के साथ परियोजना" पर इसे कुछ बाधाओं के आसपास हैक करने की अनुमति है। इस मामले में मैं केवल डब्लूएमडी संपादक स्क्रिप्ट की कई प्रतियां (या सर्वर पक्ष पर उत्पन्न करता हूं) और आईडी को आपके आवश्यक पहचानकर्ताओं द्वारा प्रतिस्थापित कर दूंगा। इस तरह आप एक ही पृष्ठ पर तुरंत कई डब्लूएमडी तैनात कर सकते हैं।

तुम सिर्फ एक बात के बारे में वास्तव में स्पष्ट होना जरूरी: आप हैं वहाँ अपनी परियोजना पर technical debt ("किसी न किसी तरह सॉफ्टवेयर वास्तुकला और जल्दबाजी में सॉफ्टवेयर विकास के अंतिम परिणाम") एकत्रित। आप को इस ऋण का भुगतान करने के लिए इसे फिर से देखना होगा या रखरखाव करते समय आप ब्याज भुगतान में डूब जाएंगे।

+0

आह, मैंने पूरी तरह से निर्दिष्ट नहीं किया: मुझे चाहिए सामग्री के आधार पर प्रत्येक पृष्ठ पर * परिवर्तनीय * संपादकों की संख्या का उपयोग करने के लिए। और हाँ, यदि त्वरित समाधान बहुत हैकिश है तो मैं इस समय किसी अन्य समाधान के पक्ष में wmd को छोड़ दूंगा। हैकरी की अनुमति देने की एक सीमा है। :) –

+0

wmds की एक चर संख्या के लिए आप _can_ जेनरेट-wmd-source-with-server-side-script के नीचे जाते हैं। यदि आप यह सही करते हैं, तो इसे जेएस-पैरामीटरयुक्त एकल-स्रोत समाधान में परिवर्तित करना बहुत आसान होना चाहिए। –

+0

मैंने इसे और कई .js फ़ाइलों के साथ भी कोशिश की, मुझे यह काम करने के लिए प्रतीत नहीं होता है। यह केवल पहले टेक्स्ट क्षेत्र पर बटन लोड करेगा। अगर मैं पहले को हटा देता हूं, तो बटन दूसरे टेक्स्ट एरिया के लिए ठीक लोड करते हैं। मैंने जेएस के माध्यम से खोला है और सुनिश्चित किया है कि सभी संदर्भ अपडेट किए गए थे लेकिन अभी भी कोई भाग्य नहीं है। –

0

wmd.js रेखा 2339 एक अच्छी जगह शुरू करने के लिए हो सकता है:

Attacklab.wmd_defaults = {version:1, output:"HTML", lineLength:40, delayLoad:false}; 

प्रत्येक div id आप को बदलने की जरूरत के लिए एक विकल्प जोड़ें।

आप उदाहरण के लिए, wmd.js शामिल करने से पहले एक स्क्रिप्ट ब्लॉक जोड़कर इन सेटिंग को ओवरराइड:

<script type="text/javascript">wmd_options = {"output": "Markdown"};</script> 

फिर .. के लिए wmd.PanelCollection समारोह बदल

wmd.PanelCollection = function(){ 
     this.buttonBar = doc.getElementById(wmd.wmd_env["wmd-button-bar"]); 
     this.preview = doc.getElementById(wmd.wmd_env["wmd-preview"]); 
     this.output = doc.getElementById(wmd.wmd_env["wmd-output"]); 
     this.input = doc.getElementById(wmd.wmd_env["wmd-input"]); 
}; 

नोट इस पूरी तरह से अपरीक्षित है, और काम नहीं कर सकता है, लेकिन डब्लूएमडी संपादक को स्वत: उत्पन्न करने या कई प्रतियों को बनाने की तुलना में यह थोड़ा अधिक सुरुचिपूर्ण ..

संपादित: मैं संपादन करने की कोशिश की है, लेकिन यह wmd_defaults को जोड़ने के रूप में काफी के रूप में सरल नहीं है - विभिन्न मदों (मुख्य रूप से बटन बार) एक वर्ग के बजाय एक आईडी का उपयोग करें, लेकिन यह करीब है ..

संपादित करें 2: बहुत परेशान होने के बाद, मैं कहूंगा कि उत्तर मूल रूप से "नहीं" है।

एक बेहतर जवाब नहीं है, सामूहिक नरसंहार के हथियारों के लिए कुछ काफी बड़ी परिवर्तन (परिवर्तन है कि मेरी जावास्क्रिप्ट बहुत सीमित अनुभव से परे हैं) के बिना नहीं ..

मैं सेटिंग्स करने के लिए सभी हार्ड-कोडेड div नाम चलती की कोशिश की, और कहा कि "wmd-spacer1" का उपयोग करने के बजाए सभी बटन वर्ग नामों के लिए "elementNamePrefix" सेटिंग wmd.wmd_env["elementNamePrefix"] + "spacer1" का उपयोग करती है ... लेकिन इसके साथ ही आपको सीएसएस फ़ाइल में आइटम डुप्लिकेट करने की आवश्यकता है, और परिवर्तनों के कारण अजीब व्यवहार मैं ठीक नहीं कर सका (मुझे लगता है पहली लाइन पर परिभाषित ग्लोबल अटैकलैब वैरिएबल की वजह से? सुनिश्चित नहीं है) ..

शायद, एकाधिक डब्लूएमडी नियंत्रण रखने के विकल्प के रूप में, आप कर सकते हैं एक ड्रॉप-डाउन है जो AJAX के माध्यम से अलग-अलग पोस्ट लोड करता है? यह कई उदाहरणों को अनुमति देने के लिए डब्लूएमडी को संशोधित करने से निश्चित रूप से आसान होगा ..

0

This प्रोजेक्ट एक अच्छी शुरुआत हो सकती है।

संबंधित मुद्दे