JIRA Linker Plugin

Name JIRA Linker Plugin
Vendor Atlassian Pty Ltd (Website)
Authors David Peterson, Keith Brophy
Homepage http://confluence.atlassian.com/display/JIRAEXT/JIRA+Linker+Plugin
Issue Management http://developer.atlassian.com/jira/browse/LINK
Continuous Integration n/a
Categories Remote Access
Most Recent Version 1.1.2
Availability JIRA v3.10.2 to v3.13
State Beta
Support Atlassian Supported Plugins
License Freeware / Open Source (BSD)
Price Free
Release Docs http://confluence.atlassian.com/display/JIRAEXT/JIRA+Linker+Plugin
Java API Docs n/a
Download Source http://svn.atlassian.com/svn/public/contrib/jira/jira-linker-plugin/tags/1.1.2/
Download JAR atlassian-jira-linker-plugin-1.1.2.jar

Compatibility With JIRA

Plugin Version 3.10.2 3.11 3.12 3.13 Tested
1.1.2 David Chui (Sep/09/2008)

Description/Features

A custom field plugin for linking a JIRA issue with a URL, particularly Confluence pages. While you are creating an issue, you can bring up a popup window that will allow you to quickly search a Confluence site for pages you would like to link to this issue. Clicking a link in the popup window will add the page to your new issue. The Confluence server must have anonymous Remote API access turned on.

Installation

  1. Copy the jar listed above into JIRA's WEB-INF/lib directory.
  2. Copy the search_16.png  into JIRA's images/icons directory.
  3. Configure any custom Confluence servers, if desired.
  4. Restart JIRA.
  5. You're done!

Configuring custom Confluence servers

You can add your own Confluence server(s) to the searchable list. Just do the following:

  1. Download and save atlassian-jira-linker-plugin.properties to somewhere on your computer (e.g. the Desktop)
  2. Open the file with a text editor.
  3. Change the 'confluence.urls' property to include your server(s), separated by commas (','). E.g.:
    confluence.urls = http://conf.mycompany.com, http://confluence.atlassian.com
    
  4. Save the file into JIRA's WEB-INF/classes directory as 'atlassian-jira-linker-plugin.properties'.
  5. Restart JIRA.

In Confluence

