Hi everybody,
i'm using JIRA as a helpdesk system. In the workflow we have transitions where user can send email with a custom groovyrunner postfunction. In the post function we convert JIRA wiki markup to html. For Right To Left languages (Arabic, etc) we want to alligh text on the right. I have tried some things by the text allignment does not apply.
Thank you in advance
The code i'm using is the following
import javax.mail.internet.*; import javax.mail.* import javax.activation.* import javax.mail.Multipart; import javax.mail.internet.MimeMultipart; import com.atlassian.jira.issue.Issue; import com.atlassian.jira.issue.ModifiedValue; import com.atlassian.jira.issue.util.DefaultIssueChangeHolder import com.atlassian.jira.ComponentManager; import com.atlassian.jira.issue.CustomFieldManager; import com.atlassian.jira.issue.fields.CustomField; import com.atlassian.jira.issue.comments.CommentManager; import com.atlassian.jira.issue.attachment.Attachment; import com.atlassian.jira.issue.history.ChangeItemBean; import com.atlassian.jira.util.AttachmentUtils; import groovy.text.GStringTemplateEngine; import com.atlassian.jira.issue.fields.renderer.wiki.AtlassianWikiRenderer; import com.atlassian.jira.util.velocity.VelocityRequestContextFactory; import com.atlassian.event.api.EventPublisher; import com.atlassian.jira.component.ComponentAccessor; import com.atlassian.jira.security.groups.GroupManager; //Convert wiki markup to HTML EventPublisher eventPublisher = ComponentAccessor.getOSGiComponentInstanceOfType(EventPublisher.class); VelocityRequestContextFactory velocityRequestContextFactory = ComponentAccessor.getOSGiComponentInstanceOfType(VelocityRequestContextFactory.class); AtlassianWikiRenderer wikiRenderer = new AtlassianWikiRenderer(eventPublisher, velocityRequestContextFactory); def groupManager = ComponentAccessor.getGroupManager() def currentUser = componentManager.jiraAuthenticationContext?.user //Get Comment Manager CommentManager commentManager = componentManager.getCommentManager(); //Get custom field manager CustomFieldManager customFieldManager = ComponentManager.getInstance().getCustomFieldManager(); //Get custom field email by id CustomField customField_email = customFieldManager.getCustomFieldObject( 10205 ); CustomField customField_mtu = customFieldManager.getCustomFieldObject( 11000 ); //get value of customField_email to = issue.getCustomFieldValue( customField_email ) //get value of customField_mtu mtu = issue.getCustomFieldValue( customField_mtu ).toString(); //Convert JIRA wiki to HTML m_t_u = wikiRenderer.render(mtu, null); //Email Headers sender="test@test.com" sendername="Test Test" //Email acccount credentials def username="test@test.com" def password="test" //Gmail Default port port = 25 //Email Body content = """\ <div align="right"> $m_t_u </div> """ //Creat first part of email, Email Body Multipart mp = new MimeMultipart("mixed"); MimeBodyPart htmlPart = new MimeBodyPart(); htmlPart.setContent(content.toString(), "text/html; charset=utf-8"); mp.addBodyPart(htmlPart); //Email Properties props = new Properties() props.put("mail.smtp.port", port); props.put("mail.smtp.socketFactory.fallback", "false"); props.put("mail.smtp.quitwait", "false"); props.put("mail.smtp.host", "smtp.gmail.com"); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.starttls.enable", "true"); //New session Session session = Session.getInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } }); MimeMessage message = new MimeMessage(session); message.setFrom(new InternetAddress(sender,sendername)); message.setSubject("Title"); message.setRecipient(Message.RecipientType.TO, new InternetAddress(to)); message.setContent(mp) try{ Transport transport = session.getTransport("smtp"); transport.connect( "smtp.gmail.com",port,username,password ); transport.sendMessage(message,message.getAllRecipients()); transport.close(); log.warn ("mail sent sucesfully to : "+ issue.getCustomFieldValue( customField_email).toString() + ", for issue: " + issue.getKey()) }catch (MessagingException mex) { log.warn ("Could not sent email to : "+ issue.getCustomFieldValue( customField_email).toString() + " for issue: " + issue.getKey()) mex.printStackTrace(); }
Interesting... do you think this this an HTML problem or an issue with i18n in jira?
How does it look when you view RTL languages in the browser, is it correct?
If it's an HTML issue have you tried using the dir attrib as per http://www.i18nguy.com/markup/right-to-left.html?
If i use
<div dir="rtl"> $m_t_u </div>
in code the text is alligned on the right. I have just tested it.
Using
<div align="right"> $m_t_u </div>
has exactly the same results.
Finally, it was not an HTML problem nor a i18n in JIRA. I was using wrong script in post function. :(
Thanks for the help
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I'm trying to add a conditional expression in email's body but in email i get printed the conditional expression also.
what i use is the following
content = """\ <% if (issue.getCustomFieldValue( customField_language ).toString() == "Arabic") out << '<div dir="rtl"> $m_t_u </div>' else out << '<div> $m_t_u </div>'%> """
And the email i get is the following
<% if (issue.getCustomFieldValue( customField_language ).toString() == "Arabic") out << ' test tetetest testtesttest ' else out << ' test tetetest testtesttest '%>
Any idea what's wrong in the syntax i use?
Thanx in advance
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I think it should be like this:
<% if (issue.getCustomFieldValue( customField_language ).toString() == "Arabic") %> '<div dir="rtl">$m_t_u <% else %> ....
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
I have tried your suggestion but it seems that the way the syntax is ignores the condition. Html works though.
The condition i have used is the following
<% if (issue.getCustomFieldValue( customField_language ).toString() == "Arabic") %> '<div dir="rtl">$m_t_u</div> <% else %> '<div>$m_t_u</div>
The result i get is in the next screenshot
I have tried different modifications, without luck.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Switch to Jira Cloud with Atlassian University! Explore new navigation, issue views, and Cloud features like team-managed projects and automation. Tailored for Data Center users & admins, these courses ensure a smooth transition. Start your journey today!
Enroll now
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.