001
014
015 package com.liferay.taglib.aui;
016
017 import com.liferay.portal.kernel.util.JavaConstants;
018 import com.liferay.portal.kernel.util.StringBundler;
019 import com.liferay.portal.kernel.util.StringUtil;
020 import com.liferay.portal.kernel.util.Validator;
021 import com.liferay.taglib.aui.base.BaseNavTag;
022
023 import javax.portlet.PortletResponse;
024
025 import javax.servlet.http.HttpServletRequest;
026 import javax.servlet.jsp.JspException;
027
028
034 public class NavTag extends BaseNavTag {
035
036 @Override
037 public int doStartTag() throws JspException {
038 NavBarTag navBarTag = (NavBarTag)findAncestorWithClass(
039 this, NavBarTag.class);
040
041 if ((navBarTag != null) &&
042 (!_calledCollapsibleSetter || getCollapsible())) {
043
044 setCollapsible(true);
045
046 StringBundler sb = navBarTag.getResponsiveButtonsSB();
047
048 sb.append("<a class=\"btn btn-navbar\" id=\"");
049 sb.append(_getNamespacedId());
050 sb.append("NavbarBtn\" ");
051 sb.append("data-navId=\"");
052 sb.append(_getNamespacedId());
053 sb.append("\">");
054
055 String icon = getIcon();
056
057 if (Validator.isNull(icon)) {
058 sb.append("<span class=\"icon-bar\"></span>");
059 sb.append("<span class=\"icon-bar\"></span>");
060 sb.append("<span class=\"icon-bar\"></span>");
061 }
062 else {
063 sb.append("<i class=\"icon-");
064 sb.append(icon);
065 sb.append("\"></i>");
066 }
067
068 sb.append("</a>");
069 }
070
071 return super.doStartTag();
072 }
073
074 @Override
075 public void setCollapsible(boolean collapsible) {
076 super.setCollapsible(collapsible);
077
078 _calledCollapsibleSetter = true;
079 }
080
081 @Override
082 protected void cleanUp() {
083 super.cleanUp();
084
085 _calledCollapsibleSetter = false;
086 _namespacedId = null;
087 }
088
089 @Override
090 protected void setAttributes(HttpServletRequest request) {
091 super.setAttributes(request);
092
093 setNamespacedAttribute(request, "id", _getNamespacedId());
094 }
095
096 private String _getNamespacedId() {
097 if (Validator.isNotNull(_namespacedId)) {
098 return _namespacedId;
099 }
100
101 _namespacedId = getId();
102
103 if (Validator.isNull(_namespacedId)) {
104 _namespacedId = StringUtil.randomId();
105 }
106
107 HttpServletRequest request =
108 (HttpServletRequest)pageContext.getRequest();
109
110 PortletResponse portletResponse = (PortletResponse)request.getAttribute(
111 JavaConstants.JAVAX_PORTLET_RESPONSE);
112
113 if ((portletResponse != null) && getUseNamespace()) {
114 _namespacedId = portletResponse.getNamespace() + _namespacedId;
115 }
116
117 return _namespacedId;
118 }
119
120 private boolean _calledCollapsibleSetter;
121 private String _namespacedId;
122
123 }