2015-07-28 6 views
8

मैं जेआईआरए के अधिसूचना व्यवहार को बदलना चाहता हूं और कुछ मुद्दों को अतिरिक्त रिसीवर जोड़ना चाहता हूं। मुझे पता है कि मैं EventPublisher पंजीकृत कर सकता हूं और सभी आवश्यक घटनाओं को पकड़ सकता हूं।ईमेल के लिए जेआईआरए वेग टेम्पलेट का पुन: उपयोग कैसे करें?

public class MyIssueCreatedResolvedListenerImpl implements InitializingBean, DisposableBean { 
    private final EventPublisher eventPublisher; 

    public MyIssueCreatedResolvedListenerImpl(EventPublisher eventPublisher) { 
     this.eventPublisher = eventPublisher; 
    } 

    @Override 
    public void afterPropertiesSet() throws Exception { 
     eventPublisher.register(this); 
    } 

    @Override 
    public void destroy() throws Exception { 
     eventPublisher.unregister(this); 
    } 

    @EventListener 
    public void onIssueEvent(IssueEvent issueEvent) { 
     // Process the issue events. I'm using the code presented below. 
    } 
} 
onIssueEvent मैं JIRA से मौजूदा ईमेल टेम्पलेट्स का पुन: उपयोग और उन्हें आगे रिसीवर SMTPMailServer वस्तु के साथ भेजना चाहते हैं में

। फिलहाल मैं वेग टेम्पलेट्स को पढ़ने और भरने के लिए निम्नलिखित कोड का उपयोग कर रहा हूं।

ApplicationProperties ap = ComponentAccessor.getApplicationProperties(); 
String baseUrl = ap.getString(APKeys.JIRA_BASEURL); 
String webworkEncoding = ap.getString(APKeys.JIRA_WEBWORK_ENCODING); 

VelocityManager vm = ComponentAccessor.getVelocityManager(); 
VelocityParamFactory vp = ComponentAccessor.getVelocityParamFactory(); 

Map context = vp.getDefaultVelocityParams(); 
context.put("baseurl", baseUrl); 
context.put("currentTimestamp", new Date()); 
context.put("issue", issueEvent.getIssue()); 

String renderedText = vm.getEncodedBody("templates/email/html/", "issueclosed.vm", baseUrl, webworkEncoding, context); 

SMTPMailServer mailServer = MailFactory.getServerManager().getDefaultSMTPMailServer(); 

Email email = new Email("<E-Mail-Adress>"); 
email.setMimeType("text/html"); 
email.setEncoding("utf-8"); 
email.setBody(renderedText); 

try { 
    mailServer.send(email); 
} catch (MailException e) { 
    e.printStackTrace(); 
} 

उपर्युक्त कोड आंशिक काम करता है। कुछ फ़ील्ड भर चुके हैं, लेकिन मुझे अभी भी ईमेल अधिसूचना में सीएसएस, छवियों या i18n याद आती है। कृपया ध्यान दें, मैं बाजार से किसी भी अतिरिक्त ऐड-ऑन का उपयोग नहीं करूंगा।

  • क्या यह जिरा टेम्पलेट का पुन: उपयोग करने के लिए सही कार्यान्वयन है?

  • सीएसएस, छवियों, i18n, आदि कैसे शामिल करें? या मैं एक अलग दृष्टिकोण का उपयोग कर सकता हूं? क्षेत्रों के

उत्तर

2

जोड़ी भर रहे हैं, लेकिन मैं अभी भी सीएसएस, छवियों या i18n

How Does Internationalisation Work?

याद आती है इससे पहले कि आप अंतर्राष्ट्रीयकरण (भी बुलाया 'i18n' को लागू करने क्योंकि वहाँ 'i' और 'n' के बीच 18 अक्षर हैं) आपकी प्लगइन के लिए समर्थन, यह समझना महत्वपूर्ण है कि प्लगइन को अंतर्राष्ट्रीयकृत कैसे किया जाता है।

सबसे पहले, प्लगइन में सभी संदेश प्लगइन में गुण फ़ाइल में कोड के बाहर ले जाया जाना चाहिए। गुण फ़ाइल प्लगइन के अंदर सभी संदेशों के लिए डिफ़ॉल्ट (अंग्रेज़ी) अनुवाद संग्रहीत करती है। गुण फ़ाइल प्रारूप एक कुंजी = मान प्रारूप है, जहां कुंजी का उपयोग कोड में संसाधन को संदर्भित करने के लिए किया जाता है और मान अंग्रेजी में डिफ़ॉल्ट संदेश होता है।

You can't use /images/ in your path unless you map the directory.

Including Javascript and CSS resources:

प्रत्येक संसाधन के लिए, संसाधन का स्थान अपने प्लगइन JAR फ़ाइल में संसाधन का पथ से मेल खाना चाहिए। संसाधन पथ आपकी प्लगइन में नामित हैं, इसलिए वे उसी स्थान के साथ अन्य प्लगइन में संसाधनों के साथ संघर्ष नहीं कर सकते हैं (i18n या Velocity संसाधनों के विपरीत)। हालांकि, आपको पथ नाम का उपयोग करना सुविधाजनक हो सकता है जो कि इन अन्य प्रकारों के अनुरूप होने के लिए आपकी प्लगइन के लिए विशिष्ट है।

अपने कस्टम वेब संसाधन को उस पृष्ठ में शामिल करने के लिए जहां आपकी प्लगइन का उपयोग किया जाता है, तो आप # रिक्वेयर रिसोर्स वेग मैक्रो का उपयोग करते हैं।

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