1 package com.atlassian.plugin.web.model;
2
3 import com.atlassian.plugin.web.WebFragmentHelper;
4 import com.atlassian.plugin.web.ContextProvider;
5 import com.atlassian.plugin.web.descriptors.WebFragmentModuleDescriptor;
6 import org.dom4j.Element;
7
8 import javax.servlet.http.HttpServletRequest;
9 import java.util.Map;
10
11
12
13
14 public class DefaultWebLink extends AbstractWebItem implements WebLink
15 {
16 String url;
17 String accessKey;
18 String id;
19
20 public DefaultWebLink(Element linkEl, WebFragmentHelper webFragmentHelper, ContextProvider contextProvider, WebFragmentModuleDescriptor descriptor)
21 {
22 super(webFragmentHelper, contextProvider, descriptor);
23 this.url = linkEl.getTextTrim();
24 this.accessKey = linkEl.attributeValue("accessKey");
25 this.id = linkEl.attributeValue("linkId");
26 }
27
28 public String getRenderedUrl(Map context)
29 {
30 context.putAll(getContextMap(context));
31 return getWebFragmentHelper().renderVelocityFragment(url, context);
32 }
33
34 private boolean isRelativeUrl(String url)
35 {
36 return !(url.startsWith("http://") || url.startsWith("https://"));
37 }
38
39 public String getDisplayableUrl(HttpServletRequest req, Map context)
40 {
41 String renderedUrl = getRenderedUrl(context);
42 if (isRelativeUrl(renderedUrl))
43 return req.getContextPath() + renderedUrl;
44 else
45 return renderedUrl;
46 }
47
48 public boolean hasAccessKey()
49 {
50 return accessKey != null && !"".equals(accessKey);
51 }
52
53 public String getAccessKey(Map context)
54 {
55 context.putAll(getContextMap(context));
56 return getWebFragmentHelper().renderVelocityFragment(accessKey, context);
57 }
58
59 public String getId()
60 {
61 return id;
62 }
63 }