/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.liferay.taglib.aui;
import com.liferay.portal.kernel.dao.search.DisplayTerms;
import com.liferay.portal.kernel.dao.search.SearchContainer;
import com.liferay.portal.kernel.util.JavaConstants;
import com.liferay.portal.kernel.util.PortalUtil;
import com.liferay.portal.kernel.util.StringBundler;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.Validator;
import com.liferay.taglib.aui.base.BaseNavBarSearchTag;
import javax.portlet.PortletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
/**
* @author Eduardo Lundgren
* @author Bruno Basto
* @author Nathan Cavanaugh
* @author Julio Camarero
*/
public class NavBarSearchTag extends BaseNavBarSearchTag {
@Override
public int doStartTag() throws JspException {
NavBarTag navBarTag = (NavBarTag)findAncestorWithClass(
this, NavBarTag.class);
if (navBarTag != null) {
StringBundler sb = navBarTag.getResponsiveButtonsSB();
sb.append("<a class=\"btn navbar-btn navbar-toggle");
if (_hasSearchResults()) {
sb.append(" hide");
}
sb.append("\" id=\"");
sb.append(_getNamespacedId());
sb.append("NavbarBtn\" data-navId=\"");
sb.append(_getNamespacedId());
sb.append("\" tabindex=\"0\">");
sb.append("<i class=\"icon-search\"></i></a>");
}
return super.doStartTag();
}
@Override
protected void cleanUp() {
super.cleanUp();
_namespacedId = null;
}
@Override
protected String getEndPage() {
if (Validator.isNotNull(getMarkupView())) {
return "/html/taglib/aui/nav_bar_search/" + getMarkupView() +
"/end.jsp";
}
return "/html/taglib/aui/nav_bar_search/end.jsp";
}
protected String getMarkupView() {
String markupView = StringPool.BLANK;
NavBarTag navBarTag = (NavBarTag)findAncestorWithClass(
this, NavBarTag.class);
if (navBarTag != null) {
markupView = navBarTag.getMarkupView();
}
return markupView;
}
@Override
protected String getStartPage() {
if (Validator.isNotNull(getMarkupView())) {
return "/html/taglib/aui/nav_bar_search/" + getMarkupView() +
"/start.jsp";
}
return "/html/taglib/aui/nav_bar_search/start.jsp";
}
@Override
protected int processEndTag() throws Exception {
JspWriter jspWriter = pageContext.getOut();
jspWriter.write("</div></div>");
return EVAL_PAGE;
}
@Override
protected void setAttributes(HttpServletRequest request) {
super.setAttributes(request);
setNamespacedAttribute(request, "id", _getNamespacedId());
setNamespacedAttribute(request, "searchResults", _hasSearchResults());
}
private String _getNamespacedId() {
if (Validator.isNotNull(_namespacedId)) {
return _namespacedId;
}
_namespacedId = getId();
HttpServletRequest request =
(HttpServletRequest)pageContext.getRequest();
if (Validator.isNull(_namespacedId)) {
_namespacedId = PortalUtil.getUniqueElementId(
request, StringPool.BLANK, AUIUtil.normalizeId("navBar"));
}
PortletResponse portletResponse = (PortletResponse)request.getAttribute(
JavaConstants.JAVAX_PORTLET_RESPONSE);
if (portletResponse != null) {
_namespacedId = portletResponse.getNamespace() + _namespacedId;
}
return _namespacedId;
}
private boolean _hasSearchResults() {
SearchContainer<?> searchContainer = getSearchContainer();
if (searchContainer == null) {
return false;
}
DisplayTerms displayTerms = searchContainer.getDisplayTerms();
String keywords = displayTerms.getKeywords();
if (displayTerms.isAdvancedSearch() ||
!keywords.equals(StringPool.BLANK)) {
return true;
}
return false;
}
private String _namespacedId;
}