001
014
015 package com.liferay.taglib.aui;
016
017 import com.liferay.portal.kernel.language.LanguageUtil;
018 import com.liferay.portal.kernel.util.JavaConstants;
019 import com.liferay.portal.kernel.util.StringBundler;
020 import com.liferay.portal.kernel.util.StringUtil;
021 import com.liferay.portal.kernel.util.Validator;
022 import com.liferay.portal.model.User;
023 import com.liferay.portal.theme.ThemeDisplay;
024 import com.liferay.taglib.aui.base.BaseNavTag;
025
026 import javax.portlet.PortletResponse;
027
028 import javax.servlet.http.HttpServletRequest;
029 import javax.servlet.jsp.JspException;
030
031
037 public class NavTag extends BaseNavTag {
038
039 @Override
040 public int doStartTag() throws JspException {
041 NavBarTag navBarTag = (NavBarTag)findAncestorWithClass(
042 this, NavBarTag.class);
043
044 if ((navBarTag != null) &&
045 (!_calledCollapsibleSetter || getCollapsible())) {
046
047 setCollapsible(true);
048
049 ThemeDisplay themeDisplay = (ThemeDisplay)pageContext.getAttribute(
050 "themeDisplay");
051
052 StringBundler sb = navBarTag.getResponsiveButtonsSB();
053
054 sb.append("<a class=\"btn btn-navbar\" id=\"");
055 sb.append(_getNamespacedId());
056 sb.append("NavbarBtn\" ");
057 sb.append("data-navId=\"");
058 sb.append(_getNamespacedId());
059 sb.append("\" tabindex=\"0\">");
060
061 String icon = getIcon();
062
063 if (Validator.isNull(icon)) {
064 sb.append("<span class=\"icon-bar\"></span>");
065 sb.append("<span class=\"icon-bar\"></span>");
066 sb.append("<span class=\"icon-bar\"></span>");
067 }
068 else if (icon.equals("user") && themeDisplay.isSignedIn()) {
069 try {
070 User user = themeDisplay.getUser();
071
072 sb.append("<img alt=\"");
073 sb.append(LanguageUtil.get(pageContext, "my-account"));
074 sb.append("\" class=\"user-avatar-image\" ");
075 sb.append("src=\"");
076 sb.append(user.getPortraitURL(themeDisplay));
077 sb.append("\">");
078 }
079 catch (Exception e) {
080 throw new JspException(e);
081 }
082 }
083 else {
084 sb.append("<i class=\"icon-");
085 sb.append(icon);
086 sb.append("\"></i>");
087 }
088
089 sb.append("</a>");
090 }
091
092 return super.doStartTag();
093 }
094
095 @Override
096 public void setCollapsible(boolean collapsible) {
097 super.setCollapsible(collapsible);
098
099 _calledCollapsibleSetter = true;
100 }
101
102 @Override
103 protected void cleanUp() {
104 super.cleanUp();
105
106 _calledCollapsibleSetter = false;
107 _namespacedId = null;
108 }
109
110 @Override
111 protected void setAttributes(HttpServletRequest request) {
112 super.setAttributes(request);
113
114 setNamespacedAttribute(request, "id", _getNamespacedId());
115 }
116
117 private String _getNamespacedId() {
118 if (Validator.isNotNull(_namespacedId)) {
119 return _namespacedId;
120 }
121
122 _namespacedId = getId();
123
124 if (Validator.isNull(_namespacedId)) {
125 _namespacedId = StringUtil.randomId();
126 }
127
128 HttpServletRequest request =
129 (HttpServletRequest)pageContext.getRequest();
130
131 PortletResponse portletResponse = (PortletResponse)request.getAttribute(
132 JavaConstants.JAVAX_PORTLET_RESPONSE);
133
134 if ((portletResponse != null) && getUseNamespace()) {
135 _namespacedId = portletResponse.getNamespace() + _namespacedId;
136 }
137
138 return _namespacedId;
139 }
140
141 private boolean _calledCollapsibleSetter;
142 private String _namespacedId;
143
144 }