In the Confluence instance(s) you specified:

  1. Ensure that 'Anonymous Remote API Access' has been enabled in Confluence's 'General Configuration' Administration section
  2. In Confluence's "Global Permissions" page, grant Anonymous users access:

    (this isn't ideal - see LINK-7).
  3. You will also need to allow anonymous view access to all the spaces you wish the linker to search upon.

Documentation

To actually use the plugin, do the following:

  1. Log in as an administrator.
  2. Enter the 'Administration' section.
  3. Select 'Custom Fields'.
  4. Add a new custom field.
  5. Select the 'URL Link Field' type.
  6. Fill in a name and description for the field (e.g. 'Documentation' or 'Original report')
  7. Select what type of issues it is available for.
  8. Select what screens it will show up on.
  9. Done! Just add a new issue matching your settings to see it in action.

Version History

1.1

1.0

Open Issues

Screenshots

Labels

atlassian-supported atlassian-supported Delete
plugin plugin Delete
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.
  1. Dec 29, 2005

    Martin Ollesch says:

    Hi David, Very usefull plugin, Thanks! But I can't open search window (Java Scr...

    Hi David,

    Very usefull plugin, Thanks!
    But I can't open search window (Java Script error) with IE 6.0, only with Mozilla

    When will this plugin be final?

    Martin

  2. Jan 18, 2006

    Kevin James says:

    I configured the atlassian-linker-jira.properties file with confluence.urls = ht...

    I configured the atlassian-linker-jira.properties file with confluence.urls = http://our.company.com:8080/confluence . When I try to Search for some text in Confluence via the plugin's search page I get the following error:

     

    Unable to connect to server: Server returned HTTP response code: 403 for URL: http://our.company.com:8080/confluence//rpc/xmlrpc
    
    1. Jan 18, 2006

      Mike Cannon-Brookes says:

      Kevin, Do you have the Remote API turned on in your Confluence instance? (In Ad...

      Kevin,

      Do you have the Remote API turned on in your Confluence instance? (In Administration > General Configuration)

      1. Jan 20, 2006

        Kevin James says:

        No, I did not.  I'll turn that on and see how it goes.

        No, I did not.  I'll turn that on and see how it goes.

      2. Jan 20, 2006

        Kevin James says:

        Okay, it's working now.  I had to turn on both Remote API AND Anonymous Acc...

        Okay, it's working now.  I had to turn on both Remote API AND Anonymous Access to Remote API.

        So our Confluence site is not public facing yet, but this year we'd like to make it so.  Seems like Anonymous Access to Remote API would present a security risk.  Am I missing something here?

        One other question...If I move the linked page in Confluence will this link be updated?  If not, would it be possible for this plugin to use the TinyLink?

        Clicking the binoculars icon results in a javascript error in IE6.  Most our users are IE6 users so this needs to work to be useful for us.

        Thanks! 

        1. Jan 23, 2006

          Keith says:

          Hi Kevin, Yes - [LINK-7] is tracking the issue allowing a user specify ...

          Hi Kevin,

          Yes - [LINK-7] is tracking the issue allowing a user specify login details for the plugin. This would negate the need for Anonymous access.

          At present, there is no mechanism in place that will update these links within JIRA. However, Confluence should direct the user to correct page.

          Can you provide details of the Javascript error you are encountering?

          Regards,
          Keith

          1. Jan 23, 2006

            Keith says:

            The above link should be to the following issue - LINK-7.

            The above link should be to the following issue - LINK-7.

  3. Jan 20, 2006

    Simon Tomlinson says:

    Looks like a really good plugin, however,  when I click on the binoculars i...

    Looks like a really good plugin, however,  when I click on the binoculars icon nothing happens.  Nothing appears in either confluence or JIRA console and nothing in the logs.  I have followed the instructions above and made sure Remote API is turned on in my confluence instance.  Is there anything else I need to do?

    Thanks
    Simon

    1. Jan 20, 2006

      Simon Tomlinson says:

      I found the problem, I am getting a javascript error whilst clicking the link: ...

      I found the problem, I am getting a javascript error whilst clicking the link:

      Line: 961
      Char: 9
      Error: Invalid Argument
      Code: 0

      Line 961, when I open the page source takes me to the javascript function 'openConfluenceBrowserWindow', but I can't see any problem with it.

      Any help would be appreciated as I really want to get this plugin to work.

      Thanks
      Simon

  4. Feb 24, 2006

    Mikko Levonmaa says:

    Hi, I'm trying to specify the URL as follows confluence.urls = http://<xxx.x...

    Hi,

    I'm trying to specify the URL as follows confluence.urls = http://<xxx.xxx.xxx.xxx:yyyy but when I do a search all I get is:

    java.lang.NullPointerException
            at com.atlassian.jira.plugin.linker.SearchQueryBean.doSearch(SearchQueryBean.java:106)
            at com.atlassian.jira.plugin.linker.ConfluencePageBrowserAction.doExecute(ConfluencePageBrowserAction.java:44)
    
    

    And this goes on...

    When I specify confluence.urls = http://xxx.xxx.xxx.xxx:yyyy, http://confluence.atlassion.com I can search the attlassian site, so the plugin seems to be working, but does it have a bug in using IP-addresses directly or using the port definition? The IP address si pointing to in intranet IP where the confluense is residing. http://localhost:yyyy does not do trick either. We can access confluence just fine from http://xxx.xxx.xxx.xxx:yyyy with a web browser

    regards,
    Mikko

    1. Feb 27, 2006

      Justin Koke says:

      Hi Mikko, A change has been made to the 'head' release of this plugin so the nu...

      Hi Mikko,

      A change has been made to the 'head' release of this plugin so the null pointer exception no longer occurs when an underlying exception is thrown.

      I will upload a new release to the repository. If you can't wait, just checkout and build the jar from subversion

      Regards,

      Justin

  5. May 24, 2006

    Tom Moore says:

    Please fix the javascript popup bug in IE.  We can't use this until you do.

    Please fix the javascript popup bug in IE.  We can't use this until you do.

    1. May 26, 2006

      Nick Menere says:

      Tom, I have created an issue to get this fixed: http://jira.atlassian.com/browse...

      Tom,
      I have created an issue to get this fixed: http://jira.atlassian.com/browse/JRA-10279

      Cheers,
      Nick

  6. Aug 22, 2006

    Dave M says:

    going through the install. i found the page that talks about using SSL (http://c...

    going through the install. i found the page that talks about using SSL (http://confluence.atlassian.com/display/JIRA/Connecting+to+SSL+services) and got through that part, i think. now i'm getting:

    You can search a Confluence server to find the page you are looking for. Enter your query below:

    ---- |

    Confluence Site: https://165.137.91.87  
    Search:    

    Unable to connect to server: HTTPS hostname wrong: should be <165.137.91.87>
      
    i tried using a hostname, but got the same message with the host name inside the < > instead of the IP address. not quite sure what is generating that message. i tried https://165.137.91.87, https://165.137.91.87/confluence, and https://165.137.91.87/confluence/ , and they all return the same message:

    Confluence Site: https://165.137.91.87/confluence/  
    Search:    

    Unable to connect to server: HTTPS hostname wrong: should be <165.137.91.87>
     

  7. Aug 25, 2006

    Zacharias J. Beckman says:

    I'm having similar problems to those described above. Specifically: SEARCH: The...

    I'm having similar problems to those described above. Specifically:

    SEARCH:
    The [search] button doesn't do anything. While the search panel opens up and looks good (and the URL to Confluence is correct) clicking the [search] button doesn't seem to trigger an action.

    On one occasion I saw the red "Unable to connect to server" message, but that hasn't repeated.

    BROWSER:
    In Internet Explorer, clicking the binocular icon causes a Javascript error and nothing else happens. In Safari, the search window opens (but, as noted above, the search button does nothing noticable).

    EXCEPTIONS:
    The following exception shows up in the catalina.out log:
    Avoiding obscuring previous error by supressing error encountered while ending request: org.apache.xmlrpc.XmlRpcClientException: Exception closing URLConnection
    2006-08-25 11:31:08,390 ERROR [jira.plugin.linker.SearchQueryBean] There was an I/O problem java.net.ConnectException: Connection timed out: connect

  8. Oct 17, 2006

    John Allen says:

    Hi, We would love to start using this plugin but we get the following error whe...

    Hi,

    We would love to start using this plugin but we get the following error when the 'Search Confluence' button is pressed:

    An error occurred whilst rendering this message. Please contact the administrators, and inform them of this bug. Details: ------- java.lang.NullPointerException at org.apache.velocity.context.InternalContextAdapterImpl.put(InternalContextAdapterImpl.java:157) at org.apache.velocity.runtime.parser.node.ASTSetDirective.render(ASTSetDirective.java:139) at org.apache.velocity.runtime.parser.node.SimpleNode.render(SimpleNode.java:230) at org.apache.velocity.Template.merge(Template.java:256) at org.apache.velocity.app.VelocityEngine.mergeTemplate(VelocityEngine.java:450) at com.atlassian.velocity.DefaultVelocityManager.getEncodedBody(DefaultVelocityManager.java:76) at com.atlassian.jira.plugin.webwork.JiraPluginWebworkVelocityServlet.service(JiraPluginWebworkVelocityServlet.java:50) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:672) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:463) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:398) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301) at com.atlassian.jira.web.dispatcher.JiraServletDispatcher.service(JiraServletDispatcher.java:253) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.jira.web.filters.AccessLogFilter.doFilter(AccessLogFilter.java:51) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:119) at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:55) at com.atlassian.jira.web.filters.SitemeshExcludePathFilter.doFilter(SitemeshExcludePathFilter.java:38) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.seraph.filter.SecurityFilter.doFilter(SecurityFilter.java:182) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.seraph.filter.LoginFilter.doFilter(LoginFilter.java:181) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.util.profiling.filters.ProfilingFilter.doFilter(ProfilingFilter.java:132) at com.atlassian.jira.web.filters.ProfilingAndErrorFilter.doFilter(ProfilingAndErrorFilter.java:35) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.jira.web.filters.ActionCleanupDelayFilter.doFilter(ActionCleanupDelayFilter.java:39) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.johnson.filters.JohnsonFilter.doFilter(JohnsonFilter.java:91) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.jira.web.filters.gzip.GzipFilter.doFilter(GzipFilter.java:72) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at com.atlassian.core.filters.AbstractEncodingFilter.doFilter(AbstractEncodingFilter.java:37) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:199) at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:282) at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:754) at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:684) at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:876) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684) at java.lang.Thread.run(Thread.java:595)

  9. Oct 27, 2006

    Bryan Zheng says:

    I've already turned on both Remote API AND Anonymous Access to Remote API. But I...

    I've already turned on both Remote API AND Anonymous Access to Remote API. But I still get the :"

    java.lang.Exception: com.atlassian.confluence.rpc.NotPermittedException: User does not have Use Confluence permission
    "

    what should i do with it ? 

  10. Nov 07, 2006

    Scott Golby says:

    Apart from the instructions above is there something that needs to be done to ma...

    Apart from the instructions above is there something that needs to be done to make this work ?

    We have a brand new jira-enterprise-3.6.5 & confluence-2.2.9 setup we are testing and I've had no luck with this plug-in.  I have gone into Confluence and turned ON Anonymous Access to Remote API.   I've restarted Tomcat 5.0 but I don't see any Documentation Link box come up when I create a new issue.  I've looked in the Custom Fields to see if I needed to create a new field, doesn't appear so & I can't find the plug-in within the Jira plug-ins page (but with no search option who knows).  Does Issue Linking in Jira's Global Settings need to be ON ?  Seemed to be the closest option but didn't see to make a difference.

    Is there a magic thing to make it load ?   How do I check its loading as well ?

    Thanks,

    Scott

  11. Feb 22, 2007

    Neal Dewing says:

    It would be great if the Confluence page could be called using [spacekey:pagetit...

    It would be great if the Confluence page could be called using [spacekey:pagetitle].

    Any plans for something like this?

    If not, is there any way of creating a shortcut link in JIRA similar to what Confluence offers?

    I want to create a single point of configuration for the Confluence server address.

    Thanks,

    Neal

  12. Feb 22, 2007

    Bob Swift says:

    I agree. A specific Confluence based option would make this more robust and mo...

    I agree. A specific Confluence based option would make this more robust and more user friendly. Having a Jira project based space key default would be an added bonus.

  13. Mar 06, 2007

    Neal Dewing says:

    Is it possible to pass user credentials to the confluence server in any way? Ena...

    Is it possible to pass user credentials to the confluence server in any way?
    Enabling anonymous user access and adding permission to a space for the anonymous user allows that space to be searched, but this is not ideal.

    Thanks,

    Neal 

  14. May 14, 2007

    Andy Livsey says:

    Hi I have set up the plug in as directed but i am having problems getting the s...

    Hi

    I have set up the plug in as directed but i am having problems getting the search to work.

    In atlassian-linker-jira.properties i have the following entries confluence.urls=http://ourserver.ourcompany.prv:8087/confluence,http://confluence.atlassian.com

    and as expected both servers appear in the drop down list when i bring up the search page. The search using http://confluence.atlassian.com works and gives me the display page as expected. However, if i use http://ourserver.ourcompany.prv:8087/confluence, i simply get an empty page and no errors in the logs.

    I have Remote API AND Anonymous Access to Remote API turned on.

    Any Ideas ?

    Thanks

    Andy

    OK I have found the solution to this issue

    You need to make sure the Space Permission for Anonymouse Access has the View permission ticked.

    For each space you wish to search, from to the space admin ( under browse space ), click on permissions then Edit Permissions for the Anonymous Access group and make sure that View is checked.

    HTH

    Andy 

    1. Aug 04, 2007

      Sasha Zucker says:

      Your solution sounds like it will work, but the problem is that this solution is...

      Your solution sounds like it will work, but the problem is that this solution is not feasible for organizations who are using JIRA/Confluence to store proprietary, secret information. We cannot allow anonymous browsing of our Confluence server, so this plugin is useless to us. So much for JIRA and Confluence being designed to be complimentary.

  15. May 15, 2007

    John Allen says:

    From my initial testing the Linker URL is not passed to the Trackback system and...

    From my initial testing the Linker URL is not passed to the Trackback system and does not result in Trackback pings being sent to Confluence, can you confirm that is this the case?

    Ideally we'd like to use this Linker and Trackbacks together - i.e. a Linked URL should still result in a Trackback.

    Should i raise a JIRA issue for this functionality?

    1. Jun 14, 2007

      Eric Litman says:

      Sending a trackback to the wiki when adding the link on JIRA would be fabulous. ...

      Sending a trackback to the wiki when adding the link on JIRA would be fabulous. Count this as +1 for that feature.

      1. Jul 17, 2007

        Jacy Legault says:

        Did this get in as a feature request, or is it a JIRA/Confluence configuration i...

        Did this get in as a feature request, or is it a JIRA/Confluence configuration issue that can be sorted out?

        1. Jul 17, 2007

          John Allen says:

          Yes LINK-16 by the looks of it

          Yes LINK-16 by the looks of it

  16. Aug 06, 2007

    Stafford Vaughan [CustomWare] says:

    Is this plugin coming out of beta soon? A lot of organizations have a policy aga...

    Is this plugin coming out of beta soon? A lot of organizations have a policy against using plugins classified as "beta".

    Thanks,
    Stafford