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 boolean absoluteUrl;
18 String accessKey;
19 String id;
20
21 public DefaultWebLink(Element linkEl, WebFragmentHelper webFragmentHelper, ContextProvider contextProvider, WebFragmentModuleDescriptor descriptor)
22 {
23 super(webFragmentHelper, contextProvider, descriptor);
24 this.url = linkEl.getTextTrim();
25 this.accessKey = linkEl.attributeValue("accessKey");
26 this.id = linkEl.attributeValue("linkId");
27 this.absoluteUrl = "true".equals(linkEl.attributeValue("absolute"));
28 }
29
30 public String getRenderedUrl(Map<String,Object> context)
31 {
32 context.putAll(getContextMap(context));
33 return getWebFragmentHelper().renderVelocityFragment(url, context);
34 }
35
36 private boolean isRelativeUrl(String url)
37 {
38 return !(absoluteUrl || url.startsWith("http://") || url.startsWith("https://"));
39 }
40
41 public String getDisplayableUrl(HttpServletRequest req, Map<String,Object> context)
42 {
43 String renderedUrl = getRenderedUrl(context);
44 if (isRelativeUrl(renderedUrl))
45 return req.getContextPath() + renderedUrl;
46 else
47 return renderedUrl;
48 }
49
50 public boolean hasAccessKey()
51 {
52 return accessKey != null && !"".equals(accessKey);
53 }
54
55 public String getAccessKey(Map<String,Object> context)
56 {
57 context.putAll(getContextMap(context));
58 return getWebFragmentHelper().renderVelocityFragment(accessKey, context);
59 }
60
61 public String getId()
62 {
63 return id;
64 }
65 }